Граф коммитов

188 Коммитов

Автор SHA1 Сообщение Дата
Chris Pearce 3747bd5737 Bug 778105 - Fix an nsOggReader::GetBuffered() return value type mismatch. r=doublec 2012-08-01 13:24:25 +12:00
Ralph Giles edf533c3f1 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 3ad40dbf10 Merge the nullptr conversion from mozilla-central into mozilla-inbound 2012-07-30 10:28:15 -04:00
Aryeh Gregor d0ad5a7d0c Bug 777292 part 2 - Change all nsnull to nullptr 2012-07-30 17:20:58 +03:00
Aryeh Gregor ec8b263a28 Bug 777292 - Annotate some incorrect conversions to nsresult; r=ehsan 2012-07-27 17:03:25 +03:00
Aryeh Gregor 65eef91085 Bug 626472 part 1 - Define nsnull as nullptr where available; r=ehsan 2012-07-20 14:16:17 +03:00
Ms2ger 7b92acdf47 Bug 756397 - Enable FAIL_ON_WARNINGS in content/media; r=cpearce 2012-07-18 12:36:08 +02:00
Ralph Giles 585c620ea4 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
Matthew Gregan 1fc0488427 Bug 723860 - Early bail from reader's GetBuffered() if not yet initialized. r=doublec 2012-06-06 17:58:07 +12:00
Ms2ger 02a7eb4e87 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
Timothy B. Terriberry 2586d036c2 Bug 752661 - Make ReadMetadata() fail when there are no active Ogg streams, r=kinetik 2012-06-02 06:29:44 -07:00
Andreas Gal 3c320eb743 Bug 714408 Part 2 - Media plugin support for libstagefright - r=doublec
--HG--
extra : rebase_source : 308d1aab3cfffbb7ddeb0602a3991565603e6212
2012-06-01 12:54:23 +12:00
Timothy B. Terriberry be06d81459 Bug 751219 - Support header gain in Opus files, r=kinetik 2012-05-31 11:13:17 -07:00
Timothy B. Terriberry 87b5e2c9ef Bug 759612 - Update granule position accounting for Opus, r=kinetik 2012-05-31 11:13:17 -07:00
Timothy B. Terriberry c59add4dfa Bug 759399 - Handle preroll correctly during an Opus seek, r=doublec 2012-05-31 11:13:17 -07:00
Timothy B. Terriberry 61396f0581 Bug 759490 - Use Opus streams when seeking in Ogg, if present, r=doublec 2012-05-31 11:13:11 -07:00
Ralph Giles ab5cec5feb 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
Ralph Giles 9038c5e7f0 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
Gervase Markham 82ff7027aa Bug 716478 - update licence to MPL 2. 2012-05-21 12:12:37 +01:00
Benjamin Smedberg eaa4878487 Bug 734847 part 2 - treewide changes resulting from the default-infallibility of hashtables; either remove useless result checks, or use the fallible version of APIs, depending on context, r=jlebar
--HG--
extra : rebase_source : 844b008c5167e6ca39a7ba9eeec8b30672938704
2012-05-18 13:30:49 -04:00
Paul Adenot 0da5e3bca2 Bug 756372 - Change |seeking| to prevent seeking in WebM livestream. r=kinetik 2012-05-18 13:35:43 -04:00
Ms2ger 127d3f70cc Bug 754643 - Disable FAIL_ON_WARNINGS in content/media because new warnings were introduced. 2012-05-18 10:57:20 +02:00
Ms2ger f64d1ecb9a Bug 754643 - Enable FAIL_ON_WARNINGS in content/media; r=cpearce f=roc 2012-05-18 10:29:38 +02:00
Benoit Jacob 6de3cc03da Bug 732875 - 8/8 - move CheckedInt to MFBT, enable unit tests in mfbt/tests - r=jwalden
--HG--
rename : xpcom/ds/CheckedInt.h => mfbt/CheckedInt.h
2012-05-14 15:50:20 -04:00
Ed Morley 0f956d7307 Backout 345ae68f15f4, b3b40121ac8d, 0d18b7a246d7, 9dbb6064ab58, dee9d7fa8eb6, 63eec6bfa948, 323c6be7cfe8 & f4aac7523a48 (bug 732875) for compilation failures 2012-05-14 21:05:24 +01:00
Benoit Jacob fa8d5e0469 Bug 732875 - 8/8 - move CheckedInt to MFBT, enable unit tests in mfbt/tests - r=jwalden
--HG--
rename : xpcom/ds/CheckedInt.h => mfbt/CheckedInt.h
2012-05-14 15:50:20 -04:00
Ralph Giles adbf7a2878 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
Ralph Giles 64ef2c566d 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
Abhishek Bhatnagar 09998c87c1 Bug 620164 - Remove CheckedInt and Muloverflow from nsTheoraState::MaxKeyframeOffset. r=cpearce 2012-04-11 07:44:28 -04:00
Christopher De Cairos b40034d6f4 Bug 736400 - Make each decoder Clone() method check if its mimetype is enabled. r=cpearce 2012-03-30 20:52:07 -04:00
Nathan Froyd 8c5b9206cd Bug 739962 - fix -Wunused-but-set-variable warnings in content; r=bent 2012-03-28 09:14:33 -04:00
Chris Pearce 34453514e9 Bug 726400 - Backed out changeset 4ad6c040729f. r=backout. 2012-03-26 14:41:14 +13:00
Christopher De Cairos 25e946ae06 Bug 736400 - Make each decoder Clone() method check if its mimetype is enabled r=cpearce 2012-03-26 14:21:53 +13:00
Phil Ringnalda ed59dd90b3 Back out c4a4b0171b99 (bug 736400) for Android build bustage 2012-03-25 15:35:37 -07:00
Christopher De Cairos 4eab2b8b32 Bug 736400 - Make each decoder Clone() method check if its mimetype is enabled r=cpearce 2012-03-26 10:48:40 +13:00
Justin Lebar 69fb6f1047 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
Ching Wei Tseng b369406826 Bug 601535 - content/media should use CheckedInt.h. r=doublec 2012-02-22 13:28:06 +01:00
Robert O'Callahan 872bbcb297 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
Robert O'Callahan 3bf55cada3 Bug 708116. Factor out logic for updating the current frame of a video element into a helper object. r=doublec 2012-02-15 17:35:01 +13:00
Ms2ger 1a688061bd Bug 699731 - Remove PR_INT64_MAX / PR_UINT64_MAX from non-nsprpub source; r=ted 2012-01-11 09:23:07 +01:00
Robert O'Callahan f08642b928 Bug 703379. Rename nsMediaDecoder::GetCurrentStream to GetStream. Make nsMediaStream::URI() const. r=doublec 2011-11-25 15:06:20 +13:00
Robert O'Callahan 84c543bfb3 Backing out part of bug 703379 to fix build failure of nsRawReader 2011-11-24 12:30:03 +13:00
Robert O'Callahan a01d14ee25 Bug 703379. Rename nsMediaDecoder::GetCurrentStream to GetStream. Make nsMediaStream::URI() const. r=doublec 2011-11-24 12:05:12 +13:00
Matthew Gregan 8f6aeecfc2 Bug 690603 - Remove PR_TRUE/PR_FALSE from media code. r=doublec 2011-09-30 12:34:37 +13:00
Michael Wu d2b70213ac 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
Matthew Gregan 203738f570 Bug 689432 - Disambiguate use of "samples" by introducing "frames" in a number of places. r=doublec 2011-09-27 16:31:18 +13:00
Martin Richard 6b62274806 Bug 646333 - Make video constants consistently const T. r=cpearce 2011-09-15 07:39:50 +12:00
Felix Fung 4ad6cea4ad Bug 577266 - Correct misspellings in source code: 'verion' -> 'version' 2011-09-06 22:50:26 -07:00
Matthew Gregan 37751a6419 Bug 679269 - Rename SoundData{,Value} to AudioData{,Value} and fix inconsistent use of "sound" vs "audio". r=doublec 2011-08-16 17:19:51 +12:00
Paul ADENOT f582e1c46c Bug 462960 - Implement nsIDOMHTMLMediaElement::GetSeekable() + seeking algorithm part 7. r=cpearce 2011-08-09 12:10:48 +02:00