Commit Graph

89 Commits

Author SHA1 Message Date
JW Wang
a64126148f Bug 996465 - Extract code running state machine cycles into a class. r=cpearce 2014-07-11 03:11:00 -04:00
Carsten "Tomcat" Book
3aa713695d Backed out changeset bbcfcf00f84e (bug 996465) for bustage on a CLOSED TREE 2014-07-11 09:54:42 +02:00
JW Wang
ee927b1e99 Bug 996465 - extract code running state mahcine cycles into a class. r=cpearce. 2014-07-10 03:21:00 +02:00
Shelly Lin
019e14767a Bug 744896 - Part 3: Pass MediaInfo to functions MetadataLoaded and QueueMetadata. r=roc. 2014-07-04 11:54:54 +08:00
Carsten "Tomcat" Book
4b81e2a57d Backed out changeset 7691b13459f4 (bug 744896) for B2G ICS Emulator Opt test failures on a CLOSED TREE 2014-07-03 11:51:41 +02:00
Shelly Lin
efde2cf300 Bug 744896 - Part 3: Pass MediaInfo to functions MetadataLoaded and QueueMetadata. r=roc. 2014-07-03 14:04:08 +08:00
Chris Pearce
aa0af5dfd7 Bug 1024405 - Discard enqueued samples when making video decoders dormant. r=kinetik 2014-06-30 11:23:04 +12:00
Matthew Gregan
47c6cac901 Bug 948269 - Refactor MediaDecoderStateMachine::AudioLoop into a standalone AudioSink class. r=cpearce 2013-12-11 18:03:30 +13:00
JW Wang
1dfd4425a2 Bug 1020538 - Fix the position calculation algorithm in MediaDecoderStateMachine::GetVideoStreamPosition(). r=cpearce 2014-06-26 14:56:23 +12:00
Eric Phan
297a9b2844 Bug 1015985 - Set decoder seekable members outside of ReadMetadata by StateMachine. r=cpearce 2014-06-23 22:08:34 +12:00
Chris Pearce
05136cdace Bug 979104 - MediaDecoderReader/StateMachine asynchronous decoding. r=kinetik 2014-06-18 17:07:02 +12:00
Ehsan Akhgari
9511934161 Backed out changeset 0cdef46c65c1 (bug 979104) for causing bug 1024324 2014-06-13 16:20:37 -04:00
Karl Tomlinson
6d42cde63e b=1023697 change MediaDecoderStateMachine::mSyncPointInMediaStream from StreamTime to µs r=roc
This allows the conversion from StreamTime to be performed while a stream is
available.

--HG--
extra : transplant_source : %3A%AD%5C%1A%84%C3%1BC%8B%04%D5%5B%90%3Cv%BE%A6%D6%C0%9D
2014-06-12 16:44:56 +12:00
Chris Pearce
954b2d1caf Bug 979104 - MediaDecoderReader/StateMachine asynchronous decoding. r=kinetik 2014-06-10 19:31:09 +12:00
JW Wang
c49f8a2459 Bug 1000841 - remove SetActive() from MediaDecoderReader. Its user needs to know when to call SetIdle() only. r=cpearce 2014-05-19 04:23:00 +02:00
Chris Pearce
6dd715d70c Bug 1004373 - Prevent multiple ReadMetadata tasks to be dispatched to the decode task queue at once. r=kinetik 2014-05-06 12:12:05 +12:00
Chris Pearce
e212cfc560 Bug 1002266 - Access MediaQueues from MediaDecoderStateMachine through accessors. r=kinetik 2014-04-28 13:12:50 +12:00
Matthew Gregan
07984b60a6 Bug 881512 - Don't mix refcounting with auto ptr use. Rather than try to hang on to the reader, punch the appropriate holes through via the state machine class. r=cajbir 2014-04-22 23:58:00 +12:00
JW Wang
5bfcd08a49 Bug 998168 - nsITimer functions should be only called in the event target thread of the timer. r=cpearce. 2014-04-23 05:29:14 -04:00
Randell Jesup
1977552fae Bug 919215: Drop queued audio data on low-latency startup, make AudioStream::Init() async r=roc,padenot 2014-04-09 15:59:07 -04:00
Wes Kocher
e4bb8736a9 Merge m-c to inbound on a CLOSED TREE 2014-04-02 19:54:15 -07:00
JW Wang
0ec83ca01e Bug 990356 - Part 3: Remove nsRunnable base class from MediaDecoderStateMachine. r=cpearce 2014-04-02 08:51:47 -04:00
JW Wang
7cb5d740ea Bug 990356 - Part 2: Only one way to dispatch state machine (using a timer) tasks and remove unused variables. r=cpearce 2014-04-02 08:51:47 -04:00
Matthew Gregan
69f11197c5 Bug 927245 - Remove deprecated Audio Data API implementation. r=cajbir,smaug 2014-04-03 10:53:39 +13:00
Chris Pearce
fd48fdb8b5 Bug 631058 - Don't preroll as many media samples when loading preload="metadata" media. r=cajbir 2014-04-01 16:43:57 +13:00
Chris Pearce
b12df215bb Bug 778077 - Implement HTMLMediaElement.fastSeek(time). r=cajbir
Implement HTMLMediaElement.fastSeek(), basically by changing all the
MediaDecoderReader::Seek() overrides to not call
MediaDecoderReader::DecodeToTarget(), and have MediaDecoderReader::DecodeSeek()
call DecodeToTarget() if we're doing an accurate (non-fast) seek.

Update gizmo.mp4 to have a keyframe every second, instead of only 1 keyframe at
the start of stream. This makes the unit test I added more useful for mp4...

I pushed most of the seek target clamping logic in MediaDecoder up into
HTMLMediaElement, so that we're clamping in fewer places. Note
MediaDecoderStateMachine::Seek() still sanity checks the seek target.

We have to update the currentTime/MediaDecoder playback position after a seek
completes now, rather than assuming the seek always got it exactly right.

Removed those pesky assertions about seek target lying in the first frame after
seek, since actually sometimes the media doesn't have samples for all streams
after a seek (either due to the media being encoded like that, or because of a
bug in the platform's decoder, not entirely sure).

Green: https://tbpl.mozilla.org/?tree=Try&rev=b028258565e2
* * *
Bug 778077 - Fix up MediaOMXReader fastseek to ensure audio stream stays in sync with video stream. r=cajbir
2014-04-01 16:39:04 +13:00
Ed Morley
7a428f481b Backed out changeset 00fa39c23b44 (bug 778077) for reftest failures 2014-03-28 12:31:29 +00:00
Chris Pearce
eefc2c2db6 Bug 778077 - Implement HTMLMediaElement.fastSeek(time). r=cajbir
Implement HTMLMediaElement.fastSeek(), basically by changing all the
MediaDecoderReader::Seek() overrides to not call
MediaDecoderReader::DecodeToTarget(), and have MediaDecoderReader::DecodeSeek()
call DecodeToTarget() if we're doing an accurate (non-fast) seek.

Update gizmo.mp4 to have a keyframe every second, instead of only 1 keyframe at
the start of stream. This makes the unit test I added more useful for mp4...

I pushed most of the seek target clamping logic in MediaDecoder up into
HTMLMediaElement, so that we're clamping in fewer places. Note
MediaDecoderStateMachine::Seek() still sanity checks the seek target.

We have to update the currentTime/MediaDecoder playback position after a seek
completes now, rather than assuming the seek always got it exactly right.

Removed those pesky assertions about seek target lying in the first frame after
seek, since actually sometimes the media doesn't have samples for all streams
after a seek (either due to the media being encoded like that, or because of a
bug in the platform's decoder, not entirely sure).

Green: https://tbpl.mozilla.org/?tree=Try&rev=b028258565e2
2014-03-28 22:36:10 +13:00
Phil Ringnalda
7fb1a235f6 Backed out 2 changesets (bug 778077, bug 631058)
CLOSED TREE

Backed out changeset dda301682977 (bug 631058)
Backed out changeset 25b633e7dcd5 (bug 778077)
2014-03-27 21:50:02 -07:00
Chris Pearce
7bc425d1e8 Bug 778077 - Implement HTMLMediaElement.fastSeek(time). r=cajbir
Implement HTMLMediaElement.fastSeek(), basically by changing all the
MediaDecoderReader::Seek() overrides to not call
MediaDecoderReader::DecodeToTarget(), and have MediaDecoderReader::DecodeSeek()
call DecodeToTarget() if we're doing an accurate (non-fast) seek.

Update gizmo.mp4 to have a keyframe every second, instead of only 1 keyframe at
the start of stream. This makes the unit test I added more useful for mp4...

I pushed most of the seek target clamping logic in MediaDecoder up into
HTMLMediaElement, so that we're clamping in fewer places. Note
MediaDecoderStateMachine::Seek() still sanity checks the seek target.

We have to update the currentTime/MediaDecoder playback position after a seek
completes now, rather than assuming the seek always got it exactly right.

Removed those pesky assertions about seek target lying in the first frame after
seek, since actually sometimes the media doesn't have samples for all streams
after a seek (either due to the media being encoded like that, or because of a
bug in the platform's decoder, not entirely sure).

Green: https://tbpl.mozilla.org/?tree=Try&rev=b028258565e2
2014-03-28 15:50:28 +13:00
Eric Rahm
6af5d95274 Bug 962154 - Use MallocSizeOf to report decoded-video memory. r=cpearce,njn 2014-03-19 14:33:12 -07:00
Chris Pearce
625b9f74ae Bug 973408 - Merge logic from UpdateIdleState and enqueueing decode tasks, so that we always behave consistently, especially WRT setting readers Idle on B2G. r=kinetik 2014-03-11 11:44:10 +08:00
Chris Pearce
6b29454867 Bug 973408 - Set MediaDecoderReaders idle when they're not decoding. r=kinetik 2014-03-11 11:44:10 +08:00
Chris Pearce
7024b04cc3 Bug 973408 - Decode video and audio in separate media tasks. r=kinetik 2014-03-11 11:44:09 +08:00
Chris Pearce
b078dcfd7a Bug 973408 - Split innards of MediaDecoderStateMachine::DecodeLoop() into sub DecodeAudio/DecodeVideo functions. r=kinetik 2014-03-11 11:44:09 +08:00
Chris Pearce
f2ceb11023 Bug 973408 - Don't block a decode thread while awaiting resources. r=kinetik 2014-03-11 11:44:09 +08:00
Chris Pearce
3c12cc7501 Bug 973408 - Split DecodeThreadRun() into separate decode tasks. r=kinetik 2014-03-11 11:44:09 +08:00
Chris Pearce
2634dbcd59 Bug 973408 - Remove MediaDecoderStateMachine::GetAmpleVideoFrames(), and MediaOMXStateMachine. r=kinetik 2014-03-11 11:44:08 +08:00
Chris Pearce
bc8ada7974 Bug 973408 - Move MediaDecoderStateMachine::DecodeLoop()'s local variables to class members so the function can be made reentrant in future. r=kinetik 2014-03-11 11:44:08 +08:00
Chris Pearce
aa8aee7920 Bug 968016 - Use a SharedThreadPool of size 1 for the Media State Machine thread. r=kinetik
This makes it easy to share the state machine thread, and for it to shut down
automatically when the last reference is dropped to it.
2014-02-18 11:53:53 +13:00
Chris Pearce
5a87fcc228 Bug 968016 - Use SharedThreadPool instead of manually managed threads for the media decoding. r=kinetik 2014-02-18 11:53:52 +13:00
Ben Kelly
ee19863f94 Bug 960873: Part 2: Create AudioCompactor class to minimize allocation slop. r=cpearce
Based on original patch written by :gal.
2014-02-05 18:11:25 -05:00
Phil Ringnalda
e4e5b2d6eb Backed out 6 changesets (bug 960873) for Win64 build bustage
Backed out changeset 33d8989841ac (bug 960873)
Backed out changeset 6c9e404aeb3f (bug 960873)
Backed out changeset 36c8b10b0a31 (bug 960873)
Backed out changeset 29c36a7acfb0 (bug 960873)
Backed out changeset 6e3966e0eb40 (bug 960873)
Backed out changeset 612db692256b (bug 960873)
2014-02-05 09:28:14 -08:00
Ben Kelly
893e6c69e7 Bug 960873: Part 2: Create AudioCompactor class to minimize allocation slop. r=cpearce
Based on original patch written by :gal.
2014-02-04 23:10:43 -05:00
Ben Kelly
d339b86f86 Bug 961441: Use MallocSizeOf to report decoded-audio memory. r=cpearce r=njn 2014-01-22 22:14:45 -05:00
Robert O'Callahan
386d5c5339 Bug 943461. Part 15: Make MediaDecoder set its currentTime based on the decoded stream's time directly, if we are decoding to a stream. r=cpearce
--HG--
extra : rebase_source : 35fe51dbec3107d7dae801a5a179c5ef5fa53725
2013-12-13 01:33:00 +13:00
Wes Kocher
3053bbf32b Backed out changeset 2e2c930a960c (bug 948269) for android 4.0 mochitest-2 permaorange 2013-12-19 19:24:42 -08:00
Matthew Gregan
f06a701660 Bug 948269 - Split MediaDecoderStateMachine::AudioLoop out into new AudioSink class. r=cpearce 2013-12-20 13:52:06 +13:00
Robert O'Callahan
2a77718239 Bug 938022. Part 6: Have MediaDecoder/MediaDecoderStateMachine that's producing a MediaStream use that stream's current time as the media clock. r=padenot
We monitor the stream's output current time via a new MediaStreamListener
owned by DecodedStreamData. We also track its main-thread Finished status.
While we're writing to a DecodedStreamData stream that hasn't finished its
output, we stay in the DECODER_STATE_COMPLETED state so we can keep updating
video and firing timeupdates.

GetClock() uses the DecodedStreamData stream's current time as the source for
the clock if there is one.

--HG--
extra : rebase_source : aba1d092d3d347e26ebd823d61fcbfa40a8cd1fe
2013-12-02 10:09:06 +13:00
Robert O'Callahan
397a575007 Bug 938022. Part 2: Block captured MediaStream when the MediaDecoderStateMachine is not playing. r=cpearce
--HG--
extra : rebase_source : 01d887b3b5917b7c51a286d61feb10e7b2426d9a
2013-11-23 22:48:24 +13:00