<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 - Media Source Extensions - SourceBuffer &quot;mode&quot; support"
   href="https://bugs.webkit.org/show_bug.cgi?id=157539">157539</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Media Source Extensions - SourceBuffer &quot;mode&quot; support
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </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>Macintosh
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>OS X 10.11
          </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>johnsfreemusic&#64;gmail.com
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Created <span class=""><a href="attachment.cgi?id=278535" name="attach_278535" title="Test files and screenshots.">attachment 278535</a> <a href="attachment.cgi?id=278535&amp;action=edit" title="Test files and screenshots.">[details]</a></span>
Test files and screenshots.

<a href="https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer/mode">https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer/mode</a>
<a href="https://w3c.github.io/media-source/#idl-def-AppendMode">https://w3c.github.io/media-source/#idl-def-AppendMode</a>

When playing a MIME that would default to &quot;segments&quot; (eg AAC-LC, 'audio/mp4; codecs=&quot;mp4a.40.2&quot;') changing the mode to &quot;sequence&quot; does not have the intended effect.

I can buffer a 4 minute AAC-LC file just fine if I do not touch the mode attribute; if I change it to &quot;sequence&quot; before buffering any data then somehow only about a half second gets buffered (according to the SourceBuffer itself). I would expect the entire file to be buffered exactly the same as if it was in &quot;segments&quot; mode (for a single song).

Note that the difference in behavior comes from buffering two files. Say I buffer two AAC-LC songs, one is 4 minutes and the second is 3 minutes. Also assume I do not change timestampOffset.
- In sequence mode the data will &quot;overlap&quot; and the total amount buffered will be 4 minutes. The first 3 minutes will be the second song, the last minute will be the last minute of the first song.
- In segments mode the data will not overlap and the total amount buffered will be 7 minutes. The first 4 minutes are the first song, the last 3 minutes are the second song.


This works as intended on Chrome (50) and FireFox.


Why is this useful?

For developers who are migrating audio formats and who's code is built around the &quot;sequence&quot; mode. Note that MP3/MPEG always acts as if it is in &quot;sequence&quot; mode. So if a developer then wants to switch to AAC playback the easiest thing to do on their end is make sure mode is always &quot;sequence&quot; rather then &quot;segments&quot;. As this is not properly supported it is more work for developers to abstract this away in their JavaScript themselves if they wish to support Safari.


Attached is a zip with example code and some screenshots of the issue in Chrome, FireFox, and Safari (note it is working in Chrome + FF as stated before). The example screenshots used two audio files as described above, though you can test with just one file and still not get anything buffered.

Tried both Safari 9.1 11601.5.17.1 and Webkit Nightly on MacOS. Both do not work (see screenshot of Safari in the zip - its the same on both). The source buffer says there is a half second buffered when in segments mode despite giving over 3 minutes of audio data.</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>