diff --git a/amendments.json b/amendments.json index 5a7b920c9..4cad0041e 100644 --- a/amendments.json +++ b/amendments.json @@ -950,5 +950,21 @@ ], "id": 45 } + ], + "rtcrtpencodingparamters-attributes-active": [ + { + "description": "Add codec to RTCRtpEncodingParameters, moved from webrtc-extensions", + "type": "addition", + "status": "candidate", + "difftype": "append", + "id": 47, + "pr": 2985, + "tests": [ + "webrtc/RTCRtpParameters-codec.html" + ], + "testUpdates": [ + "web-platform-tests/wpt#47663" + ] + } ] } diff --git a/base-rec.html b/base-rec.html index de7fea7b7..e68c70b3a 100644 --- a/base-rec.html +++ b/base-rec.html @@ -9716,7 +9716,7 @@
active of type boolean, defaulting to true -
+

Indicates that this encoding is actively being sent. Setting it to false causes this encoding to no diff --git a/webrtc.html b/webrtc.html index 008d13688..f3cde540a 100644 --- a/webrtc.html +++ b/webrtc.html @@ -2811,6 +2811,23 @@

firing on these objects in a queued task.

+
  • +

    For each transceiver in connection's [= set of transceivers =]:

    +
      +
    1. +

      Let codecs be transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[SendCodecs]]}}.

      +
    2. +
    3. +

      If codecs is not an empty list:

      +
        +
      1. +

        Remove any codec value in transceiver.{{RTCRtpTransceiver/[[Sender]]}}.{{RTCRtpSender/[[SendEncodings]]}} + that does not [= codec dictionary match | match =] any entry in codecs.

        +
      2. +
      +
    4. +
    +
  • @@ -8210,6 +8227,17 @@

    an {{InvalidAccessError}}.

  • +
  • +

    + If any codec parameter in sendEncodings does + [= codec dictionary match | not match =] any codec in {{RTCRtpSender.getCapabilities(kind)}}.codecs, + [= exception/throw =] an {{OperationError}}.

    +
  • +
  • +

    If the user agent does not support changing codecs without negotiation or + does not support setting codecs for individual encodings, return a promise + [= rejected =] with a newly [= exception/created =] {{OperationError}}.

    +
  • If kind is `"audio"`, remove the @@ -8997,6 +9025,17 @@

  • Let codecs be parameters.{{RTCRtpParameters/codecs}}.
  • +
  • +

    Let choosableCodecs be codecs.

    +
  • +
  • +

    If choosableCodecs is an empty list, set choosableCodecs + to transceiver.{{RTCRtpTransceiver/[[PreferredCodecs]]}}.

    +
  • +
  • +

    If choosableCodecs is still an empty list, set choosableCodecs + to the [=RTCRtpSender/list of implemented send codecs=] for transceiver's kind.

    +
  • Let N be the number of {{RTCRtpEncodingParameters}} stored in sender.{{RTCRtpSender/[[SendEncodings]]}}. @@ -9022,6 +9061,10 @@

    Note that this also applies to transactionId.

  • +
  • + Any encoding in encodings [=map/exists|contains=] a codec + [= codec dictionary match | not found =] in choosableCodecs. +
  • @@ -9066,6 +9109,12 @@

    exception/created =] {{RangeError}}.

  • +
  • +

    If the user agent does not support setting the codec for any encoding or mixing + different codec values on the different encodings, return a promise [= rejected =] + with a newly [= exception/created =] {{OperationError}}. +

    +
  • Let p be a new promise. @@ -9685,6 +9734,7 @@

    dictionary RTCRtpEncodingParameters : RTCRtpCodingParameters {
       boolean active = true;
    +  RTCRtpCodec codec;
       unsigned long maxBitrate;
       double maxFramerate;
       double scaleResolutionDownBy;
    @@ -9701,7 +9751,7 @@ 

    "idlMemberType">boolean, defaulting to true -
    +

    Indicates that this encoding is actively being sent. Setting it to false causes this encoding to no @@ -9711,6 +9761,14 @@

    an RTCP BYE is not sent.

    +
    + codec of type RTCRtpCodec +
    +
    +

    Optional value selecting which codec is used for this encoding's + RTP stream. If absent, the user agent can chose to use any negotiated codec.

    +
    maxBitrate of type