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