(json)
| 2460 | } |
| 2461 | |
| 2462 | function generateEBML(json) { |
| 2463 | var ebml = []; |
| 2464 | for (var i = 0; i < json.length; i++) { |
| 2465 | var data = json[i].data; |
| 2466 | |
| 2467 | if (typeof data === 'object') { |
| 2468 | data = generateEBML(data); |
| 2469 | } |
| 2470 | |
| 2471 | if (typeof data === 'number') { |
| 2472 | data = bitsToBuffer(data.toString(2)); |
| 2473 | } |
| 2474 | |
| 2475 | if (typeof data === 'string') { |
| 2476 | data = strToBuffer(data); |
| 2477 | } |
| 2478 | |
| 2479 | var len = data.size || data.byteLength || data.length; |
| 2480 | var zeroes = Math.ceil(Math.ceil(Math.log(len) / Math.log(2)) / 8); |
| 2481 | var sizeToString = len.toString(2); |
| 2482 | var padded = (new Array((zeroes * 7 + 7 + 1) - sizeToString.length)).join('0') + sizeToString; |
| 2483 | var size = (new Array(zeroes)).join('0') + '1' + padded; |
| 2484 | |
| 2485 | ebml.push(numToBuffer(json[i].id)); |
| 2486 | ebml.push(bitsToBuffer(size)); |
| 2487 | ebml.push(data); |
| 2488 | } |
| 2489 | |
| 2490 | return new Blob(ebml, { |
| 2491 | type: 'video/webm' |
| 2492 | }); |
| 2493 | } |
| 2494 | |
| 2495 | function toBinStrOld(bits) { |
| 2496 | var data = ''; |
no test coverage detected