<html>
    <head>
      <base href="https://bugs.webkit.org/">
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - [WebRTC] Add support for SDP BUNDLE (&quot;a:group:BUNDLE&quot; and &quot;a=bundle-only&quot; lines)"
   href="https://bugs.webkit.org/show_bug.cgi?id=170157">170157</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>[WebRTC] Add support for SDP BUNDLE (&quot;a:group:BUNDLE&quot; and &quot;a=bundle-only&quot; lines)
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>WebKit
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>WebKit Nightly Build
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>Unspecified
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Unspecified
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>Normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P2
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>Media Elements
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>webkit-unassigned&#64;lists.webkit.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>clopez&#64;igalia.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>alex&#64;igalia.com, aperez&#64;igalia.com
          </td>
        </tr></table>
      <p>
        <div>
        <pre>WebKit SDPProcessor ignores the bundlePolicy defined on RTCPeerConnection(), and doesn't generate the a=group:BUNDLE nor the a=bundle-only lines.

<a href="https://tools.ietf.org/html/draft-ietf-rtcweb-jsep-19">https://tools.ietf.org/html/draft-ietf-rtcweb-jsep-19</a> and <a href="https://tools.ietf.org/html/draft-ietf-mmusic-sdp-bundle-negotiation-36">https://tools.ietf.org/html/draft-ietf-mmusic-sdp-bundle-negotiation-36</a> defines how this should work.

Very summarized, the idea is that we should generate an &quot;a=group:BUNDLE&quot; attribute with the MID identifiers specified in the bundle group in the most recent answer.
If we are creating the offer, then we use our MID identifiers.

          a=group:BUNDLE ${midname1} [... ${midnameN} ]

And then we should generate a number of a=bundle-only lines according to the bundlePolicy defined and the number of tracks.

C&amp;P from draft-ietf-rtcweb-jsep-19::

&quot;&quot;&quot;
The set of available policies is as follows:

   balanced:  The first m= section of each type (audio, video, or
      application) will contain transport parameters, which will allow
      an answerer to unbundle that section.  The second and any
      subsequent m= section of each type will be marked bundle-only.
      The result is that if there are N distinct media types, then
      candidates will be gathered for for N media streams.  This policy
      balances desire to multiplex with the need to ensure basic audio
      and video can still be negotiated in legacy cases.  When acting as
      answerer, if there is no bundle group in the offer, the
      implementation will reject all but the first m= section of each
      type.

   max-compat:  All m= sections will contain transport parameters; none
      will be marked as bundle-only.  This policy will allow all streams
      to be received by non-bundle-aware endpoints, but require separate
      candidates to be gathered for each media stream.

   max-bundle:  Only the first m= section will contain transport
      parameters; all streams other than the first will be marked as
      bundle-only.  This policy aims to minimize candidate gathering and
      maximize multiplexing, at the cost of less compatibility with
      legacy endpoints.  When acting as answerer, the implementation
      will reject any m= sections other than the first m= section,
      unless they are in the same bundle group as that m= section.

   As it provides the best tradeoff between performance and
   compatibility with legacy endpoints, the default bundle policy MUST
   be set to &quot;balanced&quot;.
&quot;&quot;&quot;</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>