- 07 May, 2015 5 commits
-
-
Metadata packets that were not the start of a new payload unit were being silently dropped. Move the handler so that they are correctly routed to the metadata stream. Also, keep track of the number of bytes shifted off of the buffer when processing ID3 frames so that more than a single frame can be processed.
David LaPalomento committed -
If the entire ID3 frame isn't available in a single metadatastream push, store everything up and check with the combined data next time. Ignore tags that do not include at least the tag header in the first TS packet.
David LaPalomento committed -
Pass along the parsed ID3 frame object that corresponds to the genererated VTTCue.
David LaPalomento committed -
-
- 06 May, 2015 2 commits
-
-
This code uses the presentation timestamp of the ts segment to calculate its exact duration, since this may differ by fractions of a second from what is reported. Using the exact, calculated 'preciseDuration' allows for smoother seeking and calculation of the total playlist duration, which previously (especially in short videos) was reported erroneously and made the play head overrun the end of the progress bar.
Brandon Bay committed
- 05 May, 2015 2 commits
-
-
- 28 Apr, 2015 6 commits
-
-
-
When all multiple variant streams were usable based on bandwidth, resolutionPlusOne could be set to the lowest bandwidth variant on the first pass through the resolution filtering loop.
David LaPalomento committed -
Split up large segments that need AES-128 decryption and hand control back to the browser between segments. Clean up the decryption block loop a bit since it's no longer critical to finish before the next frame is rendered.
David LaPalomento committed
- 27 Apr, 2015 1 commit
-
-
- 21 Apr, 2015 1 commit
-
-
For #218. Use TypedArrays instead of DataViews because they weren't getting optimized very well. Use Int32Arrays instead of Uint32Arrays to avoid v8 deoptimization at runtime when negative values were encountered. Swap byte order in the main loop instead of before-hand. These changes don't get decrypt running in less than 16ms on my machine but they do speed things up an order of magnitude or so. Additional work to make the decryption asynchronous appears necessary.
David LaPalomento committed
-
- 16 Apr, 2015 9 commits
-
-
-
Temporarily use a newer version of videojs-swf then is included in the mainline video.js release.
David LaPalomento committed -
-
Never match media indices on playlist reload based on segment URI because some streams may re-use the same segment in multiple positions. Change fetchKeys() so that it operates on buffered segments instead of directly modifying a version of the playlist. Before that change, live playlists with low segment durations could stall because the key would be applied to the previous version of the live playlist and segments would get blocked up forever in the queue waiting for their key to arrive. Use a much less destructive mechanism for playing across discontinuities. vjs_discontinuity() on the SWF allows us to signal a timestamp discontinuity without flushing the playback buffer. That means we don't have to wait until the buffer is empty when a discontinuity is encountered and feeding data to the SWF doesn't have to block either. Update tests to reflect new key-segment request ordering.
David LaPalomento committed
-
- 15 Apr, 2015 1 commit
-
-
If we have a perfect resolution match for playlist and player, use that playlist. Otherwise, get the next highest resolution matched playlist, even if bigger than the player.
Gary Katsevman committed
-
- 13 Apr, 2015 2 commits
-
-
- 10 Apr, 2015 1 commit
-
-
- 02 Apr, 2015 10 commits
-
-
-
Custom IVs are naturally expressed as Uint8Arrays but our expected manifest format was json. Swap to plain JS so we don't have to do anything hacky for testing with custom IVs.
David LaPalomento committed -
-
-
-
-
-
-