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 0000000000..298177b81b Binary files /dev/null and b/libraries/test_data/src/test/assets/media/mp4/sample_2_byte_NAL_length.mp4 differ