Commit Graph

70 Commits

Author SHA1 Message Date
Randell Jesup
095ff2b262 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
af719fd52b Merge m-c to inbound on a CLOSED TREE 2014-04-02 19:54:15 -07:00
JW Wang
cc9300a896 Bug 990356 - Part 3: Remove nsRunnable base class from MediaDecoderStateMachine. r=cpearce 2014-04-02 08:51:47 -04:00
JW Wang
4adcf627f4 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
ced956736c Bug 927245 - Remove deprecated Audio Data API implementation. r=cajbir,smaug 2014-04-03 10:53:39 +13:00
Chris Pearce
8b18788355 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
a8e52798ff 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
9d7a5cff30 Backed out changeset 00fa39c23b44 (bug 778077) for reftest failures 2014-03-28 12:31:29 +00:00
Chris Pearce
c9cd61eb5d 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
1a6280a756 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
b26d467d58 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
4c96c88496 Bug 962154 - Use MallocSizeOf to report decoded-video memory. r=cpearce,njn 2014-03-19 14:33:12 -07:00
Chris Pearce
d414e70f53 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
517140e405 Bug 973408 - Set MediaDecoderReaders idle when they're not decoding. r=kinetik 2014-03-11 11:44:10 +08:00
Chris Pearce
161ebf7d5d Bug 973408 - Decode video and audio in separate media tasks. r=kinetik 2014-03-11 11:44:09 +08:00
Chris Pearce
c4eea277c2 Bug 973408 - Split innards of MediaDecoderStateMachine::DecodeLoop() into sub DecodeAudio/DecodeVideo functions. r=kinetik 2014-03-11 11:44:09 +08:00
Chris Pearce
1e42313a2a Bug 973408 - Don't block a decode thread while awaiting resources. r=kinetik 2014-03-11 11:44:09 +08:00
Chris Pearce
9243cb719a Bug 973408 - Split DecodeThreadRun() into separate decode tasks. r=kinetik 2014-03-11 11:44:09 +08:00
Chris Pearce
9789b23076 Bug 973408 - Remove MediaDecoderStateMachine::GetAmpleVideoFrames(), and MediaOMXStateMachine. r=kinetik 2014-03-11 11:44:08 +08:00
Chris Pearce
75c8af6426 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
2d67a1b332 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
6dda7a817e 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
110ff07411 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
1af4f7e752 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
ceb8a27ae2 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
1ac006397f Bug 961441: Use MallocSizeOf to report decoded-audio memory. r=cpearce r=njn 2014-01-22 22:14:45 -05:00
Robert O'Callahan
81d72a6306 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
e20ec0842c Backed out changeset 2e2c930a960c (bug 948269) for android 4.0 mochitest-2 permaorange 2013-12-19 19:24:42 -08:00
Matthew Gregan
4ae6fd0723 Bug 948269 - Split MediaDecoderStateMachine::AudioLoop out into new AudioSink class. r=cpearce 2013-12-20 13:52:06 +13:00
Robert O'Callahan
b2d1fa5018 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
161ce6418f 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
Ryan VanderMeulen
7db9c39392 Merge m-c to inbound.
--HG--
rename : dom/contacts/tests/test_contacts_upgrade.html => dom/contacts/tests/test_contacts_upgrade.xul
rename : dom/indexedDB/test/test_globalObjects.xul => dom/indexedDB/test/test_globalObjects_chrome.xul
rename : dom/indexedDB/test/test_globalObjects.html => dom/indexedDB/test/test_globalObjects_content.html
rename : dom/indexedDB/test/unit/test_globalObjects.js => dom/indexedDB/test/unit/test_globalObjects_xpc.js
2013-11-19 13:54:20 -05:00
Matthew Gregan
aca39c9f09 Bug 939662 - Remove "using namespace mozilla::dom;" from MediaDecoder.h and fix fallout. r=cpearce 2013-11-18 17:22:47 +13:00
Sotaro Ikeda
7b5305a24c Bug 935118 - Allow buffering to be triggered when we're low on decoded audio or video. r=roc 2013-11-19 09:01:14 -05:00
Matthew Gregan
81e39fb050 Bug 939601 - Refactor current thread assert into helper. r=cpearce 2013-11-04 11:11:09 +13:00
Phil Ringnalda
aa4f4a9e99 Back out 4fd2bf2ec8db (bug 939662) for Windows build bustage
CLOSED TREE
2013-11-18 21:34:48 -08:00
Matthew Gregan
fdcb4e1cac Bug 939662 - Remove "using namespace mozilla::dom;" from MediaDecoder.h and fix fallout. r=cpearce
--HG--
extra : rebase_source : 922db8de8e9103e3001c26f23ed7402efa8237f5
2013-11-18 17:22:47 +13:00
Matthew Gregan
3c153f450d Bug 848812 - Remove incorrect on-thread assertion from StopPlayback. r=cpearce 2013-11-05 17:12:01 +13:00
Thomas Zimmermann
568572011d Bug 924678: Explicitly clear OmxDecoder::mDecoder, r=doublec
The MediaDecoderStateMachine frees the Decoder during its own
shutdown. If the the MediaDecoderStateMachine for an MP3 file
gets cleaned up before the MP3 frame parser is finished, the
OmxDecoder operates with an invalid Decoder.

With this patch, the MediaDecoderStateMachine informs the
OmxDecoder to clear the decoder field. The MP3 parser logic
detects this case and returns.

--HG--
extra : rebase_source : 0a00de3cf7b95ede77408e5d43cccbcd706750cd
2013-10-14 10:38:17 +02:00
Matthew Gregan
8d51f7a552 Bug 920867 - Split VideoInfo into Video and Audio objects, then encapsulate in new MediaInfo object. r=cpearce 2013-09-27 17:22:38 +12:00
Chris Pearce
c438f19ab9 Bug 910897 - Use MP3FrameParser in DirectShow in order to calculate the duration. r=padenot 2013-09-10 12:45:33 +12:00
Ehsan Akhgari
3b48889d78 Bug 912702 - Minimize the #includes in content/media; r=roc 2013-09-05 16:25:17 -04:00
Ehsan Akhgari
22fac42fb0 Backed out changeset 2f15518f566e (bug 912702) because of B2G JB Emulator build bustage
--HG--
extra : rebase_source : 6c01ad3bc2f91b0e7e3edab84aedbfe064310a8b
2013-09-05 13:29:38 -04:00
Ehsan Akhgari
2ce2ec0cdb Bug 912702 - Minimize the #includes in content/media; r=roc 2013-09-04 17:58:14 -04:00
Thomas Zimmermann
92f7e9a735 Bug 831224: Allow update of the media duration, r=padenot
With MP3 streams, the media duration might change after we received
new data. This patch adds infrastructure to signal the new duration
to the media decoder and state machine. It will also fire an event
of type 'durationchange' to the DOM.
2013-05-03 09:48:37 +02:00
Ed Morley
77fbd30f54 Backed out changeset 43953e9233a2 (bug 831224) 2013-08-08 09:59:49 -07:00
Thomas Zimmermann
e02e53b720 Bug 831224: Allow update of the media duration, r=padenot
With MP3 streams, the media duration might change after we received
new data. This patch adds infrastructure to signal the new duration
to the media decoder and state machine. It will also fire an event
of type 'durationchange' to the DOM.

--HG--
extra : rebase_source : f417b968e81d9c9a1aff8ae3174079a297eb371b
2013-05-03 09:48:37 +02:00
Sotaro Ikeda
2d8e4dae08 Bug 871485 - Share hw codec between applications/tasks. r=mwu, r=doublec, r=roc 2013-06-10 08:22:05 -04:00
Ryan VanderMeulen
5108144eb8 Backed out changeset 4c129a5676eb (bug 871485) for mochitest-1 failures. 2013-06-07 09:57:05 -04:00
Sotaro Ikeda
a610c06f76 Bug 871485 - Share hw codec between applications/tasks. r=mwu, r=doublec, r=roc 2013-06-07 08:15:44 -04:00