Issues 127 (VP8), 126 (Opus) and 125 (H.264): Undefined capabilities and parameters

Frank Li has filed 3 issues relating to the need to define Capabilities and Parameters for popular codecs such as Opus, VP8 and H.264. 

The following documents appear relevant to this issue: 

[RFC6184]
Y.-K.. Wang; R. Even; T. Kristensen; R. Jesup. RTP Payload Format for H.264 Video. May 2011. RFC. URL: http://tools.ietf.org/html/rfc6184

[OPUS-RTP]
J. Spittka; K. Vos; JM. Valin. RTP Payload Format for Opus Speech and Audio Codec. 30 June 2014. Internet Draft (work in progress). URL: http://tools.ietf.org/html/draft-ietf-payload-rtp-opus

[RTCWEB-VIDEO]
A.B. Roach. WebRTC Video Processing and Codec Requirements. 1 July 2014. Internet Draft (work in progress). URL: http://tools.ietf.org/html/draft-ietf-rtcweb-video

[VP8-RTP]
P. Westin; H. Lundin; M. Glover; J. Uberti; F. Galligan. RTP Payload Format for VP8 Video. 10 February 2014. Internet Draft (work in progress). URL: http://tools.ietf.org/html/draft-ietf-payload-vp8

Here are some (very) preliminary thoughts on what the Capabilities and Parameters would look like for these codecs. 

VP8
----

[VP8-RTP] Section 6.1  describes two parameters that appear to represent decoder capabilities:  

Property Name	Values	                Notes
max-fr	               unsigned long	        This capability indicates the maximum frame rate in frames per second that the decoder is capable of decoding.
max-fs	              unsigned long long	This capability indicates the maximum frame size in macroblocks that the decoder is capable of decoding.

The document does not appear to define any encoder capabilities. 

In order to ensure that the decoder limits are not exceeded, it would seem reasonable to have the above decoder capabilities also present as encoder parameters.  


H.264
-------

RFC 6184 Section 8.1 defines quite a few parameters.  Currently [RTCWEB-VIDEO] does not contain much detail on which parameters are supported.   There are quite a few parameters that relate to supported resolutions (profile-level-id, max-recv-level, max-fs, etc.) but rather than trying to include too many, it seems better to err on the side of caution.  Here is a basic (probably too basic) set of decoder capabilities that also would make sense as encoder parameters: 

Property Name	Values	                   Notes
max-recv-level	        unsigned long	           Indicates the highest level a receiver supports.
packetization-mode	unsigned short	           An integer in the range of 0 to 2 which indicates which packetization-mode this implementation supports.


Opus
------

[OPUS-RTP] Section 6.1 describes quite a few OPTIONAL  parameters.  Here is a very basic set of decoder capabilities that might also make sense as encoder parameters: 

Property Name	       Values	       Notes
maxplaybackrate	usigned long	      A hint about the maximum output sampling rate that the receiver is capable of rendering in Hz.
minptime          	unsigned long	      The decoder's minimum length of time in milliseconds rounded up to the next full integer value.
stereo	                boolean	              Specifies whether the decoder prefers receiving stereo (if true) or mono signals (if false).

Received on Tuesday, 8 July 2014 17:22:05 UTC