Commit Graph

50 Commits

Author SHA1 Message Date
JW Wang
5f4967bb8e 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
Matthew Gregan
3f1675029f Bug 881512 - Start processing multiple decoders. r=cajbir 2014-04-22 01:30:00 +12: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
517140e405 Bug 973408 - Set MediaDecoderReaders idle when they're not decoding. r=kinetik 2014-03-11 11:44:10 +08: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
1f1ea86463 Bug 960873: Part 1: Refactor MediaDecoderReader.h into separate headers. r=cpearce 2014-02-03 20:49:21 -05:00
Benoit Jacob
3ee7a2d643 Bug 962784 - Convert ImageTypes.h to typed enums - r=jrmuizel
find content/media media/webrtc gfx/layers gfx/tests dom/camera dom/plugins image/src layout/base -type f | grep -v 'gfx/layers/ImageTypes.h' | xargs sed -i 's/\(^\|[^A-Za-z0-9_]\)\(GRALLOC_PLANAR_YCBCR\|PLANAR_YCBCR\|SHARED_RGB\|CAIRO_SURFACE\|MAC_IOSURFACE\|REMOTE_IMAGE_BITMAP\|SHARED_TEXTURE\|REMOTE_IMAGE_DXGI_TEXTURE\|D3D9_RGB32_TEXTURE\)\($\|[^A-Za-z0-9_]\)/\1ImageFormat::\2\3/g'

find content/media media/webrtc gfx/layers gfx/tests dom/camera dom/plugins image/src layout/base -type f | grep -v 'gfx/layers/ImageTypes.h' | xargs sed -i 's|ImageFormat\:\:ImageFormat|ImageFormat|g'

find content/media media/webrtc gfx/layers gfx/tests dom/camera dom/plugins image/src layout/base -type f | xargs sed -i 's/\(^\|[^A-Za-z0-9_]\)STEREO_MODE_\(MONO\|LEFT_RIGHT\|RIGHT_LEFT\|BOTTOM_TOP\|TOP_BOTTOM\)\($\|[^A-Za-z0-9_]\)/\1StereoMode::\2\3/g'

find content/media media/webrtc gfx/layers gfx/tests dom/camera dom/plugins image/src layout/base -type f | grep -v 'gfx/layers/ImageTypes.h' | xargs sed -i 's|StereoMode\:\:StereoMode|StereoMode|g'
2014-01-30 17:58:49 -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
Matthew Gregan
15ae6a844f Bug 935349 - Remove remaining disabled DASH code. r=doublec 2013-11-07 17:08:42 +13:00
Chris Pearce
3f98cc2f01 Bug 930829 - Add MediaData class as base for VideoData and AudioData to simplify writing a generic stream decoder. r=kinetik 2013-10-25 15:44:58 +13:00
Birunthan Mohanathas
3560f05e45 Bug 784739 - Switch from NULL to nullptr in content/; r=ehsan
--HG--
extra : rebase_source : 9237726507e8002479616a98a82646a763932507
2013-10-23 16:34:10 -04:00
Chris Pearce
9b05726bb3 Bug 928765 - Create MediaDecoderReader::GetBuffered() base implementation that estimates buffered ranges, so that subclasses do have to keep reimplementing the estimation. r=doublec 2013-10-21 16:31:05 +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
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
Paul Adenot
3358457bfc Bug 881092 - Allow decoding files we know we can't play, in the context of WebAudio. r=kinetik,rillian
--HG--
extra : rebase_source : ebad931aede2f8225404625e90a5f3228c4a31c0
2013-08-29 11:43:44 +02:00
David Zbarsky
826b4c099f Bug 903819 - Don't include Layers.h everywhere, part 4 r=nrc 2013-08-20 15:45:30 -04:00
Thomas Zimmermann
b0f7962d2b Bug 831224: Parse MP3 frame headers in OmxDecoder, r=padenot
On FirefoxOS, the Android libraries estimate the duration of MP3 streams
by examining the first MP3 frame header. This only works for streams with
constant bit rate. For streams with variable bit rate, a too short or too
long duration is computed.

This patch adds support for parsing MP3 frame headers. The decoder handles
file streams by reading them at once at the beginning and parsing them
immediately. Network streams are updated when a new fragment arrives.
2013-01-24 13:38:32 +01:00
Thomas Zimmermann
ac57b335d6 Bug 831224: Remove trailing whitespaces, r=padenot 2013-01-24 13:38:32 +01:00
Ed Morley
508ca29acf Backed out changeset 303ba353d785 (bug 831224) for turning bug 897108 permaorange 2013-08-08 10:00:26 -07:00
Ed Morley
2ac38e590a Backed out changeset e334b3139e2a (bug 831224) 2013-08-08 09:59:45 -07:00
Thomas Zimmermann
04820e6a7e Bug 831224: Parse MP3 frame headers in OmxDecoder, r=padenot
On FirefoxOS, the Android libraries estimate the duration of MP3 streams
by examining the first MP3 frame header. This only works for streams with
constant bit rate. For streams with variable bit rate, a too short or too
long duration is computed.

This patch adds support for parsing MP3 frame headers. The decoder handles
file streams by reading them at once at the beginning and parsing them
immediately. Network streams are updated when a new fragment arrives.

--HG--
extra : rebase_source : bffb9447a5fdba4145e83f5aeb3c2accfb7872d6
2013-01-24 13:38:32 +01:00
Thomas Zimmermann
7f07d96ef5 Bug 831224: Remove trailing whitespaces, r=padenot
--HG--
extra : rebase_source : e04ddb59ab953550d988924670c96b73bf7909f2
2013-01-24 13:38:32 +01: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
Steve Workman
03e047f02c Bug 855064 - Exclude DASH code from default builds r=cpearce 2013-04-02 17:05:00 -07:00
Andrea Marchesini
6b08dd17f5 Bug 841493 - Rename nsHTMLMediaElement to HTMLMediaElement, r=Ms2ger
--HG--
rename : content/html/content/public/nsHTMLMediaElement.h => content/html/content/public/HTMLMediaElement.h
rename : content/html/content/src/nsHTMLMediaElement.cpp => content/html/content/src/HTMLMediaElement.cpp
2013-03-19 13:23:54 +01:00
Alessandro Decina
e91a9e993c Bug 761018 - GStreamer video buffer handling optimization; r=cdouble 2013-03-13 16:11:15 -04:00
Andrea Marchesini
8eaecd7c18 Bug 841014 - Rename nsTimeRanges.h to TimeRanges.h. r=Ms2ger
--HG--
rename : content/html/content/src/nsTimeRanges.cpp => content/html/content/src/TimeRanges.cpp
rename : content/html/content/src/nsTimeRanges.h => content/html/content/src/TimeRanges.h
2013-03-02 14:14:44 -05:00
Ehsan Akhgari
c78c1b8384 Bug 792263 - Implement decodeAudioData; r=bzbarsky,cpearce,padenot 2013-02-01 17:13:23 -05:00
Chris Double
b7d00eddb1 Bug 831640 - Remove unused AddRef/Release methods on MediaDecoderReader - r=ehsan 2013-01-17 17:46:00 +13:00
Chris Pearce
0c73f333b7 Bug 799315 - Use Windows Media Foundation to play back MP4, MP3 and M4A on Windows 7 and later (preff'd off). r=padenot 2012-12-18 21:49:58 +13:00
Edwin Flores
b3e660b855 Bug 803394 - Provide a callback to media plugins to request video buffers owned by gecko r=doublec
--HG--
extra : rebase_source : e3cb97f3307b603bcdfcdbaeffd05a6e2af14097
2012-12-13 11:53:58 +13:00
Paul Adenot
c38f98b92e Bug 816949 - Remove IsSeekableInBufferedRange() methods as they are not needed anymore. r=cpearce 2012-12-07 14:30:03 +01:00
Steve Workman
d954a4dc17 Bug 792404 - Add code to enable adaptive decoder and reader switching for DASH-WebM r=cpearce 2012-12-06 15:27:08 -08:00
Paul Adenot
556b71143b Bug 815194 - Remove more ns prefixes on content/media classes + whitespace fixes. r=cpearce 2012-11-28 20:40:07 +01:00
Ehsan Akhgari
f69801b25f Bug 812032 - Refactor the media reader classes to not access MediaDecoder directly; r=cpearce 2012-11-19 10:11:21 -05:00
Ehsan Akhgari
5e5593e1eb Bug 812572 follow-up - Remove the extra semi-colon 2012-11-17 11:17:56 -05:00
Ehsan Akhgari
cf053c6208 Bug 812572 - Make MediaDecoderReader a non-runnable; r=cpearce 2012-11-16 11:30:34 -08:00
Chris Pearce
216fe28466 Bug 811381 - Remove ns prefix from media code. r=roc
--HG--
rename : content/media/nsAudioAvailableEventManager.cpp => content/media/AudioAvailableEventManager.cpp
rename : content/media/nsAudioAvailableEventManager.h => content/media/AudioAvailableEventManager.h
rename : content/media/nsAudioStream.cpp => content/media/AudioStream.cpp
rename : content/media/nsAudioStream.h => content/media/AudioStream.h
rename : content/media/nsMediaCache.cpp => content/media/MediaCache.cpp
rename : content/media/nsMediaCache.h => content/media/MediaCache.h
rename : content/media/nsBuiltinDecoder.cpp => content/media/MediaDecoder.cpp
rename : content/media/nsBuiltinDecoder.h => content/media/MediaDecoder.h
rename : content/media/nsBuiltinDecoderReader.cpp => content/media/MediaDecoderReader.cpp
rename : content/media/nsBuiltinDecoderReader.h => content/media/MediaDecoderReader.h
rename : content/media/nsBuiltinDecoderStateMachine.cpp => content/media/MediaDecoderStateMachine.cpp
rename : content/media/nsBuiltinDecoderStateMachine.h => content/media/MediaDecoderStateMachine.h
rename : content/media/dash/nsDASHDecoder.cpp => content/media/dash/DASHDecoder.cpp
rename : content/media/dash/nsDASHDecoder.h => content/media/dash/DASHDecoder.h
rename : content/media/dash/nsDASHReader.cpp => content/media/dash/DASHReader.cpp
rename : content/media/dash/nsDASHReader.h => content/media/dash/DASHReader.h
rename : content/media/dash/nsDASHRepDecoder.cpp => content/media/dash/DASHRepDecoder.cpp
rename : content/media/dash/nsDASHRepDecoder.h => content/media/dash/DASHRepDecoder.h
rename : content/media/gstreamer/nsGStreamerDecoder.cpp => content/media/gstreamer/GStreamerDecoder.cpp
rename : content/media/gstreamer/nsGStreamerDecoder.h => content/media/gstreamer/GStreamerDecoder.h
rename : content/media/gstreamer/nsGStreamerReader.cpp => content/media/gstreamer/GStreamerReader.cpp
rename : content/media/gstreamer/nsGStreamerReader.h => content/media/gstreamer/GStreamerReader.h
rename : content/media/ogg/nsOggCodecState.cpp => content/media/ogg/OggCodecState.cpp
rename : content/media/ogg/nsOggCodecState.h => content/media/ogg/OggCodecState.h
rename : content/media/ogg/nsOggDecoder.cpp => content/media/ogg/OggDecoder.cpp
rename : content/media/ogg/nsOggDecoder.h => content/media/ogg/OggDecoder.h
rename : content/media/ogg/nsOggReader.cpp => content/media/ogg/OggReader.cpp
rename : content/media/ogg/nsOggReader.h => content/media/ogg/OggReader.h
rename : content/media/omx/nsMediaOmxDecoder.cpp => content/media/omx/MediaOmxDecoder.cpp
rename : content/media/omx/nsMediaOmxDecoder.h => content/media/omx/MediaOmxDecoder.h
rename : content/media/omx/nsMediaOmxReader.cpp => content/media/omx/MediaOmxReader.cpp
rename : content/media/omx/nsMediaOmxReader.h => content/media/omx/MediaOmxReader.h
rename : content/media/plugins/nsMediaPluginDecoder.cpp => content/media/plugins/MediaPluginDecoder.cpp
rename : content/media/plugins/nsMediaPluginDecoder.h => content/media/plugins/MediaPluginDecoder.h
rename : content/media/plugins/nsMediaPluginHost.cpp => content/media/plugins/MediaPluginHost.cpp
rename : content/media/plugins/nsMediaPluginHost.h => content/media/plugins/MediaPluginHost.h
rename : content/media/plugins/nsMediaPluginReader.cpp => content/media/plugins/MediaPluginReader.cpp
rename : content/media/plugins/nsMediaPluginReader.h => content/media/plugins/MediaPluginReader.h
rename : content/media/raw/nsRawDecoder.cpp => content/media/raw/RawDecoder.cpp
rename : content/media/raw/nsRawDecoder.h => content/media/raw/RawDecoder.h
rename : content/media/raw/nsRawReader.cpp => content/media/raw/RawReader.cpp
rename : content/media/raw/nsRawReader.h => content/media/raw/RawReader.h
rename : content/media/raw/nsRawStructs.h => content/media/raw/RawStructs.h
rename : content/media/wave/nsWaveDecoder.cpp => content/media/wave/WaveDecoder.cpp
rename : content/media/wave/nsWaveDecoder.h => content/media/wave/WaveDecoder.h
rename : content/media/wave/nsWaveReader.cpp => content/media/wave/WaveReader.cpp
rename : content/media/wave/nsWaveReader.h => content/media/wave/WaveReader.h
rename : content/media/webm/nsWebMBufferedParser.cpp => content/media/webm/WebMBufferedParser.cpp
rename : content/media/webm/nsWebMBufferedParser.h => content/media/webm/WebMBufferedParser.h
rename : content/media/webm/nsWebMDecoder.cpp => content/media/webm/WebMDecoder.cpp
rename : content/media/webm/nsWebMDecoder.h => content/media/webm/WebMDecoder.h
rename : content/media/webm/nsWebMReader.cpp => content/media/webm/WebMReader.cpp
rename : content/media/webm/nsWebMReader.h => content/media/webm/WebMReader.h
2012-11-14 11:46:40 -08:00