Add a helper for passing the initialization segments
of mp4 streams to the rust parser and log the result.
This runs real data through the new parser for testing
but doesn't use the results.
Code is conditional on MOZ_RUST_MP4PARSE to be defined
in confvars.sh. See bug 1219530.
Coercing the shift to a bool makes the comparison useless.
This just affects whether a warning is printed, so there's
no change to what files we accept.
We also need to mask of the high 'Starts with SAP' bit
which is usually set and would replace our false negative
with a false positive. ISO/IEC 14496-12:2012(E) sec. 8.16.3.2
Results of running the new update-rust script.
- Include some #[inline] directives missed in bug 1215234.
- Remove #[crate-name] directive to silence a warning caused
by our building byteorder as a submodule instead of a crate.
Automate update and patching of the rust mp4 parser from the
upstream repo. A rev for mp4parse-rust can be passed on the
command line, but the byteorder crate's version is hardcoded.
Differences to adapt to the gecko build system are applied as
patches like we do for other media code.
Unfortunately cargo isn't much help here. It can download
crates for us, and we can set CARGO_HOME to force it to
use a specific directory, but it doesn't return enough
information to get the versions, etc. without some guessing/scraping
to find the packaged source.
This switches to #[derive(Debug)] for trace println!s, and
updates the C api wrapper to thread through the new MediaContext
as an opaque struct. The idea is to be able to query it later.
'extern crate byteorder' converted to 'mod byteorder'.
In bug 922912, we folded back gkmedias.dll info xul.dll, so in practice, there
is no default configuration left that exercises GKMEDIAS_SHARED_LIBRARY. And
sure enough, it's been broken for months in many different ways.
The gkmedias intermediate library is however kept for webrtc signaling tests.
Moving xpcom/glue/Logging.h to xpcom/base/Logging.h causes build failures in
signaling due to include conflicts. Rather than having signaling include
'xpcom/base' directly we can switch it over to using the installed headers
under 'mozilla'.
--HG--
extra : rebase_source : aff44b19c23a1948a9c03b2fd4886be6280422a7
DONTBUILD because it only changes comments.
This will hopefully prevent confusion like that in bug 1215903.
--HG--
extra : rebase_source : f0a601d77b5f42b4fbe090693234f934e3becc42
Change is just to loop over the input buffer in read_box_from_buffer()
so we parse the entire contents instead of just the first box.
'extern crate byteorder' converted to 'mod byteorder'.
Change is just to loop over the input buffer in read_box_from_buffer()
so we parse the entire contents instead of just the first box.
'extern crate byteorder' converted to 'mod byteorder'.
The bulk of this commit was generated with a script, executed at the top
level of a typical source code checkout. The only non-machine-generated
part was modifying MFBT's moz.build to reflect the new naming.
CLOSED TREE makes big refactorings like this a piece of cake.
# The main substitution.
find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \
xargs perl -p -i -e '
s/nsRefPtr\.h/RefPtr\.h/g; # handle includes
s/nsRefPtr ?</RefPtr</g; # handle declarations and variables
'
# Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h.
perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h
# Handle nsRefPtr.h itself, a couple places that define constructors
# from nsRefPtr, and code generators specially. We do this here, rather
# than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename
# things like nsRefPtrHashtable.
perl -p -i -e 's/nsRefPtr/RefPtr/g' \
mfbt/nsRefPtr.h \
xpcom/glue/nsCOMPtr.h \
xpcom/base/OwningNonNull.h \
ipc/ipdl/ipdl/lower.py \
ipc/ipdl/ipdl/builtin.py \
dom/bindings/Codegen.py \
python/lldbutils/lldbutils/utils.py
# In our indiscriminate substitution above, we renamed
# nsRefPtrGetterAddRefs, the class behind getter_AddRefs. Fix that up.
find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \
xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g'
if [ -d .git ]; then
git mv mfbt/nsRefPtr.h mfbt/RefPtr.h
else
hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h
fi
--HG--
rename : mfbt/nsRefPtr.h => mfbt/RefPtr.h
This commit was generated using the following script, executed at the
top level of a typical source code checkout.
# Don't modify select files in mfbt/ because it's not worth trying to
# tease out the dependencies currently.
#
# Don't modify anything in media/gmp-clearkey/0.1/ because those files
# use their own RefPtr, defined in their own RefCounted.h.
find . -name '*.cpp' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \
grep -v 'mfbt/RefPtr.h' | \
grep -v 'mfbt/nsRefPtr.h' | \
grep -v 'mfbt/RefCounted.h' | \
grep -v 'media/gmp-clearkey/0.1/' | \
xargs perl -p -i -e '
s/mozilla::RefPtr/nsRefPtr/g; # handle declarations in headers
s/\bRefPtr</nsRefPtr</g; # handle local variables in functions
s#mozilla/RefPtr.h#mozilla/nsRefPtr.h#; # handle #includes
s#mfbt/RefPtr.h#mfbt/nsRefPtr.h#; # handle strange #includes
'
# |using mozilla::RefPtr;| is OK; |using nsRefPtr;| is invalid syntax.
find . -name '*.cpp' -o -name '*.mm' | xargs sed -i -e '/using nsRefPtr/d'
# RefPtr.h used |byRef| for dealing with COM-style outparams.
# nsRefPtr.h uses |getter_AddRefs|.
# Fixup that mismatch.
find . -name '*.cpp' -o -name '*.h'| \
xargs perl -p -i -e 's/byRef/getter_AddRefs/g'
read_box_from_buffer now returns the (alleged) number of tracks,
or -1 on error instead of a bool. It currently returns 0 for
the test file instead of 2, so I marked that line with an XFAIL
comment for now.
DecoderTraits.cpp pulls in MP3Demuxer.h which in turn pulls in mp4_demuxer/ByteReader.h. In that context, for some reason the ByteReader can't find the definition for MediaByteBuffer unless it is prefixed with the proper namespace.
MP3Demuxer.cpp itself compiles fine, but for some reason in Visual Studio IntelliSense complains about TimeUnit and TimeIntervals being undefined unless the using statement uses the full namespace hierarchy.
Also fix a small typo.
--HG--
extra : rebase_source : fc46fc82bf06b61c9ac31c2f4331f84f8557c51e
This lets us separate tracks by ownership like so:
* Input - Owned by the producer of the DOMMediaStream (gUM etc.)
* Owned - Contains Input tracks (per above) or tracks cloned tracks
if this DOMMediaStream is a clone.
* Playback - Contains Owned tracks plus tracks addTrack()ed to this
DOMMediaStream minus tracks removeTrack()ed from this
DOMMediaStream.
--HG--
extra : commitid : GPSNwBVyD4j
extra : rebase_source : fba22e96c6c65a74e012509f3da67a4d7df7a244
This allows for tracking the input track of an added track (for
ProcessedMediaStream tracks; SourceMediaStream tracks don't have input
tracks) directly in the NotifyQueuedTrackChanges handler, which will be
necessary for locking MediaInputPorts to specific tracks.
--HG--
extra : commitid : GPSNwBVyD4j
extra : rebase_source : 4bed5dffe66b71b7ad23f4c02531d84af25cd316
In addition to starting parsing at different points across the input stream,
different sizes are given, from the minimum step size up to the remainder of the stream.
--HG--
extra : amend_source : 1d98d71cba9bf87f4501b3a554a3c7fa0adc81bc
This lets us separate tracks by ownership like so:
* Input - Owned by the producer of the DOMMediaStream (gUM etc.)
* Owned - Contains Input tracks (per above) or tracks cloned tracks
if this DOMMediaStream is a clone.
* Playback - Contains Owned tracks plus tracks addTrack()ed to this
DOMMediaStream minus tracks removeTrack()ed from this
DOMMediaStream.
--HG--
extra : commitid : Kvj9RrN9MgP
This allows for tracking the input track of an added track (for
ProcessedMediaStream tracks; SourceMediaStream tracks don't have input
tracks) directly in the NotifyQueuedTrackChanges handler, which will be
necessary for locking MediaInputPorts to specific tracks.
--HG--
extra : commitid : Kvj9RrN9MgP
gfxIntSize is just a typedef of gfx::IntSize, so this is very mechanical. The
only tricky part is deciding for each occurrence whether to replace it with
IntSize, gfx::IntSize or mozilla::gfx::IntSize; in all cases I went with the
shortest one that worked given the existing "using namespace" declarations.
--HG--
extra : rebase_source : 67fd15f87222b16defa70ef795c6d77dfacf1c36
MetaData.h uses multi-char literals. This is kind of gross but probably safe
and hard to change, so this patch allows it while disallowing all other
compiler warnings. (This approach is already used in dom/media/moz.build.)
(An aside: I originally tried using |#pragma GCC ignoring -Wmultichar| to
temporarily disable the warnings in MetaData.h. But that works in gcc but not
in g++ because of https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53431!)
--HG--
extra : rebase_source : 15ab8d3d6fe4d102b54e270ac7a6ff06af4cbe42
Improve use of TCPSocket to track in-flight writes and suppress extra runnables
Adds lots of logging to nr_socket_buffered_stun.c
Rework mtransport code to use new TCPSocketChild interface
This is less error-prone and somewhat easier to read.
Based on a patch from Joshua J. Drake and suggestions
from Andrea Marchesini.
NB CheckedInt<T>::value() returns a T, so the comparison with
SIZE_MAX should always succeed. Doesn't warn on clang though.
The VP8 encoder was re-initialized completely when the frame size changed
instead of calling the vpx_enc_config_set() method. The work around is not
longer needed.
Previously we asserted if we tried to read past the end
of a buffer in parsing H.264 SPS headers. This only affected
debug builds, but the failures were reported as crashes in
automated testing.
Therefore, commute the assert to a warning and silently accept
bad data of this type. The read is safe with the first assert
removed because of the subsequent check, and a similar one in
the parent class.
Even though we compile C code as C99, we used to need
-Wdeclaration-after-statement because MSVC didn't allow declarations after
statements.
However, Visual Studio 2013 added support, so we can now merrily mix
declarations and statements everywhere. Hooray.
--HG--
extra : rebase_source : 00a89fed733008785429827408a0c6c466971080
This means converting to int16, interleaving, and down-mixing to stereo (or
keeping it to mono if it's already mono of course).
--HG--
extra : rebase_source : 48278718869613b2072b6d2d20765771221948a9
The patch removes 455 occurrences of FAIL_ON_WARNINGS from moz.build files, and
adds 78 instances of ALLOW_COMPILER_WARNINGS. About half of those 78 are in
code we control and which should be removable with a little effort.
--HG--
extra : rebase_source : 82e3387abfbd5f1471e953961d301d3d97ed2973