Changeset 1767


Ignore:
Timestamp:
04/26/11 09:57:59 (2 years ago)
Author:
jeroen
Message:

added complete test set to captions multilanguage branch

Location:
branches/captions
Files:
20 added
12 deleted
8 edited
5 moved

Legend:

Unmodified
Added
Removed
  • branches/captions/src/com/longtailvideo/plugins/captions/Captions.as

    r1754 r1767  
    2828        /** List with configuration options. **/ 
    2929        private var _config:Object = { 
    30             back: true, 
     30            back: false, 
    3131            file: undefined, 
    3232            state: true 
     
    140140                if(info[i].sampledescription[0].sampletype == 'tx3g') { 
    141141                    _tracks.push({ 
    142                         label: ISO639.MAP[info[i].language], 
     142                        label: info[i].language, 
    143143                        id: i, 
    144144                        data: undefined 
     
    147147            } 
    148148            if(_tracks.length) { 
    149                 var options:Array = new Array('(Captions off)'); 
     149                var options:Array = new Array('Captions Off'); 
    150150                for(var j:Number=0; j<_tracks.length; j++) { 
    151                     options.push(_tracks[j].label); 
     151                    if(ISO639.MAP[_tracks[j].label]) {  
     152                        options.push(ISO639.MAP[_tracks[j].label]); 
     153                    } else {  
     154                        options.push(_tracks[j].label); 
     155                    } 
    152156                } 
    153157                _selector.populate(options,1); 
     
    196200        private function _redraw():void { 
    197201            if(!_tracks.length) { 
    198                 _icon.alpha = 0.5; 
     202                _icon.alpha = 0.3; 
    199203                if (_button) {  
    200                     _button.field.alpha = 0.5; 
     204                    _button.field.alpha = 0.3; 
    201205                    _button.field.text = 'not set'; 
    202206                } 
     
    212216                    _icon.alpha = 1; 
    213217                } else { 
    214                     _icon.alpha = 0.25; 
     218                    _icon.alpha = 0.3; 
    215219                } 
    216220                _renderer.visible = false; 
     
    220224                    _button.field.alpha = 1; 
    221225                    if(_tracks.length > 1) {  
    222                         _button.field.text = _tracks[_current].label; 
     226                        _button.field.text = '('+_tracks[_current].label+')'; 
    223227                    } else {  
    224228                        _button.field.text = 'is on'; 
  • branches/captions/src/com/longtailvideo/plugins/captions/DFXP.as

    r1754 r1767  
    22 
    33 
    4     /** Parser for DFXP (W3C TimedText) XML files. **/ 
    5     public class DFXP { 
     4import com.longtailvideo.jwplayer.utils.Strings; 
     5 
     6/** 
     7* Parse styling and contents of W3C Timed Text XML files. 
     8**/ 
     9public class DFXP { 
    610 
    711 
     12    /** Parse stylesheets from the head. */ 
     13    public static function parseStyles(data:XML,defaults:Object):Object { 
     14        var styles:Object = {}; 
     15        for each (var i:XML in data.children()) { 
     16            if (i.localName() == "head") { 
     17                for each (var styling:XML in i.children()) { 
     18                    for each (var node:XML in styling.children()) { 
     19                        if (node.localName() == 'style') { 
     20                            // Set the defaults. 
     21                            var rules:Object = {}; 
     22                            for(var rule:String in defaults) { 
     23                                rules[rule] = defaults[rule]; 
     24                            } 
     25                            // Loop through all attributes for overrides. 
     26                            for each (var attrib:XML in node.attributes()) { 
     27                                var name:String = attrib.name(); 
     28                                if (name.indexOf("::") > -1) { 
     29                                    name = name.substring(name.indexOf("::") + 2); 
     30                                } 
     31                                rules[name] = attrib.toString(); 
     32                            } 
     33                            // Save to listing 
     34                            if (node.@id) { 
     35                                styles[node.@id] = rules; 
     36                            } 
     37                        } 
     38                    } 
     39                } 
     40            } 
     41        } 
     42        return styles; 
     43    }; 
     44 
     45 
     46    /** Parse captions from the TT XML, returning a list with {begin:Number,text:String} objects. **/ 
     47    public static function parseCaptions(data:XML):Array { 
     48        var arr:Array = new Array({begin:0,text:''}); 
     49        for each (var i:XML in data.children()) { 
     50            if (i.localName() == "body") { 
     51                for each (var j:XML in i.children()) { 
     52                    for each (var k:XML in j.children()) { 
     53                        // Paragraphs are single captions. They live inside dividers. 
     54                        if (k.localName() == 'p') { 
     55                            var obj:Object = TTParser.parseCaption(k); 
     56                            arr.push(obj); 
     57                            // End with a new, empty caption, accontig for duration or end set. 
     58                            if (obj['end']) { 
     59                                arr.push({begin:obj['end'],text:''}); 
     60                                delete obj['end']; 
     61                            } else if (obj['dur']) { 
     62                                arr.push({begin:obj['begin']+obj['dur'],text:''}); 
     63                                delete obj['dur']; 
     64                            } 
     65                        } 
     66                    } 
     67                } 
     68            } 
     69        } 
     70        return arr; 
     71    }; 
     72 
     73 
     74    /** Parse a single captions entry. **/ 
     75    private static function parseCaption(dat:XML):Object { 
     76        var ptn:RegExp = /(\n<br.*>\n)+/; 
     77        var obj:Object = { 
     78            begin:Strings.seconds(dat.@begin), 
     79            dur:Strings.seconds(dat.@dur), 
     80            end:Strings.seconds(dat.@end), 
     81            style:dat.@style, 
     82            // Not sure what this does anymore, but looks like it should be cleaned up. 
     83            text:dat.children().toString().replace(ptn,'<br/>').replace(/\n</,' <').replace(/>\n/, '> ') 
     84        }; 
     85        return obj; 
     86    }; 
     87 
     88 
     89    /** Convert inline caption styling into HTML. */ 
     90    public static function parseSpans(text:String,styles:Object,defaults:Object):String { 
     91        while (text.indexOf("<span") > -1) { 
     92            text = parseSpan(text,styles,defaults); 
     93        } 
     94        return text; 
     95    }; 
     96 
     97 
     98    /** Convert a span entry into HTML. **/ 
     99    private static function parseSpan(text:String,styles:Object,defaults:Object):String { 
     100        var rules:Object = {}; 
     101        var newtext:String = ''; 
     102        // Find the span bounds and convert to XML. 
     103        var left:Number = text.indexOf("<span "); 
     104        var right:Number = text.indexOf("</span>",left); 
     105        if (left > -1 && right > -1) { 
     106            var span:XML = new XML(text.substring(left,right+7)); 
     107            // Use style if defined, else set defaults. 
     108            var style:String = span.@style; 
     109            if(style && styles[style]) { 
     110                for(var i:String in styles[style]) { rules[i] = styles[style][i]; } 
     111            } else { 
     112                for(var j:String in defaults) { rules[j] = defaults[j]; } 
     113            } 
     114            // Override style with inline declarations 
     115            for each (var attrib:XML in span.@*) { 
     116                var name:String = attrib.localName().toString(); 
     117                if (rules[name]) { 
     118                    rules[name] = attrib.toString(); 
     119                } 
     120            } 
     121            // Wrap plain text with font and b/i/u tags. 
     122            newtext = '<font family="'+rules.fontFamily+'" size="'+rules.fontSize+'" color="'+rules.color+'">'; 
     123            newtext +=  text.substring(text.indexOf('>',left)+1, right); 
     124            newtext += "</font>"; 
     125            if(rules.fontWeight == 'bold') { newtext = '<b>'+newtext+'</b>'; } 
     126            if(rules.fontStyle == 'italic') { newtext = '<i>'+newtext+'</i>'; } 
     127            if(rules.textDecoration == 'underline') { newtext = '<u>'+newtext+'</u>'; } 
     128        } 
     129        return text.substr(0,left)+newtext+text.substr(right+7); 
    8130    }; 
    9131 
    10132 
    11133} 
     134 
     135 
     136} 
  • branches/captions/src/com/longtailvideo/plugins/captions/ISO639.as

    r1754 r1767  
    88        /** Most common ISO639 language codes. **/ 
    99        public static const MAP:Object = { 
    10             ara:'Arabic', 
    11             ben:'Bengali', 
    12             zho:'Chinese', 
    13             deu:'German', 
    14             eng:'English', 
    15             fra:'French', 
    16             heb:'Hebrew', 
    17             hin:'Hindi', 
    18             jpn:'Japanese', 
    19             tlh:'Klingon',  
    20             kor:'Korean', 
    21             nld:'Dutch', 
    22             por:'Portuguese', 
    23             rus:'Russian', 
    24             spa:'Spanish', 
    25             tur:'Turkish', 
    26             pan:'Punjabi', 
    27             und:'Captions' 
     10            afr: 'Afrikaans', 
     11            alb: 'Albanian', 
     12            ara: 'Arabic', 
     13            aze: 'Azerbaijani', 
     14            baq: 'Basque', 
     15            bel: 'Belarusian', 
     16            bul: 'Bulgarian', 
     17            cat: 'Catalan', 
     18            chi: 'Chinese', 
     19            cze: 'Czech', 
     20            dan: 'Danish', 
     21            dut: 'Dutch', 
     22            eng: 'English', 
     23            est: 'Estonian', 
     24            fil: 'Filipino', 
     25            fin: 'Finnish', 
     26            fre: 'French', 
     27            geo: 'Georgian', 
     28            ger: 'German', 
     29            gle: 'Irish', 
     30            glg: 'Galician', 
     31            gre: 'Greek', 
     32            hat: 'Haitian', 
     33            heb: 'Hebrew', 
     34            hin: 'Hindi', 
     35            hrv: 'Croatian', 
     36            hun: 'Hungarian', 
     37            ice: 'Icelandic', 
     38            ind: 'Indonesian', 
     39            ita: 'Italian', 
     40            jpn: 'Japanese', 
     41            kor: 'Korean', 
     42            lat: 'Latin', 
     43            lav: 'Latvian', 
     44            lit: 'Lithuanian', 
     45            mac: 'Macedonian', 
     46            may: 'Malay', 
     47            mlt: 'Maltese', 
     48            nor: 'Norwegian', 
     49            per: 'Persian', 
     50            pol: 'Polish', 
     51            por: 'Portuguese', 
     52            rum: 'Romanian', 
     53            rus: 'Russian', 
     54            slo: 'Slovak', 
     55            slv: 'Slovenian', 
     56            spa: 'Spanish', 
     57            srp: 'Serbian', 
     58            swa: 'Swahili', 
     59            swe: 'Swedish', 
     60            tha: 'Thai', 
     61            tur: 'Turkish', 
     62            ukr: 'Ukrainian', 
     63            und: 'Captions on', 
     64            urd: 'Urdu', 
     65            vie: 'Vietnamese' 
    2866        }; 
    2967 
  • branches/captions/src/com/longtailvideo/plugins/captions/SRT.as

    r1754 r1767  
    22 
    33 
    4     /** Parser for SubRip text files. **/ 
    5     public class SRT { 
     4import com.longtailvideo.jwplayer.utils.Strings; 
     5 
     6/** 
     7* Parse an Subrip caption file and return an array of captions.  
     8**/ 
     9public class SRT { 
    610 
    711 
     12    /** Parse SRT captions string into an array. **/ 
     13    public static function parseCaptions(dat:String):Array { 
     14        var arr:Array = new Array({begin:0,text:''}); 
     15        // Trim whitespace and split the list by returns. 
     16        dat = dat.replace(/^\s+/, '').replace(/\s+$/, ''); 
     17        var lst:Array = dat.split("\r\n\r\n"); 
     18        if(lst.length == 1) { lst = dat.split("\n\n"); } 
     19        for(var i:Number=0; i<lst.length; i++) { 
     20            // Parse the caption 
     21            var obj:Object = SRTParser.parseCaption(lst[i]); 
     22            if(obj['begin'] && obj['text']) { 
     23                arr.push(obj); 
     24                // Insert empty caption at the end. 
     25                if(obj['end']) { 
     26                    arr.push({begin:obj['end'],text:''}); 
     27                    delete obj['end']; 
     28                } 
     29            } 
     30        } 
     31        return arr; 
     32    }; 
     33 
     34 
     35    /** Parse a single captions entry. **/ 
     36    private static function parseCaption(dat:String):Object { 
     37        var obj:Object = new Object(); 
     38        var arr:Array = dat.split("\r\n"); 
     39        if(arr.length == 1) { arr = dat.split("\n"); } 
     40        try { 
     41            // First line contains the start and end. 
     42            var idx:Number = arr[1].indexOf(' --> '); 
     43            if(idx > 0) { 
     44                obj['begin'] = Strings.seconds(arr[1].substr(0,idx)); 
     45                obj['end'] = Strings.seconds(arr[1].substr(idx+5)); 
     46            } 
     47            // Second line starts the text. 
     48            if(arr[2]) { 
     49                obj['text'] = arr[2]; 
     50                // Arbitrary number of additional lines. 
     51                for (var i:Number = 3; i < arr.length; i++) { 
     52                    obj['text'] += '<br/>'+arr[i]; 
     53                } 
     54            } 
     55        } catch (err:Error) {} 
     56        return obj; 
    857    }; 
    958 
    1059 
    1160} 
     61 
     62 
     63} 
  • branches/captions/test/assets/bunny.srt

    r1593 r1767  
    29298 
    303000:00:31,000 --> 00:00:33,000 
    31 <u><a href="http://www.bigbuckbunny.org">www.bigbuckbunny.org</a></u> 
     31www.bigbuckbunny.org 
    3232Licensed as Creative Commons 3.0 attribution 
  • branches/captions/test/assets/corrie-styled.srt

    r1509 r1767  
    552 
    6600:00:10,500 --> 00:00:12,500 
    7 <font face="Times, serif" size="-3" color="#FFCC00">You liar!</font> 
     7<font face="Times, serif" size="20" color="#FFCC00">You liar!</font> 
    88 
    993 
    101000:00:13,500 --> 00:00:15,000 
    11 Are <i>you</i>? 
     11<u>Are</u> <i>you</i>? 
    1212 
    13134 
    141400:00:17,000 --> 00:00:20,000 
    15 Violet, <i>please</i>! 
    16 - I am <font face="Courier, monospace" size="+10" color="#FF0000"><b>not</b></font> your babe! 
     15Violet, <i><b><u>please</u></b></i>! 
     16- I am <font face="Courier, monospace" size="+10" color="#FF0000"><b><u>not</u></b></font> your babe! 
    1717 
    18185 
     
    28287 
    292900:00:36,000 --> 00:00:38,500 
    30 - <b><i><u>We need to talk.</u></i></b></span> 
    31 - Jason, are you <font face="Courier, monospace" size="+10" color="#FF0000">deaf</font>?!</span> 
     30- <u><a href="http://www.correlatie.nl">We need to talk.</u></a></span> 
     31- Jason, are you deaf?!</span> 
    3232 
    33338 
  • branches/captions/test/assets/corrie-styled.xml

    r1293 r1767  
    22  <head> 
    33   <styling> 
    4       <style id="normal" tts:fontSize="15" /> 
    5       <style id="yellow" tts:color="#FFFF00" tts:fontSize="12"/> 
    6       <style id="big" tts:fontWeight="bold" tts:fontSize="20" /> 
     4      <style id="boldened" tts:fontWeight="bold" /> 
     5      <style id="yellow" tts:color="#FFFF00" /> 
     6      <style id="bigger" tts:fontWeight="bold" tts:fontSize="20" tts:textDecoration="underline" /> 
    77      <style id="serifed" tts:fontFamily="Times,serif" tts:fontStyle="italic" /> 
    8       <style id="bigred" tts:color="#FF0000" tts:textDecoration="underline" tts:fontSize="20"/> 
    98   </styling> 
    109  </head> 
    1110  <body> 
    1211    <div> 
    13       <p begin="00:00:08" end="00:00:10" style="normal">- <span tts:textDecoration="underline">Nothing</span> is going on.</p> 
    14       <p begin="00:00:10.5" end="00:00:12.5" style="big">You <span tts:fontSize="+10">liar</span>!</p> 
    15       <p begin="00:00:13.5" end="00:00:15" style="yellow">Are you?</p> 
    16       <p begin="00:00:17" end="00:00:20" style="bigred">Violet, please!<br/>- I am <span tts:fontSize="30">not</span> your babe!</p> 
    17       <p begin="00:00:24" end="00:00:29" style="normal"> 
     12      <p begin="00:00:08" end="00:00:10" style="boldened">- Nothing is going on.</p> 
     13      <p begin="00:00:10.5" end="00:00:12.5" style="yellow">You liar!</p> 
     14      <p begin="00:00:13.5" end="00:00:15" style="yellow"><span tts:fontSize="+10">Are you?</span></p> 
     15      <p begin="00:00:17" end="00:00:20" style="bigger">Violet, please!<br/>- I am <span tts:fontSize="30">not</span> your babe!</p> 
     16      <p begin="00:00:24" end="00:00:29" style="yellow"> 
    1817          You <span tts:textDecoration="underline" tts:fontStyle="italic">stupid cow</span>, look what<br/>you gone and done now, ay. 
    1918      </p> 
    2019      <p begin="00:00:34" end="00:00:36" style="serifed">Vi, please.<br/>- Leave me alone!</p> 
    21       <p begin="00:00:36" end="00:00:38.5" style="normal">- We need to <span tts:color="#00FF00">talk</span> 
     20      <p begin="00:00:36" end="00:00:38.5" style="serifed">- We need to <span style="yellow">talk</span> 
    2221.<br/>- Jason, are you deaf?!</p> 
    23       <p begin="00:00:41" end="00:00:42.9" style="normal">What's going on?<br/>&nbsp;<br/>&nbsp;<br/><span tts:fontSize="-3">[some extra linebreaks]</span></p> 
    24       <p begin="00:00:43" end="00:00:45" style="normal">Gét out thëre and try tÞ ßalvage this©!<br/>&nbsp;<span tts:fontSize="-3">[some special characters]</span></p> 
     22      <p begin="00:00:41" end="00:00:42.9" style="boldened">What's going on?<br/>&nbsp;<br/>&nbsp;<br/><span tts:fontSize="-3">[some extra linebreaks]</span></p> 
     23      <p begin="00:00:43" end="00:00:45" style="boldened">Gét out thëre and try tÞ ßalvage this©!<br/>&nbsp;<span tts:fontSize="-3">[some special characters]</span></p> 
    2524    </div> 
    2625  </body> 
  • branches/captions/test/assets/playlist.xml

    r1293 r1767  
    55    <item> 
    66      <title>Coronation Street</title> 
    7       <description>This entry has external XML captions</description> 
    8       <enclosure url="../assets/corrie.flv" /> 
    9       <jwplayer:captions.file>assets/plain.xml</jwplayer:captions.file> 
     7      <description>Single, external XML captions.</description> 
     8      <jwplayer:file>http://content.bitsontherun.com/videos/7OCSON1y-393434.flv</jwplayer:file> 
     9      <jwplayer:image>http://content.bitsontherun.com/thumbs/7OCSON1y-320.jpg</jwplayer:image> 
     10      <jwplayer:captions.file>assets/corrie.xml</jwplayer:captions.file> 
    1011    </item> 
    1112 
    1213    <item> 
    1314      <title>Big Buck Bunny</title> 
    14       <description>This entry has external SRT captions.</description> 
    15       <enclosure url="http://content.bitsontherun.com/videos/nPripu9l-327.mp4" /> 
    16       <jwplayer:captions.file>assets/bunny.srt</jwplayer:captions.file> 
     15      <description>Single, embedded MP4 captions.</description> 
     16      <jwplayer:file>http://content.bitsontherun.com/videos/aytCR4cx-393434.mp4</jwplayer:file> 
     17      <jwplayer:image>http://content.bitsontherun.com/thumbs/aytCR4cx-320.jpg</jwplayer:image> 
     18    </item> 
     19 
     20    <item> 
     21      <title>Men With Talent</title> 
     22      <description>No captions at all.</description> 
     23      <jwplayer:file>http://content.bitsontherun.com/videos/SAs4hE5G-364766.mp4</jwplayer:file> 
     24      <jwplayer:image>http://content.bitsontherun.com/thumbs/SAs4hE5G-320.jpg</jwplayer:image> 
     25      <jwplayer:captions.file>assets/corrie.xml</jwplayer:captions.file> 
     26    </item> 
     27 
     28    <item> 
     29      <title>Global Timoto</title> 
     30      <description>Multiple, embedded MP4 captions.</description> 
     31      <jwplayer:file>http://content.bitsontherun.com/videos/w5VkaqJ1-393434.mp4</jwplayer:file> 
     32      <jwplayer:image>http://content.bitsontherun.com/thumbs/w5VkaqJ1-320.jpg</jwplayer:image> 
    1733    </item> 
    1834 
    1935    <item> 
    2036      <title>Sintel</title> 
    21       <description>This entry has no code no captions.</description> 
    22       <enclosure url="http://content.bitsontherun.com/videos/yj1shGJB-327.mp4" /> 
    23     </item> 
    24  
    25     <item> 
    26       <title>Big Buck Bunny</title> 
    27       <description>This entry has embedded MPEG-4 captions.</description> 
    28       <enclosure url="../assets/bunny.mp4" /> 
     37      <description>Multiple, external SRT captions.</description> 
     38      <jwplayer:file>http://content.bitsontherun.com/videos/q1fx20VZ-364765.mp4</jwplayer:file> 
     39      <jwplayer:image>http://content.bitsontherun.com/thumbs/q1fx20VZ-320.jpg</jwplayer:image> 
     40      <jwplayer:captions.files>assets/sintel-dut.txt,assets/sintel-eng.txt,assets/sintel-fre.txt,assets/sintel-ger.txt,assets/sintel-ita.txt,assets/sintel-pol.txt,assets/sintel-por.txt,assets/sintel-rus.txt,assets/sintel-spa.txt</jwplayer:captions.files> 
    2941    </item> 
    3042 
  • branches/captions/test/index.html

    r1706 r1767  
    1616 
    1717<ul> 
    18     <li><a href="mp4.html">MP4 TimedText</a></li> 
    19     <li><a href="usubs.html">Universal Subtitles</a></li> 
     18    <li><a href="single.html">Single Track</a></li> 
     19    <li><a href="multiple.html">Multiple Tracks</a></li> 
    2020</ul> 
    21  
     21<ul> 
     22    <li><a href="options.html">Configuration Options</a></li> 
     23    <li><a href="playlist.html">Captions in Playlist</a></li> 
     24    <li><a href="styling.html">Captions Styling</a></li> 
     25</ul> 
     26<ul> 
     27    <li><a href="skin.html">Skinning</a></li> 
     28</ul> 
    2229 
    2330</body> 
  • branches/captions/test/multiple.html

    r1755 r1767  
    44<meta charset="UTF-8"> 
    55<script type="text/javascript" src="assets/jwplayer.min.js"></script> 
    6 <title>MP4 TimedText</title> 
     6<title>Multiple Tracks</title> 
    77<style> 
    88    body { padding: 50px; font: 13px/20px Arial; background: #EEE; } 
    99    form,p, ul { margin-top: 20px; } 
    10     #player { -webkit-box-shadow: 0 0 5px #999; background: #000; color:#FFF; line-height:270px; text-align: center; } 
     10    #player { -webkit-box-shadow: 0 0 5px #999; background: #000; color:#FFF; } 
    1111</style> 
    1212 
     
    1414<body> 
    1515 
    16 <h2>MP4 TimedText</h2> 
     16<h2>Multiple Tracks</h2> 
    1717 
    1818<div id="player"></div> 
    1919<script type="text/javascript"> 
    20 jwplayer("player").setup({ 
    21     controlbar: 'bottom', 
    22     file:'http://playertest.longtailvideo.com/timoto.mp4', 
    23     height: 294, 
    24     plugins: { 
    25         '../captions.swf': {} 
    26     }, 
    27     flashplayer: 'assets/player.swf', 
    28     width: 480 
    29 }); 
     20function loadPlayer(video,files,labels) { 
     21    jwplayer("player").setup({ 
     22        autostart: true, 
     23        controlbar: 'bottom', 
     24        file: video, 
     25        height: 300, 
     26        plugins: { 
     27            '../captions.swf': { 
     28                files: files, 
     29                labels: labels 
     30            } 
     31        }, 
     32        flashplayer: 'assets/player.swf', 
     33        width: 480 
     34    }); 
     35} 
    3036</script> 
    3137 
    3238 
    3339<ul> 
    34     <li><a href="javascript:jwplayer().load('http://playertest.longtailvideo.com/timoto.mp4')">MP4 with multiple TextTracks</a></li> 
    35     <li><a href="javascript:jwplayer().load('http://playertest.longtailvideo.com/bunny.mp4')">MP4 with single TextTrack</a></li> 
     40    <li><a href="javascript:loadPlayer('http://content.bitsontherun.com/videos/q1fx20VZ-364765.mp4','assets/sintel-dut.txt,assets/sintel-eng.txt,assets/sintel-fre.txt,assets/sintel-ger.txt,assets/sintel-ita.txt,assets/sintel-pol.txt,assets/sintel-por.txt,assets/sintel-rus.txt,assets/sintel-spa.txt','Nederlands,English,Français,Deutsch,Italiano,Polska,Português,РПссОю,Español')">9 external srt tracks</a> (no labels)</li> 
     41    <li><a href="javascript:loadPlayer('http://content.bitsontherun.com/videos/q1fx20VZ-364765.mp4','assets/sintel-dut.txt,assets/sintel-eng.txt,assets/sintel-fre.txt,assets/sintel-ger.txt,assets/sintel-ita.txt,assets/sintel-pol.txt,assets/sintel-por.txt,assets/sintel-rus.txt,assets/sintel-spa.txt')">9 external srt tracks</a> (with labels)</li> 
     42    <li><a href="javascript:loadPlayer('http://content.bitsontherun.com/videos/w5VkaqJ1-393434.mp4')">6 embedded mp4 tracks</a> (no labels)</li> 
     43    <li><a href="javascript:loadPlayer('http://content.bitsontherun.com/videos/w5VkaqJ1-393434.mp4',null,'English,Português,Deutsch,Français,Norske,Español')">6 embedded mp4 tracks</a> (with labels)</li> 
     44</ul> 
     45<ul> 
     46    <li><a href="javascript:jwplayer().resize(320,200)">resize to 320x200</a></li> 
     47    <li><a href="javascript:jwplayer().resize(480,300)">resize to 480x300</a></li> 
     48    <li><a href="javascript:jwplayer().resize(720,430)">resize to 720x430</a></li> 
    3649</ul> 
    3750 
    38  
    39 <p>Test whether the text tracks are correctly shown and rendered.<br /> 
    40    After hard refreshes, the cookied track should show up.<br /> 
    41    The multitrack example should pop up a selector. 
     51<p>Check whether the text tracks are correctly shown and rendered.<br /> 
     52   Also check whether the selection menu is correctly rendered, at different sizes.<br /> 
     53   Also check whether the selection menu labels are correctly rendered. 
    4254</p> 
    4355 
Note: See TracChangeset for help on using the changeset viewer.