Commit Graph

40 Commits

Author SHA1 Message Date
Timothy B. Terriberry
48f030f55f Bug 759490 - Use Opus streams when seeking in Ogg, if present, r=doublec 2012-05-31 11:13:11 -07:00
Ralph Giles
1945df87b2 Bug 758833 - Track and trim opus preskip samples - r=doublec
We trim the initial few samples out of the opus decoder,
to give the output time to converge, and to correct for
the encoding delay. Encoders store the delay in the preskip
field of the Ogg encapsulation header.

The previous code to do this was a hack based on the granulepos
values and could fail on some inputs. Instead, keep a count
of how many samples we want to trip, and remove packet data
until that value matches the preskip value from the header.

The value is set to the preskip value from the header when
the decoder is initialized. We also need to do this after
seek. To do this we add a specialized nsOggReader::ResetDecode
method which takes a boolean argument, set to true when
we are seeking to the start of the stream. In that case,
the method resets the skip count.

There is still an issue after general seeks. The spec recommends
trimming a full 80 ms (3840 frames) to allow the decoder to fully
settle from the previous state. It's tricky to do this inside
nsOpusState because it doesn't know where it is in the stream.

Also add some debug output to track the decode behaviour.
2012-05-31 16:03:14 +12:00
Gervase Markham
87620f5676 Bug 716478 - update licence to MPL 2. 2012-05-21 12:12:37 +01:00
Paul Adenot
744ee4cb46 Bug 756372 - Change |seeking| to prevent seeking in WebM livestream. r=kinetik 2012-05-18 13:35:43 -04:00
Ralph Giles
daed6b4964 Bug 674225 - Add Opus support to nsOggReader. r=cpearce
Parse and decode Opus streams embedded in the Ogg
container. Based on the draft specification from
https://wiki.xiph.org/OggOpus
Support is conditional on the runtime preference
setting media.opus.enabled, which is false by
default until we're confident the spec is stable
and useful.

This patch doesn't support the gain header or
multichannel files.

The LEUint*() functions from the skeleton parser
are used to read the multi-byte header fields.
This requires moving them to earlier in the file.

Mappings for the .opus filename extension are also
added to facilitate testing with local files.
2012-05-01 17:29:34 -07:00
Robert O'Callahan
ad4c67538b Bug 726889. Rename nsMediaStream/nsMediaChannelStream/nsMediaFileStream to mozilla::MediaResource/ChannelMediaResource/FileMediaResource. Also rename nsByteRange to mozilla::MediaByteRange and nsChannelStatistics to mozilla::MediaChannelStatistics. Rename GetStream to GetResource and various other mentions of 'stream' to 'resource'. r=cpearce
--HG--
rename : content/media/nsMediaStream.cpp => content/media/MediaResource.cpp
rename : content/media/nsMediaStream.h => content/media/MediaResource.h
2012-02-15 17:35:01 +13:00
Matthew Gregan
b91f76289a Bug 690603 - Remove PR_TRUE/PR_FALSE from media code. r=doublec 2011-09-30 12:34:37 +13:00
Michael Wu
d8e503c38b Bug 675553 - Switch from PRBool to bool on a CLOSED TREE , r=bsmedberg,khuey,bz,cjones
--HG--
rename : tools/trace-malloc/bloatblame.c => tools/trace-malloc/bloatblame.cpp
2011-09-28 23:19:26 -07:00
Chris Pearce
f2608ac6df Bug 670726 - Remove ns{Ogg,WebM}Reader::CanDecodeToTarget(), it makes invalid assumptions. r=kinetik 2011-07-14 09:24:35 +12:00
Chris Pearce
fabed158ed Bug 592833 - Remove nsBuiltinDecoderReader monitor. r=roc 2011-07-12 15:39:28 +12:00
Chris Pearce
b364e365c4 Bug 661456 - Scale WebM video frames to display size. r=kinetik 2011-06-24 10:08:54 +12:00
Chris Pearce
0ce10721e9 Bug 655648 - Don't enqueue expired theora frames. r=roc 2011-06-09 08:56:45 +12:00
Chris Pearce
c47b80f93b Bug 566779 - Clean up media start and end time calculation. r=doublec 2011-05-09 09:10:28 +12:00
Chris Pearce
ccae22ade2 Bug 650994 - Decode ogg packets lazily, timestamp them at demux time. r=doublec 2011-05-08 18:24:09 +12:00
Chris Jones
ed22df8f64 Bug 556214, parts 1 and 1.1: Rename Monitor to ReentrantMonitor and fix existing Monitor users. r=roc
--HG--
rename : xpcom/glue/Monitor.h => xpcom/glue/ReentrantMonitor.h
2011-04-29 14:21:57 -05:00
Chris Pearce
bf7fe4cec2 Bug 650157 - Push nsBuiltinDecoderReader::mDataOffset down into nsOggReader. r=doublec 2011-04-15 13:29:54 +12:00
Chris Pearce
a259c20cba Bug 641718 - Convert to using microseconds for internal video timestamps. r=kinetik 2011-04-14 10:12:23 +12:00
Chris Double
bf27fe5198 Bug 639721 - Fix data race on nsBuiltinDecoderReader::mInfo - r=kinetik
--HG--
extra : rebase_source : 5e58af70c75f563ae7dd7d62e3be897a3c244e85
2011-03-24 16:53:03 +13:00
Chris Pearce
16b3b24b89 Bug 639391 - Push Ogg specific seeking stuff down into nsOggReader. r=roc 2011-03-24 11:28:58 +13:00
Chris Pearce
3d57294e8f Bug 638617 - Ensure nsOggReader::FindEndTime() doesn't read outside of cached data bounds, and reports errors properly. r=doublec 2011-03-24 11:28:57 +13:00
Matthew Gregan
a442ddf24b Bug 631953 - Check codec is initialized before using cached serial number. r=cpearce a=roc 2011-02-08 15:45:20 +13:00
Matthew Gregan
0e9083fe01 Bug 605457 - Remove concurrent use of Ogg stream hash table. r=cpearce a=roc 2010-12-17 14:39:01 +13:00
Timothy B. Terriberry
8dd1e23dc0 Bug 511348 - Integrate Tremor for Vorbis decoding for non/slow-FPU platforms. r=chris.double a=blocking-fennec
--HG--
extra : rebase_source : 807703f9008d0e6c3829370a8a84e0914e2ccb29
2010-10-18 19:55:45 -07:00
Matthew Gregan
f3d96bd23a Bug 598217 - Share nsWebMBufferedState between cloned decoders. r=roc a=blocking2.0 2010-09-21 12:49:50 +12:00
Chris Double
17036671f9 Bug 557479 - Auto manage VideoData and SoundData objects. r=cpearce a=blocking2.0 2010-09-14 16:24:47 -07:00
Chris Pearce
b1b1746c37 Bug 589561 - Rename HTMLTimeRanges to TimeRanges, HTMLMediaError to MediaError. r=roc a=roc
--HG--
rename : content/html/content/src/nsHTMLMediaError.cpp => content/html/content/src/nsMediaError.cpp
rename : content/html/content/src/nsHTMLMediaError.h => content/html/content/src/nsMediaError.h
rename : content/html/content/src/nsHTMLTimeRanges.cpp => content/html/content/src/nsTimeRanges.cpp
rename : content/html/content/src/nsHTMLTimeRanges.h => content/html/content/src/nsTimeRanges.h
rename : dom/interfaces/html/nsIDOMHTMLMediaError.idl => dom/interfaces/html/nsIDOMMediaError.idl
rename : dom/interfaces/html/nsIDOMHTMLTimeRanges.idl => dom/interfaces/html/nsIDOMTimeRanges.idl
2010-08-25 20:43:00 +12:00
Chris Pearce
b07055071f Bug 519897 - Supported indexed Ogg files. r=doublec 2010-08-20 10:50:37 +12:00
Chris Pearce
14ae2bcedd Backed out changeset 7eee00899270 2010-08-18 13:48:34 +12:00
Chris Pearce
1e4886416f Bug 519897 - Supported indexed Ogg files. r=doublec a=roc 2010-08-18 10:49:14 +12:00
Chris Pearce
6c349be715 Bug 462957 - Ogg support for HTMLMediaElement.buffered. r=doublec a=blocking2.0 2010-08-05 19:40:35 +12:00
Chris Pearce
fb117ca2e7 Bug 462957 - DOM implementation of HTMLMediaElement.buffered. r=roc a=blocking2.0 2010-08-05 19:40:35 +12:00
Matthew Gregan
673772b5ef Bug 568431 - Remove the requirement for mCallbackPeriod from the generic media backend. r=doublec 2010-05-31 16:02:00 +12:00
Chris Double
65d3fd13c6 Bug 566501 - Remove unnecessary seek from the video decoder base class. r=cpearce 2010-05-21 09:13:01 +12:00
Rich Dougherty
2d7164e741 Bug 557982. Use Image objects in the video frame queue so we can avoid making an extra copy as we put frames into the queue. r=kinetik 2010-05-19 15:04:33 +12:00
Chris Double
cf776b58a1 Bug 563825 - Factor out non-Ogg specific parts of nsOggPlayStateMachine.cpp Part 2 - r=cpearce sr=roc
--HG--
rename : content/media/ogg/nsOggReader.cpp => content/media/nsBuiltinDecoderReader.cpp
rename : content/media/ogg/nsOggReader.h => content/media/nsBuiltinDecoderReader.h
rename : content/media/ogg/nsOggPlayStateMachine.cpp => content/media/nsBuiltinDecoderStateMachine.cpp
rename : content/media/ogg/nsOggPlayStateMachine.h => content/media/nsBuiltinDecoderStateMachine.h
extra : rebase_source : ca2b9dced11a077b4eb0d5889cd8a0ff25a4b31f
2010-05-06 14:31:02 +12:00
Chris Double
a2c51b95ef Bug 563825 - Factor out non-Ogg specific parts of nsOggPlayStateMachine.cpp Part 1 - r=cpearce sr=roc
--HG--
rename : content/media/ogg/nsOggReader.cpp => content/media/nsBuiltinDecoderReader.cpp
rename : content/media/ogg/nsOggReader.h => content/media/nsBuiltinDecoderReader.h
rename : content/media/ogg/nsOggPlayStateMachine.cpp => content/media/nsBuiltinDecoderStateMachine.cpp
rename : content/media/ogg/nsOggPlayStateMachine.h => content/media/nsBuiltinDecoderStateMachine.h
extra : rebase_source : a5726df63eda9c240db016aaf4e6a92d876fdb68
2010-05-06 14:30:34 +12:00
Chris Pearce
b97bf1cc37 Bug 556893 - Make playback time remaining accurate in media readyState transition calculation. r=doublec 2010-04-27 20:53:45 +12:00
Chris Double
22b8517ab1 Bug 560708 - Factor non-Ogg specific logic into decoder base class. r=cpearce sr=roc 2010-04-27 20:53:44 +12:00
Daniel Holbert
4a8e1281a9 Bug 556897: Fix GCC warnings "FOO will be initialized after BAR when initialized here" in content/media/ogg/. r=cpearce 2010-04-02 16:47:15 -07:00
Chris Pearce
810ae51b7a Bug 531340 - New Ogg video decoder. r=doublec sr=roc 2010-04-01 20:03:07 -07:00