Re: Issue 81: Separating audio and video capabilities

Yes, that was what prompted this.

On May 9, 2014, at 11:44 AM, "Justin Uberti" <juberti@google.com<mailto:juberti@google.com>> wrote:

RTP header extensions will often be media-specific (e.g. sender audio level). Same with RTCP feedback mechanisms.


On Fri, May 9, 2014 at 10:57 AM, Peter Thatcher <pthatcher@google.com<mailto:pthatcher@google.com>> wrote:
I think it's nice to be able to get the capabilities without creating a sender or receiver object first.

I don't really see the advantage of having separate audio/video capabilities.  What things will be audio-only or video-only?  The codecs?  The codecs already indicate whether they are audio or video.


On Thu, May 8, 2014 at 10:19 PM, Bernard Aboba <Bernard.Aboba@microsoft.com<mailto:Bernard.Aboba@microsoft.com>> wrote:
Currently, getCapabilities is defined as follows:

partial interface RTCRtpSender {
static RTCRtpCapabilities getCapabilities ();
};

partial interface RTCRtpReceiver {
static RTCRtpCapabilities getCapabilities ();
};

The implication is that getCapabilities() returns both audio and video capabilities in a single RTCRtpCapabilities object.

However, if getCapabilities wasn't defined as static, then it could return only capabilities of the appropriate kind:

partial interface RTCRtpReceiver {
RTCRtpCapabilities getCapabilities (DOMString kind);
}

partial interface RTCRtpSender {
RTCRtpCapabilities getCapabilities ();
};

If it were done this way, with respect to the RTCRtpSender object, it would be possible to retrieve audio and video send and receive capabilities separately:

var audioSender = new RTCRtpSender(audioTrack, transport);
var videoSender = new RTCRtpSender(videoTrack, transport);
rtpAudioSendCaps = audioSender.getCapabilities();
rtpVideoSendCaps = videoSender.getCapabilities();

With the RTCRtpReceiver object, it would look like this:

   var audioReceiver = new RTCRtpReceiver(transport);
   var videoReceiver = new RTCRtpReceiver(transport);
   rtpAudioRecvCaps = audioReceiver.getCapabilities("audio");
   rtpVideoRecvCaps = videoReceiver.getCapabilities("video");

One advantage of separating audio and video capabilities is that subsequent calls to createParameters could be more specific:

var audioRecvParams = RTCRtpReceiver.createParameters(
"audio", remote.rtpAudioSendCaps);
var videoRecvParams = RTCRtpReceiver.createParameters(
"video", remote.rtpVideoSendCaps);

Received on Friday, 9 May 2014 20:54:49 UTC