@@ -9416,6 +9416,356 @@ provisional cluster ContentAppObserver = 1296 {
94169416 command ContentAppMessage(ContentAppMessageRequest): ContentAppMessageResponse = 0;
94179417}
94189418
9419+ /** The Camera AV Stream Management cluster is used to allow clients to manage, control, and configure various audio, video, and snapshot streams on a camera. */
9420+ cluster CameraAvStreamManagement = 1361 {
9421+ revision 1;
9422+
9423+ enum AudioCodecEnum : enum8 {
9424+ kOPUS = 0;
9425+ kAACLC = 1;
9426+ }
9427+
9428+ enum ImageCodecEnum : enum8 {
9429+ kJPEG = 0;
9430+ }
9431+
9432+ enum StreamTypeEnum : enum8 {
9433+ kInternal = 0;
9434+ kRecording = 1;
9435+ kAnalysis = 2;
9436+ kLiveView = 3;
9437+ }
9438+
9439+ enum TriStateAutoEnum : enum8 {
9440+ kOff = 0;
9441+ kOn = 1;
9442+ kAuto = 2;
9443+ }
9444+
9445+ enum TwoWayTalkSupportTypeEnum : enum8 {
9446+ kNotSupported = 0;
9447+ kHalfDuplex = 1;
9448+ kFullDuplex = 2;
9449+ }
9450+
9451+ enum VideoCodecEnum : enum8 {
9452+ kH264 = 0;
9453+ kHEVC = 1;
9454+ kVVC = 2;
9455+ kAV1 = 3;
9456+ }
9457+
9458+ bitmap Feature : bitmap32 {
9459+ kPrivacy = 0x1;
9460+ kSensorControl = 0x2;
9461+ kAudio = 0x4;
9462+ kImageControl = 0x8;
9463+ kVideo = 0x10;
9464+ kSnapshot = 0x20;
9465+ kLocalStorage = 0x40;
9466+ }
9467+
9468+ struct VideoResolutionStruct {
9469+ int16u width = 0;
9470+ int16u height = 1;
9471+ }
9472+
9473+ struct VideoStreamStruct {
9474+ int16u videoStreamID = 0;
9475+ StreamTypeEnum streamType = 1;
9476+ VideoCodecEnum videoCodec = 2;
9477+ int16u minFrameRate = 3;
9478+ int16u maxFrameRate = 4;
9479+ VideoResolutionStruct minResolution = 5;
9480+ VideoResolutionStruct maxResolution = 6;
9481+ int16u minBitRate = 7;
9482+ int16u maxBitRate = 8;
9483+ int16u minFragmentLen = 9;
9484+ int16u maxFragmentLen = 10;
9485+ int8u referenceCount = 11;
9486+ }
9487+
9488+ struct SnapshotStreamStruct {
9489+ int16u snapshotStreamID = 0;
9490+ ImageCodecEnum imageCodec = 1;
9491+ int16u frameRate = 2;
9492+ int32u bitRate = 3;
9493+ VideoResolutionStruct minResolution = 4;
9494+ VideoResolutionStruct maxResolution = 5;
9495+ int8u quality = 6;
9496+ int8u referenceCount = 7;
9497+ }
9498+
9499+ struct SnapshotParamsStruct {
9500+ VideoResolutionStruct resolution = 0;
9501+ int16u maxFrameRate = 1;
9502+ ImageCodecEnum imageCodec = 2;
9503+ }
9504+
9505+ struct RateDistortionTradeOffPointsStruct {
9506+ VideoCodecEnum codec = 0;
9507+ VideoResolutionStruct resolution = 1;
9508+ int32u minBitRate = 2;
9509+ }
9510+
9511+ struct AudioCapabilitiesStruct {
9512+ int8u maxNumberOfChannels = 0;
9513+ AudioCodecEnum supportedCodecs[] = 1;
9514+ int32u supportedSampleRates[] = 2;
9515+ int32u supportedBitDepths[] = 3;
9516+ }
9517+
9518+ struct AudioStreamStruct {
9519+ int16u audioStreamID = 0;
9520+ StreamTypeEnum streamType = 1;
9521+ AudioCodecEnum audioCodec = 2;
9522+ int8u channelCount = 3;
9523+ int32u sampleRate = 4;
9524+ int32u bitRate = 5;
9525+ int8u bitDepth = 6;
9526+ int8u referenceCount = 7;
9527+ }
9528+
9529+ struct PerStreamStruct {
9530+ int16u streamID = 0;
9531+ boolean enabled = 1;
9532+ }
9533+
9534+ struct VideoSensorParamsStruct {
9535+ int16u sensorWidth = 0;
9536+ int16u sensorHeight = 1;
9537+ boolean HDRCapable = 2;
9538+ int16u maxFPS = 3;
9539+ int16u maxHDRFPS = 4;
9540+ }
9541+
9542+ struct ViewportStruct {
9543+ int16u x1 = 0;
9544+ int16u y1 = 1;
9545+ int16u x2 = 2;
9546+ int16u y2 = 3;
9547+ }
9548+
9549+ info event VideoStreamChanged = 0 {
9550+ int16u videoStreamID = 0;
9551+ optional StreamTypeEnum streamType = 1;
9552+ optional VideoCodecEnum videoCodec = 2;
9553+ optional int16u minFrameRate = 3;
9554+ optional int16u maxFrameRate = 4;
9555+ optional VideoResolutionStruct minResolution = 5;
9556+ optional VideoResolutionStruct maxResolution = 6;
9557+ optional int16u minBitRate = 7;
9558+ optional int16u maxBitRate = 8;
9559+ optional int16u minFragmentLen = 9;
9560+ optional int16u maxFragmentLen = 10;
9561+ }
9562+
9563+ info event AudioStreamChanged = 1 {
9564+ int16u audioStreamID = 0;
9565+ optional StreamTypeEnum streamType = 1;
9566+ optional AudioCodecEnum audioCodec = 2;
9567+ optional int8u channelCount = 3;
9568+ optional int32u sampleRate = 4;
9569+ optional int32u bitRate = 5;
9570+ optional int8u bitDepth = 6;
9571+ }
9572+
9573+ info event SnapshotStreamChanged = 2 {
9574+ int16u snapshotStreamID = 0;
9575+ optional ImageCodecEnum imageCodec = 1;
9576+ optional int16u frameRate = 2;
9577+ optional int32u bitRate = 3;
9578+ optional VideoResolutionStruct minResolution = 4;
9579+ optional VideoResolutionStruct maxResolution = 5;
9580+ optional int8u quality = 6;
9581+ }
9582+
9583+ readonly attribute access(read: administer) optional int8u maxConcurrentVideoEncoders = 0;
9584+ readonly attribute access(read: administer) optional int32u maxEncodedPixelRate = 1;
9585+ readonly attribute access(read: administer) optional VideoSensorParamsStruct videoSensorParams = 2;
9586+ readonly attribute access(read: administer) optional boolean nightVisionCapable = 3;
9587+ readonly attribute access(read: administer) optional VideoResolutionStruct minViewPortWidth = 4;
9588+ readonly attribute access(read: administer) optional VideoResolutionStruct minViewPortHeight = 5;
9589+ readonly attribute access(read: administer) optional RateDistortionTradeOffPointsStruct rateDistortionTradeOffPoints[] = 6;
9590+ readonly attribute access(read: administer) optional int32u maxPreRollBufferSize = 7;
9591+ readonly attribute access(read: administer) optional AudioCapabilitiesStruct microphoneCapabilities = 8;
9592+ readonly attribute access(read: administer) optional nullable AudioCapabilitiesStruct speakerCapabilities = 9;
9593+ readonly attribute access(read: administer) optional TwoWayTalkSupportTypeEnum twoWayTalkSupport = 10;
9594+ readonly attribute access(read: administer) optional SnapshotParamsStruct supportedSnapshotParams[] = 11;
9595+ readonly attribute access(read: administer) optional boolean HDRCapable = 12;
9596+ readonly attribute access(read: administer) int32u maxNetworkBandwidth = 13;
9597+ readonly attribute access(read: administer) optional int16u currentFrameRate = 14;
9598+ attribute access(read: administer, write: administer) optional boolean HDRMode = 15;
9599+ readonly attribute access(read: administer) optional VideoCodecEnum currentVideoCodecs[] = 16;
9600+ readonly attribute access(read: administer) optional SnapshotParamsStruct currentSnapshotConfig = 17;
9601+ readonly attribute access(read: administer) fabric_idx fabricsUsingCamera[] = 18;
9602+ readonly attribute access(read: administer) optional VideoStreamStruct allocatedVideoStreams[] = 19;
9603+ readonly attribute access(read: administer) optional AudioStreamStruct allocatedAudioStreams[] = 20;
9604+ readonly attribute access(read: administer) optional SnapshotStreamStruct allocatedSnapshotStreams[] = 21;
9605+ attribute access(read: administer, write: administer) optional StreamTypeEnum rankedVideoStreamPrioritiesList[] = 22;
9606+ attribute access(read: administer, write: administer) optional boolean softRecordingPrivacyModeSetting = 23;
9607+ attribute access(read: administer, write: administer) optional boolean softLivestreamPrivacyModeSetting = 24;
9608+ readonly attribute access(read: administer) optional boolean hardPrivacyMode = 25;
9609+ attribute access(read: administer, write: administer) optional TriStateAutoEnum nightVision = 26;
9610+ attribute access(read: administer, write: administer) optional TriStateAutoEnum nightVisionIllum = 27;
9611+ attribute access(read: administer, write: administer) optional boolean awb = 28;
9612+ attribute access(read: administer, write: administer) optional boolean shutterSpeed = 29;
9613+ attribute access(read: administer, write: administer) optional boolean iso = 30;
9614+ readonly attribute access(read: administer) optional ViewportStruct viewport = 31;
9615+ attribute access(read: administer, write: administer) optional boolean speakerEnabled = 32;
9616+ attribute access(read: administer, write: administer) optional int8u speakerVolumeLevel = 33;
9617+ attribute access(read: administer, write: administer) optional int8u speakerMaxLevel = 34;
9618+ attribute access(read: administer, write: administer) optional int8u speakerMinLevel = 35;
9619+ attribute access(read: administer, write: administer) optional boolean micStatus = 36;
9620+ attribute access(read: administer, write: administer) optional int8u micVolumeLevel = 37;
9621+ attribute access(read: administer, write: administer) optional int8u micMaxLevel = 38;
9622+ attribute access(read: administer, write: administer) optional int8u micMinLevel = 39;
9623+ attribute access(read: administer, write: administer) optional boolean micAGCEnabled = 40;
9624+ readonly attribute access(read: administer) optional int16u imageRotation = 41;
9625+ readonly attribute access(read: administer) optional boolean imageFlipHorizontal = 42;
9626+ readonly attribute access(read: administer) optional boolean imageFlipVertical = 43;
9627+ attribute access(read: administer, write: administer) optional boolean localVideoRecordingEnabled = 44;
9628+ attribute access(read: administer, write: administer) optional boolean localSnapshotRecordingEnabled = 45;
9629+ attribute access(read: administer, write: administer) optional boolean statusLight = 46;
9630+ attribute access(read: administer, write: administer) optional ThreeLevelAutoEnum statusLightBrightness = 47;
9631+ attribute access(read: administer, write: administer) optional TriStateAutoEnum depthSensorStatus = 48;
9632+ readonly attribute access(read: administer) optional PerStreamStruct watermarkEnabled[] = 49;
9633+ readonly attribute access(read: administer) optional PerStreamStruct OSDEnabled[] = 50;
9634+ readonly attribute command_id generatedCommandList[] = 65528;
9635+ readonly attribute command_id acceptedCommandList[] = 65529;
9636+ readonly attribute event_id eventList[] = 65530;
9637+ readonly attribute attrib_id attributeList[] = 65531;
9638+ readonly attribute bitmap32 featureMap = 65532;
9639+ readonly attribute int16u clusterRevision = 65533;
9640+
9641+ request struct AudioStreamAllocateRequest {
9642+ StreamTypeEnum streamType = 0;
9643+ AudioCodecEnum audioCodec = 1;
9644+ int8u channelCount = 2;
9645+ int32u sampleRate = 3;
9646+ int32u bitRate = 4;
9647+ int8u bitDepth = 5;
9648+ }
9649+
9650+ response struct AudioStreamAllocateResponse = 1 {
9651+ int16u audioStreamID = 0;
9652+ }
9653+
9654+ request struct AudioStreamDeallocateRequest {
9655+ int16u audioStreamID = 0;
9656+ }
9657+
9658+ request struct VideoStreamAllocateRequest {
9659+ StreamTypeEnum streamType = 0;
9660+ VideoCodecEnum videoCodec = 1;
9661+ int16u minFrameRate = 2;
9662+ int16u maxFrameRate = 3;
9663+ VideoResolutionStruct minResolution = 4;
9664+ VideoResolutionStruct maxResolution = 5;
9665+ int32u minBitRate = 6;
9666+ int32u maxBitRate = 7;
9667+ int16u minFragmentLen = 8;
9668+ int16u maxFragmentLen = 9;
9669+ }
9670+
9671+ response struct VideoStreamAllocateResponse = 4 {
9672+ int16u videoStreamID = 0;
9673+ }
9674+
9675+ request struct VideoStreamModifyRequest {
9676+ int16u videoStreamID = 0;
9677+ VideoResolutionStruct resolution = 1;
9678+ }
9679+
9680+ request struct VideoStreamDeallocateRequest {
9681+ int16u videoStreamID = 0;
9682+ }
9683+
9684+ request struct SnapshotStreamAllocateRequest {
9685+ ImageCodecEnum imageCodec = 0;
9686+ int16u frameRate = 1;
9687+ int32u bitRate = 2;
9688+ VideoResolutionStruct minResolution = 3;
9689+ VideoResolutionStruct maxResolution = 4;
9690+ int8u quality = 5;
9691+ }
9692+
9693+ response struct SnapshotStreamAllocateResponse = 8 {
9694+ int16u snapshotStreamID = 0;
9695+ }
9696+
9697+ request struct SnapshotStreamDeallocateRequest {
9698+ int16u snapshotStreamID = 0;
9699+ }
9700+
9701+ request struct CaptureSnapshotRequest {
9702+ int16u snapshotStreamID = 0;
9703+ VideoResolutionStruct requestedResolution = 1;
9704+ }
9705+
9706+ response struct CaptureSnapshotResponse = 12 {
9707+ octet_string data = 0;
9708+ ImageCodecEnum imageCodec = 1;
9709+ VideoResolutionStruct resolution = 2;
9710+ }
9711+
9712+ request struct SetViewportRequest {
9713+ ViewportStruct viewport = 0;
9714+ }
9715+
9716+ request struct SetImageRotationRequest {
9717+ int16u angle = 0;
9718+ }
9719+
9720+ request struct SetImageFlipHorizontalRequest {
9721+ boolean enabled = 0;
9722+ }
9723+
9724+ request struct SetImageFlipVerticalRequest {
9725+ boolean enabled = 0;
9726+ }
9727+
9728+ request struct SetWatermarkRequest {
9729+ int16u videoStreamID = 0;
9730+ boolean enabled = 1;
9731+ }
9732+
9733+ request struct SetOSDRequest {
9734+ int16u videoStreamID = 0;
9735+ boolean enabled = 1;
9736+ }
9737+
9738+ /** This command SHALL allocate an audio stream on the camera and return an allocated audio stream identifier. */
9739+ command access(invoke: administer) AudioStreamAllocate(AudioStreamAllocateRequest): AudioStreamAllocateResponse = 0;
9740+ /** This command SHALL deallocate an audio stream on the camera, corresponding to the given audio stream identifier. */
9741+ command access(invoke: administer) AudioStreamDeallocate(AudioStreamDeallocateRequest): DefaultSuccess = 2;
9742+ /** This command SHALL allocate a video stream on the camera and return an allocated video stream identifier. */
9743+ command access(invoke: administer) VideoStreamAllocate(VideoStreamAllocateRequest): VideoStreamAllocateResponse = 3;
9744+ /** This command SHALL be used to modify the resolution of a stream specified by the VideoStreamID. */
9745+ command access(invoke: administer) VideoStreamModify(VideoStreamModifyRequest): DefaultSuccess = 5;
9746+ /** This command SHALL deallocate a video stream on the camera, corresponding to the given video stream identifier. */
9747+ command access(invoke: administer) VideoStreamDeallocate(VideoStreamDeallocateRequest): DefaultSuccess = 6;
9748+ /** This command SHALL allocate a snapshot stream on the device and return an allocated snapshot stream identifier. */
9749+ command access(invoke: administer) SnapshotStreamAllocate(SnapshotStreamAllocateRequest): SnapshotStreamAllocateResponse = 7;
9750+ /** This command SHALL deallocate an snapshot stream on the camera, corresponding to the given snapshot stream identifier. */
9751+ command access(invoke: administer) SnapshotStreamDeallocate(SnapshotStreamDeallocateRequest): DefaultSuccess = 9;
9752+ command access(invoke: administer) SetStreamPriority(): DefaultSuccess = 10;
9753+ /** This command SHALL return a Snapshot from the camera. */
9754+ command access(invoke: administer) CaptureSnapshot(CaptureSnapshotRequest): DefaultSuccess = 11;
9755+ /** This command SHALL set the viewport in all video streams. */
9756+ command SetViewport(SetViewportRequest): DefaultSuccess = 13;
9757+ /** The data fields for this command SHALL be as follows: */
9758+ command SetImageRotation(SetImageRotationRequest): DefaultSuccess = 14;
9759+ /** The data fields for this command SHALL be as follows: */
9760+ command SetImageFlipHorizontal(SetImageFlipHorizontalRequest): DefaultSuccess = 15;
9761+ /** The data fields for this command SHALL be as follows: */
9762+ command SetImageFlipVertical(SetImageFlipVerticalRequest): DefaultSuccess = 16;
9763+ /** This command controls if the manufacturer watermark logo is enabled for a given video stream. */
9764+ command SetWatermark(SetWatermarkRequest): DefaultSuccess = 17;
9765+ /** This command controls if the On Screen Display (OSD) of text such as date, time, timezone, and/or device name, is enabled for a given video stream. */
9766+ command SetOSD(SetOSDRequest): DefaultSuccess = 18;
9767+ }
9768+
94199769/** The WebRTC transport provider cluster provides a way for stream providers (e.g. Cameras) to stream or receive their data through WebRTC. */
94209770provisional cluster WebRTCTransportProvider = 1363 {
94219771 revision 1;
0 commit comments