sony / nmos-cpp

An NMOS (Networked Media Open Specifications) Registry and Node in C++ (IS-04, IS-05)
Apache License 2.0
144 stars 80 forks source link

Enhance support of NMOS stream mappings for JPEG XS and e.g. H264, H265, VP9 and AV1 #213

Closed garethsb closed 2 years ago

garethsb commented 3 years ago

NMOS supports compressed video streams; at the most basic via the media_type attribute in the Flow and the media_types capability in the Receiver.

Since IS-04 v1.3, we can register new Flow attributes, and with BCP-004-01 Receiver Capabilities and the Capabilities register, new Receiver capabilities. For example, for JPEG XS (see #177), it was agreed that bit rate is an important characteristic to add (as well as being able to indicate color (sub-)sampling for coded video Flows via the same components attribute used for raw video Flows).

The nmos-cpp sdp module is generic and extensible.

However, the nmos-cpp _nmos/sdp_utils.h_ module and the nmos::sdp_parameters structure it defines are not.

I propose we extend the nmos::sdp_parameters and related functions to provide SDP read/write for additional media types. If it cannot be done maintaining backward compatibility we can do something alongside instead.

There may be no point making something fully generic if it wouldn't provide any abstraction over the lower level sdp namespace functions.

Top priorities are to support video/jxsv, video/H264, video/H265, video/VP9, video/AV1 and audio/AM824 (which doesn't appear to have an IANA registration...).

I feel the nmos::sdp_parameters structure should expose all the required and optional format-specific parameters of these media types as first-class values. There are currently a few missing even for video/raw (when used as per ST 2110-20) such as CMAX (noted in the code).

garethsb commented 3 years ago

Missing format-specific parameters etc.:

garethsb commented 3 years ago

Other media types mentioned in #200: video/vc2, and audio/aac, /mp2, /mp3, /m4a, /opus. Relative priority unknown!

garethsb commented 2 years ago

Of the missing format-specific parameters etc. mentioned in https://github.com/sony/nmos-cpp/issues/213#issuecomment-979016210, for the currently supported media types (video/raw, video/jxsv, video/SMPTE2022-6, audio/L), I think they've all been implemented in #280 apart from a=framerate: roundtrip through video_SMPTE2022_6_parameters...

Therefore, let's close this issue and wait for BCP-006-xx for video/H264, etc.