Commit Graph

30 Commits

Author SHA1 Message Date
Ralph Giles
f7b40c94e9 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
9041e67bc8 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
Ehsan Akhgari
0fd9123eac 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
Alexandros Chronopoulos
b42d0e9db4 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
Aryeh Gregor
e806eeab4f Bug 777292 part 2 - Change all nsnull to nullptr 2012-07-30 17:20:58 +03:00
Timothy B. Terriberry
8cf0158bfc Bug 751219 - Support header gain in Opus files, r=kinetik 2012-05-31 11:13:17 -07:00
Timothy B. Terriberry
97a1c5f7c1 Bug 759612 - Update granule position accounting for Opus, r=kinetik 2012-05-31 11:13:17 -07:00
Timothy B. Terriberry
e4706b6f85 Bug 759490 - Use Opus streams when seeking in Ogg, if present, r=doublec 2012-05-31 11:13:11 -07:00
Ralph Giles
08ed5054b4 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
ca171eec44 Bug 716478 - update licence to MPL 2. 2012-05-21 12:12:37 +01:00
Ralph Giles
3adcc0b005 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
Justin Lebar
b682bbe4a5 Bug 731789 - Rename mfbt/StdInt.h to mfbt/StandardInteger.h, so stdint types work from cpp files inside mfbt. r=waldo 2012-02-29 22:56:43 -05:00
Ms2ger
236b6c12a8 Bug 699731 - Remove PR_INT64_MAX / PR_UINT64_MAX from non-nsprpub source; r=ted 2012-01-11 09:23:07 +01: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
Felix Fung
1efc4b73a9 Bug 577266 - Correct misspellings in source code: 'verion' -> 'version' 2011-09-06 22:50:26 -07:00
Chris Pearce
0cf7b30f03 Bug 671438 - Make nsOggCodecState::PacketOutUntilGranulepos() return an error on failure. r=doublec 2011-07-19 09:36:30 +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 Pearce
a259c20cba Bug 641718 - Convert to using microseconds for internal video timestamps. r=kinetik 2011-04-14 10:12:23 +12:00
Chris Double
5acb08ef86 Bug 614445 - delete used to free memory allocated by operator new[] in Ogg backend - r=cpearce
--HG--
extra : rebase_source : 6cbd41821bbe489ab2fa443c57b710aa1527d1e2
2011-02-24 16:53:35 +13:00
Chris Double
143856bc77 Bug 556821 - Use Ogg Skeleton presentation time for start of videos - r=cpearce
--HG--
extra : rebase_source : 83020ac5028e9f94cabe6a3c959cf84eeb25449f
2011-03-24 14:16:30 +13:00
Matthew Gregan
f6eec8c272 Bug 627139 - Report seek target as current time immediately after seeking. r=roc a=roc 2011-02-01 15:57:13 +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
Chris Pearce
a09af5d84d Bug 589039 - Don't use uninited hashtable in Ogg index decoder. r=doublec a=bsmedberg 2010-11-08 19:43:24 +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
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 Double
63a38282f4 Bug 567056. Rename mAspectRatio to mPixelAspectRatio. r=kinetik 2010-05-24 09:36:10 +12:00
Chris Pearce
810ae51b7a Bug 531340 - New Ogg video decoder. r=doublec sr=roc 2010-04-01 20:03:07 -07:00