From d0b757886eecaba9546af8ad0f4d354b85a8c0bf Mon Sep 17 00:00:00 2001 From: ibaker Date: Thu, 9 Jan 2025 10:02:22 -0800 Subject: [PATCH] Fix handling of length-delimited NAL units with 1 or 2 byte length ExoPlayer assumed 4-bytes for length in two places (by assuming the length is the same as the 4-byte NAL start code): 1. In `AvcConfig` we transform length-delimited to start-delimited before writing into `initializationData`, and then skip 'nal unit length field' bytes when parsing from `initializationData` (when we should skip 'start code length' bytes instead). 2. In `Mp4Extractor.readSample` we modify the local variable `sampleSize` to fix the difference between length field length and start code length, but **only on the first attempt to read a sample**. If we are resuming in the middle of reading a sample (after a recoverable I/O error), this fix for `sampleSize` is not done, which means we end up missing the last 2-3 bytes of the sample when the NAL length is 1-2 bytes. * This is fixed by moving the `sampleSize` 'fixing' code to outside the `if (sampleCurrentNalBytesRemaining == 0)` block. * `FragmentedMp4Extractor` has very similar code, but uses a field for `sampleSize`, rather than a local, so doesn't look vulnerable to the same problem (though I haven't totally tested this). This change adds a test file with 2-byte NAL lengths, generated by hacking the media3 muxer to emit 2-byte NAL lengths and transforming `sample.mp4` using the transformer demo app. PiperOrigin-RevId: 713709203 --- RELEASENOTES.md | 2 + .../androidx/media3/extractor/AvcConfig.java | 2 +- .../media3/extractor/mp4/Mp4Extractor.java | 2 +- .../mp4/Mp4ExtractorParameterizedTest.java | 6 + .../mp4/sample_2_byte_NAL_length.mp4.0.dump | 350 ++++++++++++++++++ .../mp4/sample_2_byte_NAL_length.mp4.1.dump | 298 +++++++++++++++ .../mp4/sample_2_byte_NAL_length.mp4.2.dump | 238 ++++++++++++ .../mp4/sample_2_byte_NAL_length.mp4.3.dump | 178 +++++++++ ...ding_within_gop_sample_dependencies.0.dump | 350 ++++++++++++++++++ ...ding_within_gop_sample_dependencies.1.dump | 298 +++++++++++++++ ...ding_within_gop_sample_dependencies.2.dump | 238 ++++++++++++ ...ding_within_gop_sample_dependencies.3.dump | 178 +++++++++ ...op_sample_dependencies.unknown_length.dump | 350 ++++++++++++++++++ ..._2_byte_NAL_length.mp4.unknown_length.dump | 350 ++++++++++++++++++ .../media/mp4/sample_2_byte_NAL_length.mp4 | Bin 0 -> 499395 bytes 15 files changed, 2838 insertions(+), 2 deletions(-) create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.0.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.1.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.2.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.3.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.reading_within_gop_sample_dependencies.0.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.reading_within_gop_sample_dependencies.1.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.reading_within_gop_sample_dependencies.2.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.reading_within_gop_sample_dependencies.3.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.reading_within_gop_sample_dependencies.unknown_length.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.unknown_length.dump create mode 100644 libraries/test_data/src/test/assets/media/mp4/sample_2_byte_NAL_length.mp4 diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 0963e9142c..efef6131a5 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -22,6 +22,8 @@ `Transformer.Builder.setUsePlatformDiagnostics(false)`. * Track Selection: * Extractors: + * Fix handling of NAL units with lengths expressed in 1 or 2 bytes (rather + than 4). * DataSource: * Audio: * Do not bypass `SonicAudioProcessor` when `SpeedChangingAudioProcessor` diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/AvcConfig.java b/libraries/extractor/src/main/java/androidx/media3/extractor/AvcConfig.java index 937a8009b2..49d03c72bf 100644 --- a/libraries/extractor/src/main/java/androidx/media3/extractor/AvcConfig.java +++ b/libraries/extractor/src/main/java/androidx/media3/extractor/AvcConfig.java @@ -71,7 +71,7 @@ public final class AvcConfig { byte[] sps = initializationData.get(0); SpsData spsData = NalUnitUtil.parseSpsNalUnit( - initializationData.get(0), nalUnitLengthFieldLength, sps.length); + initializationData.get(0), NalUnitUtil.NAL_START_CODE.length, sps.length); width = spsData.width; height = spsData.height; bitdepthLuma = spsData.bitDepthLumaMinus8 + 8; diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/Mp4Extractor.java b/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/Mp4Extractor.java index 3891f27879..0f0e4be0e2 100644 --- a/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/Mp4Extractor.java +++ b/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/Mp4Extractor.java @@ -893,6 +893,7 @@ public final class Mp4Extractor implements Extractor, SeekMap { nalPrefixData[1] = 0; nalPrefixData[2] = 0; int nalUnitLengthFieldLengthDiff = 4 - track.track.nalUnitLengthFieldLength; + sampleSize += nalUnitLengthFieldLengthDiff; // NAL units are length delimited, but the decoder requires start code delimited units. // Loop until we've written the sample to the track output, replacing length delimiters with // start codes as we encounter them. @@ -928,7 +929,6 @@ public final class Mp4Extractor implements Extractor, SeekMap { nalStartCode.setPosition(0); trackOutput.sampleData(nalStartCode, 4); sampleBytesWritten += 4; - sampleSize += nalUnitLengthFieldLengthDiff; if (numberOfBytesToDetermineSampleDependencies > 0) { // Write the first NAL unit bytes that were read. trackOutput.sampleData(nalPrefix, numberOfBytesToDetermineSampleDependencies); diff --git a/libraries/extractor/src/test/java/androidx/media3/extractor/mp4/Mp4ExtractorParameterizedTest.java b/libraries/extractor/src/test/java/androidx/media3/extractor/mp4/Mp4ExtractorParameterizedTest.java index 57c1619933..1499ad76aa 100644 --- a/libraries/extractor/src/test/java/androidx/media3/extractor/mp4/Mp4ExtractorParameterizedTest.java +++ b/libraries/extractor/src/test/java/androidx/media3/extractor/mp4/Mp4ExtractorParameterizedTest.java @@ -249,6 +249,12 @@ public final class Mp4ExtractorParameterizedTest { assertExtractorBehavior("media/mp4/h265_bframes.mp4"); } + // b/386847142 + @Test + public void mp4SampleWithTwoByteNalLength() throws Exception { + assertExtractorBehavior("media/mp4/sample_2_byte_NAL_length.mp4"); + } + private void assertExtractorBehavior(String file) throws IOException { ExtractorAsserts.AssertionConfig.Builder assertionConfigBuilder = new ExtractorAsserts.AssertionConfig.Builder(); diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.0.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.0.dump new file mode 100644 index 0000000000..8d01b8844d --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.0.dump @@ -0,0 +1,350 @@ +seekMap: + isSeekable = true + duration = 1045300 + getPosition(0) = [[timeUs=0, position=400052]] + getPosition(1) = [[timeUs=0, position=400052]] + getPosition(522650) = [[timeUs=0, position=400052]] + getPosition(1045300) = [[timeUs=0, position=400052]] +numberOfTracks = 2 +track 0: + total output bytes = 89876 + sample count = 30 + track duration = 1001000 + format 0: + id = 1 + containerMimeType = video/mp4 + sampleMimeType = video/avc + codecs = avc1.64001F + maxInputSize = 36718 + maxNumReorderSamples = 2 + width = 1080 + height = 720 + frameRate = 29.97 + colorInfo: + colorSpace = 1 + colorRange = 2 + colorTransfer = 3 + lumaBitdepth = 8 + chromaBitdepth = 8 + metadata = entries=[xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=10000] + initializationData: + data = length 29, hash 4746B5D9 + data = length 10, hash 7A0D0F2B + sample 0: + time = 0 + flags = 1 + data = length 36690, hash 32D73AE + sample 1: + time = 66733 + flags = 0 + data = length 5312, hash D45D3CA0 + sample 2: + time = 33366 + flags = 0 + data = length 599, hash 1BE7812D + sample 3: + time = 200200 + flags = 0 + data = length 7735, hash 4490F110 + sample 4: + time = 133466 + flags = 0 + data = length 987, hash 560B5036 + sample 5: + time = 100100 + flags = 0 + data = length 673, hash ED7CD8C7 + sample 6: + time = 166833 + flags = 0 + data = length 523, hash 3020DF50 + sample 7: + time = 333666 + flags = 0 + data = length 6061, hash 736C72B2 + sample 8: + time = 266933 + flags = 0 + data = length 992, hash FE132F23 + sample 9: + time = 233566 + flags = 0 + data = length 623, hash 5B2C1816 + sample 10: + time = 300300 + flags = 0 + data = length 421, hash 742E69C1 + sample 11: + time = 433766 + flags = 0 + data = length 4899, hash F72F86A1 + sample 12: + time = 400400 + flags = 0 + data = length 568, hash 519A8E50 + sample 13: + time = 367033 + flags = 0 + data = length 620, hash 3990AA39 + sample 14: + time = 567233 + flags = 0 + data = length 5450, hash F06EC4AA + sample 15: + time = 500500 + flags = 0 + data = length 1051, hash 92DFA63A + sample 16: + time = 467133 + flags = 0 + data = length 874, hash 69587FB4 + sample 17: + time = 533866 + flags = 0 + data = length 781, hash 36BE495B + sample 18: + time = 700700 + flags = 0 + data = length 4725, hash AC0C8CD3 + sample 19: + time = 633966 + flags = 0 + data = length 1022, hash 5D8BFF34 + sample 20: + time = 600600 + flags = 0 + data = length 790, hash 99413A99 + sample 21: + time = 667333 + flags = 0 + data = length 610, hash 5E129290 + sample 22: + time = 834166 + flags = 0 + data = length 2751, hash 769974CB + sample 23: + time = 767433 + flags = 0 + data = length 745, hash B78A477A + sample 24: + time = 734066 + flags = 0 + data = length 621, hash CF741E7A + sample 25: + time = 800800 + flags = 0 + data = length 505, hash 1DB4894E + sample 26: + time = 967633 + flags = 0 + data = length 1268, hash C15348DC + sample 27: + time = 900900 + flags = 0 + data = length 880, hash C2DE85D0 + sample 28: + time = 867533 + flags = 0 + data = length 530, hash C98BC6A8 + sample 29: + time = 934266 + flags = 536870912 + data = length 568, hash 4FE5C8EA +track 1: + total output bytes = 9529 + sample count = 45 + track duration = 1045300 + format 0: + peakBitrate = 200000 + id = 2 + containerMimeType = video/mp4 + sampleMimeType = audio/mp4a-latm + codecs = mp4a.40.2 + maxInputSize = 294 + channelCount = 1 + sampleRate = 44100 + language = und + metadata = entries=[xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=10000] + initializationData: + data = length 2, hash 5F7 + sample 0: + time = 44000 + flags = 1 + data = length 23, hash 47DE9131 + sample 1: + time = 67229 + flags = 1 + data = length 6, hash 31EC5206 + sample 2: + time = 90458 + flags = 1 + data = length 148, hash 894A176B + sample 3: + time = 113687 + flags = 1 + data = length 189, hash CEF235A1 + sample 4: + time = 136916 + flags = 1 + data = length 205, hash BBF5F7B0 + sample 5: + time = 160145 + flags = 1 + data = length 210, hash F278B193 + sample 6: + time = 183375 + flags = 1 + data = length 210, hash 82DA1589 + sample 7: + time = 206604 + flags = 1 + data = length 207, hash 5BE231DF + sample 8: + time = 229833 + flags = 1 + data = length 225, hash 18819EE1 + sample 9: + time = 253062 + flags = 1 + data = length 215, hash CA7FA67B + sample 10: + time = 276291 + flags = 1 + data = length 211, hash 581A1C18 + sample 11: + time = 299520 + flags = 1 + data = length 216, hash ADB88187 + sample 12: + time = 322750 + flags = 1 + data = length 229, hash 2E8BA4DC + sample 13: + time = 345979 + flags = 1 + data = length 232, hash 22F0C510 + sample 14: + time = 369208 + flags = 1 + data = length 235, hash 867AD0DC + sample 15: + time = 392437 + flags = 1 + data = length 231, hash 84E823A8 + sample 16: + time = 415666 + flags = 1 + data = length 226, hash 1BEF3A95 + sample 17: + time = 438895 + flags = 1 + data = length 216, hash EAA345AE + sample 18: + time = 462125 + flags = 1 + data = length 229, hash 6957411F + sample 19: + time = 485354 + flags = 1 + data = length 219, hash 41275022 + sample 20: + time = 508583 + flags = 1 + data = length 241, hash 6495DF96 + sample 21: + time = 531812 + flags = 1 + data = length 228, hash 63D95906 + sample 22: + time = 555041 + flags = 1 + data = length 238, hash 34F676F9 + sample 23: + time = 578270 + flags = 1 + data = length 234, hash E5CBC045 + sample 24: + time = 601500 + flags = 1 + data = length 231, hash 5FC43661 + sample 25: + time = 624729 + flags = 1 + data = length 217, hash 682708ED + sample 26: + time = 647958 + flags = 1 + data = length 239, hash D43780FC + sample 27: + time = 671187 + flags = 1 + data = length 243, hash C5E17980 + sample 28: + time = 694416 + flags = 1 + data = length 231, hash AC5837BA + sample 29: + time = 717645 + flags = 1 + data = length 230, hash 169EE895 + sample 30: + time = 740875 + flags = 1 + data = length 238, hash C48FF3F1 + sample 31: + time = 764104 + flags = 1 + data = length 225, hash 531E4599 + sample 32: + time = 787333 + flags = 1 + data = length 232, hash CB3C6B8D + sample 33: + time = 810562 + flags = 1 + data = length 243, hash F8C94C7 + sample 34: + time = 833791 + flags = 1 + data = length 232, hash A646A7D0 + sample 35: + time = 857020 + flags = 1 + data = length 237, hash E8B787A5 + sample 36: + time = 880250 + flags = 1 + data = length 228, hash 3FA7A29F + sample 37: + time = 903479 + flags = 1 + data = length 235, hash B9B33B0A + sample 38: + time = 926708 + flags = 1 + data = length 264, hash 71A4869E + sample 39: + time = 949937 + flags = 1 + data = length 257, hash D049B54C + sample 40: + time = 973166 + flags = 1 + data = length 227, hash 66757231 + sample 41: + time = 996395 + flags = 1 + data = length 227, hash BD374F1B + sample 42: + time = 1019625 + flags = 1 + data = length 235, hash 999477F6 + sample 43: + time = 1042854 + flags = 1 + data = length 229, hash FFF98DF0 + sample 44: + time = 1066083 + flags = 536870913 + data = length 6, hash 31B22286 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.1.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.1.dump new file mode 100644 index 0000000000..80a14bbc91 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.1.dump @@ -0,0 +1,298 @@ +seekMap: + isSeekable = true + duration = 1045300 + getPosition(0) = [[timeUs=0, position=400052]] + getPosition(1) = [[timeUs=0, position=400052]] + getPosition(522650) = [[timeUs=0, position=400052]] + getPosition(1045300) = [[timeUs=0, position=400052]] +numberOfTracks = 2 +track 0: + total output bytes = 89876 + sample count = 30 + track duration = 1001000 + format 0: + id = 1 + containerMimeType = video/mp4 + sampleMimeType = video/avc + codecs = avc1.64001F + maxInputSize = 36718 + maxNumReorderSamples = 2 + width = 1080 + height = 720 + frameRate = 29.97 + colorInfo: + colorSpace = 1 + colorRange = 2 + colorTransfer = 3 + lumaBitdepth = 8 + chromaBitdepth = 8 + metadata = entries=[xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=10000] + initializationData: + data = length 29, hash 4746B5D9 + data = length 10, hash 7A0D0F2B + sample 0: + time = 0 + flags = 1 + data = length 36690, hash 32D73AE + sample 1: + time = 66733 + flags = 0 + data = length 5312, hash D45D3CA0 + sample 2: + time = 33366 + flags = 0 + data = length 599, hash 1BE7812D + sample 3: + time = 200200 + flags = 0 + data = length 7735, hash 4490F110 + sample 4: + time = 133466 + flags = 0 + data = length 987, hash 560B5036 + sample 5: + time = 100100 + flags = 0 + data = length 673, hash ED7CD8C7 + sample 6: + time = 166833 + flags = 0 + data = length 523, hash 3020DF50 + sample 7: + time = 333666 + flags = 0 + data = length 6061, hash 736C72B2 + sample 8: + time = 266933 + flags = 0 + data = length 992, hash FE132F23 + sample 9: + time = 233566 + flags = 0 + data = length 623, hash 5B2C1816 + sample 10: + time = 300300 + flags = 0 + data = length 421, hash 742E69C1 + sample 11: + time = 433766 + flags = 0 + data = length 4899, hash F72F86A1 + sample 12: + time = 400400 + flags = 0 + data = length 568, hash 519A8E50 + sample 13: + time = 367033 + flags = 0 + data = length 620, hash 3990AA39 + sample 14: + time = 567233 + flags = 0 + data = length 5450, hash F06EC4AA + sample 15: + time = 500500 + flags = 0 + data = length 1051, hash 92DFA63A + sample 16: + time = 467133 + flags = 0 + data = length 874, hash 69587FB4 + sample 17: + time = 533866 + flags = 0 + data = length 781, hash 36BE495B + sample 18: + time = 700700 + flags = 0 + data = length 4725, hash AC0C8CD3 + sample 19: + time = 633966 + flags = 0 + data = length 1022, hash 5D8BFF34 + sample 20: + time = 600600 + flags = 0 + data = length 790, hash 99413A99 + sample 21: + time = 667333 + flags = 0 + data = length 610, hash 5E129290 + sample 22: + time = 834166 + flags = 0 + data = length 2751, hash 769974CB + sample 23: + time = 767433 + flags = 0 + data = length 745, hash B78A477A + sample 24: + time = 734066 + flags = 0 + data = length 621, hash CF741E7A + sample 25: + time = 800800 + flags = 0 + data = length 505, hash 1DB4894E + sample 26: + time = 967633 + flags = 0 + data = length 1268, hash C15348DC + sample 27: + time = 900900 + flags = 0 + data = length 880, hash C2DE85D0 + sample 28: + time = 867533 + flags = 0 + data = length 530, hash C98BC6A8 + sample 29: + time = 934266 + flags = 536870912 + data = length 568, hash 4FE5C8EA +track 1: + total output bytes = 7235 + sample count = 32 + track duration = 1045300 + format 0: + peakBitrate = 200000 + id = 2 + containerMimeType = video/mp4 + sampleMimeType = audio/mp4a-latm + codecs = mp4a.40.2 + maxInputSize = 294 + channelCount = 1 + sampleRate = 44100 + language = und + metadata = entries=[xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=10000] + initializationData: + data = length 2, hash 5F7 + sample 0: + time = 345979 + flags = 1 + data = length 232, hash 22F0C510 + sample 1: + time = 369208 + flags = 1 + data = length 235, hash 867AD0DC + sample 2: + time = 392437 + flags = 1 + data = length 231, hash 84E823A8 + sample 3: + time = 415666 + flags = 1 + data = length 226, hash 1BEF3A95 + sample 4: + time = 438895 + flags = 1 + data = length 216, hash EAA345AE + sample 5: + time = 462125 + flags = 1 + data = length 229, hash 6957411F + sample 6: + time = 485354 + flags = 1 + data = length 219, hash 41275022 + sample 7: + time = 508583 + flags = 1 + data = length 241, hash 6495DF96 + sample 8: + time = 531812 + flags = 1 + data = length 228, hash 63D95906 + sample 9: + time = 555041 + flags = 1 + data = length 238, hash 34F676F9 + sample 10: + time = 578270 + flags = 1 + data = length 234, hash E5CBC045 + sample 11: + time = 601500 + flags = 1 + data = length 231, hash 5FC43661 + sample 12: + time = 624729 + flags = 1 + data = length 217, hash 682708ED + sample 13: + time = 647958 + flags = 1 + data = length 239, hash D43780FC + sample 14: + time = 671187 + flags = 1 + data = length 243, hash C5E17980 + sample 15: + time = 694416 + flags = 1 + data = length 231, hash AC5837BA + sample 16: + time = 717645 + flags = 1 + data = length 230, hash 169EE895 + sample 17: + time = 740875 + flags = 1 + data = length 238, hash C48FF3F1 + sample 18: + time = 764104 + flags = 1 + data = length 225, hash 531E4599 + sample 19: + time = 787333 + flags = 1 + data = length 232, hash CB3C6B8D + sample 20: + time = 810562 + flags = 1 + data = length 243, hash F8C94C7 + sample 21: + time = 833791 + flags = 1 + data = length 232, hash A646A7D0 + sample 22: + time = 857020 + flags = 1 + data = length 237, hash E8B787A5 + sample 23: + time = 880250 + flags = 1 + data = length 228, hash 3FA7A29F + sample 24: + time = 903479 + flags = 1 + data = length 235, hash B9B33B0A + sample 25: + time = 926708 + flags = 1 + data = length 264, hash 71A4869E + sample 26: + time = 949937 + flags = 1 + data = length 257, hash D049B54C + sample 27: + time = 973166 + flags = 1 + data = length 227, hash 66757231 + sample 28: + time = 996395 + flags = 1 + data = length 227, hash BD374F1B + sample 29: + time = 1019625 + flags = 1 + data = length 235, hash 999477F6 + sample 30: + time = 1042854 + flags = 1 + data = length 229, hash FFF98DF0 + sample 31: + time = 1066083 + flags = 536870913 + data = length 6, hash 31B22286 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.2.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.2.dump new file mode 100644 index 0000000000..98948f4a8a --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.2.dump @@ -0,0 +1,238 @@ +seekMap: + isSeekable = true + duration = 1045300 + getPosition(0) = [[timeUs=0, position=400052]] + getPosition(1) = [[timeUs=0, position=400052]] + getPosition(522650) = [[timeUs=0, position=400052]] + getPosition(1045300) = [[timeUs=0, position=400052]] +numberOfTracks = 2 +track 0: + total output bytes = 89876 + sample count = 30 + track duration = 1001000 + format 0: + id = 1 + containerMimeType = video/mp4 + sampleMimeType = video/avc + codecs = avc1.64001F + maxInputSize = 36718 + maxNumReorderSamples = 2 + width = 1080 + height = 720 + frameRate = 29.97 + colorInfo: + colorSpace = 1 + colorRange = 2 + colorTransfer = 3 + lumaBitdepth = 8 + chromaBitdepth = 8 + metadata = entries=[xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=10000] + initializationData: + data = length 29, hash 4746B5D9 + data = length 10, hash 7A0D0F2B + sample 0: + time = 0 + flags = 1 + data = length 36690, hash 32D73AE + sample 1: + time = 66733 + flags = 0 + data = length 5312, hash D45D3CA0 + sample 2: + time = 33366 + flags = 0 + data = length 599, hash 1BE7812D + sample 3: + time = 200200 + flags = 0 + data = length 7735, hash 4490F110 + sample 4: + time = 133466 + flags = 0 + data = length 987, hash 560B5036 + sample 5: + time = 100100 + flags = 0 + data = length 673, hash ED7CD8C7 + sample 6: + time = 166833 + flags = 0 + data = length 523, hash 3020DF50 + sample 7: + time = 333666 + flags = 0 + data = length 6061, hash 736C72B2 + sample 8: + time = 266933 + flags = 0 + data = length 992, hash FE132F23 + sample 9: + time = 233566 + flags = 0 + data = length 623, hash 5B2C1816 + sample 10: + time = 300300 + flags = 0 + data = length 421, hash 742E69C1 + sample 11: + time = 433766 + flags = 0 + data = length 4899, hash F72F86A1 + sample 12: + time = 400400 + flags = 0 + data = length 568, hash 519A8E50 + sample 13: + time = 367033 + flags = 0 + data = length 620, hash 3990AA39 + sample 14: + time = 567233 + flags = 0 + data = length 5450, hash F06EC4AA + sample 15: + time = 500500 + flags = 0 + data = length 1051, hash 92DFA63A + sample 16: + time = 467133 + flags = 0 + data = length 874, hash 69587FB4 + sample 17: + time = 533866 + flags = 0 + data = length 781, hash 36BE495B + sample 18: + time = 700700 + flags = 0 + data = length 4725, hash AC0C8CD3 + sample 19: + time = 633966 + flags = 0 + data = length 1022, hash 5D8BFF34 + sample 20: + time = 600600 + flags = 0 + data = length 790, hash 99413A99 + sample 21: + time = 667333 + flags = 0 + data = length 610, hash 5E129290 + sample 22: + time = 834166 + flags = 0 + data = length 2751, hash 769974CB + sample 23: + time = 767433 + flags = 0 + data = length 745, hash B78A477A + sample 24: + time = 734066 + flags = 0 + data = length 621, hash CF741E7A + sample 25: + time = 800800 + flags = 0 + data = length 505, hash 1DB4894E + sample 26: + time = 967633 + flags = 0 + data = length 1268, hash C15348DC + sample 27: + time = 900900 + flags = 0 + data = length 880, hash C2DE85D0 + sample 28: + time = 867533 + flags = 0 + data = length 530, hash C98BC6A8 + sample 29: + time = 934266 + flags = 536870912 + data = length 568, hash 4FE5C8EA +track 1: + total output bytes = 3776 + sample count = 17 + track duration = 1045300 + format 0: + peakBitrate = 200000 + id = 2 + containerMimeType = video/mp4 + sampleMimeType = audio/mp4a-latm + codecs = mp4a.40.2 + maxInputSize = 294 + channelCount = 1 + sampleRate = 44100 + language = und + metadata = entries=[xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=10000] + initializationData: + data = length 2, hash 5F7 + sample 0: + time = 694416 + flags = 1 + data = length 231, hash AC5837BA + sample 1: + time = 717645 + flags = 1 + data = length 230, hash 169EE895 + sample 2: + time = 740875 + flags = 1 + data = length 238, hash C48FF3F1 + sample 3: + time = 764104 + flags = 1 + data = length 225, hash 531E4599 + sample 4: + time = 787333 + flags = 1 + data = length 232, hash CB3C6B8D + sample 5: + time = 810562 + flags = 1 + data = length 243, hash F8C94C7 + sample 6: + time = 833791 + flags = 1 + data = length 232, hash A646A7D0 + sample 7: + time = 857020 + flags = 1 + data = length 237, hash E8B787A5 + sample 8: + time = 880250 + flags = 1 + data = length 228, hash 3FA7A29F + sample 9: + time = 903479 + flags = 1 + data = length 235, hash B9B33B0A + sample 10: + time = 926708 + flags = 1 + data = length 264, hash 71A4869E + sample 11: + time = 949937 + flags = 1 + data = length 257, hash D049B54C + sample 12: + time = 973166 + flags = 1 + data = length 227, hash 66757231 + sample 13: + time = 996395 + flags = 1 + data = length 227, hash BD374F1B + sample 14: + time = 1019625 + flags = 1 + data = length 235, hash 999477F6 + sample 15: + time = 1042854 + flags = 1 + data = length 229, hash FFF98DF0 + sample 16: + time = 1066083 + flags = 536870913 + data = length 6, hash 31B22286 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.3.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.3.dump new file mode 100644 index 0000000000..c1de6429b4 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.3.dump @@ -0,0 +1,178 @@ +seekMap: + isSeekable = true + duration = 1045300 + getPosition(0) = [[timeUs=0, position=400052]] + getPosition(1) = [[timeUs=0, position=400052]] + getPosition(522650) = [[timeUs=0, position=400052]] + getPosition(1045300) = [[timeUs=0, position=400052]] +numberOfTracks = 2 +track 0: + total output bytes = 89876 + sample count = 30 + track duration = 1001000 + format 0: + id = 1 + containerMimeType = video/mp4 + sampleMimeType = video/avc + codecs = avc1.64001F + maxInputSize = 36718 + maxNumReorderSamples = 2 + width = 1080 + height = 720 + frameRate = 29.97 + colorInfo: + colorSpace = 1 + colorRange = 2 + colorTransfer = 3 + lumaBitdepth = 8 + chromaBitdepth = 8 + metadata = entries=[xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=10000] + initializationData: + data = length 29, hash 4746B5D9 + data = length 10, hash 7A0D0F2B + sample 0: + time = 0 + flags = 1 + data = length 36690, hash 32D73AE + sample 1: + time = 66733 + flags = 0 + data = length 5312, hash D45D3CA0 + sample 2: + time = 33366 + flags = 0 + data = length 599, hash 1BE7812D + sample 3: + time = 200200 + flags = 0 + data = length 7735, hash 4490F110 + sample 4: + time = 133466 + flags = 0 + data = length 987, hash 560B5036 + sample 5: + time = 100100 + flags = 0 + data = length 673, hash ED7CD8C7 + sample 6: + time = 166833 + flags = 0 + data = length 523, hash 3020DF50 + sample 7: + time = 333666 + flags = 0 + data = length 6061, hash 736C72B2 + sample 8: + time = 266933 + flags = 0 + data = length 992, hash FE132F23 + sample 9: + time = 233566 + flags = 0 + data = length 623, hash 5B2C1816 + sample 10: + time = 300300 + flags = 0 + data = length 421, hash 742E69C1 + sample 11: + time = 433766 + flags = 0 + data = length 4899, hash F72F86A1 + sample 12: + time = 400400 + flags = 0 + data = length 568, hash 519A8E50 + sample 13: + time = 367033 + flags = 0 + data = length 620, hash 3990AA39 + sample 14: + time = 567233 + flags = 0 + data = length 5450, hash F06EC4AA + sample 15: + time = 500500 + flags = 0 + data = length 1051, hash 92DFA63A + sample 16: + time = 467133 + flags = 0 + data = length 874, hash 69587FB4 + sample 17: + time = 533866 + flags = 0 + data = length 781, hash 36BE495B + sample 18: + time = 700700 + flags = 0 + data = length 4725, hash AC0C8CD3 + sample 19: + time = 633966 + flags = 0 + data = length 1022, hash 5D8BFF34 + sample 20: + time = 600600 + flags = 0 + data = length 790, hash 99413A99 + sample 21: + time = 667333 + flags = 0 + data = length 610, hash 5E129290 + sample 22: + time = 834166 + flags = 0 + data = length 2751, hash 769974CB + sample 23: + time = 767433 + flags = 0 + data = length 745, hash B78A477A + sample 24: + time = 734066 + flags = 0 + data = length 621, hash CF741E7A + sample 25: + time = 800800 + flags = 0 + data = length 505, hash 1DB4894E + sample 26: + time = 967633 + flags = 0 + data = length 1268, hash C15348DC + sample 27: + time = 900900 + flags = 0 + data = length 880, hash C2DE85D0 + sample 28: + time = 867533 + flags = 0 + data = length 530, hash C98BC6A8 + sample 29: + time = 934266 + flags = 536870912 + data = length 568, hash 4FE5C8EA +track 1: + total output bytes = 235 + sample count = 2 + track duration = 1045300 + format 0: + peakBitrate = 200000 + id = 2 + containerMimeType = video/mp4 + sampleMimeType = audio/mp4a-latm + codecs = mp4a.40.2 + maxInputSize = 294 + channelCount = 1 + sampleRate = 44100 + language = und + metadata = entries=[xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=10000] + initializationData: + data = length 2, hash 5F7 + sample 0: + time = 1042854 + flags = 1 + data = length 229, hash FFF98DF0 + sample 1: + time = 1066083 + flags = 536870913 + data = length 6, hash 31B22286 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.reading_within_gop_sample_dependencies.0.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.reading_within_gop_sample_dependencies.0.dump new file mode 100644 index 0000000000..cce331d9a6 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.reading_within_gop_sample_dependencies.0.dump @@ -0,0 +1,350 @@ +seekMap: + isSeekable = true + duration = 1045300 + getPosition(0) = [[timeUs=0, position=400052]] + getPosition(1) = [[timeUs=0, position=400052]] + getPosition(522650) = [[timeUs=0, position=400052]] + getPosition(1045300) = [[timeUs=0, position=400052]] +numberOfTracks = 2 +track 0: + total output bytes = 89876 + sample count = 30 + track duration = 1001000 + format 0: + id = 1 + containerMimeType = video/mp4 + sampleMimeType = video/avc + codecs = avc1.64001F + maxInputSize = 36718 + maxNumReorderSamples = 2 + width = 1080 + height = 720 + frameRate = 29.97 + colorInfo: + colorSpace = 1 + colorRange = 2 + colorTransfer = 3 + lumaBitdepth = 8 + chromaBitdepth = 8 + metadata = entries=[xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=10000] + initializationData: + data = length 29, hash 4746B5D9 + data = length 10, hash 7A0D0F2B + sample 0: + time = 0 + flags = 1 + data = length 36690, hash 32D73AE + sample 1: + time = 66733 + flags = 0 + data = length 5312, hash D45D3CA0 + sample 2: + time = 33366 + flags = 67108864 + data = length 599, hash 1BE7812D + sample 3: + time = 200200 + flags = 0 + data = length 7735, hash 4490F110 + sample 4: + time = 133466 + flags = 0 + data = length 987, hash 560B5036 + sample 5: + time = 100100 + flags = 67108864 + data = length 673, hash ED7CD8C7 + sample 6: + time = 166833 + flags = 67108864 + data = length 523, hash 3020DF50 + sample 7: + time = 333666 + flags = 0 + data = length 6061, hash 736C72B2 + sample 8: + time = 266933 + flags = 0 + data = length 992, hash FE132F23 + sample 9: + time = 233566 + flags = 67108864 + data = length 623, hash 5B2C1816 + sample 10: + time = 300300 + flags = 67108864 + data = length 421, hash 742E69C1 + sample 11: + time = 433766 + flags = 0 + data = length 4899, hash F72F86A1 + sample 12: + time = 400400 + flags = 0 + data = length 568, hash 519A8E50 + sample 13: + time = 367033 + flags = 67108864 + data = length 620, hash 3990AA39 + sample 14: + time = 567233 + flags = 0 + data = length 5450, hash F06EC4AA + sample 15: + time = 500500 + flags = 0 + data = length 1051, hash 92DFA63A + sample 16: + time = 467133 + flags = 67108864 + data = length 874, hash 69587FB4 + sample 17: + time = 533866 + flags = 67108864 + data = length 781, hash 36BE495B + sample 18: + time = 700700 + flags = 0 + data = length 4725, hash AC0C8CD3 + sample 19: + time = 633966 + flags = 0 + data = length 1022, hash 5D8BFF34 + sample 20: + time = 600600 + flags = 67108864 + data = length 790, hash 99413A99 + sample 21: + time = 667333 + flags = 67108864 + data = length 610, hash 5E129290 + sample 22: + time = 834166 + flags = 0 + data = length 2751, hash 769974CB + sample 23: + time = 767433 + flags = 0 + data = length 745, hash B78A477A + sample 24: + time = 734066 + flags = 67108864 + data = length 621, hash CF741E7A + sample 25: + time = 800800 + flags = 67108864 + data = length 505, hash 1DB4894E + sample 26: + time = 967633 + flags = 0 + data = length 1268, hash C15348DC + sample 27: + time = 900900 + flags = 0 + data = length 880, hash C2DE85D0 + sample 28: + time = 867533 + flags = 67108864 + data = length 530, hash C98BC6A8 + sample 29: + time = 934266 + flags = 603979776 + data = length 568, hash 4FE5C8EA +track 1: + total output bytes = 9529 + sample count = 45 + track duration = 1045300 + format 0: + peakBitrate = 200000 + id = 2 + containerMimeType = video/mp4 + sampleMimeType = audio/mp4a-latm + codecs = mp4a.40.2 + maxInputSize = 294 + channelCount = 1 + sampleRate = 44100 + language = und + metadata = entries=[xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=10000] + initializationData: + data = length 2, hash 5F7 + sample 0: + time = 44000 + flags = 1 + data = length 23, hash 47DE9131 + sample 1: + time = 67229 + flags = 1 + data = length 6, hash 31EC5206 + sample 2: + time = 90458 + flags = 1 + data = length 148, hash 894A176B + sample 3: + time = 113687 + flags = 1 + data = length 189, hash CEF235A1 + sample 4: + time = 136916 + flags = 1 + data = length 205, hash BBF5F7B0 + sample 5: + time = 160145 + flags = 1 + data = length 210, hash F278B193 + sample 6: + time = 183375 + flags = 1 + data = length 210, hash 82DA1589 + sample 7: + time = 206604 + flags = 1 + data = length 207, hash 5BE231DF + sample 8: + time = 229833 + flags = 1 + data = length 225, hash 18819EE1 + sample 9: + time = 253062 + flags = 1 + data = length 215, hash CA7FA67B + sample 10: + time = 276291 + flags = 1 + data = length 211, hash 581A1C18 + sample 11: + time = 299520 + flags = 1 + data = length 216, hash ADB88187 + sample 12: + time = 322750 + flags = 1 + data = length 229, hash 2E8BA4DC + sample 13: + time = 345979 + flags = 1 + data = length 232, hash 22F0C510 + sample 14: + time = 369208 + flags = 1 + data = length 235, hash 867AD0DC + sample 15: + time = 392437 + flags = 1 + data = length 231, hash 84E823A8 + sample 16: + time = 415666 + flags = 1 + data = length 226, hash 1BEF3A95 + sample 17: + time = 438895 + flags = 1 + data = length 216, hash EAA345AE + sample 18: + time = 462125 + flags = 1 + data = length 229, hash 6957411F + sample 19: + time = 485354 + flags = 1 + data = length 219, hash 41275022 + sample 20: + time = 508583 + flags = 1 + data = length 241, hash 6495DF96 + sample 21: + time = 531812 + flags = 1 + data = length 228, hash 63D95906 + sample 22: + time = 555041 + flags = 1 + data = length 238, hash 34F676F9 + sample 23: + time = 578270 + flags = 1 + data = length 234, hash E5CBC045 + sample 24: + time = 601500 + flags = 1 + data = length 231, hash 5FC43661 + sample 25: + time = 624729 + flags = 1 + data = length 217, hash 682708ED + sample 26: + time = 647958 + flags = 1 + data = length 239, hash D43780FC + sample 27: + time = 671187 + flags = 1 + data = length 243, hash C5E17980 + sample 28: + time = 694416 + flags = 1 + data = length 231, hash AC5837BA + sample 29: + time = 717645 + flags = 1 + data = length 230, hash 169EE895 + sample 30: + time = 740875 + flags = 1 + data = length 238, hash C48FF3F1 + sample 31: + time = 764104 + flags = 1 + data = length 225, hash 531E4599 + sample 32: + time = 787333 + flags = 1 + data = length 232, hash CB3C6B8D + sample 33: + time = 810562 + flags = 1 + data = length 243, hash F8C94C7 + sample 34: + time = 833791 + flags = 1 + data = length 232, hash A646A7D0 + sample 35: + time = 857020 + flags = 1 + data = length 237, hash E8B787A5 + sample 36: + time = 880250 + flags = 1 + data = length 228, hash 3FA7A29F + sample 37: + time = 903479 + flags = 1 + data = length 235, hash B9B33B0A + sample 38: + time = 926708 + flags = 1 + data = length 264, hash 71A4869E + sample 39: + time = 949937 + flags = 1 + data = length 257, hash D049B54C + sample 40: + time = 973166 + flags = 1 + data = length 227, hash 66757231 + sample 41: + time = 996395 + flags = 1 + data = length 227, hash BD374F1B + sample 42: + time = 1019625 + flags = 1 + data = length 235, hash 999477F6 + sample 43: + time = 1042854 + flags = 1 + data = length 229, hash FFF98DF0 + sample 44: + time = 1066083 + flags = 536870913 + data = length 6, hash 31B22286 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.reading_within_gop_sample_dependencies.1.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.reading_within_gop_sample_dependencies.1.dump new file mode 100644 index 0000000000..5118579e6d --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.reading_within_gop_sample_dependencies.1.dump @@ -0,0 +1,298 @@ +seekMap: + isSeekable = true + duration = 1045300 + getPosition(0) = [[timeUs=0, position=400052]] + getPosition(1) = [[timeUs=0, position=400052]] + getPosition(522650) = [[timeUs=0, position=400052]] + getPosition(1045300) = [[timeUs=0, position=400052]] +numberOfTracks = 2 +track 0: + total output bytes = 89876 + sample count = 30 + track duration = 1001000 + format 0: + id = 1 + containerMimeType = video/mp4 + sampleMimeType = video/avc + codecs = avc1.64001F + maxInputSize = 36718 + maxNumReorderSamples = 2 + width = 1080 + height = 720 + frameRate = 29.97 + colorInfo: + colorSpace = 1 + colorRange = 2 + colorTransfer = 3 + lumaBitdepth = 8 + chromaBitdepth = 8 + metadata = entries=[xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=10000] + initializationData: + data = length 29, hash 4746B5D9 + data = length 10, hash 7A0D0F2B + sample 0: + time = 0 + flags = 1 + data = length 36690, hash 32D73AE + sample 1: + time = 66733 + flags = 0 + data = length 5312, hash D45D3CA0 + sample 2: + time = 33366 + flags = 67108864 + data = length 599, hash 1BE7812D + sample 3: + time = 200200 + flags = 0 + data = length 7735, hash 4490F110 + sample 4: + time = 133466 + flags = 0 + data = length 987, hash 560B5036 + sample 5: + time = 100100 + flags = 67108864 + data = length 673, hash ED7CD8C7 + sample 6: + time = 166833 + flags = 67108864 + data = length 523, hash 3020DF50 + sample 7: + time = 333666 + flags = 0 + data = length 6061, hash 736C72B2 + sample 8: + time = 266933 + flags = 0 + data = length 992, hash FE132F23 + sample 9: + time = 233566 + flags = 67108864 + data = length 623, hash 5B2C1816 + sample 10: + time = 300300 + flags = 67108864 + data = length 421, hash 742E69C1 + sample 11: + time = 433766 + flags = 0 + data = length 4899, hash F72F86A1 + sample 12: + time = 400400 + flags = 0 + data = length 568, hash 519A8E50 + sample 13: + time = 367033 + flags = 67108864 + data = length 620, hash 3990AA39 + sample 14: + time = 567233 + flags = 0 + data = length 5450, hash F06EC4AA + sample 15: + time = 500500 + flags = 0 + data = length 1051, hash 92DFA63A + sample 16: + time = 467133 + flags = 67108864 + data = length 874, hash 69587FB4 + sample 17: + time = 533866 + flags = 67108864 + data = length 781, hash 36BE495B + sample 18: + time = 700700 + flags = 0 + data = length 4725, hash AC0C8CD3 + sample 19: + time = 633966 + flags = 0 + data = length 1022, hash 5D8BFF34 + sample 20: + time = 600600 + flags = 67108864 + data = length 790, hash 99413A99 + sample 21: + time = 667333 + flags = 67108864 + data = length 610, hash 5E129290 + sample 22: + time = 834166 + flags = 0 + data = length 2751, hash 769974CB + sample 23: + time = 767433 + flags = 0 + data = length 745, hash B78A477A + sample 24: + time = 734066 + flags = 67108864 + data = length 621, hash CF741E7A + sample 25: + time = 800800 + flags = 67108864 + data = length 505, hash 1DB4894E + sample 26: + time = 967633 + flags = 0 + data = length 1268, hash C15348DC + sample 27: + time = 900900 + flags = 0 + data = length 880, hash C2DE85D0 + sample 28: + time = 867533 + flags = 67108864 + data = length 530, hash C98BC6A8 + sample 29: + time = 934266 + flags = 603979776 + data = length 568, hash 4FE5C8EA +track 1: + total output bytes = 7235 + sample count = 32 + track duration = 1045300 + format 0: + peakBitrate = 200000 + id = 2 + containerMimeType = video/mp4 + sampleMimeType = audio/mp4a-latm + codecs = mp4a.40.2 + maxInputSize = 294 + channelCount = 1 + sampleRate = 44100 + language = und + metadata = entries=[xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=10000] + initializationData: + data = length 2, hash 5F7 + sample 0: + time = 345979 + flags = 1 + data = length 232, hash 22F0C510 + sample 1: + time = 369208 + flags = 1 + data = length 235, hash 867AD0DC + sample 2: + time = 392437 + flags = 1 + data = length 231, hash 84E823A8 + sample 3: + time = 415666 + flags = 1 + data = length 226, hash 1BEF3A95 + sample 4: + time = 438895 + flags = 1 + data = length 216, hash EAA345AE + sample 5: + time = 462125 + flags = 1 + data = length 229, hash 6957411F + sample 6: + time = 485354 + flags = 1 + data = length 219, hash 41275022 + sample 7: + time = 508583 + flags = 1 + data = length 241, hash 6495DF96 + sample 8: + time = 531812 + flags = 1 + data = length 228, hash 63D95906 + sample 9: + time = 555041 + flags = 1 + data = length 238, hash 34F676F9 + sample 10: + time = 578270 + flags = 1 + data = length 234, hash E5CBC045 + sample 11: + time = 601500 + flags = 1 + data = length 231, hash 5FC43661 + sample 12: + time = 624729 + flags = 1 + data = length 217, hash 682708ED + sample 13: + time = 647958 + flags = 1 + data = length 239, hash D43780FC + sample 14: + time = 671187 + flags = 1 + data = length 243, hash C5E17980 + sample 15: + time = 694416 + flags = 1 + data = length 231, hash AC5837BA + sample 16: + time = 717645 + flags = 1 + data = length 230, hash 169EE895 + sample 17: + time = 740875 + flags = 1 + data = length 238, hash C48FF3F1 + sample 18: + time = 764104 + flags = 1 + data = length 225, hash 531E4599 + sample 19: + time = 787333 + flags = 1 + data = length 232, hash CB3C6B8D + sample 20: + time = 810562 + flags = 1 + data = length 243, hash F8C94C7 + sample 21: + time = 833791 + flags = 1 + data = length 232, hash A646A7D0 + sample 22: + time = 857020 + flags = 1 + data = length 237, hash E8B787A5 + sample 23: + time = 880250 + flags = 1 + data = length 228, hash 3FA7A29F + sample 24: + time = 903479 + flags = 1 + data = length 235, hash B9B33B0A + sample 25: + time = 926708 + flags = 1 + data = length 264, hash 71A4869E + sample 26: + time = 949937 + flags = 1 + data = length 257, hash D049B54C + sample 27: + time = 973166 + flags = 1 + data = length 227, hash 66757231 + sample 28: + time = 996395 + flags = 1 + data = length 227, hash BD374F1B + sample 29: + time = 1019625 + flags = 1 + data = length 235, hash 999477F6 + sample 30: + time = 1042854 + flags = 1 + data = length 229, hash FFF98DF0 + sample 31: + time = 1066083 + flags = 536870913 + data = length 6, hash 31B22286 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.reading_within_gop_sample_dependencies.2.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.reading_within_gop_sample_dependencies.2.dump new file mode 100644 index 0000000000..0f51c20d5e --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.reading_within_gop_sample_dependencies.2.dump @@ -0,0 +1,238 @@ +seekMap: + isSeekable = true + duration = 1045300 + getPosition(0) = [[timeUs=0, position=400052]] + getPosition(1) = [[timeUs=0, position=400052]] + getPosition(522650) = [[timeUs=0, position=400052]] + getPosition(1045300) = [[timeUs=0, position=400052]] +numberOfTracks = 2 +track 0: + total output bytes = 89876 + sample count = 30 + track duration = 1001000 + format 0: + id = 1 + containerMimeType = video/mp4 + sampleMimeType = video/avc + codecs = avc1.64001F + maxInputSize = 36718 + maxNumReorderSamples = 2 + width = 1080 + height = 720 + frameRate = 29.97 + colorInfo: + colorSpace = 1 + colorRange = 2 + colorTransfer = 3 + lumaBitdepth = 8 + chromaBitdepth = 8 + metadata = entries=[xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=10000] + initializationData: + data = length 29, hash 4746B5D9 + data = length 10, hash 7A0D0F2B + sample 0: + time = 0 + flags = 1 + data = length 36690, hash 32D73AE + sample 1: + time = 66733 + flags = 0 + data = length 5312, hash D45D3CA0 + sample 2: + time = 33366 + flags = 67108864 + data = length 599, hash 1BE7812D + sample 3: + time = 200200 + flags = 0 + data = length 7735, hash 4490F110 + sample 4: + time = 133466 + flags = 0 + data = length 987, hash 560B5036 + sample 5: + time = 100100 + flags = 67108864 + data = length 673, hash ED7CD8C7 + sample 6: + time = 166833 + flags = 67108864 + data = length 523, hash 3020DF50 + sample 7: + time = 333666 + flags = 0 + data = length 6061, hash 736C72B2 + sample 8: + time = 266933 + flags = 0 + data = length 992, hash FE132F23 + sample 9: + time = 233566 + flags = 67108864 + data = length 623, hash 5B2C1816 + sample 10: + time = 300300 + flags = 67108864 + data = length 421, hash 742E69C1 + sample 11: + time = 433766 + flags = 0 + data = length 4899, hash F72F86A1 + sample 12: + time = 400400 + flags = 0 + data = length 568, hash 519A8E50 + sample 13: + time = 367033 + flags = 67108864 + data = length 620, hash 3990AA39 + sample 14: + time = 567233 + flags = 0 + data = length 5450, hash F06EC4AA + sample 15: + time = 500500 + flags = 0 + data = length 1051, hash 92DFA63A + sample 16: + time = 467133 + flags = 67108864 + data = length 874, hash 69587FB4 + sample 17: + time = 533866 + flags = 67108864 + data = length 781, hash 36BE495B + sample 18: + time = 700700 + flags = 0 + data = length 4725, hash AC0C8CD3 + sample 19: + time = 633966 + flags = 0 + data = length 1022, hash 5D8BFF34 + sample 20: + time = 600600 + flags = 67108864 + data = length 790, hash 99413A99 + sample 21: + time = 667333 + flags = 67108864 + data = length 610, hash 5E129290 + sample 22: + time = 834166 + flags = 0 + data = length 2751, hash 769974CB + sample 23: + time = 767433 + flags = 0 + data = length 745, hash B78A477A + sample 24: + time = 734066 + flags = 67108864 + data = length 621, hash CF741E7A + sample 25: + time = 800800 + flags = 67108864 + data = length 505, hash 1DB4894E + sample 26: + time = 967633 + flags = 0 + data = length 1268, hash C15348DC + sample 27: + time = 900900 + flags = 0 + data = length 880, hash C2DE85D0 + sample 28: + time = 867533 + flags = 67108864 + data = length 530, hash C98BC6A8 + sample 29: + time = 934266 + flags = 603979776 + data = length 568, hash 4FE5C8EA +track 1: + total output bytes = 3776 + sample count = 17 + track duration = 1045300 + format 0: + peakBitrate = 200000 + id = 2 + containerMimeType = video/mp4 + sampleMimeType = audio/mp4a-latm + codecs = mp4a.40.2 + maxInputSize = 294 + channelCount = 1 + sampleRate = 44100 + language = und + metadata = entries=[xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=10000] + initializationData: + data = length 2, hash 5F7 + sample 0: + time = 694416 + flags = 1 + data = length 231, hash AC5837BA + sample 1: + time = 717645 + flags = 1 + data = length 230, hash 169EE895 + sample 2: + time = 740875 + flags = 1 + data = length 238, hash C48FF3F1 + sample 3: + time = 764104 + flags = 1 + data = length 225, hash 531E4599 + sample 4: + time = 787333 + flags = 1 + data = length 232, hash CB3C6B8D + sample 5: + time = 810562 + flags = 1 + data = length 243, hash F8C94C7 + sample 6: + time = 833791 + flags = 1 + data = length 232, hash A646A7D0 + sample 7: + time = 857020 + flags = 1 + data = length 237, hash E8B787A5 + sample 8: + time = 880250 + flags = 1 + data = length 228, hash 3FA7A29F + sample 9: + time = 903479 + flags = 1 + data = length 235, hash B9B33B0A + sample 10: + time = 926708 + flags = 1 + data = length 264, hash 71A4869E + sample 11: + time = 949937 + flags = 1 + data = length 257, hash D049B54C + sample 12: + time = 973166 + flags = 1 + data = length 227, hash 66757231 + sample 13: + time = 996395 + flags = 1 + data = length 227, hash BD374F1B + sample 14: + time = 1019625 + flags = 1 + data = length 235, hash 999477F6 + sample 15: + time = 1042854 + flags = 1 + data = length 229, hash FFF98DF0 + sample 16: + time = 1066083 + flags = 536870913 + data = length 6, hash 31B22286 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.reading_within_gop_sample_dependencies.3.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.reading_within_gop_sample_dependencies.3.dump new file mode 100644 index 0000000000..81bb7e8154 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.reading_within_gop_sample_dependencies.3.dump @@ -0,0 +1,178 @@ +seekMap: + isSeekable = true + duration = 1045300 + getPosition(0) = [[timeUs=0, position=400052]] + getPosition(1) = [[timeUs=0, position=400052]] + getPosition(522650) = [[timeUs=0, position=400052]] + getPosition(1045300) = [[timeUs=0, position=400052]] +numberOfTracks = 2 +track 0: + total output bytes = 89876 + sample count = 30 + track duration = 1001000 + format 0: + id = 1 + containerMimeType = video/mp4 + sampleMimeType = video/avc + codecs = avc1.64001F + maxInputSize = 36718 + maxNumReorderSamples = 2 + width = 1080 + height = 720 + frameRate = 29.97 + colorInfo: + colorSpace = 1 + colorRange = 2 + colorTransfer = 3 + lumaBitdepth = 8 + chromaBitdepth = 8 + metadata = entries=[xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=10000] + initializationData: + data = length 29, hash 4746B5D9 + data = length 10, hash 7A0D0F2B + sample 0: + time = 0 + flags = 1 + data = length 36690, hash 32D73AE + sample 1: + time = 66733 + flags = 0 + data = length 5312, hash D45D3CA0 + sample 2: + time = 33366 + flags = 67108864 + data = length 599, hash 1BE7812D + sample 3: + time = 200200 + flags = 0 + data = length 7735, hash 4490F110 + sample 4: + time = 133466 + flags = 0 + data = length 987, hash 560B5036 + sample 5: + time = 100100 + flags = 67108864 + data = length 673, hash ED7CD8C7 + sample 6: + time = 166833 + flags = 67108864 + data = length 523, hash 3020DF50 + sample 7: + time = 333666 + flags = 0 + data = length 6061, hash 736C72B2 + sample 8: + time = 266933 + flags = 0 + data = length 992, hash FE132F23 + sample 9: + time = 233566 + flags = 67108864 + data = length 623, hash 5B2C1816 + sample 10: + time = 300300 + flags = 67108864 + data = length 421, hash 742E69C1 + sample 11: + time = 433766 + flags = 0 + data = length 4899, hash F72F86A1 + sample 12: + time = 400400 + flags = 0 + data = length 568, hash 519A8E50 + sample 13: + time = 367033 + flags = 67108864 + data = length 620, hash 3990AA39 + sample 14: + time = 567233 + flags = 0 + data = length 5450, hash F06EC4AA + sample 15: + time = 500500 + flags = 0 + data = length 1051, hash 92DFA63A + sample 16: + time = 467133 + flags = 67108864 + data = length 874, hash 69587FB4 + sample 17: + time = 533866 + flags = 67108864 + data = length 781, hash 36BE495B + sample 18: + time = 700700 + flags = 0 + data = length 4725, hash AC0C8CD3 + sample 19: + time = 633966 + flags = 0 + data = length 1022, hash 5D8BFF34 + sample 20: + time = 600600 + flags = 67108864 + data = length 790, hash 99413A99 + sample 21: + time = 667333 + flags = 67108864 + data = length 610, hash 5E129290 + sample 22: + time = 834166 + flags = 0 + data = length 2751, hash 769974CB + sample 23: + time = 767433 + flags = 0 + data = length 745, hash B78A477A + sample 24: + time = 734066 + flags = 67108864 + data = length 621, hash CF741E7A + sample 25: + time = 800800 + flags = 67108864 + data = length 505, hash 1DB4894E + sample 26: + time = 967633 + flags = 0 + data = length 1268, hash C15348DC + sample 27: + time = 900900 + flags = 0 + data = length 880, hash C2DE85D0 + sample 28: + time = 867533 + flags = 67108864 + data = length 530, hash C98BC6A8 + sample 29: + time = 934266 + flags = 603979776 + data = length 568, hash 4FE5C8EA +track 1: + total output bytes = 235 + sample count = 2 + track duration = 1045300 + format 0: + peakBitrate = 200000 + id = 2 + containerMimeType = video/mp4 + sampleMimeType = audio/mp4a-latm + codecs = mp4a.40.2 + maxInputSize = 294 + channelCount = 1 + sampleRate = 44100 + language = und + metadata = entries=[xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=10000] + initializationData: + data = length 2, hash 5F7 + sample 0: + time = 1042854 + flags = 1 + data = length 229, hash FFF98DF0 + sample 1: + time = 1066083 + flags = 536870913 + data = length 6, hash 31B22286 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.reading_within_gop_sample_dependencies.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.reading_within_gop_sample_dependencies.unknown_length.dump new file mode 100644 index 0000000000..cce331d9a6 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.reading_within_gop_sample_dependencies.unknown_length.dump @@ -0,0 +1,350 @@ +seekMap: + isSeekable = true + duration = 1045300 + getPosition(0) = [[timeUs=0, position=400052]] + getPosition(1) = [[timeUs=0, position=400052]] + getPosition(522650) = [[timeUs=0, position=400052]] + getPosition(1045300) = [[timeUs=0, position=400052]] +numberOfTracks = 2 +track 0: + total output bytes = 89876 + sample count = 30 + track duration = 1001000 + format 0: + id = 1 + containerMimeType = video/mp4 + sampleMimeType = video/avc + codecs = avc1.64001F + maxInputSize = 36718 + maxNumReorderSamples = 2 + width = 1080 + height = 720 + frameRate = 29.97 + colorInfo: + colorSpace = 1 + colorRange = 2 + colorTransfer = 3 + lumaBitdepth = 8 + chromaBitdepth = 8 + metadata = entries=[xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=10000] + initializationData: + data = length 29, hash 4746B5D9 + data = length 10, hash 7A0D0F2B + sample 0: + time = 0 + flags = 1 + data = length 36690, hash 32D73AE + sample 1: + time = 66733 + flags = 0 + data = length 5312, hash D45D3CA0 + sample 2: + time = 33366 + flags = 67108864 + data = length 599, hash 1BE7812D + sample 3: + time = 200200 + flags = 0 + data = length 7735, hash 4490F110 + sample 4: + time = 133466 + flags = 0 + data = length 987, hash 560B5036 + sample 5: + time = 100100 + flags = 67108864 + data = length 673, hash ED7CD8C7 + sample 6: + time = 166833 + flags = 67108864 + data = length 523, hash 3020DF50 + sample 7: + time = 333666 + flags = 0 + data = length 6061, hash 736C72B2 + sample 8: + time = 266933 + flags = 0 + data = length 992, hash FE132F23 + sample 9: + time = 233566 + flags = 67108864 + data = length 623, hash 5B2C1816 + sample 10: + time = 300300 + flags = 67108864 + data = length 421, hash 742E69C1 + sample 11: + time = 433766 + flags = 0 + data = length 4899, hash F72F86A1 + sample 12: + time = 400400 + flags = 0 + data = length 568, hash 519A8E50 + sample 13: + time = 367033 + flags = 67108864 + data = length 620, hash 3990AA39 + sample 14: + time = 567233 + flags = 0 + data = length 5450, hash F06EC4AA + sample 15: + time = 500500 + flags = 0 + data = length 1051, hash 92DFA63A + sample 16: + time = 467133 + flags = 67108864 + data = length 874, hash 69587FB4 + sample 17: + time = 533866 + flags = 67108864 + data = length 781, hash 36BE495B + sample 18: + time = 700700 + flags = 0 + data = length 4725, hash AC0C8CD3 + sample 19: + time = 633966 + flags = 0 + data = length 1022, hash 5D8BFF34 + sample 20: + time = 600600 + flags = 67108864 + data = length 790, hash 99413A99 + sample 21: + time = 667333 + flags = 67108864 + data = length 610, hash 5E129290 + sample 22: + time = 834166 + flags = 0 + data = length 2751, hash 769974CB + sample 23: + time = 767433 + flags = 0 + data = length 745, hash B78A477A + sample 24: + time = 734066 + flags = 67108864 + data = length 621, hash CF741E7A + sample 25: + time = 800800 + flags = 67108864 + data = length 505, hash 1DB4894E + sample 26: + time = 967633 + flags = 0 + data = length 1268, hash C15348DC + sample 27: + time = 900900 + flags = 0 + data = length 880, hash C2DE85D0 + sample 28: + time = 867533 + flags = 67108864 + data = length 530, hash C98BC6A8 + sample 29: + time = 934266 + flags = 603979776 + data = length 568, hash 4FE5C8EA +track 1: + total output bytes = 9529 + sample count = 45 + track duration = 1045300 + format 0: + peakBitrate = 200000 + id = 2 + containerMimeType = video/mp4 + sampleMimeType = audio/mp4a-latm + codecs = mp4a.40.2 + maxInputSize = 294 + channelCount = 1 + sampleRate = 44100 + language = und + metadata = entries=[xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=10000] + initializationData: + data = length 2, hash 5F7 + sample 0: + time = 44000 + flags = 1 + data = length 23, hash 47DE9131 + sample 1: + time = 67229 + flags = 1 + data = length 6, hash 31EC5206 + sample 2: + time = 90458 + flags = 1 + data = length 148, hash 894A176B + sample 3: + time = 113687 + flags = 1 + data = length 189, hash CEF235A1 + sample 4: + time = 136916 + flags = 1 + data = length 205, hash BBF5F7B0 + sample 5: + time = 160145 + flags = 1 + data = length 210, hash F278B193 + sample 6: + time = 183375 + flags = 1 + data = length 210, hash 82DA1589 + sample 7: + time = 206604 + flags = 1 + data = length 207, hash 5BE231DF + sample 8: + time = 229833 + flags = 1 + data = length 225, hash 18819EE1 + sample 9: + time = 253062 + flags = 1 + data = length 215, hash CA7FA67B + sample 10: + time = 276291 + flags = 1 + data = length 211, hash 581A1C18 + sample 11: + time = 299520 + flags = 1 + data = length 216, hash ADB88187 + sample 12: + time = 322750 + flags = 1 + data = length 229, hash 2E8BA4DC + sample 13: + time = 345979 + flags = 1 + data = length 232, hash 22F0C510 + sample 14: + time = 369208 + flags = 1 + data = length 235, hash 867AD0DC + sample 15: + time = 392437 + flags = 1 + data = length 231, hash 84E823A8 + sample 16: + time = 415666 + flags = 1 + data = length 226, hash 1BEF3A95 + sample 17: + time = 438895 + flags = 1 + data = length 216, hash EAA345AE + sample 18: + time = 462125 + flags = 1 + data = length 229, hash 6957411F + sample 19: + time = 485354 + flags = 1 + data = length 219, hash 41275022 + sample 20: + time = 508583 + flags = 1 + data = length 241, hash 6495DF96 + sample 21: + time = 531812 + flags = 1 + data = length 228, hash 63D95906 + sample 22: + time = 555041 + flags = 1 + data = length 238, hash 34F676F9 + sample 23: + time = 578270 + flags = 1 + data = length 234, hash E5CBC045 + sample 24: + time = 601500 + flags = 1 + data = length 231, hash 5FC43661 + sample 25: + time = 624729 + flags = 1 + data = length 217, hash 682708ED + sample 26: + time = 647958 + flags = 1 + data = length 239, hash D43780FC + sample 27: + time = 671187 + flags = 1 + data = length 243, hash C5E17980 + sample 28: + time = 694416 + flags = 1 + data = length 231, hash AC5837BA + sample 29: + time = 717645 + flags = 1 + data = length 230, hash 169EE895 + sample 30: + time = 740875 + flags = 1 + data = length 238, hash C48FF3F1 + sample 31: + time = 764104 + flags = 1 + data = length 225, hash 531E4599 + sample 32: + time = 787333 + flags = 1 + data = length 232, hash CB3C6B8D + sample 33: + time = 810562 + flags = 1 + data = length 243, hash F8C94C7 + sample 34: + time = 833791 + flags = 1 + data = length 232, hash A646A7D0 + sample 35: + time = 857020 + flags = 1 + data = length 237, hash E8B787A5 + sample 36: + time = 880250 + flags = 1 + data = length 228, hash 3FA7A29F + sample 37: + time = 903479 + flags = 1 + data = length 235, hash B9B33B0A + sample 38: + time = 926708 + flags = 1 + data = length 264, hash 71A4869E + sample 39: + time = 949937 + flags = 1 + data = length 257, hash D049B54C + sample 40: + time = 973166 + flags = 1 + data = length 227, hash 66757231 + sample 41: + time = 996395 + flags = 1 + data = length 227, hash BD374F1B + sample 42: + time = 1019625 + flags = 1 + data = length 235, hash 999477F6 + sample 43: + time = 1042854 + flags = 1 + data = length 229, hash FFF98DF0 + sample 44: + time = 1066083 + flags = 536870913 + data = length 6, hash 31B22286 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.unknown_length.dump new file mode 100644 index 0000000000..8d01b8844d --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_2_byte_NAL_length.mp4.unknown_length.dump @@ -0,0 +1,350 @@ +seekMap: + isSeekable = true + duration = 1045300 + getPosition(0) = [[timeUs=0, position=400052]] + getPosition(1) = [[timeUs=0, position=400052]] + getPosition(522650) = [[timeUs=0, position=400052]] + getPosition(1045300) = [[timeUs=0, position=400052]] +numberOfTracks = 2 +track 0: + total output bytes = 89876 + sample count = 30 + track duration = 1001000 + format 0: + id = 1 + containerMimeType = video/mp4 + sampleMimeType = video/avc + codecs = avc1.64001F + maxInputSize = 36718 + maxNumReorderSamples = 2 + width = 1080 + height = 720 + frameRate = 29.97 + colorInfo: + colorSpace = 1 + colorRange = 2 + colorTransfer = 3 + lumaBitdepth = 8 + chromaBitdepth = 8 + metadata = entries=[xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=10000] + initializationData: + data = length 29, hash 4746B5D9 + data = length 10, hash 7A0D0F2B + sample 0: + time = 0 + flags = 1 + data = length 36690, hash 32D73AE + sample 1: + time = 66733 + flags = 0 + data = length 5312, hash D45D3CA0 + sample 2: + time = 33366 + flags = 0 + data = length 599, hash 1BE7812D + sample 3: + time = 200200 + flags = 0 + data = length 7735, hash 4490F110 + sample 4: + time = 133466 + flags = 0 + data = length 987, hash 560B5036 + sample 5: + time = 100100 + flags = 0 + data = length 673, hash ED7CD8C7 + sample 6: + time = 166833 + flags = 0 + data = length 523, hash 3020DF50 + sample 7: + time = 333666 + flags = 0 + data = length 6061, hash 736C72B2 + sample 8: + time = 266933 + flags = 0 + data = length 992, hash FE132F23 + sample 9: + time = 233566 + flags = 0 + data = length 623, hash 5B2C1816 + sample 10: + time = 300300 + flags = 0 + data = length 421, hash 742E69C1 + sample 11: + time = 433766 + flags = 0 + data = length 4899, hash F72F86A1 + sample 12: + time = 400400 + flags = 0 + data = length 568, hash 519A8E50 + sample 13: + time = 367033 + flags = 0 + data = length 620, hash 3990AA39 + sample 14: + time = 567233 + flags = 0 + data = length 5450, hash F06EC4AA + sample 15: + time = 500500 + flags = 0 + data = length 1051, hash 92DFA63A + sample 16: + time = 467133 + flags = 0 + data = length 874, hash 69587FB4 + sample 17: + time = 533866 + flags = 0 + data = length 781, hash 36BE495B + sample 18: + time = 700700 + flags = 0 + data = length 4725, hash AC0C8CD3 + sample 19: + time = 633966 + flags = 0 + data = length 1022, hash 5D8BFF34 + sample 20: + time = 600600 + flags = 0 + data = length 790, hash 99413A99 + sample 21: + time = 667333 + flags = 0 + data = length 610, hash 5E129290 + sample 22: + time = 834166 + flags = 0 + data = length 2751, hash 769974CB + sample 23: + time = 767433 + flags = 0 + data = length 745, hash B78A477A + sample 24: + time = 734066 + flags = 0 + data = length 621, hash CF741E7A + sample 25: + time = 800800 + flags = 0 + data = length 505, hash 1DB4894E + sample 26: + time = 967633 + flags = 0 + data = length 1268, hash C15348DC + sample 27: + time = 900900 + flags = 0 + data = length 880, hash C2DE85D0 + sample 28: + time = 867533 + flags = 0 + data = length 530, hash C98BC6A8 + sample 29: + time = 934266 + flags = 536870912 + data = length 568, hash 4FE5C8EA +track 1: + total output bytes = 9529 + sample count = 45 + track duration = 1045300 + format 0: + peakBitrate = 200000 + id = 2 + containerMimeType = video/mp4 + sampleMimeType = audio/mp4a-latm + codecs = mp4a.40.2 + maxInputSize = 294 + channelCount = 1 + sampleRate = 44100 + language = und + metadata = entries=[xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=10000] + initializationData: + data = length 2, hash 5F7 + sample 0: + time = 44000 + flags = 1 + data = length 23, hash 47DE9131 + sample 1: + time = 67229 + flags = 1 + data = length 6, hash 31EC5206 + sample 2: + time = 90458 + flags = 1 + data = length 148, hash 894A176B + sample 3: + time = 113687 + flags = 1 + data = length 189, hash CEF235A1 + sample 4: + time = 136916 + flags = 1 + data = length 205, hash BBF5F7B0 + sample 5: + time = 160145 + flags = 1 + data = length 210, hash F278B193 + sample 6: + time = 183375 + flags = 1 + data = length 210, hash 82DA1589 + sample 7: + time = 206604 + flags = 1 + data = length 207, hash 5BE231DF + sample 8: + time = 229833 + flags = 1 + data = length 225, hash 18819EE1 + sample 9: + time = 253062 + flags = 1 + data = length 215, hash CA7FA67B + sample 10: + time = 276291 + flags = 1 + data = length 211, hash 581A1C18 + sample 11: + time = 299520 + flags = 1 + data = length 216, hash ADB88187 + sample 12: + time = 322750 + flags = 1 + data = length 229, hash 2E8BA4DC + sample 13: + time = 345979 + flags = 1 + data = length 232, hash 22F0C510 + sample 14: + time = 369208 + flags = 1 + data = length 235, hash 867AD0DC + sample 15: + time = 392437 + flags = 1 + data = length 231, hash 84E823A8 + sample 16: + time = 415666 + flags = 1 + data = length 226, hash 1BEF3A95 + sample 17: + time = 438895 + flags = 1 + data = length 216, hash EAA345AE + sample 18: + time = 462125 + flags = 1 + data = length 229, hash 6957411F + sample 19: + time = 485354 + flags = 1 + data = length 219, hash 41275022 + sample 20: + time = 508583 + flags = 1 + data = length 241, hash 6495DF96 + sample 21: + time = 531812 + flags = 1 + data = length 228, hash 63D95906 + sample 22: + time = 555041 + flags = 1 + data = length 238, hash 34F676F9 + sample 23: + time = 578270 + flags = 1 + data = length 234, hash E5CBC045 + sample 24: + time = 601500 + flags = 1 + data = length 231, hash 5FC43661 + sample 25: + time = 624729 + flags = 1 + data = length 217, hash 682708ED + sample 26: + time = 647958 + flags = 1 + data = length 239, hash D43780FC + sample 27: + time = 671187 + flags = 1 + data = length 243, hash C5E17980 + sample 28: + time = 694416 + flags = 1 + data = length 231, hash AC5837BA + sample 29: + time = 717645 + flags = 1 + data = length 230, hash 169EE895 + sample 30: + time = 740875 + flags = 1 + data = length 238, hash C48FF3F1 + sample 31: + time = 764104 + flags = 1 + data = length 225, hash 531E4599 + sample 32: + time = 787333 + flags = 1 + data = length 232, hash CB3C6B8D + sample 33: + time = 810562 + flags = 1 + data = length 243, hash F8C94C7 + sample 34: + time = 833791 + flags = 1 + data = length 232, hash A646A7D0 + sample 35: + time = 857020 + flags = 1 + data = length 237, hash E8B787A5 + sample 36: + time = 880250 + flags = 1 + data = length 228, hash 3FA7A29F + sample 37: + time = 903479 + flags = 1 + data = length 235, hash B9B33B0A + sample 38: + time = 926708 + flags = 1 + data = length 264, hash 71A4869E + sample 39: + time = 949937 + flags = 1 + data = length 257, hash D049B54C + sample 40: + time = 973166 + flags = 1 + data = length 227, hash 66757231 + sample 41: + time = 996395 + flags = 1 + data = length 227, hash BD374F1B + sample 42: + time = 1019625 + flags = 1 + data = length 235, hash 999477F6 + sample 43: + time = 1042854 + flags = 1 + data = length 229, hash FFF98DF0 + sample 44: + time = 1066083 + flags = 536870913 + data = length 6, hash 31B22286 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/media/mp4/sample_2_byte_NAL_length.mp4 b/libraries/test_data/src/test/assets/media/mp4/sample_2_byte_NAL_length.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..298177b81bfdcb5a54d590a5a1cd13b9a64be0d2 GIT binary patch literal 499395 zcmeF%Wmpzn!#Da95Ge%(6jTHZLZm@TO2I@Cl@RF?kS^&`5HY~Upbe0;C}|KuK|n%9 zx&@>=&plk%b-(xX-p{l5vG?(Q*&qI+i&?W~&6=6tidi#2B9S;QxOzHTyExd9C`qK% zH4((^93{m_q_snK4i1+{B$BP&B`b4cO{#Zs8C?w|65j?AiNBFVL0bL)@8y5nAd>%M zTlwEP|ECxgk;vm_?rK7;x4-i6^dfECRK8bIR9H$zR8&Y>Qh1-JsHg~uM3vy`Y+^%X z(s#A_>%wUMePRDPCEwQnc834Bn1AK`S3YGTvPOnPqO4s_p;ECkw_d#vZaee;xOobr z+awC3!PQ*EB4}l9>-=|=M7m^cZt<`9>ROxFb~tKcZ*IGqOgU<2ZGVA?uwJtJyUf)* z|17)B|K7)8?rgD|XLVV<;&pD$w%mWmDbrnCO>K#Iu8XV7UlsCqIw{%Yk{MB9e=Yxc zm&830cXX84w;EQL|CZzLD9lM*%blbxmc%-xNm-S;z=(pVd&S!% z#+Rh=D_e{yNNcTzx+`}U5l3urG;wkKtNg#u!D8lM>uhgk>p`Tg{v#H47gtx8)d;by zCUBBS47saOGa~(;Dt73D5UxSAlmepJXc0{Nh$h)Y#AAp+M+>W@FXCxBK z4k9i^go`B7CZeL(Y$5hr5rKh3VkW$)mWaSg>^CNn=<|tnKM{y7L@`U`ogntv6Wc_+ zu9iXKAg;yip9@)aS`GiI6LvEPDarq`j~FJDhKX%f;+X$huf#Ew$^Q@Clo)MR7h(+g zFU#tQ{#VWXEB&v;e{GOR%Kwh8#*{70|7uS%7Pc;~|788AY>I61Kg++%{4eMGD>Eg{ z|7|xX*g*FZiLsrm$SsS`Ty$X6z~4&<{Mo8_iq0GqKi|w|I@|w z{-cYl5o5B+KWF^62nC6#GZHC9^{+jA7B1$0)d3Yz`=m7+l{b-yA(d*q^6Fk{N@m)% z6st7<*#(7&ym~}>#eXzGBAvuWgtbJtPXwabkiHV3?w?RYtUHPDg9!CR_(_CbBK#)8 z5D|zbM(QHMztWqD_&5=Ih%iEg)e&?x57Dei#3O|?`OkJAv0mN3TJ~yLtLdxj)n>MO zEKxQEEfH23y8j8Q=UYAZ>b3q)&3E-)R`dT4&3Eg2(pr|N3(gj+Lo^l$KmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U< z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U< z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U< z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## 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 NDs903-Y3