]> id.pley.net Git - movie_parser.git/blobdiff - AtomTester.html
Add new atom types: SampleSize, TrackExtends, OriginalFormat, SchemeType, and SchemeInfo.
[movie_parser.git] / AtomTester.html
index 26172643932f28a827bb6ebe664a8f5b0f1da7ee..78587ca5ae7d9660dd4cde017e421e910ddadee1 100644 (file)
             var reader = new FileReader();
             output.innerHTML = '';
             
             var reader = new FileReader();
             output.innerHTML = '';
             
-            function checkForMoovAtom(offset) {
+            function checkForAtom(offset) {
                 reader.onload = function(e) {
                 reader.onload = function(e) {
-                    var result = e.target.result;
-                    var basicAtom = new Atom(result);
-                    if (!basicAtom)
-                        return;
-                    else if (basicAtom.type == 'moov') 
-                        readMoovAtom(offset, basicAtom.size);
-                    else
-                        checkForMoovAtom(offset + basicAtom.size);
+                    var atom = new Atom(e.target.result);
+                    if (atom)
+                        readAtom(offset, atom.size);
                 };
                 var subset = file.slice(offset, offset + 16);
                 reader.readAsArrayBuffer(subset);
                 };
                 var subset = file.slice(offset, offset + 16);
                 reader.readAsArrayBuffer(subset);
-            };
-            
-            function readMoovAtom(offset, length) {
-                reader.onload = function(e) { 
-                    moovAtom = Atom.create(e.target.result);
+            }
+
+            function readAtom(offset, length) {
+                reader.onload = function(e) {
+                    atom = Atom.create(e.target.result);
+                    if (!atom)
+                        return;
                     var output = document.getElementById('output');
                     var output = document.getElementById('output');
-                    output.appendChild(toDOMNode(moovAtom));
+                    output.appendChild(toDOMNode(atom));
+                    if (file.size > offset + length)
+                        checkForAtom(offset + length);
                 };
                 var subset = file.slice(offset, offset + length);
                 reader.readAsArrayBuffer(subset);
                 };
                 var subset = file.slice(offset, offset + length);
                 reader.readAsArrayBuffer(subset);
-            };
+            }
             
             
-            checkForMoovAtom(0);
+            checkForAtom(0);
         }
         
         function toDOMRepresentation(object)
         {
             if (object instanceof Atom)
                 return toDOMNode(object);
         }
         
         function toDOMRepresentation(object)
         {
             if (object instanceof Atom)
                 return toDOMNode(object);
-            else if (object instanceof Array) {
+            else if (object instanceof Array || object instanceof Uint32Array)  {
                 var span = document.createElement('span');
                 span.appendChild(document.createTextNode('['));
                 for (var i = 0; i < object.length; ++i) {
                 var span = document.createElement('span');
                 span.appendChild(document.createTextNode('['));
                 for (var i = 0; i < object.length; ++i) {
         function toDOMNode(object)
         {
             var output = document.createElement('dl');
         function toDOMNode(object)
         {
             var output = document.createElement('dl');
+            
+            if (typeof(object.description) == 'string') {
+                var div = document.createElement('div');
+                div.classList.add('description');
+                div.appendChild(document.createTextNode(object.description));
+                output.appendChild(div);
+            }
 
             for (property in object) {
                 var value = object[property];
 
             for (property in object) {
                 var value = object[property];
 
         dt, dd { display: inline-block; min-width: 8em; }
         dd { margin-left: 1em; }
 
         dt, dd { display: inline-block; min-width: 8em; }
         dd { margin-left: 1em; }
+        .description { text-align: center; font-weight: bold; }
         
         /* make the output display as a table */
         /*
         
         /* make the output display as a table */
         /*