- From: Robin Raymond <robin@hookflash.com>
- Date: Thu, 24 Apr 2014 22:55:44 -0400
- To: "public-ortc@w3.org" <public-ortc@w3.org>
- Message-ID: <5359CEB0.8090506@hookflash.com>
dictionary RTCRtpCapabilities { sequence<RTCRtpCodec> audioCodecs; sequence<RTCRtpCodec> videoCodecs; sequence<DOMString> headerExtensions; sequence<DOMString> features; }; What is "features"? Is this a IANA style namespace that defines meaning to what rtp style "features" the browser engine supports? The description for "features" currently says 'Supported RTP features, such as "nack" from [RFC4585 <http://internaut.com:8080/%7Ebaboba/ortc/ortc-4-24-2014-revised.html#bib-RFC4585>].' If it's a namespace type thing, would it define features such as support rtcp feedback parameters and other "future" rtp/rtcp capabilities? Or is the intention to have "features" define exactly what stuff is supported for feedback parameters as per in RFC 4585? If it's mean to define RTCP feedback mechanisms as per RFC 4585 then it's not quite right since: rtcp-fb-syntax = "a=rtcp-fb:" rtcp-fb-pt SP rtcp-fb-val CRLF rtcp-fb-pt = "*" ; wildcard: applies to all formats / fmt ; as defined in SDP spec rtcp-fb-val = "ack" rtcp-fb-ack-param / "nack" rtcp-fb-nack-param / "trr-int" SP 1*DIGIT / rtcp-fb-id rtcp-fb-param rtcp-fb-id = 1*(alpha-numeric / "-" / "_") rtcp-fb-param = SP "app" [SP byte-string] / SP token [SP byte-string] / ; empty rtcp-fb-ack-param = SP "rpsi" / SP "app" [SP byte-string] / SP token [SP byte-string] / ; empty rtcp-fb-nack-param = SP "pli" / SP "sli" / SP "rpsi" / SP "app" [SP byte-string] / SP token [SP byte-string] / ; empty .. would require a more detailed definition. Basically, to give clear indication for rtcp feedback support, the capabilities would have to be more like this: dictionary RTCRtpCapabilities { sequence<RTCRtpCodec> audioCodecs; sequence<RTCRtpCodec> videoCodecs; sequence<DOMString> headerExtensions; sequence<RTCRtcpFeedbackCapability> feedbackParamters; }; dictionary RTCRtcpFeedbackCapability { DOMString type; // e.g. "ack", "nack", "trr-int", ... sequence<DOMString > value; // e.g. for "nack" would be list of "pli", "sli", "rpsi", "app" }; I'm guessing since we already have a list of "RTCRtcpFeedbackParam" for each codec which can indicate that information per codec for feedback mechanisms that Rtc capability "features" is meant to be an IANA style namespace set of features supported by the browser engine. But if a "feature" was listed as string "nack", does that mean the browser engine supports all types of "nack", e.g.: "pli", "sli", "rpsi", ... ? (personally, I don't think that makes much sense). If it doesn't mean all are supported then does "nack" mean that 'at least one (or more) of the "nack" feedback mechanisms are supported'? In that case would we say "to know exactly what rtcp feedback mechanisms are supported, the application would have to obtain the per codec rtcp feedback parameters to know what feedback parameters are available"? So I propose that "features" is left as is, i.e. a sequence of DOMStrings and that it represents an IANA style definition of RTP "features" that are available and that for each feature we define what that feature means. And in the case of "nack", I think 'at least one or more of "pli", "sli, "rpsi", "app" is supported but details are left to be discovered inside codec parameters. If others have use cases where we need a "capabilities" style mechanism to discover more detailed but generalized (i.e outside each codec) possible rtcp feedback mechanisms then I suggest we add "sequence<RTCRtcpFeedbackCapability> feedbackParamters;" to the RTCRtpCapabilities dictionary, but I'm not in favour of that unless we have a strong need. Thoughts? -Robin
Received on Friday, 25 April 2014 02:56:15 UTC