Commit Graph

422 Commits

Author SHA1 Message Date
Ralph Giles
a3ea7052ff Bug 1229615 - Catch panics in mp4parse_get_track_info. r=kinetik
Wrap calls in a thread the way we do for read_mp4().

Patch from upstream.
2015-12-02 17:22:01 -08:00
Ralph Giles
3c67e8b631 Bug 1229615 - Conditionalize mp4parse.h export. r=kinetik 2015-12-02 17:21:54 -08:00
Matthew Gregan
dee904221c Bug 1229615 - Compare track counts between rust and stagefright. r=rillian
Use the new capi calls in rust mp4parse v0.1.5 to query
audio and video track counts and compare with what we
get from stagefright.
2015-12-02 17:21:49 -08:00
Ralph Giles
be8ee9898b Bug 1229615 - Don't reject files without edit lists. r=kinetik
Patch from upstream.
2015-12-02 17:21:41 -08:00
Wes Kocher
ef60ffb91e Backed out 3 changesets (bug 1229615) for crashtest crashes in 0-timescale.html CLOSED TREE
Backed out changeset aa313047a6de (bug 1229615)
Backed out changeset 80aa7ecf9456 (bug 1229615)
Backed out changeset d7bf9994e1b0 (bug 1229615)

--HG--
extra : commitid : 782ajuO9h9t
2015-12-02 15:00:42 -08:00
Ralph Giles
fef6163774 Bug 1229615 - Conditionalize mp4parse.h export. r=kinetik 2015-12-02 12:22:09 -08:00
Matthew Gregan
6b03728600 Bug 1229615 - Compare track counts between rust and stagefright. r=rillian
Use the new capi calls in rust mp4parse v0.1.5 to query
audio and video track counts and compare with what we
get from stagefright.
2015-12-02 12:19:29 -08:00
Ralph Giles
8c0e42e151 Bug 1229615 - Don't reject files without edit lists. r=kinetik
Patch from upstream.
2015-12-02 12:25:00 -08:00
Ralph Giles
a0a2e12a73 Bug 1229612 - Update rust mp4parse to v0.1.5. r=kinetik
Adds query functions for track metadata.
2015-12-01 17:33:00 -08:00
Jean-Yves Avenard
87d0bbae43 Bug 1226842: Error rather than asserting when encountering error in sample table. r=gerald 2015-12-02 10:39:50 +11:00
Jean-Yves Avenard
9191c537d3 Bug 1229134: Check that memory allocation actually succeeded. r=gerald 2015-12-02 10:39:49 +11:00
Gerald Squelart
a9a0ca3af0 Bug 1210319 - p3. Lowered useless log level - r=jya
--HG--
extra : commitid : 3l4NCSLhsWC
2015-12-01 13:46:07 -08:00
Gerald Squelart
23f5557d82 Bug 1210319 - p2. Minor intf clean-up, RIP trex - r=rillian
Made some class interfaces a bit more "C++11"-ish, to protect against some
possible issues.
Also removed 'trex', which was only used by code removed in previous patch.

--HG--
extra : commitid : FkTiMJ5sZLf
2015-12-01 13:45:55 -08:00
Gerald Squelart
f8723d92f6 Bug 1210319 - p1. Removed unused code - r=rillian
--HG--
extra : commitid : 6LU02OBJDFK
2015-12-01 13:45:42 -08:00
Jean-Yves Avenard
7ae8605a51 Bug 1229339: Partial revert of commit c15c9f37f. r=cpearce
Replacement of nsTArray<MediaByteRange> by MediaByteRangeSet in the MoofParser was incorrect.
2015-12-02 08:35:57 +11:00
Jean-Yves Avenard
5b14282671 Bug 1227396: P14. Reduce memory usage of sample index for audio tracks. r=cpearce
All samples in an audio track are keyframes. As such, use block on 128 samples instead.
2015-11-30 11:36:39 +11:00
Jean-Yves Avenard
bb0aacbf79 Bug 1227396: P13. Refactor how MP4 buffered range is calculated. r=cpearce
We now use an index of samples made of block of samples delimited by keyframes. The search is performed using a binary search. This allows to quickly find which blocks are found within the media cache.
On a 8 core mac pro, this leads to a 67% improvement on CPU time spent playing a long MP4 video (from 112s CPU to 45s CPU)

The optimisation is only possible if all mp4 data chunks are continuous (which they almost always are)
2015-11-30 11:29:37 +11:00
Jean-Yves Avenard
219b4520a6 Bug 1227396: P10: Remove stray function definition. r=cpearce 2015-11-30 11:29:35 +11:00
Jean-Yves Avenard
fdf27ff498 Bug 1227396: P9. Remove unnecessary monitor. r=cpearce
The Index and MoofParser are now only used via the MP4Demuxer which is guaranteed to always be called on the same taskqueue.
2015-11-30 11:29:35 +11:00
Jean-Yves Avenard
a7975b198f Bug 1227396: P8. Replace MediaByteRange with Interval<int64_t> typedef. r=cpearce
It's now okay to simplify.
2015-11-30 11:29:34 +11:00
Jean-Yves Avenard
c8c275cee2 Bug 1227396: P7. Replace nsTArray<MediaByteRange> with dedicated MediaByteRangeSet object. r=cpearce 2015-11-30 11:29:34 +11:00
Jean-Yves Avenard
70f2124283 Bug 1227396: P2. Rename some MediaByteRange methods. r=cpearce
Will facilitate the replacement of MediaByteRange by Interval<int64_t>
2015-11-30 11:29:30 +11:00
Gerald Squelart
ed2eee2066 Bug 1227052 - Use delete[] for sinf->IPMPData. r=jya
--HG--
extra : rebase_source : d8197fdc08c009dedd25f83ef2a7fc68356043a7
2015-11-24 08:46:54 +01:00
sajitk
582e1a55fa Bug 1219480 - Replace PRLogModuleInfo with LazyLogModule in the media directory. r=rillian 2015-11-15 14:49:01 +01:00
Gerald Squelart
33342972f0 Bug 1224019 - Disable Stagefright subset gtests - r=jya, rs=botond
These tests are exploratory, they don't particularly match whatever the
original issues were discovered, so it is safe to disable them for now.
A future bug will look at re-enabling them, but without all the output
that they generate.

--HG--
extra : rebase_source : c31b049d696d09094a8fb94f09525756840cf33f
2015-11-11 19:24:48 -05:00
Wes Kocher
f3a9eb2a26 Backed out changeset 1e5f3d1151d6 (bug 1219480) for cpp unittest bustage CLOSED TREE
--HG--
extra : commitid : BMVKq6cPeho
2015-11-11 09:36:56 -08:00
sajitk
3cbe348cdd Bug 1219480 - Replace PRLogModuleInfo with LazyLogModule in the media directory. r=rillian
--HG--
extra : rebase_source : c73098485fa005d914304fb6e7f8eba3c15e66dc
2015-11-11 06:52:00 +01:00
Gerald Squelart
a407a004d9 Bug 1216845 - Check fallible allocations - r=rillian
- Made externally-sized 'new' allocations fallible.
- Check return value of every new(fallible)/malloc/realloc.
- Consistently return -ENOMEM when allocations fail.
- MPEG4Extractor::getTrack() and getMetaData() can return null (because of
  failed parse or failed alloc); added missing checks in callers.

Note: Some allocs in the 2nd half of MPEG4Extractor have not been touched, as
they are in unused code to be removed in bug 1210319.
2015-11-11 12:37:53 +01:00
Gerald Squelart
305f63eb74 Bug 1216748 - p4. Check other Metadata::setData uses - r=rillian
Found only one other use that needed better checks: the size of the pssh
data was only checked after all items were added up; so it would be
possible to create a set of big items such that they create an overflow,
but the final sum looks reasonable.
Instead each item size should be checked, and the sum should also be
checked at each step.
2015-11-11 12:36:26 +01:00
Gerald Squelart
11139b4935 Bug 1216748 - p3. Ensure 'covr' data size cannot create underflow - r=rillian 2015-11-11 12:36:05 +01:00
Gerald Squelart
e8a831bae2 Bug 1216748 - p2. Handle failed malloc in Metadata storage - r=rillian 2015-11-11 12:35:52 +01:00
Gerald Squelart
fe2b536abd Bug 1216748 - p1. Added test case with different 'covr' sizes - r=rillian 2015-11-11 12:35:38 +01:00
Ralph Giles
fb945d27e7 Bug 1220885 - Add telemetry probe for rust mp4parse success. r=kinetik p=ally
This is a boolean to record the overall success rate of the new
demuxer path.
2015-11-09 12:42:00 -08:00
Gerald Squelart
2505b44960 Bug 1185230 - p1: Added mp4 test case to libstagefright gtest - r=rillian 2015-11-05 23:20:00 +01:00
Gerald Squelart
a7ce313646 Bug 1185230 - p2: Store MPEG4Source::mTimescale as uint32_t - r=rillian
The timescale is read as an unsigned integer, but was stored signed in MPEG4Source,
causing it to overflow into a negative number if too big, causing later issues when
exporting indices with negative timestamps.
2015-11-05 20:10:00 +01:00
Gerald Squelart
439afcf535 Bug 1181213 - Added Added mp4 test case to libstagefright gtest - r=rillian
Note: This bug is effectively fixed by bug 1181215, so only this test case is
provided to prove the successful resolution of this bug.
2015-11-05 19:12:00 +01:00
Gerald Squelart
468dab6c37 Bug 1181215 - p1: Added mp4 test case to libstagefright gtest - r=rillian 2015-11-05 19:11:00 +01:00
Gerald Squelart
15f513a32e Bug 1181215 - p2: Better track verification - r=rillian
Copied some tests from MPEG4Source constructor to MPEG4Extractor::verifyTrack
so that we don't get late surprises, in particular a missing track ID.
2015-11-05 03:11:00 +01:00
Gerald Squelart
1a225cc661 Bug 1181220 - p2: Check if MIME types are valid - r=rillian 2015-11-05 19:10:00 +01:00
Gerald Squelart
d26da5bb6a Bug 1181220 - p1: Added mp4 test case to libstagefright gtest - r=rillian 2015-11-05 19:08:00 +01:00
Gerald Squelart
007ffc84ce Bug 1181223 - p2: Handle wrong saio/saiz size instead of assuming it is correct - r=rillian 2015-11-05 19:06:00 +01:00
Gerald Squelart
35a07e897c Bug 1181223 - p1: Added mp4 test case to libstagefright gtest - r=rillian 2015-11-05 19:05:00 +01:00
Gerald Squelart
0cd18ff32b Bug 1181719 - p1: Added mp4 test case to libstagefright gtest - r=rillian
Remove mdat, which is big and not useful in this test that only looks at
metadata.
2015-11-05 19:01:00 +01:00
Gerald Squelart
1f8be14a2b Bug 1181719 - p2: Check numBitsLeft before each getBits - r=rillian 2015-11-04 23:42:00 +01:00
Ralph Giles
11afc76455 Bug 1189531 - Check for nullptr in convertTimeToDate. r=gerald
In current code it's not possible to pass nullptr, but there's
no harm in checking.

See also bug 1156891.
2015-11-04 14:43:00 -08:00
Ralph Giles
75e08b8620 Bug 1221656 - Update rust mp4parse to v0.1.4. r=kinetik
New upstream release.

- turn off debug trace messages by default.
- better rejection of bad ftyp boxes.
2015-11-04 10:15:00 -08:00
Ralph Giles
7c6d20d965 Bug 1221656 - Copy mp4parse.h in update-rust.sh. r=kinetik
We had added this header manually at some point, but the script
wasn't updating it.

Also bump the default mp4parse version to the latest.
2015-11-04 10:14:00 -08:00
Ralph Giles
62347f7023 Bug 1220882 - Use LazyLogModule in MP4Metadata. r=kinetik
Use the new LazyLogModule to instantiate a log for the rust
mp4parse test code instead of using indiscriminate printf()s.

Access results with NSPR_LOG_MODULES=MP4Metadata:5.
2015-11-02 16:19:00 -08:00
Ralph Giles
0f8b14b1fe Bug 1219047 - Call rust mp4parser with logging. r=kinetik
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.
2015-11-02 11:39:00 -08:00
Ralph Giles
38b78f20c9 Bug 1220754 - Update rust mp4parse to v0.1.3. r=kinetik
New upstream release.

- We now require rust 1.4 for Box::into_raw().
- New mp4parse::Error types.
- Fix memory exhaustion bug with bad ftyp boxes.
2015-11-02 10:15:00 -08:00