[MSE] Bug 26721 - Add label attribute to TrackDefault object.
authorAaron Colwell <acolwell@google.com>
Tue, 09 Sep 2014 09:48:43 -0700
changeset 424 9066cfb5ad1d
parent 423 abfffa7dc51b
child 425 df74aa427173
[MSE] Bug 26721 - Add label attribute to TrackDefault object.
media-source/media-source-respec.html
media-source/media-source.html
media-source/media-source.js
--- a/media-source/media-source-respec.html	Fri Sep 05 17:46:48 2014 -0700
+++ b/media-source/media-source-respec.html	Tue Sep 09 09:48:43 2014 -0700
@@ -1042,7 +1042,7 @@
         </dd>
         <dt>attribute TrackDefaultList trackDefaults</dt>
         <dd>
-          <p>Specifies the default values to use if kind and/or language information is not available in the
+          <p>Specifies the default values to use if kind, label, and/or language information is not available in the
             <a def-id="init-segment"></a> when the <a def-id="init-segment-received-algorithm"></a> needs
             to create track objects. This attribute is initially set to an empty <a>TrackDefaultList</a> object.</p>
           <p>On getting, Return the initial value or the last value that was successfully set.</p>
@@ -1398,6 +1398,13 @@
                       set to <var>audio byte stream track ID</var> and <var>type</var> set to
                       <a def-id="TrackDefaultType-audio"></a> and assign the value returned by the
                       algorithm to <var>audio language</var>.</li>
+                    <li>Let <var>audio label</var> be a label specified in the <a def-id="init-segment"></a> for this track or an empty string if no
+                      label info is present.</li>
+                    <li>If <var>audio label</var> equals an empty string, then run the
+                      <a def-id="default-track-label-algorithm"></a> with <var>byteStreamTrackID</var>
+                      set to <var>audio byte stream track ID</var> and <var>type</var> set to
+                      <a def-id="TrackDefaultType-audio"></a> and assign the value returned by the
+                      algorithm to <var>audio label</var>.</li>
                     <li>Let <var>audio kinds</var> be an array of kind strings specified in the
                       <a def-id="init-segment"></a> for this track or an empty array if no kind information
                       is provided.</li>
@@ -1414,6 +1421,8 @@
                         <li>Generate a unique ID and assign it to the <a def-id="audiotrack-id"></a> property on <var>new audio track</var>.</li>
                         <li>Assign <var>audio language</var> to the <a def-id="audiotrack-language"></a>
                           property on <var>new audio track</var>.</li>
+                        <li>Assign <var>audio label</var> to the <a def-id="audiotrack-label"></a>
+                          property on <var>new audio track</var>.</li>
                         <li>Assign <var>current audio kind</var> to the <a def-id="audiotrack-kind"></a>
                           property on <var>new audio track</var>.</li>
                         <li>
@@ -1451,6 +1460,13 @@
                       set to <var>video byte stream track ID</var> and <var>type</var> set to
                       <a def-id="TrackDefaultType-video"></a> and assign the value returned by the
                       algorithm to <var>video language</var>.</li>
+                    <li>Let <var>video label</var> be a label specified in the <a def-id="init-segment"></a> for this track or an empty string if no
+                      label info is present.</li>
+                    <li>If <var>video label</var> equals an empty string, then run the
+                      <a def-id="default-track-label-algorithm"></a> with <var>byteStreamTrackID</var>
+                      set to <var>video byte stream track ID</var> and <var>type</var> set to
+                      <a def-id="TrackDefaultType-video"></a> and assign the value returned by the
+                      algorithm to <var>video label</var>.</li>
                     <li>Let <var>video kinds</var> be an array of kind strings specified in the
                       <a def-id="init-segment"></a> for this track or an empty array if no kind information
                       is provided.</li>
@@ -1467,6 +1483,8 @@
                         <li>Generate a unique ID and assign it to the <a def-id="videotrack-id"></a> property on <var>new video track</var>.</li>
                         <li>Assign <var>video language</var> to the <a def-id="videotrack-language"></a>
                           property on <var>new video track</var>.</li>
+                        <li>Assign <var>video label</var> to the <a def-id="videotrack-label"></a>
+                          property on <var>new video track</var>.</li>
                         <li>Assign <var>current video kind</var> to the <a def-id="videotrack-kind"></a>
                           property on <var>new video track</var>.</li>
                         <li>
@@ -1504,6 +1522,13 @@
                       set to <var>text byte stream track ID</var> and <var>type</var> set to
                       <a def-id="TrackDefaultType-text"></a> and assign the value returned by the
                       algorithm to <var>text language</var>.</li>
+                    <li>Let <var>text label</var> be a label specified in the <a def-id="init-segment"></a> for this track or an empty string if no
+                      label info is present.</li>
+                    <li>If <var>text label</var> equals an empty string, then run the
+                      <a def-id="default-track-label-algorithm"></a> with <var>byteStreamTrackID</var>
+                      set to <var>text byte stream track ID</var> and <var>type</var> set to
+                      <a def-id="TrackDefaultType-text"></a> and assign the value returned by the
+                      algorithm to <var>text label</var>.</li>
                     <li>Let <var>text kinds</var> be an array of kind strings specified in the
                       <a def-id="init-segment"></a> for this track or an empty array if no kind information
                       is provided.</li>
@@ -1521,6 +1546,8 @@
                         <li>Generate a unique ID and assign it to the <a def-id="texttrack-id"></a> property on <var>new text track</var>.</li>
                         <li>Assign <var>text language</var> to the <a def-id="texttrack-language"></a>
                           property on <var>new text track</var>.</li>
+                        <li>Assign <var>text label</var> to the <a def-id="texttrack-label"></a>
+                          property on <var>new text track</var>.</li>
                         <li>Assign <var>current text kind</var> to the <a def-id="texttrack-kind"></a>
                           property on <var>new text track</var>.</li>
                         <li>Populate the remaining properties on <var>new text track</var> with the
@@ -1592,6 +1619,31 @@
           </ol>
         </section>
 
+        <section id="sourcebuffer-default-track-label">
+          <h4>Default track label</h4>
+          <p>The following steps are run when the <a def-id="init-segment-received-algorithm"></a> needs
+            to determine what the default label for a new track should be. This algorithm is initialized
+            with <var>byteStreamTrackID</var> and <var>type</var> parameters when invoked by the
+            <a def-id="init-segment-received-algorithm"></a>.</p>
+          <ol>
+            <li>If <a def-id="trackDefaults"></a> contains a <a>TrackDefault</a> object with a
+              <a def-id="TrackDefault-type"></a> attribute equal to <var>type</var> and a
+              <a def-id="TrackDefault-byteStreamTrackID"></a> attribute equal to
+              <var>byteStreamTrackID</var>, then return the value of the
+              <a def-id="TrackDefault-label"></a> attribute on this matching object and abort these
+              steps.</li>
+
+            <li>If <a def-id="trackDefaults"></a> contains a <a>TrackDefault</a> object with a
+              <a def-id="TrackDefault-type"></a> attribute equal to <var>type</var> and a
+              <a def-id="TrackDefault-byteStreamTrackID"></a> attribute equal to
+              an empty string, then return the value of the
+              <a def-id="TrackDefault-label"></a> attribute on this matching object and abort these
+              steps.</li>
+
+            <li>Return an empty string to the caller.</li>
+          </ol>
+        </section>
+
         <section id="sourcebuffer-default-track-kinds">
           <h4>Default track kinds</h4>
           <p>The following steps are run when the <a def-id="init-segment-received-algorithm"></a> needs
@@ -2104,7 +2156,7 @@
 
     <section id="trackdefault">
       <h2>TrackDefault Object</h2>
-      <p>The TrackDefault object is used to provide kind and language information for tracks that do not
+      <p>The TrackDefault object is used to provide kind, label, and language information for tracks that do not
         contain this information in the <a def-id="init-segments"></a>. This information is only consulted
         when the <a def-id="init-segment-received-algorithm"></a> creates track objects.</p>
 
@@ -2128,7 +2180,7 @@
 
       <dl title="interface TrackDefault" class="idl">
         <dt class="extended-attribute">
-          Constructor(TrackDefaultType type, DOMString language, sequence<DOMString> kinds, optional DOMString byteStreamTrackID = "")
+          Constructor(TrackDefaultType type, DOMString language, DOMString label, sequence<DOMString> kinds, optional DOMString byteStreamTrackID = "")
         </dt>
         <dd>
           <ol class="method-algorithm">
@@ -2159,6 +2211,7 @@
             </li>
             <li>Set the <a def-id="TrackDefault-type"></a> attribute on this new object to <var>type</var>.</li>
             <li>Set the <a def-id="TrackDefault-language"></a> attribute on this new object to <var>language</var>.</li>
+            <li>Set the <a def-id="TrackDefault-label"></a> attribute on this new object to <var>label</var>.</li>
             <li>Set the <a def-id="TrackDefault-kinds"></a> attribute to on this new object <var>kinds</var>.</li>
             <li>Set the <a def-id="TrackDefault-byteStreamTrackID"></a> attribute on this new object to <var>byteStreamTrackID</var>.</li>
           </ol>
@@ -2179,6 +2232,11 @@
           <p>The default language to use when an <a def-id="init-segment"></a> does not contain language
           information for a new track. See <a def-id="init-segment-received-algorithm"></a> for details.</p>
         </dd>
+        <dt>readonly attribute DOMString label</dt>
+        <dd>
+          <p>The default label to use when an <a def-id="init-segment"></a> does not contain label
+          information for a new track. See <a def-id="init-segment-received-algorithm"></a> for details.</p>
+        </dd>
         <dt>readonly attribute DOMString[] kinds</dt>
         <dd>
           <p>The default kinds used when an <a def-id="init-segment"></a> does not contain kind
@@ -2545,10 +2603,18 @@
         </thead>
         <tbody>
           <tr>
-            <td>12 August 2014</td>
+            <td>09 September 2014</td>
             <td>
               <ul>
-                <li>Bug 26436 - Use HTMLMediaElement.buffered for HTMLMediaElement.readyState transitions instead of individual SourceBuffer.buffered attributes.
+                <li>Bug 26721 - Add label attribute to TrackDefault object.</li>
+              </ul>
+            </td>
+          </tr>
+          <tr>
+            <td><a href="https://dvcs.w3.org/hg/html-media/raw-file/856c321c7a6b/media-source/media-source.html">12 August 2014</a></td>
+            <td>
+              <ul>
+                <li>Bug 26436 - Use HTMLMediaElement.buffered for HTMLMediaElement.readyState transitions instead of individual SourceBuffer.buffered attributes.</li>
               </ul>
             </td>
           </tr>
--- a/media-source/media-source.html	Fri Sep 05 17:46:48 2014 -0700
+++ b/media-source/media-source.html	Tue Sep 09 09:48:43 2014 -0700
@@ -406,7 +406,7 @@
   </p>
   <h1 class="title p-name" id="title" property="dcterms:title">Media Source Extensions</h1>
   
-  <h2 property="dcterms:issued" datatype="xsd:dateTime" content="2014-08-13T00:17:56.000Z" id="w3c-editor-s-draft-12-august-2014"><abbr title="World Wide Web Consortium">W3C</abbr> Editor's Draft <time class="dt-published" datetime="2014-08-12">12 August 2014</time></h2>
+  <h2 property="dcterms:issued" datatype="xsd:dateTime" content="2014-09-09T16:45:31.000Z" id="w3c-editor-s-draft-09-september-2014"><abbr title="World Wide Web Consortium">W3C</abbr> Editor's Draft <time class="dt-published" datetime="2014-09-09">09 September 2014</time></h2>
   <dl>
     
       <dt>This version:</dt>
@@ -549,7 +549,7 @@
       
     
   
-</section><section id="toc"><h2 class="introductory" aria-level="1" role="heading" id="h2_toc">Table of Contents</h2><ul class="toc" role="directory" id="respecContents"><li class="tocline"><a href="#introduction" class="tocxref"><span class="secno">1. </span>Introduction</a><ul class="toc"><li class="tocline"><a href="#goals" class="tocxref"><span class="secno">1.1 </span>Goals</a></li><li class="tocline"><a href="#definitions" class="tocxref"><span class="secno">1.2 </span>Definitions</a></li></ul></li><li class="tocline"><a href="#mediasource" class="tocxref"><span class="secno">2. </span>MediaSource Object</a><ul class="toc"><li class="tocline"><a href="#attributes" class="tocxref"><span class="secno">2.1 </span>Attributes</a></li><li class="tocline"><a href="#methods" class="tocxref"><span class="secno">2.2 </span>Methods</a></li><li class="tocline"><a href="#mediasource-events" class="tocxref"><span class="secno">2.3 </span>Event Summary</a></li><li class="tocline"><a href="#mediasource-algorithms" class="tocxref"><span class="secno">2.4 </span>Algorithms</a><ul class="toc"><li class="tocline"><a href="#mediasource-attach" class="tocxref"><span class="secno">2.4.1 </span>Attaching to a media element</a></li><li class="tocline"><a href="#mediasource-detach" class="tocxref"><span class="secno">2.4.2 </span>Detaching from a media element</a></li><li class="tocline"><a href="#mediasource-seeking" class="tocxref"><span class="secno">2.4.3 </span>Seeking</a></li><li class="tocline"><a href="#buffer-monitoring" class="tocxref"><span class="secno">2.4.4 </span>SourceBuffer Monitoring</a></li><li class="tocline"><a href="#active-source-buffer-changes" class="tocxref"><span class="secno">2.4.5 </span>Changes to selected/enabled track state</a></li><li class="tocline"><a href="#duration-change-algorithm" class="tocxref"><span class="secno">2.4.6 </span>Duration change</a></li><li class="tocline"><a href="#end-of-stream-algorithm" class="tocxref"><span class="secno">2.4.7 </span>End of stream algorithm</a></li></ul></li></ul></li><li class="tocline"><a href="#sourcebuffer" class="tocxref"><span class="secno">3. </span>SourceBuffer Object</a><ul class="toc"><li class="tocline"><a href="#attributes-1" class="tocxref"><span class="secno">3.1 </span>Attributes</a></li><li class="tocline"><a href="#methods-1" class="tocxref"><span class="secno">3.2 </span>Methods</a></li><li class="tocline"><a href="#track-buffers" class="tocxref"><span class="secno">3.3 </span>Track Buffers</a></li><li class="tocline"><a href="#sourcebuffer-events" class="tocxref"><span class="secno">3.4 </span>Event Summary</a></li><li class="tocline"><a href="#sourcebuffer-algorithms" class="tocxref"><span class="secno">3.5 </span>Algorithms</a><ul class="toc"><li class="tocline"><a href="#sourcebuffer-segment-parser-loop" class="tocxref"><span class="secno">3.5.1 </span>Segment Parser Loop</a></li><li class="tocline"><a href="#sourcebuffer-reset-parser-state" class="tocxref"><span class="secno">3.5.2 </span>Reset Parser State</a></li><li class="tocline"><a href="#sourcebuffer-append-error" class="tocxref"><span class="secno">3.5.3 </span>Append Error Algorithm</a></li><li class="tocline"><a href="#sourcebuffer-prepare-append" class="tocxref"><span class="secno">3.5.4 </span>Prepare Append Algorithm</a></li><li class="tocline"><a href="#sourcebuffer-buffer-append" class="tocxref"><span class="secno">3.5.5 </span>Buffer Append Algorithm</a></li><li class="tocline"><a href="#sourcebuffer-stream-append-loop" class="tocxref"><span class="secno">3.5.6 </span>Stream Append Loop</a></li><li class="tocline"><a href="#sourcebuffer-range-removal" class="tocxref"><span class="secno">3.5.7 </span>Range Removal</a></li><li class="tocline"><a href="#sourcebuffer-init-segment-received" class="tocxref"><span class="secno">3.5.8 </span>Initialization Segment Received</a></li><li class="tocline"><a href="#sourcebuffer-default-track-language" class="tocxref"><span class="secno">3.5.9 </span>Default track language</a></li><li class="tocline"><a href="#sourcebuffer-default-track-kinds" class="tocxref"><span class="secno">3.5.10 </span>Default track kinds</a></li><li class="tocline"><a href="#sourcebuffer-coded-frame-processing" class="tocxref"><span class="secno">3.5.11 </span>Coded Frame Processing</a></li><li class="tocline"><a href="#sourcebuffer-coded-frame-removal" class="tocxref"><span class="secno">3.5.12 </span>Coded Frame Removal Algorithm</a></li><li class="tocline"><a href="#sourcebuffer-coded-frame-eviction" class="tocxref"><span class="secno">3.5.13 </span>Coded Frame Eviction Algorithm</a></li><li class="tocline"><a href="#sourcebuffer-audio-splice-frame-algorithm" class="tocxref"><span class="secno">3.5.14 </span>Audio Splice Frame Algorithm</a></li><li class="tocline"><a href="#sourcebuffer-audio-splice-rendering-algorithm" class="tocxref"><span class="secno">3.5.15 </span>Audio Splice Rendering Algorithm</a></li><li class="tocline"><a href="#sourcebuffer-text-splice-frame-algorithm" class="tocxref"><span class="secno">3.5.16 </span>Text Splice Frame Algorithm</a></li></ul></li></ul></li><li class="tocline"><a href="#sourcebufferlist" class="tocxref"><span class="secno">4. </span>SourceBufferList Object</a><ul class="toc"><li class="tocline"><a href="#attributes-2" class="tocxref"><span class="secno">4.1 </span>Attributes</a></li><li class="tocline"><a href="#methods-2" class="tocxref"><span class="secno">4.2 </span>Methods</a></li><li class="tocline"><a href="#sourcebufferlist-events" class="tocxref"><span class="secno">4.3 </span>Event Summary</a></li></ul></li><li class="tocline"><a href="#videoplaybackquality" class="tocxref"><span class="secno">5. </span>VideoPlaybackQuality Object</a><ul class="toc"><li class="tocline"><a href="#attributes-3" class="tocxref"><span class="secno">5.1 </span>Attributes</a></li></ul></li><li class="tocline"><a href="#trackdefault" class="tocxref"><span class="secno">6. </span>TrackDefault Object</a><ul class="toc"><li class="tocline"><a href="#constructors" class="tocxref"><span class="secno">6.1 </span>Constructors</a></li><li class="tocline"><a href="#attributes-4" class="tocxref"><span class="secno">6.2 </span>Attributes</a></li></ul></li><li class="tocline"><a href="#trackdefaultlist" class="tocxref"><span class="secno">7. </span>TrackDefaultList Object</a><ul class="toc"><li class="tocline"><a href="#constructors-1" class="tocxref"><span class="secno">7.1 </span>Constructors</a></li><li class="tocline"><a href="#attributes-5" class="tocxref"><span class="secno">7.2 </span>Attributes</a></li><li class="tocline"><a href="#methods-3" class="tocxref"><span class="secno">7.3 </span>Methods</a></li></ul></li><li class="tocline"><a href="#url" class="tocxref"><span class="secno">8. </span>URL Object Extensions</a><ul class="toc"><li class="tocline"><a href="#methods-4" class="tocxref"><span class="secno">8.1 </span>Methods</a></li></ul></li><li class="tocline"><a href="#htmlmediaelement-extensions" class="tocxref"><span class="secno">9. </span>HTMLMediaElement Extensions</a></li><li class="tocline"><a href="#htmlvideoelement-extensions" class="tocxref"><span class="secno">10. </span>HTMLVideoElement Extensions</a><ul class="toc"><li class="tocline"><a href="#methods-5" class="tocxref"><span class="secno">10.1 </span>Methods</a></li></ul></li><li class="tocline"><a href="#audio-track-extensions" class="tocxref"><span class="secno">11. </span>AudioTrack Extensions</a><ul class="toc"><li class="tocline"><a href="#attributes-6" class="tocxref"><span class="secno">11.1 </span>Attributes</a></li></ul></li><li class="tocline"><a href="#video-track-extensions" class="tocxref"><span class="secno">12. </span>VideoTrack Extensions</a><ul class="toc"><li class="tocline"><a href="#attributes-7" class="tocxref"><span class="secno">12.1 </span>Attributes</a></li></ul></li><li class="tocline"><a href="#text-track-extensions" class="tocxref"><span class="secno">13. </span>TextTrack Extensions</a><ul class="toc"><li class="tocline"><a href="#attributes-8" class="tocxref"><span class="secno">13.1 </span>Attributes</a></li></ul></li><li class="tocline"><a href="#byte-stream-formats" class="tocxref"><span class="secno">14. </span>Byte Stream Formats</a></li><li class="tocline"><a href="#examples" class="tocxref"><span class="secno">15. </span>Examples</a></li><li class="tocline"><a href="#acknowledgements" class="tocxref"><span class="secno">16. </span>Acknowledgments</a></li><li class="tocline"><a href="#revision-history" class="tocxref"><span class="secno">17. </span>Revision History</a></li><li class="tocline"><a href="#references" class="tocxref"><span class="secno">A. </span>References</a><ul class="toc"><li class="tocline"><a href="#normative-references" class="tocxref"><span class="secno">A.1 </span>Normative references</a></li><li class="tocline"><a href="#informative-references" class="tocxref"><span class="secno">A.2 </span>Informative references</a></li></ul></li></ul></section>
+</section><section id="toc"><h2 class="introductory" aria-level="1" role="heading" id="h2_toc">Table of Contents</h2><ul class="toc" role="directory" id="respecContents"><li class="tocline"><a href="#introduction" class="tocxref"><span class="secno">1. </span>Introduction</a><ul class="toc"><li class="tocline"><a href="#goals" class="tocxref"><span class="secno">1.1 </span>Goals</a></li><li class="tocline"><a href="#definitions" class="tocxref"><span class="secno">1.2 </span>Definitions</a></li></ul></li><li class="tocline"><a href="#mediasource" class="tocxref"><span class="secno">2. </span>MediaSource Object</a><ul class="toc"><li class="tocline"><a href="#attributes" class="tocxref"><span class="secno">2.1 </span>Attributes</a></li><li class="tocline"><a href="#methods" class="tocxref"><span class="secno">2.2 </span>Methods</a></li><li class="tocline"><a href="#mediasource-events" class="tocxref"><span class="secno">2.3 </span>Event Summary</a></li><li class="tocline"><a href="#mediasource-algorithms" class="tocxref"><span class="secno">2.4 </span>Algorithms</a><ul class="toc"><li class="tocline"><a href="#mediasource-attach" class="tocxref"><span class="secno">2.4.1 </span>Attaching to a media element</a></li><li class="tocline"><a href="#mediasource-detach" class="tocxref"><span class="secno">2.4.2 </span>Detaching from a media element</a></li><li class="tocline"><a href="#mediasource-seeking" class="tocxref"><span class="secno">2.4.3 </span>Seeking</a></li><li class="tocline"><a href="#buffer-monitoring" class="tocxref"><span class="secno">2.4.4 </span>SourceBuffer Monitoring</a></li><li class="tocline"><a href="#active-source-buffer-changes" class="tocxref"><span class="secno">2.4.5 </span>Changes to selected/enabled track state</a></li><li class="tocline"><a href="#duration-change-algorithm" class="tocxref"><span class="secno">2.4.6 </span>Duration change</a></li><li class="tocline"><a href="#end-of-stream-algorithm" class="tocxref"><span class="secno">2.4.7 </span>End of stream algorithm</a></li></ul></li></ul></li><li class="tocline"><a href="#sourcebuffer" class="tocxref"><span class="secno">3. </span>SourceBuffer Object</a><ul class="toc"><li class="tocline"><a href="#attributes-1" class="tocxref"><span class="secno">3.1 </span>Attributes</a></li><li class="tocline"><a href="#methods-1" class="tocxref"><span class="secno">3.2 </span>Methods</a></li><li class="tocline"><a href="#track-buffers" class="tocxref"><span class="secno">3.3 </span>Track Buffers</a></li><li class="tocline"><a href="#sourcebuffer-events" class="tocxref"><span class="secno">3.4 </span>Event Summary</a></li><li class="tocline"><a href="#sourcebuffer-algorithms" class="tocxref"><span class="secno">3.5 </span>Algorithms</a><ul class="toc"><li class="tocline"><a href="#sourcebuffer-segment-parser-loop" class="tocxref"><span class="secno">3.5.1 </span>Segment Parser Loop</a></li><li class="tocline"><a href="#sourcebuffer-reset-parser-state" class="tocxref"><span class="secno">3.5.2 </span>Reset Parser State</a></li><li class="tocline"><a href="#sourcebuffer-append-error" class="tocxref"><span class="secno">3.5.3 </span>Append Error Algorithm</a></li><li class="tocline"><a href="#sourcebuffer-prepare-append" class="tocxref"><span class="secno">3.5.4 </span>Prepare Append Algorithm</a></li><li class="tocline"><a href="#sourcebuffer-buffer-append" class="tocxref"><span class="secno">3.5.5 </span>Buffer Append Algorithm</a></li><li class="tocline"><a href="#sourcebuffer-stream-append-loop" class="tocxref"><span class="secno">3.5.6 </span>Stream Append Loop</a></li><li class="tocline"><a href="#sourcebuffer-range-removal" class="tocxref"><span class="secno">3.5.7 </span>Range Removal</a></li><li class="tocline"><a href="#sourcebuffer-init-segment-received" class="tocxref"><span class="secno">3.5.8 </span>Initialization Segment Received</a></li><li class="tocline"><a href="#sourcebuffer-default-track-language" class="tocxref"><span class="secno">3.5.9 </span>Default track language</a></li><li class="tocline"><a href="#sourcebuffer-default-track-label" class="tocxref"><span class="secno">3.5.10 </span>Default track label</a></li><li class="tocline"><a href="#sourcebuffer-default-track-kinds" class="tocxref"><span class="secno">3.5.11 </span>Default track kinds</a></li><li class="tocline"><a href="#sourcebuffer-coded-frame-processing" class="tocxref"><span class="secno">3.5.12 </span>Coded Frame Processing</a></li><li class="tocline"><a href="#sourcebuffer-coded-frame-removal" class="tocxref"><span class="secno">3.5.13 </span>Coded Frame Removal Algorithm</a></li><li class="tocline"><a href="#sourcebuffer-coded-frame-eviction" class="tocxref"><span class="secno">3.5.14 </span>Coded Frame Eviction Algorithm</a></li><li class="tocline"><a href="#sourcebuffer-audio-splice-frame-algorithm" class="tocxref"><span class="secno">3.5.15 </span>Audio Splice Frame Algorithm</a></li><li class="tocline"><a href="#sourcebuffer-audio-splice-rendering-algorithm" class="tocxref"><span class="secno">3.5.16 </span>Audio Splice Rendering Algorithm</a></li><li class="tocline"><a href="#sourcebuffer-text-splice-frame-algorithm" class="tocxref"><span class="secno">3.5.17 </span>Text Splice Frame Algorithm</a></li></ul></li></ul></li><li class="tocline"><a href="#sourcebufferlist" class="tocxref"><span class="secno">4. </span>SourceBufferList Object</a><ul class="toc"><li class="tocline"><a href="#attributes-2" class="tocxref"><span class="secno">4.1 </span>Attributes</a></li><li class="tocline"><a href="#methods-2" class="tocxref"><span class="secno">4.2 </span>Methods</a></li><li class="tocline"><a href="#sourcebufferlist-events" class="tocxref"><span class="secno">4.3 </span>Event Summary</a></li></ul></li><li class="tocline"><a href="#videoplaybackquality" class="tocxref"><span class="secno">5. </span>VideoPlaybackQuality Object</a><ul class="toc"><li class="tocline"><a href="#attributes-3" class="tocxref"><span class="secno">5.1 </span>Attributes</a></li></ul></li><li class="tocline"><a href="#trackdefault" class="tocxref"><span class="secno">6. </span>TrackDefault Object</a><ul class="toc"><li class="tocline"><a href="#constructors" class="tocxref"><span class="secno">6.1 </span>Constructors</a></li><li class="tocline"><a href="#attributes-4" class="tocxref"><span class="secno">6.2 </span>Attributes</a></li></ul></li><li class="tocline"><a href="#trackdefaultlist" class="tocxref"><span class="secno">7. </span>TrackDefaultList Object</a><ul class="toc"><li class="tocline"><a href="#constructors-1" class="tocxref"><span class="secno">7.1 </span>Constructors</a></li><li class="tocline"><a href="#attributes-5" class="tocxref"><span class="secno">7.2 </span>Attributes</a></li><li class="tocline"><a href="#methods-3" class="tocxref"><span class="secno">7.3 </span>Methods</a></li></ul></li><li class="tocline"><a href="#url" class="tocxref"><span class="secno">8. </span>URL Object Extensions</a><ul class="toc"><li class="tocline"><a href="#methods-4" class="tocxref"><span class="secno">8.1 </span>Methods</a></li></ul></li><li class="tocline"><a href="#htmlmediaelement-extensions" class="tocxref"><span class="secno">9. </span>HTMLMediaElement Extensions</a></li><li class="tocline"><a href="#htmlvideoelement-extensions" class="tocxref"><span class="secno">10. </span>HTMLVideoElement Extensions</a><ul class="toc"><li class="tocline"><a href="#methods-5" class="tocxref"><span class="secno">10.1 </span>Methods</a></li></ul></li><li class="tocline"><a href="#audio-track-extensions" class="tocxref"><span class="secno">11. </span>AudioTrack Extensions</a><ul class="toc"><li class="tocline"><a href="#attributes-6" class="tocxref"><span class="secno">11.1 </span>Attributes</a></li></ul></li><li class="tocline"><a href="#video-track-extensions" class="tocxref"><span class="secno">12. </span>VideoTrack Extensions</a><ul class="toc"><li class="tocline"><a href="#attributes-7" class="tocxref"><span class="secno">12.1 </span>Attributes</a></li></ul></li><li class="tocline"><a href="#text-track-extensions" class="tocxref"><span class="secno">13. </span>TextTrack Extensions</a><ul class="toc"><li class="tocline"><a href="#attributes-8" class="tocxref"><span class="secno">13.1 </span>Attributes</a></li></ul></li><li class="tocline"><a href="#byte-stream-formats" class="tocxref"><span class="secno">14. </span>Byte Stream Formats</a></li><li class="tocline"><a href="#examples" class="tocxref"><span class="secno">15. </span>Examples</a></li><li class="tocline"><a href="#acknowledgements" class="tocxref"><span class="secno">16. </span>Acknowledgments</a></li><li class="tocline"><a href="#revision-history" class="tocxref"><span class="secno">17. </span>Revision History</a></li><li class="tocline"><a href="#references" class="tocxref"><span class="secno">A. </span>References</a><ul class="toc"><li class="tocline"><a href="#normative-references" class="tocxref"><span class="secno">A.1 </span>Normative references</a></li><li class="tocline"><a href="#informative-references" class="tocxref"><span class="secno">A.2 </span>Informative references</a></li></ul></li></ul></section>
 
 
     <section id="introduction" typeof="bibo:Chapter" resource="#introduction" rel="bibo:Chapter">
@@ -1331,7 +1331,7 @@
             <li>Update the attribute to <var>new timestamp offset</var>.</li>
           </ol>
         </dd><dt id="widl-SourceBuffer-trackDefaults"><code>trackDefaults</code> of type <span class="idlAttrType"><a href="#idl-def-TrackDefaultList" class="idlType"><code>TrackDefaultList</code></a></span>,            </dt><dd>
-          <p>Specifies the default values to use if kind and/or language information is not available in the
+          <p>Specifies the default values to use if kind, label, and/or language information is not available in the
             <a href="#init-segment">initialization segment</a> when the <a href="#sourcebuffer-init-segment-received">initialization segment received algorithm</a> needs
             to create track objects. This attribute is initially set to an empty <a href="#idl-def-TrackDefaultList" class="idlType"><code>TrackDefaultList</code></a> object.</p>
           <p>On getting, Return the initial value or the last value that was successfully set.</p>
@@ -1751,6 +1751,13 @@
                       set to <var>audio byte stream track ID</var> and <var>type</var> set to
                       <code><a href="#idl-def-TrackDefaultType.audio">"audio"</a></code> and assign the value returned by the
                       algorithm to <var>audio language</var>.</li>
+                    <li>Let <var>audio label</var> be a label specified in the <a href="#init-segment">initialization segment</a> for this track or an empty string if no
+                      label info is present.</li>
+                    <li>If <var>audio label</var> equals an empty string, then run the
+                      <a href="#sourcebuffer-default-track-label">default track label algorithm</a> with <var>byteStreamTrackID</var>
+                      set to <var>audio byte stream track ID</var> and <var>type</var> set to
+                      <code><a href="#idl-def-TrackDefaultType.audio">"audio"</a></code> and assign the value returned by the
+                      algorithm to <var>audio label</var>.</li>
                     <li>Let <var>audio kinds</var> be an array of kind strings specified in the
                       <a href="#init-segment">initialization segment</a> for this track or an empty array if no kind information
                       is provided.</li>
@@ -1767,6 +1774,8 @@
                         <li>Generate a unique ID and assign it to the <code><a href="http://www.w3.org/TR/html5/embedded-content-0.html#dom-audiotrack-id">id</a></code> property on <var>new audio track</var>.</li>
                         <li>Assign <var>audio language</var> to the <code><a href="http://www.w3.org/TR/html5/embedded-content-0.html#dom-audiotrack-language">language</a></code>
                           property on <var>new audio track</var>.</li>
+                        <li>Assign <var>audio label</var> to the <code><a href="http://www.w3.org/TR/html5/embedded-content-0.html#dom-audiotrack-label">label</a></code>
+                          property on <var>new audio track</var>.</li>
                         <li>Assign <var>current audio kind</var> to the <code><a href="http://www.w3.org/TR/html5/embedded-content-0.html#dom-audiotrack-kind">kind</a></code>
                           property on <var>new audio track</var>.</li>
                         <li>
@@ -1804,6 +1813,13 @@
                       set to <var>video byte stream track ID</var> and <var>type</var> set to
                       <code><a href="#idl-def-TrackDefaultType.video">"video"</a></code> and assign the value returned by the
                       algorithm to <var>video language</var>.</li>
+                    <li>Let <var>video label</var> be a label specified in the <a href="#init-segment">initialization segment</a> for this track or an empty string if no
+                      label info is present.</li>
+                    <li>If <var>video label</var> equals an empty string, then run the
+                      <a href="#sourcebuffer-default-track-label">default track label algorithm</a> with <var>byteStreamTrackID</var>
+                      set to <var>video byte stream track ID</var> and <var>type</var> set to
+                      <code><a href="#idl-def-TrackDefaultType.video">"video"</a></code> and assign the value returned by the
+                      algorithm to <var>video label</var>.</li>
                     <li>Let <var>video kinds</var> be an array of kind strings specified in the
                       <a href="#init-segment">initialization segment</a> for this track or an empty array if no kind information
                       is provided.</li>
@@ -1820,6 +1836,8 @@
                         <li>Generate a unique ID and assign it to the <code><a href="http://www.w3.org/TR/html5/embedded-content-0.html#dom-videotrack-id">id</a></code> property on <var>new video track</var>.</li>
                         <li>Assign <var>video language</var> to the <code><a href="http://www.w3.org/TR/html5/embedded-content-0.html#dom-videotrack-language">language</a></code>
                           property on <var>new video track</var>.</li>
+                        <li>Assign <var>video label</var> to the <code><a href="http://www.w3.org/TR/html5/embedded-content-0.html#dom-videotrack-label">label</a></code>
+                          property on <var>new video track</var>.</li>
                         <li>Assign <var>current video kind</var> to the <code><a href="http://www.w3.org/TR/html5/embedded-content-0.html#dom-videotrack-kind">kind</a></code>
                           property on <var>new video track</var>.</li>
                         <li>
@@ -1857,6 +1875,13 @@
                       set to <var>text byte stream track ID</var> and <var>type</var> set to
                       <code><a href="#idl-def-TrackDefaultType.text">"text"</a></code> and assign the value returned by the
                       algorithm to <var>text language</var>.</li>
+                    <li>Let <var>text label</var> be a label specified in the <a href="#init-segment">initialization segment</a> for this track or an empty string if no
+                      label info is present.</li>
+                    <li>If <var>text label</var> equals an empty string, then run the
+                      <a href="#sourcebuffer-default-track-label">default track label algorithm</a> with <var>byteStreamTrackID</var>
+                      set to <var>text byte stream track ID</var> and <var>type</var> set to
+                      <code><a href="#idl-def-TrackDefaultType.text">"text"</a></code> and assign the value returned by the
+                      algorithm to <var>text label</var>.</li>
                     <li>Let <var>text kinds</var> be an array of kind strings specified in the
                       <a href="#init-segment">initialization segment</a> for this track or an empty array if no kind information
                       is provided.</li>
@@ -1874,6 +1899,8 @@
                         <li>Generate a unique ID and assign it to the <code><a href="http://www.w3.org/TR/html5/embedded-content-0.html#dom-texttrack-id">id</a></code> property on <var>new text track</var>.</li>
                         <li>Assign <var>text language</var> to the <code><a href="http://www.w3.org/TR/html5/embedded-content-0.html#dom-texttrack-language">language</a></code>
                           property on <var>new text track</var>.</li>
+                        <li>Assign <var>text label</var> to the <code><a href="http://www.w3.org/TR/html5/embedded-content-0.html#dom-texttrack-label">label</a></code>
+                          property on <var>new text track</var>.</li>
                         <li>Assign <var>current text kind</var> to the <code><a href="http://www.w3.org/TR/html5/embedded-content-0.html#dom-texttrack-kind">kind</a></code>
                           property on <var>new text track</var>.</li>
                         <li>Populate the remaining properties on <var>new text track</var> with the
@@ -1945,8 +1972,33 @@
           </ol>
         </section>
 
+        <section id="sourcebuffer-default-track-label" typeof="bibo:Chapter" resource="#sourcebuffer-default-track-label" rel="bibo:Chapter">
+          <h4 aria-level="3" role="heading" id="h4_sourcebuffer-default-track-label"><span class="secno">3.5.10 </span>Default track label</h4>
+          <p>The following steps are run when the <a href="#sourcebuffer-init-segment-received">initialization segment received algorithm</a> needs
+            to determine what the default label for a new track should be. This algorithm is initialized
+            with <var>byteStreamTrackID</var> and <var>type</var> parameters when invoked by the
+            <a href="#sourcebuffer-init-segment-received">initialization segment received algorithm</a>.</p>
+          <ol>
+            <li>If <code><a href="#widl-SourceBuffer-trackDefaults">trackDefaults</a></code> contains a <a href="#idl-def-TrackDefault" class="idlType"><code>TrackDefault</code></a> object with a
+              <code><a href="#widl-TrackDefault-type">type</a></code> attribute equal to <var>type</var> and a
+              <code><a href="#widl-TrackDefault-byteStreamTrackID">byteStreamTrackID</a></code> attribute equal to
+              <var>byteStreamTrackID</var>, then return the value of the
+              <code><a href="#widl-TrackDefault-label">label</a></code> attribute on this matching object and abort these
+              steps.</li>
+
+            <li>If <code><a href="#widl-SourceBuffer-trackDefaults">trackDefaults</a></code> contains a <a href="#idl-def-TrackDefault" class="idlType"><code>TrackDefault</code></a> object with a
+              <code><a href="#widl-TrackDefault-type">type</a></code> attribute equal to <var>type</var> and a
+              <code><a href="#widl-TrackDefault-byteStreamTrackID">byteStreamTrackID</a></code> attribute equal to
+              an empty string, then return the value of the
+              <code><a href="#widl-TrackDefault-label">label</a></code> attribute on this matching object and abort these
+              steps.</li>
+
+            <li>Return an empty string to the caller.</li>
+          </ol>
+        </section>
+
         <section id="sourcebuffer-default-track-kinds" typeof="bibo:Chapter" resource="#sourcebuffer-default-track-kinds" rel="bibo:Chapter">
-          <h4 aria-level="3" role="heading" id="h4_sourcebuffer-default-track-kinds"><span class="secno">3.5.10 </span>Default track kinds</h4>
+          <h4 aria-level="3" role="heading" id="h4_sourcebuffer-default-track-kinds"><span class="secno">3.5.11 </span>Default track kinds</h4>
           <p>The following steps are run when the <a href="#sourcebuffer-init-segment-received">initialization segment received algorithm</a> needs
             to determine what the default kinds for a new track should be. This algorithm is initialized
             with <var>byteStreamTrackID</var> and <var>type</var> parameters when invoked by the
@@ -1971,7 +2023,7 @@
         </section>
 
         <section id="sourcebuffer-coded-frame-processing" typeof="bibo:Chapter" resource="#sourcebuffer-coded-frame-processing" rel="bibo:Chapter">
-          <h4 aria-level="3" role="heading" id="h4_sourcebuffer-coded-frame-processing"><span class="secno">3.5.11 </span>Coded Frame Processing</h4>
+          <h4 aria-level="3" role="heading" id="h4_sourcebuffer-coded-frame-processing"><span class="secno">3.5.12 </span>Coded Frame Processing</h4>
           <p>When complete <a href="#coded-frame">coded frames</a> have been parsed by the <a href="#sourcebuffer-segment-parser-loop">segment parser loop</a> then the following steps are run:</p>
           <ol>
             <li>
@@ -2181,7 +2233,7 @@
         </section>
 
         <section id="sourcebuffer-coded-frame-removal" typeof="bibo:Chapter" resource="#sourcebuffer-coded-frame-removal" rel="bibo:Chapter">
-          <h4 aria-level="3" role="heading" id="h4_sourcebuffer-coded-frame-removal"><span class="secno">3.5.12 </span>Coded Frame Removal Algorithm</h4>
+          <h4 aria-level="3" role="heading" id="h4_sourcebuffer-coded-frame-removal"><span class="secno">3.5.13 </span>Coded Frame Removal Algorithm</h4>
           <p>Follow these steps when <a href="#coded-frame">coded frames</a> for a specific time range need to be removed from the SourceBuffer:</p>
           <ol>
             <li>Let <var>start</var> be the starting <a href="#presentation-timestamp">presentation timestamp</a> for the removal range.</li>
@@ -2230,7 +2282,7 @@
         </section>
 
         <section id="sourcebuffer-coded-frame-eviction" typeof="bibo:Chapter" resource="#sourcebuffer-coded-frame-eviction" rel="bibo:Chapter">
-          <h4 aria-level="3" role="heading" id="h4_sourcebuffer-coded-frame-eviction"><span class="secno">3.5.13 </span>Coded Frame Eviction Algorithm</h4>
+          <h4 aria-level="3" role="heading" id="h4_sourcebuffer-coded-frame-eviction"><span class="secno">3.5.14 </span>Coded Frame Eviction Algorithm</h4>
           <p>This algorithm is run to free up space in this source buffer when new data is appended.</p>
           <ol>
             <li>Let <var>new data</var> equal the data that is about to be appended to this SourceBuffer.</li>
@@ -2247,7 +2299,7 @@
         </section>
 
         <section id="sourcebuffer-audio-splice-frame-algorithm" typeof="bibo:Chapter" resource="#sourcebuffer-audio-splice-frame-algorithm" rel="bibo:Chapter">
-          <h4 aria-level="3" role="heading" id="h4_sourcebuffer-audio-splice-frame-algorithm"><span class="secno">3.5.14 </span>Audio Splice Frame Algorithm</h4>
+          <h4 aria-level="3" role="heading" id="h4_sourcebuffer-audio-splice-frame-algorithm"><span class="secno">3.5.15 </span>Audio Splice Frame Algorithm</h4>
           <p>Follow these steps when the <a href="#sourcebuffer-coded-frame-processing">coded frame processing algorithm</a> needs to generate a splice frame for two overlapping audio
             <a href="#coded-frame">coded frames</a>:</p>
           <ol>
@@ -2317,7 +2369,7 @@
           </ol>
         </section>
         <section id="sourcebuffer-audio-splice-rendering-algorithm" typeof="bibo:Chapter" resource="#sourcebuffer-audio-splice-rendering-algorithm" rel="bibo:Chapter">
-          <h4 aria-level="3" role="heading" id="h4_sourcebuffer-audio-splice-rendering-algorithm"><span class="secno">3.5.15 </span>Audio Splice Rendering Algorithm</h4>
+          <h4 aria-level="3" role="heading" id="h4_sourcebuffer-audio-splice-rendering-algorithm"><span class="secno">3.5.16 </span>Audio Splice Rendering Algorithm</h4>
           <p>The following steps are run when a spliced frame, generated by the <a href="#sourcebuffer-audio-splice-frame-algorithm">audio splice frame algorithm</a>, needs to be rendered by the
             media element:</p>
           <ol>
@@ -2350,7 +2402,7 @@
           </div></div>
         </section>
         <section id="sourcebuffer-text-splice-frame-algorithm" typeof="bibo:Chapter" resource="#sourcebuffer-text-splice-frame-algorithm" rel="bibo:Chapter">
-          <h4 aria-level="3" role="heading" id="h4_sourcebuffer-text-splice-frame-algorithm"><span class="secno">3.5.16 </span>Text Splice Frame Algorithm</h4>
+          <h4 aria-level="3" role="heading" id="h4_sourcebuffer-text-splice-frame-algorithm"><span class="secno">3.5.17 </span>Text Splice Frame Algorithm</h4>
           <p>Follow these steps when the <a href="#sourcebuffer-coded-frame-processing">coded frame processing algorithm</a> needs to generate a splice frame for two overlapping timed text
             <a href="#coded-frame">coded frames</a>:</p>
           <ol>
@@ -2446,7 +2498,7 @@
 
     <section id="trackdefault" typeof="bibo:Chapter" resource="#trackdefault" rel="bibo:Chapter">
       <!--OddPage--><h2 aria-level="1" role="heading" id="h2_trackdefault"><span class="secno">6. </span>TrackDefault Object</h2>
-      <p>The TrackDefault object is used to provide kind and language information for tracks that do not
+      <p>The TrackDefault object is used to provide kind, label, and language information for tracks that do not
         contain this information in the <a href="#init-segment">initialization segments</a>. This information is only consulted
         when the <a href="#sourcebuffer-init-segment-received">initialization segment received algorithm</a> creates track objects.</p>
 
@@ -2465,15 +2517,16 @@
           creating <a href="#idl-def-TextTrack" class="idlType"><code>TextTrack</code></a> objects.
         </td></tr></tbody></table>
 
-      <pre class="idl"><span class="idlInterface" id="idl-def-TrackDefault">[<span class="idlCtor"> <span class="idlCtorKeyword"></span><span class="idlCtorName"><a href="#widl-ctor-TrackDefault--TrackDefaultType-type-DOMString-language-sequence-kinds-DOMString-byteStreamTrackID">Constructor</a></span> (<span class="idlParam"><span class="idlParamType"><a href="#idl-def-TrackDefaultType" class="idlType"><code>TrackDefaultType</code></a></span> <span class="idlParamName">type</span></span>, <span class="idlParam"><span class="idlParamType">DOMString</span> <span class="idlParamName">language</span></span>, <span class="idlParam"><span class="idlParamType">sequence</span> <span class="idlParamName">kinds</span></span>, <span class="idlParam">optional <span class="idlParamType">DOMString</span> <span class="idlParamName">byteStreamTrackID</span> = <span class="idlDefaultValue">""</span></span>)</span>]
+      <pre class="idl"><span class="idlInterface" id="idl-def-TrackDefault">[<span class="idlCtor"> <span class="idlCtorKeyword"></span><span class="idlCtorName"><a href="#widl-ctor-TrackDefault--TrackDefaultType-type-DOMString-language-DOMString-label-sequence-kinds-DOMString-byteStreamTrackID">Constructor</a></span> (<span class="idlParam"><span class="idlParamType"><a href="#idl-def-TrackDefaultType" class="idlType"><code>TrackDefaultType</code></a></span> <span class="idlParamName">type</span></span>, <span class="idlParam"><span class="idlParamType">DOMString</span> <span class="idlParamName">language</span></span>, <span class="idlParam"><span class="idlParamType">DOMString</span> <span class="idlParamName">label</span></span>, <span class="idlParam"><span class="idlParamType">sequence</span> <span class="idlParamName">kinds</span></span>, <span class="idlParam">optional <span class="idlParamType">DOMString</span> <span class="idlParamName">byteStreamTrackID</span> = <span class="idlDefaultValue">""</span></span>)</span>]
 interface <span class="idlInterfaceID">TrackDefault</span> {
 <span class="idlAttribute">    readonly    attribute <span class="idlAttrType"><a href="#idl-def-TrackDefaultType" class="idlType"><code>TrackDefaultType</code></a></span> <span class="idlAttrName"><a href="#widl-TrackDefault-type">type</a></span>;</span>
 <span class="idlAttribute">    readonly    attribute <span class="idlAttrType">DOMString</span>        <span class="idlAttrName"><a href="#widl-TrackDefault-byteStreamTrackID">byteStreamTrackID</a></span>;</span>
 <span class="idlAttribute">    readonly    attribute <span class="idlAttrType">DOMString</span>        <span class="idlAttrName"><a href="#widl-TrackDefault-language">language</a></span>;</span>
+<span class="idlAttribute">    readonly    attribute <span class="idlAttrType">DOMString</span>        <span class="idlAttrName"><a href="#widl-TrackDefault-label">label</a></span>;</span>
 <span class="idlAttribute">    readonly    attribute <span class="idlAttrType">DOMString[]</span>      <span class="idlAttrName"><a href="#widl-TrackDefault-kinds">kinds</a></span>;</span>
-};</span></pre><section id="constructors"><h3 aria-level="2" role="heading" id="h3_constructors"><span class="secno">6.1 </span>Constructors</h3><dl class="constructors"><dt id="widl-ctor-TrackDefault--TrackDefaultType-type-DOMString-language-sequence-kinds-DOMString-byteStreamTrackID"><code>TrackDefault</code></dt><dd>
+};</span></pre><section id="constructors"><h3 aria-level="2" role="heading" id="h3_constructors"><span class="secno">6.1 </span>Constructors</h3><dl class="constructors"><dt id="widl-ctor-TrackDefault--TrackDefaultType-type-DOMString-language-DOMString-label-sequence-kinds-DOMString-byteStreamTrackID"><code>TrackDefault</code></dt><dd>
           
-        <table class="parameters"><tbody><tr><th>Parameter</th><th>Type</th><th>Nullable</th><th>Optional</th><th>Description</th></tr><tr><td class="prmName">type</td><td class="prmType"><code><a href="#idl-def-TrackDefaultType" class="idlType"><code>TrackDefaultType</code></a></code></td><td class="prmNullFalse"><span role="img" aria-label="False">✘</span></td><td class="prmOptFalse"><span role="img" aria-label="False">✘</span></td><td class="prmDesc"></td></tr><tr><td class="prmName">language</td><td class="prmType"><code>DOMString</code></td><td class="prmNullFalse"><span role="img" aria-label="False">✘</span></td><td class="prmOptFalse"><span role="img" aria-label="False">✘</span></td><td class="prmDesc"></td></tr><tr><td class="prmName">kinds</td><td class="prmType"><code>sequence</code></td><td class="prmNullFalse"><span role="img" aria-label="False">✘</span></td><td class="prmOptFalse"><span role="img" aria-label="False">✘</span></td><td class="prmDesc"></td></tr><tr><td class="prmName">byteStreamTrackID</td><td class="prmType"><code>DOMString = ""</code></td><td class="prmNullFalse"><span role="img" aria-label="False">✘</span></td><td class="prmOptTrue"><span role="img" aria-label="True">✔</span></td><td class="prmDesc"></td></tr></tbody></table><p>When this method is invoked, the user agent must run the following steps:</p><ol class="method-algorithm">
+        <table class="parameters"><tbody><tr><th>Parameter</th><th>Type</th><th>Nullable</th><th>Optional</th><th>Description</th></tr><tr><td class="prmName">type</td><td class="prmType"><code><a href="#idl-def-TrackDefaultType" class="idlType"><code>TrackDefaultType</code></a></code></td><td class="prmNullFalse"><span role="img" aria-label="False">✘</span></td><td class="prmOptFalse"><span role="img" aria-label="False">✘</span></td><td class="prmDesc"></td></tr><tr><td class="prmName">language</td><td class="prmType"><code>DOMString</code></td><td class="prmNullFalse"><span role="img" aria-label="False">✘</span></td><td class="prmOptFalse"><span role="img" aria-label="False">✘</span></td><td class="prmDesc"></td></tr><tr><td class="prmName">label</td><td class="prmType"><code>DOMString</code></td><td class="prmNullFalse"><span role="img" aria-label="False">✘</span></td><td class="prmOptFalse"><span role="img" aria-label="False">✘</span></td><td class="prmDesc"></td></tr><tr><td class="prmName">kinds</td><td class="prmType"><code>sequence</code></td><td class="prmNullFalse"><span role="img" aria-label="False">✘</span></td><td class="prmOptFalse"><span role="img" aria-label="False">✘</span></td><td class="prmDesc"></td></tr><tr><td class="prmName">byteStreamTrackID</td><td class="prmType"><code>DOMString = ""</code></td><td class="prmNullFalse"><span role="img" aria-label="False">✘</span></td><td class="prmOptTrue"><span role="img" aria-label="True">✔</span></td><td class="prmDesc"></td></tr></tbody></table><p>When this method is invoked, the user agent must run the following steps:</p><ol class="method-algorithm">
             <li>if <var>language</var> is not an empty string or <var>language</var> is not a BCP 47
               language tag, then throw an <code><a href="http://dom.spec.whatwg.org/#dom-domexception-invalid_access_err">INVALID_ACCESS_ERR</a></code> and abort these steps.</li>
             <li>
@@ -2501,6 +2554,7 @@
             </li>
             <li>Set the <code><a href="#widl-TrackDefault-type">type</a></code> attribute on this new object to <var>type</var>.</li>
             <li>Set the <code><a href="#widl-TrackDefault-language">language</a></code> attribute on this new object to <var>language</var>.</li>
+            <li>Set the <code><a href="#widl-TrackDefault-label">label</a></code> attribute on this new object to <var>label</var>.</li>
             <li>Set the <code><a href="#widl-TrackDefault-kinds">kinds</a></code> attribute to on this new object <var>kinds</var>.</li>
             <li>Set the <code><a href="#widl-TrackDefault-byteStreamTrackID">byteStreamTrackID</a></code> attribute on this new object to <var>byteStreamTrackID</var>.</li>
           </ol></dd></dl></section><section id="attributes-4"><h3 aria-level="2" role="heading" id="h3_attributes-4"><span class="secno">6.2 </span>Attributes</h3><dl class="attributes"><dt id="widl-TrackDefault-byteStreamTrackID"><code>byteStreamTrackID</code> of type <span class="idlAttrType">DOMString</span>, readonly   </dt><dd>
@@ -2511,6 +2565,9 @@
         </dd><dt id="widl-TrackDefault-kinds"><code>kinds</code> of type array of <span class="idlAttrType">DOMString</span>, readonly   </dt><dd>
           <p>The default kinds used when an <a href="#init-segment">initialization segment</a> does not contain kind
           information for a new track. See <a href="#sourcebuffer-init-segment-received">initialization segment received algorithm</a> for details.</p>
+        </dd><dt id="widl-TrackDefault-label"><code>label</code> of type <span class="idlAttrType">DOMString</span>, readonly   </dt><dd>
+          <p>The default label to use when an <a href="#init-segment">initialization segment</a> does not contain label
+          information for a new track. See <a href="#sourcebuffer-init-segment-received">initialization segment received algorithm</a> for details.</p>
         </dd><dt id="widl-TrackDefault-language"><code>language</code> of type <span class="idlAttrType">DOMString</span>, readonly   </dt><dd>
           <p>The default language to use when an <a href="#init-segment">initialization segment</a> does not contain language
           information for a new track. See <a href="#sourcebuffer-init-segment-received">initialization segment received algorithm</a> for details.</p>
@@ -2866,11 +2923,19 @@
         </thead>
         <tbody>
           <tr>
-            <td>12 August 2014</td>
+            <td>09 September 2014</td>
             <td>
               <ul>
-                <li>Bug 26436 - Use HTMLMediaElement.buffered for HTMLMediaElement.readyState transitions instead of individual SourceBuffer.buffered attributes.
-              </li></ul>
+                <li>Bug 26721 - Add label attribute to TrackDefault object.</li>
+              </ul>
+            </td>
+          </tr>
+          <tr>
+            <td><a href="https://dvcs.w3.org/hg/html-media/raw-file/856c321c7a6b/media-source/media-source.html">12 August 2014</a></td>
+            <td>
+              <ul>
+                <li>Bug 26436 - Use HTMLMediaElement.buffered for HTMLMediaElement.readyState transitions instead of individual SourceBuffer.buffered attributes.</li>
+              </ul>
             </td>
           </tr>
           <tr>
@@ -3396,7 +3461,7 @@
   
 
 <form id="bug-assist-form" action="//www.w3.org/Bugs/Public/enter_bug.cgi" target="_blank">See a problem? Select text and <input type="submit" accesskey="f" value="file a bug" style="font-family: Tahoma, sans-serif; font-size: 10px;"><input type="hidden" name="comment" value=""><input type="hidden" name="short_desc" value="[MSE] "><input type="hidden" name="product" value="HTML WG"><input type="hidden" name="component" value="Media Source Extensions">.</form><section id="references" class="appendix" typeof="bibo:Chapter" resource="#references" rel="bibo:Chapter"><!--OddPage--><h2 aria-level="1" role="heading" id="h2_references"><span class="secno">A. </span>References</h2><section id="normative-references" typeof="bibo:Chapter" resource="#normative-references" rel="bibo:Chapter"><h3 aria-level="2" role="heading" id="h3_normative-references"><span class="secno">A.1 </span>Normative references</h3><dl class="bibliography" about=""><dt id="bib-FILE-API">[FILE-API]</dt><dd rel="dcterms:requires">Arun Ranganathan; Jonas Sicking. <a href="http://www.w3.org/TR/FileAPI/"><cite>File API</cite></a>. 12 September 2013. W3C Last Call Working Draft. URL: <a href="http://www.w3.org/TR/FileAPI/">http://www.w3.org/TR/FileAPI/</a>
-</dd><dt id="bib-HTML5">[HTML5]</dt><dd rel="dcterms:requires">Robin Berjon; Steve Faulkner; Travis Leithead; Erika Doyle Navara; Edward O'Connor; Silvia Pfeiffer. <a href="http://www.w3.org/TR/html5/"><cite>HTML5</cite></a>. 17 June 2014. W3C Last Call Working Draft. URL: <a href="http://www.w3.org/TR/html5/">http://www.w3.org/TR/html5/</a>
+</dd><dt id="bib-HTML5">[HTML5]</dt><dd rel="dcterms:requires">Ian Hickson; Robin Berjon; Steve Faulkner; Travis Leithead; Erika Doyle Navara; Edward O'Connor; Silvia Pfeiffer. <a href="http://www.w3.org/TR/html5/"><cite>HTML5</cite></a>. 31 July 2014. W3C Candidate Recommendation. URL: <a href="http://www.w3.org/TR/html5/">http://www.w3.org/TR/html5/</a>
 </dd><dt id="bib-STREAMS-API">[STREAMS-API]</dt><dd rel="dcterms:requires">Feras Moussa; Takeshi Yoshino. <a href="http://www.w3.org/TR/2013/WD-streams-api-20131105/"><cite>Streams API</cite></a>. W3C Working Draft. URL: <a href="http://www.w3.org/TR/2013/WD-streams-api-20131105/">http://www.w3.org/TR/2013/WD-streams-api-20131105/</a>
 </dd><dt id="bib-TYPED-ARRAYS">[TYPED-ARRAYS]</dt><dd rel="dcterms:requires">David Herman; Kenneth Russell. <a href="https://www.khronos.org/registry/typedarray/specs/latest/"><cite>Typed Array Specification</cite></a>. 26 June 2013. Khronos Working Draft. URL: <a href="https://www.khronos.org/registry/typedarray/specs/latest/">https://www.khronos.org/registry/typedarray/specs/latest/</a>
 </dd></dl></section><section id="informative-references" typeof="bibo:Chapter" resource="#informative-references" rel="bibo:Chapter"><h3 aria-level="2" role="heading" id="h3_informative-references"><span class="secno">A.2 </span>Informative references</h3><dl class="bibliography" about=""><dt id="bib-MSE-REGISTRY">[MSE-REGISTRY]</dt><dd rel="dcterms:references">Aaron Colwell. <a href="byte-stream-format-registry.html"><cite>Media Source Extensions Byte Stream Format Registry</cite></a>. URL: <a href="byte-stream-format-registry.html">byte-stream-format-registry.html</a>
--- a/media-source/media-source.js	Fri Sep 05 17:46:48 2014 -0700
+++ b/media-source/media-source.js	Tue Sep 09 09:48:43 2014 -0700
@@ -228,6 +228,7 @@
     'audio-splice-rendering-algorithm': { func: link_helper, fragment: '#sourcebuffer-audio-splice-rendering-algorithm', link_text: 'audio splice rendering algorithm', },
     'text-splice-frame-algorithm': { func: link_helper, fragment: '#sourcebuffer-text-splice-frame-algorithm', link_text: 'text splice frame algorithm', },
     'default-track-language-algorithm': { func: link_helper, fragment: '#sourcebuffer-default-track-language', link_text: 'default track language algorithm', },
+    'default-track-label-algorithm': { func: link_helper, fragment: '#sourcebuffer-default-track-label', link_text: 'default track label algorithm', },
     'default-track-kinds-algorithm': { func: link_helper, fragment: '#sourcebuffer-default-track-kinds', link_text: 'default track kinds algorithm', },
     'input-buffer': { func: var_helper, fragment: '#sourcebuffer-input-buffer', link_text: 'input buffer', },
     'buffer-full-flag': { func: var_helper, fragment: '#sourcebuffer-buffer-full-flag', link_text: 'buffer full flag', },
@@ -251,6 +252,7 @@
     'TrackDefault-type': { func: idlref_helper, fragment: 'widl-TrackDefault-type', link_text: 'type',  },
     'TrackDefault-byteStreamTrackID': { func: idlref_helper, fragment: 'widl-TrackDefault-byteStreamTrackID', link_text: 'byteStreamTrackID',  },
     'TrackDefault-language': { func: idlref_helper, fragment: 'widl-TrackDefault-language', link_text: 'language',  },
+    'TrackDefault-label': { func: idlref_helper, fragment: 'widl-TrackDefault-label', link_text: 'label',  },
     'TrackDefault-kinds': { func: idlref_helper, fragment: 'widl-TrackDefault-kinds', link_text: 'kinds',  },
 
     'blob-uri': { func: fileapi_helper, fragment: 'url', link_text: 'Blob URI',  },
@@ -278,6 +280,7 @@
     'video-track-list': { func: code_videoref_helper, fragment: 'videotracklist', link_text: 'VideoTrackList', },
     'videotrack-id': { func: code_videoref_helper, fragment: 'dom-videotrack-id', link_text: 'id', },
     'videotrack-kind': { func: code_videoref_helper, fragment: 'dom-videotrack-kind', link_text: 'kind', },
+    'videotrack-label': { func: code_videoref_helper, fragment: 'dom-videotrack-label', link_text: 'label', },
     'videotrack-language': { func: code_videoref_helper, fragment: 'dom-videotrack-language', link_text: 'language', },
     'videotrack-selected': { func: code_videoref_helper, fragment: 'dom-videotrack-selected', link_text: 'selected', },
     'videotrack-sourceBuffer': { func: idlref_helper, fragment: 'widl-VideoTrack-sourceBuffer', link_text: 'sourceBuffer', },
@@ -289,6 +292,7 @@
     'audiotracks': { func: code_videoref_helper, fragment: 'dom-media-audiotracks', link_text: 'audioTracks',  },
     'audiotrack-id': { func: code_videoref_helper, fragment: 'dom-audiotrack-id', link_text: 'id',  },
     'audiotrack-kind': { func: code_videoref_helper, fragment: 'dom-audiotrack-kind', link_text: 'kind', },
+    'audiotrack-label': { func: code_videoref_helper, fragment: 'dom-audiotrack-label', link_text: 'label', },
     'audiotrack-language': { func: code_videoref_helper, fragment: 'dom-audiotrack-language', link_text: 'language', },
     'audiotrack-enabled': { func: code_videoref_helper, fragment: 'dom-audiotrack-enabled', link_text: 'enabled', },
     'audiotrack-sourceBuffer': { func: idlref_helper, fragment: 'widl-AudioTrack-sourceBuffer', link_text: 'sourceBuffer', },
@@ -300,6 +304,7 @@
     'texttrack-mode': { func: code_videoref_helper, fragment: 'dom-texttrack-mode', link_text: 'mode',  },
     'texttrack-id': { func: code_videoref_helper, fragment: 'dom-texttrack-id', link_text: 'id', },
     'texttrack-kind': { func: code_videoref_helper, fragment: 'dom-texttrack-kind', link_text: 'kind', },
+    'texttrack-label': { func: code_videoref_helper, fragment: 'dom-texttrack-label', link_text: 'label', },
     'texttrack-language': { func: code_videoref_helper, fragment: 'dom-texttrack-language', link_text: 'language', },
     'texttrack-showing': { func: code_videoref_helper, fragment: 'dom-texttrack-showing', link_text: '"showing"', },
     'texttrack-hidden': { func: code_videoref_helper, fragment: 'dom-texttrack-hidden', link_text: '"hidden"',  },