Commit Graph

230 Commits

Author SHA1 Message Date
Chris Pearce
5148e8b330 Bug 799344 - Flatten nsBultinDecoderStateMachine and nsDecoderStateMachine into a single class. r=roc 2012-11-07 11:33:02 +13:00
Chris Pearce
ace5511d82 Bug 799344 - Remove nsBuiltinDecoder::GetDecodeState(), so that nsBuiltinDecoder doesn't need to know about nsDecoderStateMachine::State. r=roc 2012-11-07 11:33:01 +13:00
Matt Joras
8835709995 Bug 798033 - Removes 'using namespace' from /content headers - r=bsmedberg 2012-10-27 13:24:04 -04:00
Phil Ringnalda
56c57f466f Back out c25bc74b7fd3 (bug 798033) for build bustage 2012-10-26 19:05:18 -07:00
Matt Joras
5c9750a59e Bug 798033 - Removes 'using namespace' from /content headers - r=bsmedberg 2012-10-14 00:04:51 -05:00
Robert O'Callahan
3fe2b7b13b Bug 805254. Part 11: Move Vorbis-specific definitons into a new file VorbisUtils.h. r=kinetik 2012-10-25 23:09:41 +13:00
Isaac Aggrey
0cc4b12d36 Bug 791906: Replace NSPR integer limit constants with stdint ones; r=ehsan 2012-09-28 01:57:33 -05:00
Ralph Giles
28dc7fce2d Bug 778050 - Support Opus tag metadata. r=derf
Remember parsed comments from the OpusTags header in
an array member variable. Add a method to generate
the nsHTMLMediaElement::MetadataTags hash table from
those entries, performing the same validatation we
do for Vorbis.

This feature is tested by adding the existing opus
test file to gMetadataTests.

IsValidVorbisTagName is moved to a static method
on nsOggCodecState so it can be shared among the
subclasses and easily called externally.

MetadataTags generation for Vorbis streams is moved
to the same method name on nsVorbisState to allow
sharing of the parsing and validation code as much
as possible, since both formats use the same scheme.

It's arguable whether contrustuction better belongs to
nsOggReader or to the nsCodecState subclasses, since in
theory the various multiplexed streams interact in
determining the canonical tag list, but it is the
per-codec streams which contain the metadata in Ogg.
2012-09-17 18:42:36 -04:00
Ralph Giles
5fbf150245 Bug 790381 - Remove custom extern "C" on opus_multistream.h. r=derf
Bug 748144 switched our opus decoding to use the
opus_multistream api so we could handle surround
audio files. The version of opus in our tree at
the time didn't include extern "C" {} protection
in the corresponding header, so we had to provide
our own.

With the update to the opus 1.0.0 source release
in bug 790381, this oversight is corrected and
we can remove our work-around.
2012-09-12 16:59:05 -04:00
Ralph Giles
6e36658ee7 Bug 789617 - Improve vorbis comment validation. r=cpearce
Verify that tag names are ASCII within the valid character
ranges and that values are UTF-8, skipping comments where
these checks fail.

As written, the check in IsValidVorbisTagName() for the
separator character isn't necessary, because we've already
split on the first occurance. However, it's better to run
the extra check in case the function is reused elsewhere.
2012-09-10 13:49:00 -07:00
David Anderson
7b70ee195a Merge from mozilla-central.
--HG--
rename : js/jsd/jsd_scpt.c => js/jsd/jsd_scpt.cpp
rename : js/jsd/jsd_stak.c => js/jsd/jsd_stak.cpp
rename : js/jsd/jsd_val.c => js/jsd/jsd_val.cpp
2012-09-05 16:18:11 -07:00
David Anderson
fd50a14c90 Merge from mozilla-central. 2012-08-22 16:09:24 -07:00
David Anderson
f3d3148ca7 Merge from mozilla-central. 2012-08-21 15:59:12 -07:00
David Anderson
0e509b2165 Merge from mozilla-central. 2012-08-13 13:40:42 -07:00
Alexandros Chronopoulos
d4807317cd Bug 748144 - Support multichannel Opus files. r=rillian
The Opus audio format supports multichannel (surround) audio, but our initial implementation used a simpler API which only supported mono and stereo output.

To handle these files gracefully, this patch uses the multichannel api and downmixes the output, if possible, to stereo, since we don't currently support surround sound playback.
2012-08-09 15:53:23 -07:00
Ehsan Akhgari
8c296bbcd4 Bug 579517 - Part 1: Automated conversion of NSPR numeric types to stdint types in Gecko; r=bsmedberg
This patch was generated by a script.  Here's the source of the script for
future reference:

function convert() {
echo "Converting $1 to $2..."
find . ! -wholename "*nsprpub*" \
       ! -wholename "*security/nss*" \
       ! -wholename "*/.hg*" \
       ! -wholename "obj-ff-dbg*" \
       ! -name nsXPCOMCID.h \
       ! -name prtypes.h \
         -type f \
      \( -iname "*.cpp" \
         -o -iname "*.h" \
         -o -iname "*.c" \
         -o -iname "*.cc" \
         -o -iname "*.idl" \
         -o -iname "*.ipdl" \
         -o -iname "*.ipdlh" \
         -o -iname "*.mm" \) | \
    xargs -n 1 sed -i -e "s/\b$1\b/$2/g"
}

convert PRInt8 int8_t
convert PRUint8 uint8_t
convert PRInt16 int16_t
convert PRUint16 uint16_t
convert PRInt32 int32_t
convert PRUint32 uint32_t
convert PRInt64 int64_t
convert PRUint64 uint64_t

convert PRIntn int
convert PRUintn unsigned

convert PRSize size_t

convert PROffset32 int32_t
convert PROffset64 int64_t

convert PRPtrdiff ptrdiff_t

convert PRFloat64 double
2012-08-22 11:56:38 -04:00
Timothy B. Terriberry
ae2508019e Bug 787788 - Fix downmixing weights for 6.1 Opus files, r=rillian 2012-09-03 01:41:17 -07:00
Chris Pearce
e94b1f315b Bug 786924 - Estimate Ogg buffered ranges on B2G to avoid main thread I/O. r=kinetik 2012-09-03 10:56:29 +12:00
David Anderson
02b557e2ee Merge from mozilla-central.
--HG--
rename : layout/base/nsFrameTraversal.cpp => layout/base/nsFrameIterator.cpp
rename : layout/base/nsFrameTraversal.h => layout/base/nsFrameIterator.h
rename : browser/modules/WebappsInstaller.jsm => toolkit/webapps/WebappsInstaller.jsm
2012-08-06 12:44:06 -07:00
David Anderson
2e20aecd2c Merge.
--HG--
rename : content/base/src/nsGenericElement.h => content/base/public/FragmentOrElement.h
rename : content/base/src/nsGenericElement.cpp => content/base/src/FragmentOrElement.cpp
rename : gfx/thebes/nsCoreAnimationSupport.mm => gfx/2d/QuartzSupport.mm
2012-08-01 11:30:00 -07:00
Chris Pearce
ee625140f8 Bug 778105 - Fix an nsOggReader::GetBuffered() return value type mismatch. r=doublec 2012-08-01 13:24:25 +12:00
David Anderson
1b9c00384c Merge from mozilla-central. 2012-07-31 17:19:41 -07:00
David Anderson
0b6251a780 Merge from mozilla-central. 2012-07-30 13:15:39 -07:00
Aryeh Gregor
57c0ad57fb Bug 777292 part 2 - Change all nsnull to nullptr 2012-07-30 17:20:58 +03:00
David Anderson
43e8426cf2 Merge from mozilla-central. 2012-07-24 16:32:08 -07:00
David Anderson
5977d0bae2 Merge from mozilla-central.
--HG--
rename : js/xpconnect/wrappers/CrossOriginWrapper.cpp => js/xpconnect/wrappers/WaiveXrayWrapper.cpp
rename : js/xpconnect/wrappers/CrossOriginWrapper.h => js/xpconnect/wrappers/WaiveXrayWrapper.h
2012-07-18 19:02:32 -07:00
Ms2ger
c41391ca15 Bug 756397 - Enable FAIL_ON_WARNINGS in content/media; r=cpearce 2012-07-18 12:36:08 +02:00
Aryeh Gregor
0c8f5adf50 Bug 626472 part 1 - Define nsnull as nullptr where available; r=ehsan 2012-07-20 14:16:17 +03:00
Mike Hommey
c1b35e7b2a Bug 774032 bonus - Use @DEPTH@ and @relativesrcdir@ in Makefile.in. r=ted 2012-08-04 20:26:44 +02:00
David Anderson
4dc2835558 Merge from mozilla-central. 2012-06-27 11:00:48 -07:00
Ralph Giles
62f6aacafd Bug 766331 - Don't rescan old data for Ogg timestamps - r=cpearce
nsOggReader::RangeEndTime() relied on CRC values from valid ogg
pages to keep track of already-searched data when looking for a
end timestamp. This caused quadratic behaviour searching in a
section of a file with no valid pages.

Instead, remember where we last looked, and backoff immediately
if we go more than the maximum length of a page into previously
scanned data. This avoids searching data we've eliminated as
containing valid Ogg pages and lets us search backward with O(N)
instead.
2012-06-25 09:38:56 -07:00
Ralph Giles
a81a17e866 Bug 763010 - Expose media element metadata. r=cpearce
Implements a media.mozGetMetadata() method returning a new javascript object whose properties are key value pairs respresenting metadata tags from the media resource. This data is available after readystate enters METADATA_LOADED.

Currently this is only implemented for Ogg Vorbis streams.

Media format metadata is parsed out by the media decoders. In the nsCodecStateMachine::ReadMetadata subclasses we fill in an nsDataHashtable pointer using the format-specifc api.

The hash pointer is passed up to the media element as part of the MetadataLoaded event.

The hash is deleted if the load is aborted. The audio metadata is also reset to zero (as in the constructor), resolving a todo comment.
2012-07-30 20:14:29 -04:00
Ehsan Akhgari
c80897316e Merge the nullptr conversion from mozilla-central into mozilla-inbound 2012-07-30 10:28:15 -04:00
Aryeh Gregor
17bdf11678 Bug 777292 - Annotate some incorrect conversions to nsresult; r=ehsan 2012-07-27 17:03:25 +03:00
Jan de Mooij
b1b68e0f5d Merge m-c to ionmonkey
--HG--
rename : accessible/src/html/nsHTMLSelectAccessible.cpp => accessible/src/html/HTMLSelectAccessible.cpp
rename : accessible/src/html/nsHTMLSelectAccessible.h => accessible/src/html/HTMLSelectAccessible.h
rename : memory/jemalloc/jemalloc.c => memory/mozjemalloc/jemalloc.c
rename : memory/jemalloc/jemalloc.h => memory/mozjemalloc/jemalloc.h
2012-06-08 11:18:39 +02:00
Matthew Gregan
d90bbfc34b Bug 723860 - Early bail from reader's GetBuffered() if not yet initialized. r=doublec 2012-06-06 17:58:07 +12:00
Ms2ger
f696a656cc Bug 760156 - Cleanup LOCAL_INCLUDES in content/media/; r=sicking
This patch makes it possible to include nsGenericHTMLElement.h without adding
to LOCAL_INCLUDES.
2012-06-06 09:40:02 +02:00
Sean Stangl
252166a142 Merge m-c to Ionmonkey.
--HG--
rename : accessible/src/html/nsHyperTextAccessible.cpp => accessible/src/generic/HyperTextAccessible.cpp
rename : accessible/src/html/nsHyperTextAccessible.h => accessible/src/generic/HyperTextAccessible.h
rename : accessible/src/html/nsHTMLImageAccessible.cpp => accessible/src/generic/ImageAccessible.cpp
rename : accessible/src/html/nsHTMLImageAccessible.h => accessible/src/generic/ImageAccessible.h
rename : accessible/src/msaa/nsHyperTextAccessibleWrap.cpp => accessible/src/msaa/HyperTextAccessibleWrap.cpp
rename : accessible/src/msaa/nsHyperTextAccessibleWrap.h => accessible/src/msaa/HyperTextAccessibleWrap.h
2012-06-04 13:30:29 -07:00
Sean Stangl
39170a65fe Merge m-c onto Ionmonkey.
--HG--
rename : accessible/src/atk/nsAccessibleWrap.cpp => accessible/src/atk/AccessibleWrap.cpp
rename : accessible/src/atk/nsAccessibleWrap.h => accessible/src/atk/AccessibleWrap.h
rename : accessible/src/atk/nsDocAccessibleWrap.h => accessible/src/atk/DocAccessibleWrap.h
rename : accessible/src/base/nsAccessible.cpp => accessible/src/generic/Accessible.cpp
rename : accessible/src/base/nsAccessible.h => accessible/src/generic/Accessible.h
rename : accessible/src/base/nsDocAccessible.cpp => accessible/src/generic/DocAccessible.cpp
rename : accessible/src/base/nsDocAccessible.h => accessible/src/generic/DocAccessible.h
rename : accessible/src/mac/nsAccessibleWrap.h => accessible/src/mac/AccessibleWrap.h
rename : accessible/src/mac/nsAccessibleWrap.mm => accessible/src/mac/AccessibleWrap.mm
rename : accessible/src/mac/nsDocAccessibleWrap.h => accessible/src/mac/DocAccessibleWrap.h
rename : accessible/src/mac/nsDocAccessibleWrap.mm => accessible/src/mac/DocAccessibleWrap.mm
rename : accessible/src/msaa/nsAccessibleWrap.cpp => accessible/src/msaa/AccessibleWrap.cpp
rename : accessible/src/msaa/nsDocAccessibleWrap.cpp => accessible/src/msaa/DocAccessibleWrap.cpp
rename : accessible/src/msaa/nsTextAccessibleWrap.cpp => accessible/src/msaa/TextLeafAccessibleWrap.cpp
rename : accessible/src/msaa/nsTextAccessibleWrap.h => accessible/src/msaa/TextLeafAccessibleWrap.h
rename : netwerk/protocol/http/SpdySession.cpp => netwerk/protocol/http/SpdySession2.cpp
rename : netwerk/protocol/http/SpdySession.h => netwerk/protocol/http/SpdySession2.h
rename : netwerk/protocol/http/SpdySession.cpp => netwerk/protocol/http/SpdySession3.cpp
rename : netwerk/protocol/http/SpdySession.h => netwerk/protocol/http/SpdySession3.h
rename : netwerk/protocol/http/SpdyStream.cpp => netwerk/protocol/http/SpdyStream2.cpp
rename : netwerk/protocol/http/SpdyStream.cpp => netwerk/protocol/http/SpdyStream3.cpp
2012-05-31 17:17:52 -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
David Anderson
54d51b8342 Merge from mozilla-central. 2012-05-23 14:33:15 -07:00
David Anderson
531c35aeaa Merge from mozilla-central. 2012-05-21 14:40:04 -07:00
Gervase Markham
87620f5676 Bug 716478 - update licence to MPL 2. 2012-05-21 12:12:37 +01:00
Timothy B. Terriberry
d3be27c800 Bug 752661 - Make ReadMetadata() fail when there are no active Ogg streams, r=kinetik 2012-06-02 06:29:44 -07:00
David Anderson
1c69f02062 Merge from mozilla-central.
--HG--
rename : xpcom/ds/CheckedInt.h => mfbt/CheckedInt.h
2012-05-16 15:39:10 -07:00
David Anderson
6364c530b8 Merge from mozilla-central. 2012-05-08 17:34:07 -07:00
Ralph Giles
e558af769f Bug 752234 - Guard nsOpusState::Time against inactive streams. r=cpearce
Fix a crash loading opus files when the media.opus.enabled pref is
false. The buffering code still tries to call our Time() method,
but without having read the headers we cannot perform the
conversion.

This commit adds a guard on mActive like the other ::Time
methods use.
2012-05-05 09:55:29 -07:00
David Anderson
526de59b44 Merge from mozilla-central.
--HG--
rename : accessible/src/base/nsRootAccessible.cpp => accessible/src/generic/RootAccessible.cpp
rename : accessible/src/base/nsRootAccessible.h => accessible/src/generic/RootAccessible.h
rename : js/src/jsgcmark.cpp => js/src/gc/Marking.cpp
rename : js/src/jsgcmark.h => js/src/gc/Marking.h
2012-05-04 19:16:35 -07:00
Ralph Giles
a580b38664 Bug 757600 - Update the Opus version field parser. r=cpearce
On 2012 May 10, the Ogg encapsulation spec for Opus at
https://wiki.xiph.org/OggOpus bumped the version number
from zero to one. The one-byte field is also now notionally
split into major and minor subfields, with incompatible
changes signalled by the major field.

We update nsOpusState::DecodeHeader to parse the version
field separately from the stream identification and reject
any stream where the high four bits of the version field
is non-zero.

The opus-tools repo was updated 2012 May 22 to set with
version = 1. This commit enables playback of those files.
2012-05-22 20:21:46 -04:00
David Anderson
33cb582413 Merge from mozilla-central.
--HG--
rename : accessible/src/base/nsFormControlAccessible.cpp => accessible/src/generic/FormControlAccessible.cpp
rename : accessible/src/base/nsFormControlAccessible.h => accessible/src/generic/FormControlAccessible.h
rename : accessible/src/html/nsHTMLFormControlAccessible.cpp => accessible/src/html/HTMLFormControlAccessible.cpp
rename : accessible/src/html/nsHTMLFormControlAccessible.h => accessible/src/html/HTMLFormControlAccessible.h
rename : accessible/src/xul/nsXULFormControlAccessible.cpp => accessible/src/xul/XULFormControlAccessible.cpp
rename : accessible/src/xul/nsXULFormControlAccessible.h => accessible/src/xul/XULFormControlAccessible.h
2012-04-18 10:23:31 -07:00