Commit Graph

95 Commits

Author SHA1 Message Date
trav90 d9cca66809 Prevent microseconds calculation overflow 2018-07-25 07:00:09 +08:00
trav90 2fe117fe1e [mp4] Remove parsing of creation date
We don't care about it for our use.
Additionally, gmtime and strftime are not thread safe at all and are potential crash points.
2018-07-25 06:59:50 +08:00
trav90 0e42c5d8c5 Crash fix: Check for overflow and that conversion succeeded 2018-07-25 06:59:48 +08:00
trav90 a8910c103e [mp4] Don't reject boxes that contains padding but can be easily skipped 2018-07-25 06:59:46 +08:00
Pale Moon 02731354d7 Fix memset sizes in rtt_filter.cc 2018-07-25 06:57:25 +08:00
Pale Moon 132522bfc9 Change the way maximum image dimensions are handled for PNG.
Prev: Hard cap width = 32k OR height = 32k
New: Hard cap width = 64k OR height = 64k, and image area < 256 Mpix
This will allow decoding of larger images with "strip" aspect ratio (horizontally or vertically).
2018-07-25 06:52:47 +08:00
rhinoduck a34855657d Integrate jxrlib into the build system
New build flag MOZ_JXR: enables/disables JXR support (enabled by
default).
2018-07-25 06:44:45 +08:00
rhinoduck 695c5a4836 Add jxrlib files 2018-07-25 06:44:43 +08:00
Pale Moon 9785283093 WebRTC: Limit combined size of RTCP APP packets. 2018-07-25 06:43:48 +08:00
trav90 b0dd7fbdd9 [mp4] Skip four bytes when we hit a zero length box 2018-07-25 06:42:30 +08:00
trav90 4f8e7a5731 Revert "Properly handle MP4 time offset in MoofParser" 2018-07-25 06:36:46 +08:00
trav90 ee6bb9e25d Revert "MP4 dts must use the same timeline as pts" 2018-07-25 06:36:44 +08:00
trav90 cd3cf81bba Rebase MP3 demuxer on MediaDataDemuxer interface 2018-07-25 06:35:47 +08:00
trav90 f466cc6b5a Add MP3 track demuxer 2018-07-25 06:35:45 +08:00
trav90 78948cd873 Silence another useless "error" message in libstagefright 2018-07-25 06:24:42 +08:00
trav90 ba52868b6b Change "error" in MPEG4Extractor into verbose only
This "error" appears in the terminal all the time when not using GStreamer to play MP4. It serves no purpose anymore and is a remnant of when stagefright would allocate a static buffer and do all its work there.
2018-07-25 06:24:10 +08:00
Pale Moon 2a62ebe479 Improve A/V sync part 2: Report actual number of frames written, and use it for ReleaseBuffer. 2018-07-25 06:21:49 +08:00
Pale Moon 092c0e2139 Improve A/V sync part 1: Account for stream and device latency.
Calculate proper delays and reintroduce stream audio clock.
2018-07-25 06:21:48 +08:00
trav90 9a6b3eb6b1 Use getter to access MediaRawData mData and mSize member 2018-07-25 01:31:17 +08:00
trav90 77aa7347d9 Fix build bustage in MPEG4Extractor header 2018-07-25 01:30:52 +08:00
trav90 5867d296b1 Ignore non-supported entries in edit list 2018-07-25 01:30:50 +08:00
trav90 0e08420f9c MP4 dts must use the same timeline as pts 2018-07-25 01:30:49 +08:00
trav90 02bb611252 Properly handle MP4 time offset in MoofParser 2018-07-25 01:30:47 +08:00
trav90 f7d3c3fea9 Properly handle MP4 starting offset 2018-07-25 01:30:45 +08:00
trav90 e86fca9ea3 Crash fix: Disable use of stagefright::String8::clear
Some parts of stagefright::String8 aren't threadsafe as they make use of static shared objects.
2018-07-25 01:30:43 +08:00
trav90 8cfee64c42 Properly set dts on plain MP4 media
This fixes a problem of frames being displayed out of order with some versions of LibAV/FFmpeg.
2018-07-25 01:30:41 +08:00
trav90 61cdb3ae72 Use MediaLargeByteBuffer, not MediaByteBuffer 2018-07-25 01:28:30 +08:00
trav90 91fb55b087 Do not allocate memory spanning across MP4 ftyp and moov atom
A typical non-fragmented mp4 would have the ftyp atom located at the beginning of the mp4 and the moov at the end. We would to calculate the location of the metadata by spanning the byte range of the two atoms. As such, we would typically allocate an amount of memory equivalent to the size of the mp4.

Instead we now reconstruct the metadata to only have the ftyp and moov atoms contiguously.
2018-07-25 01:28:19 +08:00
trav90 df0a9e3ddb Ignore invalid MP4 tracks 2018-07-25 01:28:10 +08:00
trav90 22c7029347 Never do blocking read if we don't have data 2018-07-25 01:28:01 +08:00
trav90 c78d266df2 Include ftyp box when parsing init segment 2018-07-25 01:21:33 +08:00
trav90 9a20ef534c Extend BufferStream to work with external buffer array
Also make BufferStream::AppendBytes fallible.
2018-07-25 01:21:30 +08:00
trav90 7cddfbff3c Add MP4Metadata method to retrieve init segment byte range 2018-07-25 01:21:28 +08:00
trav90 e210003812 Use MediaRawDataWriter to access MediaRawData::mCrypto
This is to make it consistent with accessing mData.
2018-07-25 01:21:22 +08:00
trav90 5faffc0065 Parse all trun boxes in MP4 fragments, not just the first one 2018-07-25 01:19:27 +08:00
trav90 e0fec017f3 Remove invalid assertion in MoofParser 2018-07-25 01:19:25 +08:00
trav90 8f2ed1c967 Crash fix: Use fallible array to store MP4 samples index 2018-07-25 01:19:23 +08:00
trav90 850786d1e4 Replace instance of stagefright::Vector with nsTArray 2018-07-25 01:19:21 +08:00
trav90 a6f5fdc72f Fix another typo 2018-07-25 01:19:19 +08:00
trav90 0a855126b2 Add support for the mp4v-es MPEG-4 codec 2018-07-25 01:19:17 +08:00
trav90 de98fbe9c5 Make stagefright work on big-endian systems 2018-07-25 01:19:14 +08:00
trav90 66e89e2014 Use QTv2 header when available 2018-07-25 01:19:12 +08:00
trav90 d6335febb4 Rename LargeDataBuffer and DataBuffer objects
This prevents conflicts and crashes with WebRTC libs that use those names already. Some linkers appear to get it wrong and calls the destructor of the wrong class.
2018-07-25 01:19:09 +08:00
trav90 1bd24949dc Properly handle box size marked as 0
This indicates that the box goes to the end of the file.
2018-07-25 01:19:07 +08:00
trav90 594cf3f51b Remove unused header 2018-07-25 01:19:00 +08:00
trav90 c39022c3c5 Use new MoofParser::HasMetadata in MP4Metadata
This allows MP4Reader::ReadMetadata() to not be unecessarily blocking on partial init segment.
2018-07-25 01:18:58 +08:00
trav90 610a9e101b Add MoofParser::HasMetadata method
Allows to check if we have a full MP4 metadata's atom available in our stream.
2018-07-25 01:18:56 +08:00
trav90 1c861007ca Add ResourceStream class
A Stream abstract over a MediaResource.
2018-07-25 01:18:54 +08:00
trav90 a2daa59046 Add MP4Metadata class
This allows us to abstract the calls to libstagefright and allows future replacement with our own code.
2018-07-25 01:18:53 +08:00
trav90 52d5912e97 Remove MP4 Index's libstagefright dependency 2018-07-25 01:18:47 +08:00