-
Notifications
You must be signed in to change notification settings - Fork 2.2k
Initial implementation of PushAV Stream Transport Cluster #37787
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
Changed Files
|
48ff8e0
to
9d1591f
Compare
9d1591f
to
79c2dbd
Compare
PR #37787: Size comparison from 73fe30c to 543b7e1 Full report (3 builds for cc32xx, stm32)
|
you need to enable this cluster in camera example app to include it into the build system |
src/app/clusters/push-av-stream-transport-server/push-av-stream-transport-server.h
Outdated
Show resolved
Hide resolved
src/app/clusters/push-av-stream-transport-server/push-av-stream-transport-server.h
Outdated
Show resolved
Hide resolved
src/app/clusters/push-av-stream-transport-server/push-av-stream-transport-server.h
Outdated
Show resolved
Hide resolved
src/app/clusters/push-av-stream-transport-server/push-av-stream-transport-server.h
Outdated
Show resolved
Hide resolved
src/app/clusters/push-av-stream-transport-server/push-av-stream-transport-server.h
Outdated
Show resolved
Hide resolved
src/app/clusters/push-av-stream-transport-server/push-av-stream-transport-server.h
Outdated
Show resolved
Hide resolved
src/app/clusters/push-av-stream-transport-server/push-av-stream-transport-server.h
Outdated
Show resolved
Hide resolved
src/app/clusters/push-av-stream-transport-server/push-av-stream-transport-server.h
Outdated
Show resolved
Hide resolved
src/app/clusters/push-av-stream-transport-server/push-av-stream-transport-server.h
Outdated
Show resolved
Hide resolved
src/app/clusters/push-av-stream-transport-server/push-av-stream-transport-server.h
Outdated
Show resolved
Hide resolved
src/app/clusters/push-av-stream-transport-server/push-av-stream-transport-server.h
Outdated
Show resolved
Hide resolved
src/app/clusters/push-av-stream-transport-server/push-av-stream-transport-server.h
Show resolved
Hide resolved
src/app/clusters/push-av-stream-transport-server/push-av-stream-transport-server.h
Outdated
Show resolved
Hide resolved
src/app/clusters/push-av-stream-transport-server/push-av-stream-transport-server.cpp
Outdated
Show resolved
Hide resolved
src/app/clusters/push-av-stream-transport-server/push-av-stream-transport-server.cpp
Outdated
Show resolved
Hide resolved
src/app/clusters/push-av-stream-transport-server/push-av-stream-transport-server.cpp
Outdated
Show resolved
Hide resolved
src/app/clusters/push-av-stream-transport-server/push-av-stream-transport-server.h
Outdated
Show resolved
Hide resolved
78751fe
to
8e5895e
Compare
PR #37787: Size comparison from 162df09 to 8e5895e Full report (3 builds for cc32xx, stm32)
|
8e5895e
to
763a55a
Compare
PR #37787: Size comparison from 0238fed to 763a55a Full report (25 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, nrfconnect, qpg, stm32, telink)
|
763a55a
to
ccd12c5
Compare
PR #37787: Size comparison from 4cb3032 to ccd12c5 Increases above 0.2%:
Full report (73 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, cyw30739, efr32, esp32, linux, nrfconnect, nxp, psoc6, qpg, stm32, telink, tizen)
|
ccd12c5
to
f32e7b4
Compare
PR #37787: Size comparison from 2393eee to f32e7b4 Full report (52 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, cyw30739, efr32, nrfconnect, nxp, psoc6, qpg, stm32, telink, tizen)
|
f32e7b4
to
a669ea6
Compare
PR #37787: Size comparison from 8645b46 to a669ea6 Increases above 0.2%:
Full report (73 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, cyw30739, efr32, esp32, linux, nrfconnect, nxp, psoc6, qpg, stm32, telink, tizen)
|
a669ea6
to
9021736
Compare
PR #37787: Size comparison from 1125b84 to 9021736 Full report (3 builds for cc32xx, stm32)
|
9021736
to
592e3f7
Compare
PR #37787: Size comparison from 1125b84 to 8d3795a Increases above 0.2%:
Full report (71 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, cyw30739, efr32, esp32, linux, nrfconnect, nxp, psoc6, qpg, stm32, telink, tizen)
|
8d3795a
to
69d8bde
Compare
PR #37787: Size comparison from 9b54b67 to 1fdc586 Increases above 0.2%:
Full report (73 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, cyw30739, efr32, esp32, linux, nrfconnect, nxp, psoc6, qpg, stm32, telink, tizen)
|
TransportTriggerOptionsStorage(Structs::TransportTriggerOptionsStruct::DecodableType triggerOptions) | ||
{ | ||
triggerType = triggerOptions.triggerType; | ||
// motionZones = triggerOptions.motionZones; //Todo: Create Storage for motion zones |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See, the thing is... how can we know whether we have the APIs right if we can't implement them?
This really needs to be addressed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added implementation for motionZones.
|
||
CMAFContainerOptionsStorage(Optional<Structs::CMAFContainerOptionsStruct::Type> CMAFContainerOptions) | ||
{ | ||
if (CMAFContainerOptions.HasValue() == true) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So if CMAFContainerOptions does not have a value we just default-init based on whatever our superclass does? I guess that's probably OK....
chunkDuration = CMAFContainerOptions.Value().chunkDuration; | ||
|
||
MutableByteSpan CENCKeyBuffer(mCENCKeyBuffer); | ||
CopySpanToMutableSpan(CMAFContainerOptions.Value().CENCKey.Value(), CENCKeyBuffer); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This crashes if there is no CENCKey, no?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added check for CENCKey
metadataEnabled = CMAFContainerOptions.Value().metadataEnabled; | ||
|
||
MutableByteSpan CENCKeyIDBuffer(mCENCKeyIDBuffer); | ||
CopySpanToMutableSpan(CMAFContainerOptions.Value().CENCKeyID.Value(), CENCKeyIDBuffer); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Again, this is not handling the optional thing correctly.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added check for CENCKey
uint8_t mCENCKeyBuffer[16]; | ||
uint8_t mCENCKeyIDBuffer[16]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Those 16s should be some constant or constants that are documented to be the spec-required constraints, right?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes they are constraints
Platform::ScopedMemoryBuffer<TransportConfigurationStruct> transportConfigurations; | ||
if (!transportConfigurations.Calloc(bufferSize)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So why are we doing that here, when we just used std::vector elsewhere?
return; | ||
} | ||
|
||
if ((connectionID.HasValue() == false) || connectionID.Value().IsNull()) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Technically, if ConnectionID is not present, then it's not null, so this code does not match the spec.
I think the spec is broken, but I also can't tell what behavior it's aiming for. Please make sure the spec gets fixed, and track the spec issue with a link in this code. I expect this field is not supposed to be optional.
return; | ||
} | ||
|
||
for (auto & connection : mCurrentConnections) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think the spec is broken here, in that it has different behavior for a fabric based on whether other fabrics have connections. Please file a spec issue, track it with a link here.
} | ||
|
||
response.transportConfigurations = DataModel::List<const TransportConfigurationStruct>( | ||
Span<TransportConfigurationStruct>(transportConfigurations.Get(), count)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why do you need the Span bit here? I don't think you do.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't see cluster APIs for generating the events for this cluster.
PR #37787: Size comparison from f273013 to f89a7c6 Full report (7 builds for cc13x4_26x4, stm32, tizen)
|
This is the initial implementation of Push AV Stream Transport cluster
Delegate definition
Attributes support
Command Handling
Testing
Addition of delegate implementation in the examples/all-clusters-app.