Commit Graph

195 Commits

Author SHA1 Message Date
Matthew Gregan
989833d80b Bug 1044498 - Improve accuracy of WebM buffered parser. r=cajbir
Store the end offset of the block, rather than the start offset, since a
frame is only usable if we have all of it.  Also compute the start of the
buffered range based on the offset of the block's resync point, since we
can't decode frames unless we have their cluster to resync at and compute
the absolute timecode from.
2014-08-25 16:09:44 +12:00
Matthew Gregan
2a92e3ea20 Bug 1044498 - WebMBufferedReader used mBlockOffset in some places where it was intended to use mBlockTimecode. r=cajbir 2014-08-25 16:09:44 +12:00
Matthew Gregan
5ac72698e0 Bug 1044498 - Extend WebMBufferedParser to handle timecode scale elements in locations other than the first subelement of the segment info element. r=cajbir 2014-08-25 16:09:43 +12:00
Matthew Gregan
55ec65a5bd Bug 1050652 - WebM cluster offset calculation accounted for size of ID incorrectly. r=cajbir 2014-08-18 21:13:00 +12:00
Matthew Gregan
97ae9de9dc Bug 1054149 - Fix anFoo coding style violation in content/media. r=cpearce 2014-08-14 21:24:00 +12:00
Jean-Yves Avenard
47777a3880 Bug 1047180 - Decode a single audio frame in order to retrieve accurate channel count and sampling rate and propagate to MP4Reader. r=cpearce 2014-08-11 15:27:00 +10:00
Matthew Gregan
e49cf8600d Bug 1050652 - Implement GetEvictionOffset for WebM reader. r=cajbir 2014-08-10 18:21:00 +12:00
Matthew Gregan
bc392029dc Bug 1050083 - Changes to WebM buffered range handling. r=cajbir
Include the frame duration in the range end.  Also handle (ignore) invalid
negative timestamps when parsing.  Include cluster offset in time/data
offset record.  Cluster offset will be used when calculating discard/resync
points in MSE.
2014-08-11 14:05:09 +12:00
Nathan Froyd
9ea6c585f8 Bug 1042878 - part 2 - move MOZ_CAIRO_CFLAGS et al additions to C*FLAGS into moz.build; r=glandium 2014-07-24 11:55:33 -04:00
Mike Hommey
d10b15b035 Bug 1041860 - Avoid setting FINAL_LIBRARY to libraries that further use a FINAL_LIBRARY. r=mshal 2014-07-23 08:37:51 +09:00
Benoit Girard
e7aea75462 Bug 1037691 - Fix instances where refcounted classes expose a public destructor. r=ehsan,bent,mayhemer,jrmuizel 2014-07-15 11:37:45 -04:00
Eric Phan
661c2e8d55 Bug 1015985 - Set decoder seekable members outside of ReadMetadata by StateMachine. r=cpearce 2014-06-23 22:08:34 +12:00
Chris Peterson
a15f6f029d Bug 1018554 - Fix WebMWriter warnings and mark content/media/gtest as FAIL_ON_WARNINGS. r=rillian
--HG--
extra : rebase_source : 43a93774466cc6d7f3e1f409d63c1663b1870149
2014-05-30 18:00:46 -07:00
Benjamin Chen
d8bc0b81f5 Bug 999364 : Fix the cluster length for WebM. r=rillian 2014-04-30 10:08:41 +08:00
cajbir
ff8b2f2881 Bug 1000608 - Implement cue-less seeking on WebM Reader - r=kinetik 2014-04-23 19:47:00 +12:00
Benjamin Chen
a75d3ed394 Bug 994557 - part2: 1. fix bug in finishCluster function. 2. Can flush metadata only. 3. Ensure the keyframe is placed at the beginning of cluster. r=rillian 2014-04-23 12:04:27 +08:00
Benjamin Chen
1009c20413 Bug 994557 - part1:fix formatting, typo, 80 characters. r=rillian 2014-04-23 10:32:46 +08:00
Matthew Gregan
b8ce00e570 Bug 990817 - Clarify nestegg packet memory management in WebMReader. r=rillian 2014-04-02 14:05:35 +13:00
Daniel Holbert
00dc4bbe3f Bug 984786 part 5: Give NS_INLINE_DECL_*REFCOUNTING classes private/protected destructor & MOZ_FINAL annotation where appropriate, in /content/media. r=kinetik 2014-04-02 09:21:11 -07:00
Matthew Gregan
e35982022a Bug 981276 - Initialize mAudioCodec in WebMReader. r=rillian
--HG--
extra : rebase_source : 905ae6dcd3dd0b1ac423187515fe63bb9bc21f59
2014-04-02 14:08:59 +13:00
Chris Pearce
223e397746 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
05dcbf9506 Backed out changeset 00fa39c23b44 (bug 778077) for reftest failures 2014-03-28 12:31:29 +00:00
Chris Pearce
dac6ce38ba 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
e21145ad4a 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
fc3fc91d79 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 Peterson
2a5c854ec6 Bug 980810 - Part 1: Fix clang -Wstring-conversion warnings in WebM container writer. r=rillian 2014-03-07 00:49:34 -08:00
Benjamin Chen
06550d4dae Bug 970774 - Add display width/height for track encoder. r=rillian 2014-02-21 14:27:41 +08:00
Alfredo Yang
080693b0d2 Bug 974322 - Separate AAV/AVC codec name. r=cpearce 2014-02-24 09:19:21 -05:00
Ms2ger
f79d93ff0a Bug 952033 - Part c: Use IntSize and IntRect in VideoData; r=roc 2014-02-09 09:04:38 +01:00
Ralph Giles
c88a2f8c99 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
Ben Kelly
1b1cb3004d Bug 960873: Part 1: Refactor MediaDecoderReader.h into separate headers. r=cpearce 2014-02-03 20:49:21 -05:00
Eric Faust
2063d0c6d5 Bug 966044 - Fix unconditional single byte buffer overflow in EbmlComposer::generateHeader(). (r=rillian) 2014-01-30 16:42:00 -08:00
Benoit Jacob
e6d46b061f 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
Alfredo Yang
742e3e2663 Bug 959021 - Rename HAS_AUDIO/HAS_VIDEO and add swap in/out frame data. r=cpearce 2014-01-30 11:06:11 -05:00
Randy Lin
6a6aa3a1ea Bug 891705 - [MediaEncoder] Implement WebM 1.0 container writer. r=giles, r=gps, r=rillian
This is an integrated patch which includes:
1. Bug 891705: [MediaEncoder] Implement WebM 1.0 container writer. r=giles, r=gps
2. Bug 950567: [MediaEncoder] Phase-in libmkv library. r=giles
3. bug 883749: Implement Vorbis encoding. r=rillian
4. bug 881840: Implement VP8 track encoder. r=rillian
2014-01-15 14:21:14 +08:00
Jan Gerber
45474f8497 Bug 952186 - Remove downmix code from WebMReader; r=rillian 2013-12-19 23:43:26 +05:30
Alexandros Chronopoulos
d471b465db Bug 911482 - Perform audio downmix inside AudioStream class. r=rillian 2013-09-26 22:06:59 +03:00
Jan Gerber
fb205442ce Bug 945863 - Handle CodecDelay and SeekPreroll for Opus in WebM. r=kinetik 2013-12-10 10:36:05 +01:00
Jan Gerber
bca185af77 Bug 833023 - Enable VP9 playback in HTML media elements. r=kinetik 2013-12-03 16:21:00 -08:00
Jan Gerber
74f2ef3c2f Bug 938686 - Support Opus in WebM. r=kinetik
Support the Opus audio codec in the WebM (Matroska) container.
This is part of the "WebM 2" proposed spec, which also includes
the new VP9 video codec. Alas we weren't able to get concensus
to change the doctype of filename extension to mark the revision
allowing the new codecs.
2013-11-22 14:07:00 -08:00
Mike Hommey
a65383e1e9 Bug 939632 - Remove LIBRARY_NAME for leaf libraries. r=gps
Landing on a CLOSED TREE.
2013-11-19 11:50:54 +09:00
Mike Hommey
8ceb917350 Bug 939074 - Remove most LIBXUL_LIBRARY. rs=gps 2013-11-19 11:48:10 +09:00
Mike Hommey
bb6779efe3 Bug 939044 - Remove most definitions of MODULE. r=mshal 2013-11-19 11:47:39 +09:00
Mike Hommey
d7b6f95761 Bug 935881 - Use FINAL_LIBRARY for all (fake) libraries that end up linked in a single other library. r=gps 2013-11-19 11:47:14 +09:00
Ehsan Akhgari
c426806741 Bug 939584 - Build some of the directories under content/media in unified mode; r=roc 2013-11-17 21:31:46 -05:00
Ms2ger
af09204569 Bug 931404 - Move LOCAL_INCLUDES to moz.build in content/; r=gps 2013-11-11 09:04:06 +01:00
Matthew Gregan
bf52a0e2d7 Bug 935349 - Remove remaining disabled DASH code. r=doublec 2013-11-07 17:08:42 +13:00
Chris Pearce
2744117b84 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
Mike Hommey
1d566f7586 Bug 929905 - Consolidate sources in moz.build. r=gps 2013-10-25 08:23:05 +09:00
Birunthan Mohanathas
872802570b Bug 784739 - Switch from NULL to nullptr in content/; r=ehsan
--HG--
extra : rebase_source : 9237726507e8002479616a98a82646a763932507
2013-10-23 16:34:10 -04:00