Commit Graph

160 Commits

Author SHA1 Message Date
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
Chris Pearce
954b2d1caf Bug 979104 - MediaDecoderReader/StateMachine asynchronous decoding. r=kinetik 2014-06-10 19:31:09 +12:00
Dave Hylands
edc2be9cf4 Bug 986331 - Enable .3g2 file extension to be recognized as 3gpp video. r=cajbir 2014-06-05 14:22:15 -07:00
Michael Pruett
9d2a3060bb Bug 847827 - Update libsoundtouch to allow changing playback rate with multichannel audio. r=padenot
--HG--
extra : rebase_source : ebf10737b048ae3280b9a7706f701337211b2880
2014-04-10 10:37:07 +02:00
Chris Pearce
7f6e8b96b9 Bug 986947 - Make MP3 contained in MP4 playback again on Windows with WMF backend. r=padenot
Report that we can play MP3 inside MP4 on Windows Vista and later in
HTMLMediaElement.canPlayType. Chrome and IE on Windows match this behaviour.

Add a test file with MP3 contained inside MP4. Note the B2G emulator can't play
this file, so I added a codecs parameter to the file's mime type so that
decoder backends have to opt-in to testing with it.

Enable playback of MP3 inside MP4 in WMFReader.

Change from reporting the IMFSourceReader's duration inside WMFReader, to
instead report the IMFSourceReader's duration as the media "end time". This is
needed because the MP3-contained-in-MP4 file's first sample output by the
IMFSourceReader has a non-zero timestamp, and the MediaDecoderStateMachine
assumes that the media samples will be in the range
[$firstSampleStartTime, $firstSampleStartTime+$reportedDuration]. But that's
not the case here, the IMFSourceReader seems to output samples in the range
[0,$reportedDuration]. This assumption mismatch means on the
MP3-contained-in-MP4 file we end up trying to seek after what the
IMFSourceReader assumes is the end of the file, which fails and causes
test failures.
2014-04-04 10:39:42 +13:00
Chris Pearce
ca5f79e5a8 Bug 991448 - Skip Theora decode to next keyframe after seek, so that we don't get visual artifacts after a fastSeek. r=cajbir 2014-04-04 10:39:15 +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
Chris Pearce
e4a3b34c5f Bug 975933 - Increase precision of bug516323.indexed.ogv index's timestamp denominator to prevent precision mismatch causing test failures. r=rillian 2014-02-26 13:36:54 +13:00
Alessandro Decina
d89db4179d Bug 806917 - Add support for GStreamer 1.0. r=edwin, r=gps 2014-02-11 09:22:45 -05:00
Ralph Giles
9dbb799408 Bug 951770 - Reject invalid Opus pre-skip in WebM. r=doublec
The 'pre-skip' value representing encoder delay in the Opus
format is recorded once in the .opus representation, but for
WebM it's in the file both in the CodecDelay element and in
the CodecPrivate data. We now reject files where these two
fields don't match.

Our detodos.webm file was exactly this sort of mismatched
file. It has been renamed and added to the invalid file list
to verify we now reject it. A new detodos.webm replaces it,
remuxed from detodos.opus with a bugfixed mkvmerge.

Based on a patch by Jan Gerber.

--HG--
rename : content/media/test/detodos.webm => content/media/test/invalid-preskip.webm
2014-02-02 19:39:00 -08:00
Alfredo Yang
c86bc8bb50 Bug 959861 - Testcase for fragmented mp4 playback. r=cpearce 2014-01-22 10:50:23 -05:00
JW Wang
eab8831c35 Bug 916135 - Part 1: Force releasing codec to prevent timeout in waiting for acquiring h264 codec and set the preload attribute to "auto" to prevent timeout in waiting for loadedmetadata event. r=padenot 2014-01-17 13:58:48 +08:00
Jan Gerber
38bc459378 Bug 949525 - VP9 tests. r=cpearce
Remuxed vp9cake.webm to correct CodecDelay values.
2013-12-19 07:02:00 -08:00
Jan Gerber
c63b0c9fe8 Bug 945513 - Opus-in-WebM tests. r=rillian
detodos.webm was remuxed with ffmpeg N-58726-g9695fb2 from detodos.opus

| + Muxing application: Lavf55.22.100
| + Writing application: Lavf55.22.100
2013-12-16 10:48:00 -08:00
Chris Pearce
dfd6a25305 Bug 941314 - Use SpecialPowers.exactGC in media mochitests to hopefully improve their reliability. r=kinetik 2013-12-06 17:15:13 +13:00
Edwin Flores
e5da7543d2 Bug 918135 - More tests for MP3FrameParser r=cpearce
This patch introduces two more MP3 test cases to exercise MP3FrameParser:
* vbr-head.mp3: This file contains a Xing header which gives an exact duration
    of 10 seconds. However, it only contains 4 MP3 frames total for a real
    duration of around 1 second. It is expected that we read the Xing header
    and report 10 seconds.
* huge-id3.mp3: This file contains more than 130KB of ID3 tags. When we search
    for MP3 frames, we give up after X KB of non-MP3 data. ID3 tags should not
    count towards the non-MP3 count, since they can be very large. This test
    case makes sure the skipping of ID3 tags works correctly.
2013-12-03 10:25:28 +13:00
Chris Double
6c15e6aa6e Bug 874897 - Mochitest for copying of frames of videos with aspect ratio to canvas - r=kinetik
--HG--
extra : rebase_source : c5ff10d61a1ea46b0fdb2a43e926405660493912
2013-11-18 18:26:51 +13:00
Edwin Flores
8cb8eb6d22 Bug 914479 - AudioToolbox MP3 backend on OSX r=cpearce 2013-09-14 13:14:42 +12:00
Chris Pearce
9a6ec47677 Bug 910966 - Use MP3FrameParser in DirectShow's SourceFilter, to more accurately determine the offset of the first MP3 frame. This enables us to only pass the MP3 data into DirectShow, which can't handle large ID3v2 tags. r=padenot 2013-09-09 09:47:54 +12:00
Chris Pearce
25e19fc232 Bug 908862 - Strip ID3 tags before we expose MP3 data to DirectShow, to work around bugs in its MP3 decoder. r=padenot 2013-08-29 10:53:03 +12:00
Thomas Zimmermann
c4c2549d54 Bug 831224: Added mochitest for variable-bitrate MP3s, r=padenot
The test checks the duration of an MP3 file with variable bitrate. The
MP3 file only contains silence. It uses a high bit-rate encoding for its
first half, a low bit-rate encoding for its second half. The correct
duration is 10 seconds, but an incorrect implementation will return a
much shorter value.
2013-08-07 18:54:04 +02:00
Thomas Zimmermann
2a301b9526 Bug 831224: Remove trailing whitespaces, r=padenot 2013-01-24 13:38:32 +01:00
Ed Morley
86d33773fb Backed out changeset 303ba353d785 (bug 831224) for turning bug 897108 permaorange 2013-08-08 10:00:26 -07:00
Ed Morley
0f5723167e Backed out changeset 374a8aab2b49 (bug 831224) 2013-08-08 09:59:39 -07:00
Thomas Zimmermann
ac806b131f Bug 831224: Added mochitest for variable-bitrate MP3s, r=padenot
The test checks the duration of an MP3 file with variable bitrate. The
MP3 file only contains silence. It uses a high bit-rate encoding for its
first half, a low bit-rate encoding for its second half. The correct
duration is 10 seconds, but an incorrect implementation will return a
much shorter value.

--HG--
extra : rebase_source : f62cf69a631a276c4e6e96e827ab615367cad877
2013-08-07 18:54:04 +02:00
Thomas Zimmermann
8458373204 Bug 831224: Remove trailing whitespaces, r=padenot
--HG--
extra : rebase_source : e04ddb59ab953550d988924670c96b73bf7909f2
2013-01-24 13:38:32 +01:00
Martijn Wargers
d60bbc5058 Bug 896582 - Implement a workaround to bug 838726 to get a bunch of content/media mochitests running on B2G. r=jgriffin 2013-07-25 22:32:17 +02:00
Jason Smith
7a1cd60ad4 Bug 896302 - Add a mochitest for creation of a media recorder object. r=roc 2013-07-21 18:37:42 -07:00
Paul Adenot
6dccab695c Bug 886173 - Preserve playbackRate across pause/play. r=cpearce 2013-07-11 16:58:57 +02:00
Léonard Beck
6dcc6a8a61 Bug 654550 - Add a preference to disable media statistics. r = padenot,jaws 2013-06-11 17:23:13 +02:00
Edwin Flores
3d68a6c5a4 Bug 885157 - Kill content/media/test/test_too_many_elements.html r=cpearce 2013-06-22 11:16:53 +12:00
Edwin Flores
43c37e1187 Bug 794282 - Enable gstreamer by default in builds, but pref off r=cpearce,khuey 2013-06-22 11:16:53 +12:00
Chris Pearce
c8d412570d Bug 881954 - Generalize test_too_many_elements to run on more than just Ogg audio. r=padenot 2013-06-14 09:07:07 +12:00
Chris Pearce
d9b89bdb0d Bug 880062 - Make WMF video backend call MediaDecoder::SetMediaSeekable(false) when it can't seek like it's supposed to. r=padenot 2013-06-13 10:15:23 +12:00
Ryan VanderMeulen
fb92d96f3e Backed out changeset 4cb1973f06b9 (bug 868439) for Android M2 failures.
CLOSED TREE
2013-05-21 10:48:09 -04:00
Martijn Wargers
979e6df166 Bug 868439 - Convert some uses of nsIPrefBranch to SpecialPowers. r=jmaher 2013-05-21 02:14:06 +02:00
Ralph Giles
5757a50420 Bug 782091 - Add multichannel Opus test files. r=derf
This doesn't do any verification of the output, just checks
that we load multichannel files and playback completes.

These are public-domain test files created by Tim and Monty
last year. They're not great audio quality, the idea is just
to verify correct speaker mapping.

http://people.xiph.org/~greg/opus_testvectors/opus_multichannel_examples/
2013-05-01 14:15:57 -07:00
Robert O'Callahan
f79ced39e5 Bug 834835. Part 4: Test basic MediaStreamTrack functionality. r=jesup 2013-04-17 17:18:53 +12:00
Steve Workman
d5bd61fa94 Bug 855064 - Remove DASH references in media unit tests r=cpearce 2013-04-02 17:05:00 -07:00
Andrea Marchesini
2de1d7cad4 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
Steve Workman
3d233cb2a2 Bug 813562 - Test case for garbled DASH MPD and WebM media r=cpearce 2013-01-31 18:41:26 -08:00
Steve Workman
93099ed3d1 Bug 792935 - Test to detect DASH stream switching r=cpearce 2013-01-31 14:47:22 -08:00
Steve Workman
e551562a63 Back out f08e636ecdc4 (bug 792935) for mochitest failures 2013-01-31 10:54:26 -08:00
Steve Workman
ef628493c2 Bug 792935 - Test to detect DASH stream switching r=cpearce 2013-01-31 09:45:45 -08:00
Steve Workman
7b8fecff50 Bug 792935 - Add DASH to gPlayedTests and gPlayTests r=cpearce 2013-01-28 18:34:28 -08:00