Commit Graph

146 Commits

Author SHA1 Message Date
Benjamin Chen
7b006532c6 Bug 984816: RTSP play/pause deadlock issue. 1. Release the monitor when access mReader. 2. Reverse the order in RtspOmxReader::SetIdle(). r=cpearce 2014-03-31 10:18:01 +08: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
bfe8e04d6a Bug 631058 - Don't preroll extra media samples when we're not playing. r=cajbir 2014-03-28 15:50:35 +13: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
Chris Pearce
2a95c98826 Bug 984698 - Reduce the amount of audio prerolled when we are not also decoding video in the same file. r=padenot 2014-03-21 11:47:17 +13:00
JW Wang
895f37b1d8 Bug 907162 - Fix MediaDecoderStateMachine might dispatch MediaDecoder::PlaybackEnded more than once and trigger multiple 'ended' events in HTMLMediaElement. r=cpearce 2014-03-17 10:12:20 +08:00
Neil Rashbrook
604d9a5302 Bug 514280 Stop using nsCOMPtr for concrete types r=bsmedberg
--HG--
extra : rebase_source : f8fb50de9292320eb7589dd28dc566d0f5044da6
2014-03-18 00:23:03 +00:00
Wes Kocher
c879b47079 Backed out 2 changesets (bug 514280) for OSX build bustage on a CLOSED TREE
Backed out changeset 2a015b45d808 (bug 514280)
Backed out changeset a01f97c1ed02 (bug 514280)
2014-03-17 15:19:53 -07:00
Neil Rashbrook
3e8915c4b8 Bug 514280 Stop using nsCOMPtr for concrete types r=bsmedberg
--HG--
extra : rebase_source : eaca8b2925eaffb49e29a617cd72c0d6686e6d9e
2014-03-17 19:07:09 +00:00
Chris Pearce
43108ebb2c Bug 982032 - Don't re-run the COMPLETED state in MediaDecoderStateMachine if we've already run it. r=padenot 2014-03-11 18:06:23 +08: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
Matthew Gregan
53b33e469e Bug 962353 - Remove totalFrameDelay from VideoPlaybackQuality. r=chris.double
It's not implemented by other vendors and marked as "at risk" in the spec.
Easy to add back if there's real demand/a concrete spec.
2014-03-04 15:31:57 +13:00
Chris Pearce
0134c520ed Bug 861136 - Strip whitespace from MediaDecoderStateMachine.cpp that was introduced in previous changeset. r=whitespace DONTBUILD 2014-03-03 14:55:33 +13:00
Chris Pearce
b8260836d4 Bug 861136 - Don't start buffering media state machine when we don't need to. r=roc 2014-03-03 14:49:52 +13:00
Chris Pearce
d18115bb52 Bug 634747 - Set MediaQueue's to Finished() when we reach end of stream while decoding after seeking and while finding first frame. r=kinetik 2014-02-25 18:45:03 +13:00
Chris Pearce
dbd3c0555b Bug 968016 - Wait until decode has finished before releasing resources when decoder becomes dormant. r=kinetik 2014-02-18 11:53:53 +13:00
Chris Pearce
264b28d651 Bug 968016 - Call MediaDecoderReader::OnDecodeThreadStart/Finish() in DecodeLoop(). r=kinetik 2014-02-18 11:53:53 +13: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
Paul Adenot
77fe8ccc32 Bug 960057 - When an HTMLMediaElement outputs to a MediaStream, make sure to install the refill callback in any case. r=roc DONTBUILD 2014-02-14 10:38:58 -08:00
Paul Adenot
8185373937 Backed out changeset 4d0197840932 (bug 960057) for invalid bug number in the commit message. 2014-02-17 13:54:17 +01:00
Paul Adenot
34a3734b1a Bug 960059 - When an HTMLMediaElement outputs to a MediaStream, make sure to install the refill callback in any case. r=roc
--HG--
extra : rebase_source : a690159d6395ed7bab2a053bbb1cc65e11bb8be6
2014-02-14 10:38:58 -08:00
Ms2ger
59d9de38de Bug 952033 - Part e: Use IntSize in VideoSegment; r=roc 2014-02-09 09:04:38 +01:00
Ms2ger
7f9273ba28 Bug 952033 - Part d: Use IntSize in MediaDecoder; r=roc 2014-02-09 09:04:38 +01:00
Ms2ger
d9ed6641c7 Bug 952033 - Part c: Use IntSize and IntRect in VideoData; r=roc 2014-02-09 09:04:38 +01: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
Robert O'Callahan
5966c18438 Bug 943461. Part 17: MediaDecoderStateMachine::StopPlayback should not set mPlayDuration based on real time, but on whatever we're using for GetClock. r=cpearce
--HG--
extra : rebase_source : 855fd9cb87cfc5824676697cc73dee12ab816c16
2013-12-13 01:33:01 +13: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
Robert O'Callahan
8db811d2b5 Bug 943461. Part 8: When a MediaDecoder is decoding to a stream, run PlaybackEnded when the stream finishes. r=padenot
--HG--
extra : rebase_source : 92c8b55c5d8330bcf8242d379bc608fa3d30bc6b
2013-12-07 01:01:33 +13:00
Robert O'Callahan
bffdca06e1 Bug 943461. Part 7: DecodedStreamData::mNextVideoTime is not relative to mStartTime. r=cpearce
--HG--
extra : rebase_source : 63b4fe1859c362683b3d3192114263dd7910b183
2013-12-06 18:39:49 +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
Chris Pearce
633972c652 Bug 938107 - Wait for media state machine thread to shutdown during XPCOM shutdown before returning. r=roc
Add a MediaShutdownManager and have that as the only xpcom-shutdown
observer. This then shutsdown the MediaDecoders, and blocks waiting for
the media state machine's shared thread to complete shutdown before
exiting from the xpcom-shutdown observer. This ensures that the
MediaDecoder infrastructure does not use XPCOM on any thread after XPCOM
has shutdown, which is a logical error.
2013-12-18 16:59:11 +13:00
Alexandros Chronopoulos
997a41c02c Bug 911482 - Perform audio downmix inside AudioStream class. r=rillian 2013-09-26 22:06:59 +03:00
Phil Ringnalda
63157b5e4b Back out 377f51d0e354 (bug 938108) for crashtest shutdown crashes 2013-12-15 19:56:24 -08:00
Chris Pearce
c50e895de8 Bug 938108 - Wait for media state machine thread to shutdown during XPCOM shutdown before returning. r=roc
Add a MediaShutdownManager and have that as the only xpcom-shutdown
observer. This then shutsdown the MediaDecoders, and blocks waiting for
the media state machine's shared thread to complete shutdown before
exiting from the xpcom-shutdown observer. This ensures that the
MediaDecoder infrastructure does not use XPCOM on any thread after XPCOM
has shutdown, which is a logical error.
2013-12-16 15:52:59 +13:00
Chris Pearce
cabe53fbe0 Bug 938107 - Backed out changeset 7aff3ce81046 for bustage. r=bustage. 2013-12-16 13:48:54 +13:00
Chris Pearce
1291e1b248 Bug 938107 - Wait for media state machine thread to shutdown during XPCOM shutdown before returning. r=roc
Add a MediaShutdownManager and have that as the only xpcom-shutdown
observer. This then shutsdown the MediaDecoders, and blocks waiting for
the media state machine's shared thread to complete shutdown before
exiting from the xpcom-shutdown observer. This ensures that the
MediaDecoder infrastructure does not use XPCOM on any thread after XPCOM
has shutdown, which is a logical error.
2013-12-16 13:31:03 +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