diff --git a/RELEASENOTES.md b/RELEASENOTES.md index fff06b960d..e3a0fdf715 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -40,6 +40,9 @@ * MP3: Don't stop playback early when a `VBRI` frame's table of contents doesn't cover all the MP3 data in a file ([#1904](https://github.com/androidx/media/issues/1904)). + * AVI: Fix handling of files with constant bitrate compressed audio where + the stream header stores the number of bytes instead of the number of + chunks. * DataSource: * Audio: * Fix `onAudioPositionAdvancing` to be called when playback resumes diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/avi/AviExtractor.java b/libraries/extractor/src/main/java/androidx/media3/extractor/avi/AviExtractor.java index 6b2e8358a2..d8dcb1f503 100644 --- a/libraries/extractor/src/main/java/androidx/media3/extractor/avi/AviExtractor.java +++ b/libraries/extractor/src/main/java/androidx/media3/extractor/avi/AviExtractor.java @@ -406,7 +406,7 @@ public final class AviExtractor implements Extractor { int chunkId = body.readLittleEndianInt(); int flags = body.readLittleEndianInt(); long offset = body.readLittleEndianInt() + seekOffset; - body.readLittleEndianInt(); // We ignore the size. + body.skipBytes(4); // Ignore size. ChunkReader chunkReader = getChunkReader(chunkId); if (chunkReader == null) { // We ignore unknown chunk IDs. @@ -416,7 +416,7 @@ public final class AviExtractor implements Extractor { offset, /* isKeyFrame= */ (flags & AVIIF_KEYFRAME) == AVIIF_KEYFRAME); } for (ChunkReader chunkReader : chunkReaders) { - chunkReader.compactIndex(); + chunkReader.commitIndex(); } seekMapHasBeenOutput = true; if (chunkReaders.length == 0) { diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/avi/AviStreamHeaderChunk.java b/libraries/extractor/src/main/java/androidx/media3/extractor/avi/AviStreamHeaderChunk.java index 99f83e8824..7c499ed360 100644 --- a/libraries/extractor/src/main/java/androidx/media3/extractor/avi/AviStreamHeaderChunk.java +++ b/libraries/extractor/src/main/java/androidx/media3/extractor/avi/AviStreamHeaderChunk.java @@ -34,9 +34,10 @@ import androidx.media3.common.util.Util; body.skipBytes(4); // dwStart (4 bytes). int length = body.readLittleEndianInt(); int suggestedBufferSize = body.readLittleEndianInt(); - body.skipBytes(8); // dwQuality (4 bytes), dwSampleSize (4 bytes). + body.skipBytes(4); // dwQuality (4 bytes). + int sampleSize = body.readLittleEndianInt(); return new AviStreamHeaderChunk( - streamType, initialFrames, scale, rate, length, suggestedBufferSize); + streamType, initialFrames, scale, rate, length, suggestedBufferSize, sampleSize); } public final int streamType; @@ -45,15 +46,23 @@ import androidx.media3.common.util.Util; public final int rate; public final int length; public final int suggestedBufferSize; + public final int sampleSize; private AviStreamHeaderChunk( - int streamType, int initialFrames, int scale, int rate, int length, int suggestedBufferSize) { + int streamType, + int initialFrames, + int scale, + int rate, + int length, + int suggestedBufferSize, + int sampleSize) { this.streamType = streamType; this.initialFrames = initialFrames; this.scale = scale; this.rate = rate; this.length = length; this.suggestedBufferSize = suggestedBufferSize; + this.sampleSize = sampleSize; } @Override diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/avi/ChunkReader.java b/libraries/extractor/src/main/java/androidx/media3/extractor/avi/ChunkReader.java index f171c77721..cbf82cf824 100644 --- a/libraries/extractor/src/main/java/androidx/media3/extractor/avi/ChunkReader.java +++ b/libraries/extractor/src/main/java/androidx/media3/extractor/avi/ChunkReader.java @@ -64,6 +64,7 @@ import java.util.Arrays; private final long durationUs; + private int chunkCount; private int currentChunkSize; private int bytesRemainingInCurrentChunk; @@ -90,6 +91,7 @@ import java.util.Arrays; firstIndexChunkOffset = C.INDEX_UNSET; keyFrameOffsets = new long[INITIAL_INDEX_SIZE]; keyFrameIndices = new int[INITIAL_INDEX_SIZE]; + chunkCount = streamHeaderChunk.length; } public void appendIndexChunk(long offset, boolean isKeyFrame) { @@ -120,9 +122,16 @@ import java.util.Arrays; return getChunkTimestampUs(/* chunkIndex= */ 1); } - public void compactIndex() { + public void commitIndex() { keyFrameOffsets = Arrays.copyOf(keyFrameOffsets, indexSize); keyFrameIndices = Arrays.copyOf(keyFrameIndices, indexSize); + if (isAudio() && streamHeaderChunk.sampleSize != 0 && indexSize > 0) { + // In some files the AVI stream header chunk for audio has the number of bytes of audio in + // dwLength instead of the number of chunks. Overwrite the chunk size to use the size of the + // index, which should match the number of chunks because we only support formats where every + // audio sample is a sync sample, and every sync sample should be in the index. + chunkCount = indexSize; + } } public boolean handlesChunkId(int chunkId) { @@ -203,7 +212,7 @@ import java.util.Arrays; } private long getChunkTimestampUs(int chunkIndex) { - return durationUs * chunkIndex / streamHeaderChunk.length; + return durationUs * chunkIndex / chunkCount; } private SeekPoint getSeekPoint(int keyFrameIndex) { diff --git a/libraries/extractor/src/test/java/androidx/media3/extractor/avi/AviExtractorTest.java b/libraries/extractor/src/test/java/androidx/media3/extractor/avi/AviExtractorTest.java index d1bf169d23..eef899b1ea 100644 --- a/libraries/extractor/src/test/java/androidx/media3/extractor/avi/AviExtractorTest.java +++ b/libraries/extractor/src/test/java/androidx/media3/extractor/avi/AviExtractorTest.java @@ -42,4 +42,12 @@ public final class AviExtractorTest { "media/avi/sample.avi", simulationConfig); } + + @Test + public void aviSampleWithLargeLength() throws Exception { + ExtractorAsserts.assertBehavior( + () -> new AviExtractor(/* extractorFlags= */ 0, SubtitleParser.Factory.UNSUPPORTED), + "media/avi/sample-with-large-length.avi", + simulationConfig); + } } diff --git a/libraries/test_data/src/test/assets/extractordumps/avi/sample-with-large-length.avi.0.dump b/libraries/test_data/src/test/assets/extractordumps/avi/sample-with-large-length.avi.0.dump new file mode 100644 index 0000000000..49929884ce --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/avi/sample-with-large-length.avi.0.dump @@ -0,0 +1,573 @@ +seekMap: + isSeekable = true + duration = 2037551 + getPosition(0) = [[timeUs=0, position=10192]] + getPosition(1) = [[timeUs=0, position=10192]] + getPosition(1018775) = [[timeUs=0, position=10618]] + getPosition(2037551) = [[timeUs=0, position=10618]] +numberOfTracks = 2 +track 0: + total output bytes = 19538 + sample count = 58 + track duration = 1966666 + format 0: + id = 0 + sampleMimeType = video/avc + maxInputSize = 1858 + width = 256 + height = 144 + sample 0: + time = 0 + flags = 1 + data = length 794, hash E51B392 + sample 1: + time = 66666 + flags = 0 + data = length 1269, hash F97B0D34 + sample 2: + time = 99999 + flags = 0 + data = length 1858, hash BF98E83E + sample 3: + time = 133333 + flags = 0 + data = length 12, hash 57B58178 + sample 4: + time = 166666 + flags = 0 + data = length 572, hash 6D29902A + sample 5: + time = 199999 + flags = 0 + data = length 321, hash 989CC24 + sample 6: + time = 233333 + flags = 0 + data = length 104, hash C85D189C + sample 7: + time = 266666 + flags = 0 + data = length 15, hash 54DD1283 + sample 8: + time = 299999 + flags = 0 + data = length 47, hash 19C0FB57 + sample 9: + time = 333333 + flags = 0 + data = length 871, hash A2E94A8E + sample 10: + time = 366666 + flags = 0 + data = length 83, hash B681B415 + sample 11: + time = 399999 + flags = 0 + data = length 50, hash 47CF138C + sample 12: + time = 433333 + flags = 0 + data = length 24, hash 60C537AA + sample 13: + time = 466666 + flags = 0 + data = length 1372, hash 7CD6E34D + sample 14: + time = 499999 + flags = 0 + data = length 79, hash FBD5B0AB + sample 15: + time = 533333 + flags = 0 + data = length 74, hash 834B3EED + sample 16: + time = 566666 + flags = 0 + data = length 59, hash FDD25EF3 + sample 17: + time = 599999 + flags = 0 + data = length 948, hash 66EE7B18 + sample 18: + time = 633333 + flags = 0 + data = length 146, hash 1A35D839 + sample 19: + time = 666666 + flags = 0 + data = length 52, hash E2BF7ECF + sample 20: + time = 699999 + flags = 0 + data = length 819, hash 2B961CBC + sample 21: + time = 733333 + flags = 0 + data = length 88, hash F5BC3699 + sample 22: + time = 766666 + flags = 0 + data = length 348, hash 66A236DA + sample 23: + time = 799999 + flags = 0 + data = length 174, hash 6AE36E16 + sample 24: + time = 833333 + flags = 0 + data = length 47, hash 3D24B5BF + sample 25: + time = 866666 + flags = 0 + data = length 90, hash 8EADE0DF + sample 26: + time = 899999 + flags = 0 + data = length 1052, hash 16A95E6A + sample 27: + time = 933333 + flags = 0 + data = length 174, hash 1F36339D + sample 28: + time = 966666 + flags = 0 + data = length 76, hash 10C85E1 + sample 29: + time = 999999 + flags = 0 + data = length 205, hash EABF2BD + sample 30: + time = 1033332 + flags = 0 + data = length 807, hash 42FAA50 + sample 31: + time = 1066666 + flags = 0 + data = length 243, hash 4B761AA4 + sample 32: + time = 1099999 + flags = 0 + data = length 139, hash C86B0369 + sample 33: + time = 1133332 + flags = 0 + data = length 78, hash 2BB2A65E + sample 34: + time = 1166666 + flags = 0 + data = length 825, hash 3E330796 + sample 35: + time = 1199999 + flags = 0 + data = length 584, hash BF3E78FF + sample 36: + time = 1233332 + flags = 0 + data = length 301, hash 29AD84AB + sample 37: + time = 1266666 + flags = 0 + data = length 232, hash DC364C13 + sample 38: + time = 1299999 + flags = 0 + data = length 144, hash 44500BAF + sample 39: + time = 1333332 + flags = 0 + data = length 739, hash EA2DBF29 + sample 40: + time = 1366666 + flags = 0 + data = length 412, hash 9A7299B6 + sample 41: + time = 1399999 + flags = 0 + data = length 597, hash 8BB4D193 + sample 42: + time = 1433332 + flags = 0 + data = length 297, hash A655FD4C + sample 43: + time = 1466666 + flags = 0 + data = length 212, hash A6A1DA37 + sample 44: + time = 1499999 + flags = 0 + data = length 223, hash 2C4CE2AB + sample 45: + time = 1533332 + flags = 0 + data = length 697, hash 79DABA1E + sample 46: + time = 1566666 + flags = 0 + data = length 356, hash 6183273 + sample 47: + time = 1599999 + flags = 0 + data = length 259, hash 931056F0 + sample 48: + time = 1633332 + flags = 0 + data = length 227, hash 74A9B2CF + sample 49: + time = 1666666 + flags = 0 + data = length 43, hash 1664850A + sample 50: + time = 1699999 + flags = 0 + data = length 19, hash B3E68F9 + sample 51: + time = 1733332 + flags = 0 + data = length 14, hash 57B3B0EA + sample 52: + time = 1766666 + flags = 0 + data = length 109, hash 33F32F67 + sample 53: + time = 1799999 + flags = 0 + data = length 21, hash 47523E7 + sample 54: + time = 1833332 + flags = 0 + data = length 14, hash 9D5C990C + sample 55: + time = 1866666 + flags = 0 + data = length 14, hash 5C20A241 + sample 56: + time = 1899999 + flags = 0 + data = length 84, hash 6EC1E69C + sample 57: + time = 1933332 + flags = 0 + data = length 25, hash BAFA5220 +track 1: + total output bytes = 32600 + sample count = 78 + track duration = 2037551 + format 0: + id = 1 + sampleMimeType = audio/mpeg + maxInputSize = 418 + channelCount = 2 + sampleRate = 44100 + sample 0: + time = 0 + flags = 1 + data = length 417, hash 929E87CB + sample 1: + time = 26122 + flags = 1 + data = length 418, hash 6B809A2C + sample 2: + time = 52244 + flags = 1 + data = length 418, hash 2B5563D9 + sample 3: + time = 78367 + flags = 1 + data = length 418, hash 98748D4E + sample 4: + time = 104489 + flags = 1 + data = length 418, hash 2FD35E33 + sample 5: + time = 130612 + flags = 1 + data = length 418, hash 530A8AB0 + sample 6: + time = 156734 + flags = 1 + data = length 418, hash 479DC512 + sample 7: + time = 182857 + flags = 1 + data = length 418, hash 44FD78BD + sample 8: + time = 208979 + flags = 1 + data = length 418, hash E645C22C + sample 9: + time = 235102 + flags = 1 + data = length 418, hash ADD19311 + sample 10: + time = 261224 + flags = 1 + data = length 418, hash 1B369E9F + sample 11: + time = 287346 + flags = 1 + data = length 418, hash 5E2D4C48 + sample 12: + time = 313469 + flags = 1 + data = length 418, hash CE2ADAF7 + sample 13: + time = 339591 + flags = 1 + data = length 418, hash 4FAC77C + sample 14: + time = 365714 + flags = 1 + data = length 418, hash 42D43042 + sample 15: + time = 391836 + flags = 1 + data = length 418, hash DD361ADB + sample 16: + time = 417959 + flags = 1 + data = length 418, hash 2BBC2C9B + sample 17: + time = 444081 + flags = 1 + data = length 418, hash 4FCDE685 + sample 18: + time = 470204 + flags = 1 + data = length 418, hash 309C89C7 + sample 19: + time = 496326 + flags = 1 + data = length 418, hash 78DDE345 + sample 20: + time = 522448 + flags = 1 + data = length 418, hash E6BECDD1 + sample 21: + time = 548571 + flags = 1 + data = length 418, hash C19014D7 + sample 22: + time = 574693 + flags = 1 + data = length 418, hash 62F4740C + sample 23: + time = 600816 + flags = 1 + data = length 418, hash BDE2439A + sample 24: + time = 626938 + flags = 1 + data = length 418, hash 5293CAC6 + sample 25: + time = 653061 + flags = 1 + data = length 417, hash 4DC35659 + sample 26: + time = 679183 + flags = 1 + data = length 418, hash 44A91C4C + sample 27: + time = 705306 + flags = 1 + data = length 418, hash 22E329E0 + sample 28: + time = 731428 + flags = 1 + data = length 418, hash 22C08A37 + sample 29: + time = 757551 + flags = 1 + data = length 418, hash 5917DE43 + sample 30: + time = 783673 + flags = 1 + data = length 418, hash 8A635616 + sample 31: + time = 809795 + flags = 1 + data = length 418, hash 2BC2D355 + sample 32: + time = 835918 + flags = 1 + data = length 418, hash 4D6C5C5 + sample 33: + time = 862040 + flags = 1 + data = length 418, hash 4D405A08 + sample 34: + time = 888163 + flags = 1 + data = length 418, hash F3A1AB29 + sample 35: + time = 914285 + flags = 1 + data = length 418, hash 9E14E0F0 + sample 36: + time = 940408 + flags = 1 + data = length 418, hash FA9CB2EA + sample 37: + time = 966530 + flags = 1 + data = length 418, hash 69C6ECC1 + sample 38: + time = 992653 + flags = 1 + data = length 418, hash C016523B + sample 39: + time = 1018775 + flags = 1 + data = length 418, hash A7A34454 + sample 40: + time = 1044897 + flags = 1 + data = length 418, hash F4F0A99 + sample 41: + time = 1071020 + flags = 1 + data = length 418, hash 9AB89C0E + sample 42: + time = 1097142 + flags = 1 + data = length 418, hash 283B271 + sample 43: + time = 1123265 + flags = 1 + data = length 418, hash 413801D1 + sample 44: + time = 1149387 + flags = 1 + data = length 418, hash B0FBC474 + sample 45: + time = 1175510 + flags = 1 + data = length 418, hash 3D56A051 + sample 46: + time = 1201632 + flags = 1 + data = length 418, hash 21E56735 + sample 47: + time = 1227755 + flags = 1 + data = length 418, hash 4F494338 + sample 48: + time = 1253877 + flags = 1 + data = length 418, hash FBF06EAD + sample 49: + time = 1279999 + flags = 1 + data = length 417, hash 56198E7 + sample 50: + time = 1306122 + flags = 1 + data = length 418, hash C8E504E8 + sample 51: + time = 1332244 + flags = 1 + data = length 418, hash AAE14D02 + sample 52: + time = 1358367 + flags = 1 + data = length 418, hash 3B99EC44 + sample 53: + time = 1384489 + flags = 1 + data = length 418, hash 40B9A1BA + sample 54: + time = 1410612 + flags = 1 + data = length 418, hash 782D4052 + sample 55: + time = 1436734 + flags = 1 + data = length 418, hash 5DE9ECE6 + sample 56: + time = 1462857 + flags = 1 + data = length 418, hash BC628CA9 + sample 57: + time = 1488979 + flags = 1 + data = length 418, hash 1FD43DA0 + sample 58: + time = 1515102 + flags = 1 + data = length 418, hash E66C956B + sample 59: + time = 1541224 + flags = 1 + data = length 418, hash C4FA9048 + sample 60: + time = 1567346 + flags = 1 + data = length 418, hash 3EC107FD + sample 61: + time = 1593469 + flags = 1 + data = length 418, hash EC5C955D + sample 62: + time = 1619591 + flags = 1 + data = length 418, hash 177D7541 + sample 63: + time = 1645714 + flags = 1 + data = length 418, hash D53D7C61 + sample 64: + time = 1671836 + flags = 1 + data = length 418, hash 41994E54 + sample 65: + time = 1697959 + flags = 1 + data = length 418, hash 10A13197 + sample 66: + time = 1724081 + flags = 1 + data = length 418, hash 6B964E7A + sample 67: + time = 1750204 + flags = 1 + data = length 418, hash 23169DC3 + sample 68: + time = 1776326 + flags = 1 + data = length 418, hash BCB49A2 + sample 69: + time = 1802448 + flags = 1 + data = length 418, hash EAD6106F + sample 70: + time = 1828571 + flags = 1 + data = length 418, hash 5DB634E3 + sample 71: + time = 1854693 + flags = 1 + data = length 418, hash 74E5B060 + sample 72: + time = 1880816 + flags = 1 + data = length 418, hash EA5A9CB9 + sample 73: + time = 1906938 + flags = 1 + data = length 418, hash 63A62EEB + sample 74: + time = 1933061 + flags = 1 + data = length 417, hash B77518E9 + sample 75: + time = 1959183 + flags = 1 + data = length 418, hash BB8125FF + sample 76: + time = 1985306 + flags = 1 + data = length 418, hash 8034AE66 + sample 77: + time = 2011428 + flags = 1 + data = length 418, hash 4ED5A004 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/avi/sample-with-large-length.avi.1.dump b/libraries/test_data/src/test/assets/extractordumps/avi/sample-with-large-length.avi.1.dump new file mode 100644 index 0000000000..a23519eb7f --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/avi/sample-with-large-length.avi.1.dump @@ -0,0 +1,569 @@ +seekMap: + isSeekable = true + duration = 2037551 + getPosition(0) = [[timeUs=0, position=10192]] + getPosition(1) = [[timeUs=0, position=10192]] + getPosition(1018775) = [[timeUs=0, position=10618]] + getPosition(2037551) = [[timeUs=0, position=10618]] +numberOfTracks = 2 +track 0: + total output bytes = 19538 + sample count = 58 + track duration = 1966666 + format 0: + id = 0 + sampleMimeType = video/avc + maxInputSize = 1858 + width = 256 + height = 144 + sample 0: + time = 0 + flags = 1 + data = length 794, hash E51B392 + sample 1: + time = 66666 + flags = 0 + data = length 1269, hash F97B0D34 + sample 2: + time = 99999 + flags = 0 + data = length 1858, hash BF98E83E + sample 3: + time = 133333 + flags = 0 + data = length 12, hash 57B58178 + sample 4: + time = 166666 + flags = 0 + data = length 572, hash 6D29902A + sample 5: + time = 199999 + flags = 0 + data = length 321, hash 989CC24 + sample 6: + time = 233333 + flags = 0 + data = length 104, hash C85D189C + sample 7: + time = 266666 + flags = 0 + data = length 15, hash 54DD1283 + sample 8: + time = 299999 + flags = 0 + data = length 47, hash 19C0FB57 + sample 9: + time = 333333 + flags = 0 + data = length 871, hash A2E94A8E + sample 10: + time = 366666 + flags = 0 + data = length 83, hash B681B415 + sample 11: + time = 399999 + flags = 0 + data = length 50, hash 47CF138C + sample 12: + time = 433333 + flags = 0 + data = length 24, hash 60C537AA + sample 13: + time = 466666 + flags = 0 + data = length 1372, hash 7CD6E34D + sample 14: + time = 499999 + flags = 0 + data = length 79, hash FBD5B0AB + sample 15: + time = 533333 + flags = 0 + data = length 74, hash 834B3EED + sample 16: + time = 566666 + flags = 0 + data = length 59, hash FDD25EF3 + sample 17: + time = 599999 + flags = 0 + data = length 948, hash 66EE7B18 + sample 18: + time = 633333 + flags = 0 + data = length 146, hash 1A35D839 + sample 19: + time = 666666 + flags = 0 + data = length 52, hash E2BF7ECF + sample 20: + time = 699999 + flags = 0 + data = length 819, hash 2B961CBC + sample 21: + time = 733333 + flags = 0 + data = length 88, hash F5BC3699 + sample 22: + time = 766666 + flags = 0 + data = length 348, hash 66A236DA + sample 23: + time = 799999 + flags = 0 + data = length 174, hash 6AE36E16 + sample 24: + time = 833333 + flags = 0 + data = length 47, hash 3D24B5BF + sample 25: + time = 866666 + flags = 0 + data = length 90, hash 8EADE0DF + sample 26: + time = 899999 + flags = 0 + data = length 1052, hash 16A95E6A + sample 27: + time = 933333 + flags = 0 + data = length 174, hash 1F36339D + sample 28: + time = 966666 + flags = 0 + data = length 76, hash 10C85E1 + sample 29: + time = 999999 + flags = 0 + data = length 205, hash EABF2BD + sample 30: + time = 1033332 + flags = 0 + data = length 807, hash 42FAA50 + sample 31: + time = 1066666 + flags = 0 + data = length 243, hash 4B761AA4 + sample 32: + time = 1099999 + flags = 0 + data = length 139, hash C86B0369 + sample 33: + time = 1133332 + flags = 0 + data = length 78, hash 2BB2A65E + sample 34: + time = 1166666 + flags = 0 + data = length 825, hash 3E330796 + sample 35: + time = 1199999 + flags = 0 + data = length 584, hash BF3E78FF + sample 36: + time = 1233332 + flags = 0 + data = length 301, hash 29AD84AB + sample 37: + time = 1266666 + flags = 0 + data = length 232, hash DC364C13 + sample 38: + time = 1299999 + flags = 0 + data = length 144, hash 44500BAF + sample 39: + time = 1333332 + flags = 0 + data = length 739, hash EA2DBF29 + sample 40: + time = 1366666 + flags = 0 + data = length 412, hash 9A7299B6 + sample 41: + time = 1399999 + flags = 0 + data = length 597, hash 8BB4D193 + sample 42: + time = 1433332 + flags = 0 + data = length 297, hash A655FD4C + sample 43: + time = 1466666 + flags = 0 + data = length 212, hash A6A1DA37 + sample 44: + time = 1499999 + flags = 0 + data = length 223, hash 2C4CE2AB + sample 45: + time = 1533332 + flags = 0 + data = length 697, hash 79DABA1E + sample 46: + time = 1566666 + flags = 0 + data = length 356, hash 6183273 + sample 47: + time = 1599999 + flags = 0 + data = length 259, hash 931056F0 + sample 48: + time = 1633332 + flags = 0 + data = length 227, hash 74A9B2CF + sample 49: + time = 1666666 + flags = 0 + data = length 43, hash 1664850A + sample 50: + time = 1699999 + flags = 0 + data = length 19, hash B3E68F9 + sample 51: + time = 1733332 + flags = 0 + data = length 14, hash 57B3B0EA + sample 52: + time = 1766666 + flags = 0 + data = length 109, hash 33F32F67 + sample 53: + time = 1799999 + flags = 0 + data = length 21, hash 47523E7 + sample 54: + time = 1833332 + flags = 0 + data = length 14, hash 9D5C990C + sample 55: + time = 1866666 + flags = 0 + data = length 14, hash 5C20A241 + sample 56: + time = 1899999 + flags = 0 + data = length 84, hash 6EC1E69C + sample 57: + time = 1933332 + flags = 0 + data = length 25, hash BAFA5220 +track 1: + total output bytes = 32183 + sample count = 77 + track duration = 2037551 + format 0: + id = 1 + sampleMimeType = audio/mpeg + maxInputSize = 418 + channelCount = 2 + sampleRate = 44100 + sample 0: + time = 0 + flags = 1 + data = length 418, hash 6B809A2C + sample 1: + time = 26122 + flags = 1 + data = length 418, hash 2B5563D9 + sample 2: + time = 52244 + flags = 1 + data = length 418, hash 98748D4E + sample 3: + time = 78367 + flags = 1 + data = length 418, hash 2FD35E33 + sample 4: + time = 104489 + flags = 1 + data = length 418, hash 530A8AB0 + sample 5: + time = 130612 + flags = 1 + data = length 418, hash 479DC512 + sample 6: + time = 156734 + flags = 1 + data = length 418, hash 44FD78BD + sample 7: + time = 182857 + flags = 1 + data = length 418, hash E645C22C + sample 8: + time = 208979 + flags = 1 + data = length 418, hash ADD19311 + sample 9: + time = 235102 + flags = 1 + data = length 418, hash 1B369E9F + sample 10: + time = 261224 + flags = 1 + data = length 418, hash 5E2D4C48 + sample 11: + time = 287346 + flags = 1 + data = length 418, hash CE2ADAF7 + sample 12: + time = 313469 + flags = 1 + data = length 418, hash 4FAC77C + sample 13: + time = 339591 + flags = 1 + data = length 418, hash 42D43042 + sample 14: + time = 365714 + flags = 1 + data = length 418, hash DD361ADB + sample 15: + time = 391836 + flags = 1 + data = length 418, hash 2BBC2C9B + sample 16: + time = 417959 + flags = 1 + data = length 418, hash 4FCDE685 + sample 17: + time = 444081 + flags = 1 + data = length 418, hash 309C89C7 + sample 18: + time = 470204 + flags = 1 + data = length 418, hash 78DDE345 + sample 19: + time = 496326 + flags = 1 + data = length 418, hash E6BECDD1 + sample 20: + time = 522448 + flags = 1 + data = length 418, hash C19014D7 + sample 21: + time = 548571 + flags = 1 + data = length 418, hash 62F4740C + sample 22: + time = 574693 + flags = 1 + data = length 418, hash BDE2439A + sample 23: + time = 600816 + flags = 1 + data = length 418, hash 5293CAC6 + sample 24: + time = 626938 + flags = 1 + data = length 417, hash 4DC35659 + sample 25: + time = 653061 + flags = 1 + data = length 418, hash 44A91C4C + sample 26: + time = 679183 + flags = 1 + data = length 418, hash 22E329E0 + sample 27: + time = 705306 + flags = 1 + data = length 418, hash 22C08A37 + sample 28: + time = 731428 + flags = 1 + data = length 418, hash 5917DE43 + sample 29: + time = 757551 + flags = 1 + data = length 418, hash 8A635616 + sample 30: + time = 783673 + flags = 1 + data = length 418, hash 2BC2D355 + sample 31: + time = 809795 + flags = 1 + data = length 418, hash 4D6C5C5 + sample 32: + time = 835918 + flags = 1 + data = length 418, hash 4D405A08 + sample 33: + time = 862040 + flags = 1 + data = length 418, hash F3A1AB29 + sample 34: + time = 888163 + flags = 1 + data = length 418, hash 9E14E0F0 + sample 35: + time = 914285 + flags = 1 + data = length 418, hash FA9CB2EA + sample 36: + time = 940408 + flags = 1 + data = length 418, hash 69C6ECC1 + sample 37: + time = 966530 + flags = 1 + data = length 418, hash C016523B + sample 38: + time = 992653 + flags = 1 + data = length 418, hash A7A34454 + sample 39: + time = 1018775 + flags = 1 + data = length 418, hash F4F0A99 + sample 40: + time = 1044897 + flags = 1 + data = length 418, hash 9AB89C0E + sample 41: + time = 1071020 + flags = 1 + data = length 418, hash 283B271 + sample 42: + time = 1097142 + flags = 1 + data = length 418, hash 413801D1 + sample 43: + time = 1123265 + flags = 1 + data = length 418, hash B0FBC474 + sample 44: + time = 1149387 + flags = 1 + data = length 418, hash 3D56A051 + sample 45: + time = 1175510 + flags = 1 + data = length 418, hash 21E56735 + sample 46: + time = 1201632 + flags = 1 + data = length 418, hash 4F494338 + sample 47: + time = 1227755 + flags = 1 + data = length 418, hash FBF06EAD + sample 48: + time = 1253877 + flags = 1 + data = length 417, hash 56198E7 + sample 49: + time = 1279999 + flags = 1 + data = length 418, hash C8E504E8 + sample 50: + time = 1306122 + flags = 1 + data = length 418, hash AAE14D02 + sample 51: + time = 1332244 + flags = 1 + data = length 418, hash 3B99EC44 + sample 52: + time = 1358367 + flags = 1 + data = length 418, hash 40B9A1BA + sample 53: + time = 1384489 + flags = 1 + data = length 418, hash 782D4052 + sample 54: + time = 1410612 + flags = 1 + data = length 418, hash 5DE9ECE6 + sample 55: + time = 1436734 + flags = 1 + data = length 418, hash BC628CA9 + sample 56: + time = 1462857 + flags = 1 + data = length 418, hash 1FD43DA0 + sample 57: + time = 1488979 + flags = 1 + data = length 418, hash E66C956B + sample 58: + time = 1515102 + flags = 1 + data = length 418, hash C4FA9048 + sample 59: + time = 1541224 + flags = 1 + data = length 418, hash 3EC107FD + sample 60: + time = 1567346 + flags = 1 + data = length 418, hash EC5C955D + sample 61: + time = 1593469 + flags = 1 + data = length 418, hash 177D7541 + sample 62: + time = 1619591 + flags = 1 + data = length 418, hash D53D7C61 + sample 63: + time = 1645714 + flags = 1 + data = length 418, hash 41994E54 + sample 64: + time = 1671836 + flags = 1 + data = length 418, hash 10A13197 + sample 65: + time = 1697959 + flags = 1 + data = length 418, hash 6B964E7A + sample 66: + time = 1724081 + flags = 1 + data = length 418, hash 23169DC3 + sample 67: + time = 1750204 + flags = 1 + data = length 418, hash BCB49A2 + sample 68: + time = 1776326 + flags = 1 + data = length 418, hash EAD6106F + sample 69: + time = 1802448 + flags = 1 + data = length 418, hash 5DB634E3 + sample 70: + time = 1828571 + flags = 1 + data = length 418, hash 74E5B060 + sample 71: + time = 1854693 + flags = 1 + data = length 418, hash EA5A9CB9 + sample 72: + time = 1880816 + flags = 1 + data = length 418, hash 63A62EEB + sample 73: + time = 1906938 + flags = 1 + data = length 417, hash B77518E9 + sample 74: + time = 1933061 + flags = 1 + data = length 418, hash BB8125FF + sample 75: + time = 1959183 + flags = 1 + data = length 418, hash 8034AE66 + sample 76: + time = 1985306 + flags = 1 + data = length 418, hash 4ED5A004 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/avi/sample-with-large-length.avi.2.dump b/libraries/test_data/src/test/assets/extractordumps/avi/sample-with-large-length.avi.2.dump new file mode 100644 index 0000000000..a23519eb7f --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/avi/sample-with-large-length.avi.2.dump @@ -0,0 +1,569 @@ +seekMap: + isSeekable = true + duration = 2037551 + getPosition(0) = [[timeUs=0, position=10192]] + getPosition(1) = [[timeUs=0, position=10192]] + getPosition(1018775) = [[timeUs=0, position=10618]] + getPosition(2037551) = [[timeUs=0, position=10618]] +numberOfTracks = 2 +track 0: + total output bytes = 19538 + sample count = 58 + track duration = 1966666 + format 0: + id = 0 + sampleMimeType = video/avc + maxInputSize = 1858 + width = 256 + height = 144 + sample 0: + time = 0 + flags = 1 + data = length 794, hash E51B392 + sample 1: + time = 66666 + flags = 0 + data = length 1269, hash F97B0D34 + sample 2: + time = 99999 + flags = 0 + data = length 1858, hash BF98E83E + sample 3: + time = 133333 + flags = 0 + data = length 12, hash 57B58178 + sample 4: + time = 166666 + flags = 0 + data = length 572, hash 6D29902A + sample 5: + time = 199999 + flags = 0 + data = length 321, hash 989CC24 + sample 6: + time = 233333 + flags = 0 + data = length 104, hash C85D189C + sample 7: + time = 266666 + flags = 0 + data = length 15, hash 54DD1283 + sample 8: + time = 299999 + flags = 0 + data = length 47, hash 19C0FB57 + sample 9: + time = 333333 + flags = 0 + data = length 871, hash A2E94A8E + sample 10: + time = 366666 + flags = 0 + data = length 83, hash B681B415 + sample 11: + time = 399999 + flags = 0 + data = length 50, hash 47CF138C + sample 12: + time = 433333 + flags = 0 + data = length 24, hash 60C537AA + sample 13: + time = 466666 + flags = 0 + data = length 1372, hash 7CD6E34D + sample 14: + time = 499999 + flags = 0 + data = length 79, hash FBD5B0AB + sample 15: + time = 533333 + flags = 0 + data = length 74, hash 834B3EED + sample 16: + time = 566666 + flags = 0 + data = length 59, hash FDD25EF3 + sample 17: + time = 599999 + flags = 0 + data = length 948, hash 66EE7B18 + sample 18: + time = 633333 + flags = 0 + data = length 146, hash 1A35D839 + sample 19: + time = 666666 + flags = 0 + data = length 52, hash E2BF7ECF + sample 20: + time = 699999 + flags = 0 + data = length 819, hash 2B961CBC + sample 21: + time = 733333 + flags = 0 + data = length 88, hash F5BC3699 + sample 22: + time = 766666 + flags = 0 + data = length 348, hash 66A236DA + sample 23: + time = 799999 + flags = 0 + data = length 174, hash 6AE36E16 + sample 24: + time = 833333 + flags = 0 + data = length 47, hash 3D24B5BF + sample 25: + time = 866666 + flags = 0 + data = length 90, hash 8EADE0DF + sample 26: + time = 899999 + flags = 0 + data = length 1052, hash 16A95E6A + sample 27: + time = 933333 + flags = 0 + data = length 174, hash 1F36339D + sample 28: + time = 966666 + flags = 0 + data = length 76, hash 10C85E1 + sample 29: + time = 999999 + flags = 0 + data = length 205, hash EABF2BD + sample 30: + time = 1033332 + flags = 0 + data = length 807, hash 42FAA50 + sample 31: + time = 1066666 + flags = 0 + data = length 243, hash 4B761AA4 + sample 32: + time = 1099999 + flags = 0 + data = length 139, hash C86B0369 + sample 33: + time = 1133332 + flags = 0 + data = length 78, hash 2BB2A65E + sample 34: + time = 1166666 + flags = 0 + data = length 825, hash 3E330796 + sample 35: + time = 1199999 + flags = 0 + data = length 584, hash BF3E78FF + sample 36: + time = 1233332 + flags = 0 + data = length 301, hash 29AD84AB + sample 37: + time = 1266666 + flags = 0 + data = length 232, hash DC364C13 + sample 38: + time = 1299999 + flags = 0 + data = length 144, hash 44500BAF + sample 39: + time = 1333332 + flags = 0 + data = length 739, hash EA2DBF29 + sample 40: + time = 1366666 + flags = 0 + data = length 412, hash 9A7299B6 + sample 41: + time = 1399999 + flags = 0 + data = length 597, hash 8BB4D193 + sample 42: + time = 1433332 + flags = 0 + data = length 297, hash A655FD4C + sample 43: + time = 1466666 + flags = 0 + data = length 212, hash A6A1DA37 + sample 44: + time = 1499999 + flags = 0 + data = length 223, hash 2C4CE2AB + sample 45: + time = 1533332 + flags = 0 + data = length 697, hash 79DABA1E + sample 46: + time = 1566666 + flags = 0 + data = length 356, hash 6183273 + sample 47: + time = 1599999 + flags = 0 + data = length 259, hash 931056F0 + sample 48: + time = 1633332 + flags = 0 + data = length 227, hash 74A9B2CF + sample 49: + time = 1666666 + flags = 0 + data = length 43, hash 1664850A + sample 50: + time = 1699999 + flags = 0 + data = length 19, hash B3E68F9 + sample 51: + time = 1733332 + flags = 0 + data = length 14, hash 57B3B0EA + sample 52: + time = 1766666 + flags = 0 + data = length 109, hash 33F32F67 + sample 53: + time = 1799999 + flags = 0 + data = length 21, hash 47523E7 + sample 54: + time = 1833332 + flags = 0 + data = length 14, hash 9D5C990C + sample 55: + time = 1866666 + flags = 0 + data = length 14, hash 5C20A241 + sample 56: + time = 1899999 + flags = 0 + data = length 84, hash 6EC1E69C + sample 57: + time = 1933332 + flags = 0 + data = length 25, hash BAFA5220 +track 1: + total output bytes = 32183 + sample count = 77 + track duration = 2037551 + format 0: + id = 1 + sampleMimeType = audio/mpeg + maxInputSize = 418 + channelCount = 2 + sampleRate = 44100 + sample 0: + time = 0 + flags = 1 + data = length 418, hash 6B809A2C + sample 1: + time = 26122 + flags = 1 + data = length 418, hash 2B5563D9 + sample 2: + time = 52244 + flags = 1 + data = length 418, hash 98748D4E + sample 3: + time = 78367 + flags = 1 + data = length 418, hash 2FD35E33 + sample 4: + time = 104489 + flags = 1 + data = length 418, hash 530A8AB0 + sample 5: + time = 130612 + flags = 1 + data = length 418, hash 479DC512 + sample 6: + time = 156734 + flags = 1 + data = length 418, hash 44FD78BD + sample 7: + time = 182857 + flags = 1 + data = length 418, hash E645C22C + sample 8: + time = 208979 + flags = 1 + data = length 418, hash ADD19311 + sample 9: + time = 235102 + flags = 1 + data = length 418, hash 1B369E9F + sample 10: + time = 261224 + flags = 1 + data = length 418, hash 5E2D4C48 + sample 11: + time = 287346 + flags = 1 + data = length 418, hash CE2ADAF7 + sample 12: + time = 313469 + flags = 1 + data = length 418, hash 4FAC77C + sample 13: + time = 339591 + flags = 1 + data = length 418, hash 42D43042 + sample 14: + time = 365714 + flags = 1 + data = length 418, hash DD361ADB + sample 15: + time = 391836 + flags = 1 + data = length 418, hash 2BBC2C9B + sample 16: + time = 417959 + flags = 1 + data = length 418, hash 4FCDE685 + sample 17: + time = 444081 + flags = 1 + data = length 418, hash 309C89C7 + sample 18: + time = 470204 + flags = 1 + data = length 418, hash 78DDE345 + sample 19: + time = 496326 + flags = 1 + data = length 418, hash E6BECDD1 + sample 20: + time = 522448 + flags = 1 + data = length 418, hash C19014D7 + sample 21: + time = 548571 + flags = 1 + data = length 418, hash 62F4740C + sample 22: + time = 574693 + flags = 1 + data = length 418, hash BDE2439A + sample 23: + time = 600816 + flags = 1 + data = length 418, hash 5293CAC6 + sample 24: + time = 626938 + flags = 1 + data = length 417, hash 4DC35659 + sample 25: + time = 653061 + flags = 1 + data = length 418, hash 44A91C4C + sample 26: + time = 679183 + flags = 1 + data = length 418, hash 22E329E0 + sample 27: + time = 705306 + flags = 1 + data = length 418, hash 22C08A37 + sample 28: + time = 731428 + flags = 1 + data = length 418, hash 5917DE43 + sample 29: + time = 757551 + flags = 1 + data = length 418, hash 8A635616 + sample 30: + time = 783673 + flags = 1 + data = length 418, hash 2BC2D355 + sample 31: + time = 809795 + flags = 1 + data = length 418, hash 4D6C5C5 + sample 32: + time = 835918 + flags = 1 + data = length 418, hash 4D405A08 + sample 33: + time = 862040 + flags = 1 + data = length 418, hash F3A1AB29 + sample 34: + time = 888163 + flags = 1 + data = length 418, hash 9E14E0F0 + sample 35: + time = 914285 + flags = 1 + data = length 418, hash FA9CB2EA + sample 36: + time = 940408 + flags = 1 + data = length 418, hash 69C6ECC1 + sample 37: + time = 966530 + flags = 1 + data = length 418, hash C016523B + sample 38: + time = 992653 + flags = 1 + data = length 418, hash A7A34454 + sample 39: + time = 1018775 + flags = 1 + data = length 418, hash F4F0A99 + sample 40: + time = 1044897 + flags = 1 + data = length 418, hash 9AB89C0E + sample 41: + time = 1071020 + flags = 1 + data = length 418, hash 283B271 + sample 42: + time = 1097142 + flags = 1 + data = length 418, hash 413801D1 + sample 43: + time = 1123265 + flags = 1 + data = length 418, hash B0FBC474 + sample 44: + time = 1149387 + flags = 1 + data = length 418, hash 3D56A051 + sample 45: + time = 1175510 + flags = 1 + data = length 418, hash 21E56735 + sample 46: + time = 1201632 + flags = 1 + data = length 418, hash 4F494338 + sample 47: + time = 1227755 + flags = 1 + data = length 418, hash FBF06EAD + sample 48: + time = 1253877 + flags = 1 + data = length 417, hash 56198E7 + sample 49: + time = 1279999 + flags = 1 + data = length 418, hash C8E504E8 + sample 50: + time = 1306122 + flags = 1 + data = length 418, hash AAE14D02 + sample 51: + time = 1332244 + flags = 1 + data = length 418, hash 3B99EC44 + sample 52: + time = 1358367 + flags = 1 + data = length 418, hash 40B9A1BA + sample 53: + time = 1384489 + flags = 1 + data = length 418, hash 782D4052 + sample 54: + time = 1410612 + flags = 1 + data = length 418, hash 5DE9ECE6 + sample 55: + time = 1436734 + flags = 1 + data = length 418, hash BC628CA9 + sample 56: + time = 1462857 + flags = 1 + data = length 418, hash 1FD43DA0 + sample 57: + time = 1488979 + flags = 1 + data = length 418, hash E66C956B + sample 58: + time = 1515102 + flags = 1 + data = length 418, hash C4FA9048 + sample 59: + time = 1541224 + flags = 1 + data = length 418, hash 3EC107FD + sample 60: + time = 1567346 + flags = 1 + data = length 418, hash EC5C955D + sample 61: + time = 1593469 + flags = 1 + data = length 418, hash 177D7541 + sample 62: + time = 1619591 + flags = 1 + data = length 418, hash D53D7C61 + sample 63: + time = 1645714 + flags = 1 + data = length 418, hash 41994E54 + sample 64: + time = 1671836 + flags = 1 + data = length 418, hash 10A13197 + sample 65: + time = 1697959 + flags = 1 + data = length 418, hash 6B964E7A + sample 66: + time = 1724081 + flags = 1 + data = length 418, hash 23169DC3 + sample 67: + time = 1750204 + flags = 1 + data = length 418, hash BCB49A2 + sample 68: + time = 1776326 + flags = 1 + data = length 418, hash EAD6106F + sample 69: + time = 1802448 + flags = 1 + data = length 418, hash 5DB634E3 + sample 70: + time = 1828571 + flags = 1 + data = length 418, hash 74E5B060 + sample 71: + time = 1854693 + flags = 1 + data = length 418, hash EA5A9CB9 + sample 72: + time = 1880816 + flags = 1 + data = length 418, hash 63A62EEB + sample 73: + time = 1906938 + flags = 1 + data = length 417, hash B77518E9 + sample 74: + time = 1933061 + flags = 1 + data = length 418, hash BB8125FF + sample 75: + time = 1959183 + flags = 1 + data = length 418, hash 8034AE66 + sample 76: + time = 1985306 + flags = 1 + data = length 418, hash 4ED5A004 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/avi/sample-with-large-length.avi.3.dump b/libraries/test_data/src/test/assets/extractordumps/avi/sample-with-large-length.avi.3.dump new file mode 100644 index 0000000000..a23519eb7f --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/avi/sample-with-large-length.avi.3.dump @@ -0,0 +1,569 @@ +seekMap: + isSeekable = true + duration = 2037551 + getPosition(0) = [[timeUs=0, position=10192]] + getPosition(1) = [[timeUs=0, position=10192]] + getPosition(1018775) = [[timeUs=0, position=10618]] + getPosition(2037551) = [[timeUs=0, position=10618]] +numberOfTracks = 2 +track 0: + total output bytes = 19538 + sample count = 58 + track duration = 1966666 + format 0: + id = 0 + sampleMimeType = video/avc + maxInputSize = 1858 + width = 256 + height = 144 + sample 0: + time = 0 + flags = 1 + data = length 794, hash E51B392 + sample 1: + time = 66666 + flags = 0 + data = length 1269, hash F97B0D34 + sample 2: + time = 99999 + flags = 0 + data = length 1858, hash BF98E83E + sample 3: + time = 133333 + flags = 0 + data = length 12, hash 57B58178 + sample 4: + time = 166666 + flags = 0 + data = length 572, hash 6D29902A + sample 5: + time = 199999 + flags = 0 + data = length 321, hash 989CC24 + sample 6: + time = 233333 + flags = 0 + data = length 104, hash C85D189C + sample 7: + time = 266666 + flags = 0 + data = length 15, hash 54DD1283 + sample 8: + time = 299999 + flags = 0 + data = length 47, hash 19C0FB57 + sample 9: + time = 333333 + flags = 0 + data = length 871, hash A2E94A8E + sample 10: + time = 366666 + flags = 0 + data = length 83, hash B681B415 + sample 11: + time = 399999 + flags = 0 + data = length 50, hash 47CF138C + sample 12: + time = 433333 + flags = 0 + data = length 24, hash 60C537AA + sample 13: + time = 466666 + flags = 0 + data = length 1372, hash 7CD6E34D + sample 14: + time = 499999 + flags = 0 + data = length 79, hash FBD5B0AB + sample 15: + time = 533333 + flags = 0 + data = length 74, hash 834B3EED + sample 16: + time = 566666 + flags = 0 + data = length 59, hash FDD25EF3 + sample 17: + time = 599999 + flags = 0 + data = length 948, hash 66EE7B18 + sample 18: + time = 633333 + flags = 0 + data = length 146, hash 1A35D839 + sample 19: + time = 666666 + flags = 0 + data = length 52, hash E2BF7ECF + sample 20: + time = 699999 + flags = 0 + data = length 819, hash 2B961CBC + sample 21: + time = 733333 + flags = 0 + data = length 88, hash F5BC3699 + sample 22: + time = 766666 + flags = 0 + data = length 348, hash 66A236DA + sample 23: + time = 799999 + flags = 0 + data = length 174, hash 6AE36E16 + sample 24: + time = 833333 + flags = 0 + data = length 47, hash 3D24B5BF + sample 25: + time = 866666 + flags = 0 + data = length 90, hash 8EADE0DF + sample 26: + time = 899999 + flags = 0 + data = length 1052, hash 16A95E6A + sample 27: + time = 933333 + flags = 0 + data = length 174, hash 1F36339D + sample 28: + time = 966666 + flags = 0 + data = length 76, hash 10C85E1 + sample 29: + time = 999999 + flags = 0 + data = length 205, hash EABF2BD + sample 30: + time = 1033332 + flags = 0 + data = length 807, hash 42FAA50 + sample 31: + time = 1066666 + flags = 0 + data = length 243, hash 4B761AA4 + sample 32: + time = 1099999 + flags = 0 + data = length 139, hash C86B0369 + sample 33: + time = 1133332 + flags = 0 + data = length 78, hash 2BB2A65E + sample 34: + time = 1166666 + flags = 0 + data = length 825, hash 3E330796 + sample 35: + time = 1199999 + flags = 0 + data = length 584, hash BF3E78FF + sample 36: + time = 1233332 + flags = 0 + data = length 301, hash 29AD84AB + sample 37: + time = 1266666 + flags = 0 + data = length 232, hash DC364C13 + sample 38: + time = 1299999 + flags = 0 + data = length 144, hash 44500BAF + sample 39: + time = 1333332 + flags = 0 + data = length 739, hash EA2DBF29 + sample 40: + time = 1366666 + flags = 0 + data = length 412, hash 9A7299B6 + sample 41: + time = 1399999 + flags = 0 + data = length 597, hash 8BB4D193 + sample 42: + time = 1433332 + flags = 0 + data = length 297, hash A655FD4C + sample 43: + time = 1466666 + flags = 0 + data = length 212, hash A6A1DA37 + sample 44: + time = 1499999 + flags = 0 + data = length 223, hash 2C4CE2AB + sample 45: + time = 1533332 + flags = 0 + data = length 697, hash 79DABA1E + sample 46: + time = 1566666 + flags = 0 + data = length 356, hash 6183273 + sample 47: + time = 1599999 + flags = 0 + data = length 259, hash 931056F0 + sample 48: + time = 1633332 + flags = 0 + data = length 227, hash 74A9B2CF + sample 49: + time = 1666666 + flags = 0 + data = length 43, hash 1664850A + sample 50: + time = 1699999 + flags = 0 + data = length 19, hash B3E68F9 + sample 51: + time = 1733332 + flags = 0 + data = length 14, hash 57B3B0EA + sample 52: + time = 1766666 + flags = 0 + data = length 109, hash 33F32F67 + sample 53: + time = 1799999 + flags = 0 + data = length 21, hash 47523E7 + sample 54: + time = 1833332 + flags = 0 + data = length 14, hash 9D5C990C + sample 55: + time = 1866666 + flags = 0 + data = length 14, hash 5C20A241 + sample 56: + time = 1899999 + flags = 0 + data = length 84, hash 6EC1E69C + sample 57: + time = 1933332 + flags = 0 + data = length 25, hash BAFA5220 +track 1: + total output bytes = 32183 + sample count = 77 + track duration = 2037551 + format 0: + id = 1 + sampleMimeType = audio/mpeg + maxInputSize = 418 + channelCount = 2 + sampleRate = 44100 + sample 0: + time = 0 + flags = 1 + data = length 418, hash 6B809A2C + sample 1: + time = 26122 + flags = 1 + data = length 418, hash 2B5563D9 + sample 2: + time = 52244 + flags = 1 + data = length 418, hash 98748D4E + sample 3: + time = 78367 + flags = 1 + data = length 418, hash 2FD35E33 + sample 4: + time = 104489 + flags = 1 + data = length 418, hash 530A8AB0 + sample 5: + time = 130612 + flags = 1 + data = length 418, hash 479DC512 + sample 6: + time = 156734 + flags = 1 + data = length 418, hash 44FD78BD + sample 7: + time = 182857 + flags = 1 + data = length 418, hash E645C22C + sample 8: + time = 208979 + flags = 1 + data = length 418, hash ADD19311 + sample 9: + time = 235102 + flags = 1 + data = length 418, hash 1B369E9F + sample 10: + time = 261224 + flags = 1 + data = length 418, hash 5E2D4C48 + sample 11: + time = 287346 + flags = 1 + data = length 418, hash CE2ADAF7 + sample 12: + time = 313469 + flags = 1 + data = length 418, hash 4FAC77C + sample 13: + time = 339591 + flags = 1 + data = length 418, hash 42D43042 + sample 14: + time = 365714 + flags = 1 + data = length 418, hash DD361ADB + sample 15: + time = 391836 + flags = 1 + data = length 418, hash 2BBC2C9B + sample 16: + time = 417959 + flags = 1 + data = length 418, hash 4FCDE685 + sample 17: + time = 444081 + flags = 1 + data = length 418, hash 309C89C7 + sample 18: + time = 470204 + flags = 1 + data = length 418, hash 78DDE345 + sample 19: + time = 496326 + flags = 1 + data = length 418, hash E6BECDD1 + sample 20: + time = 522448 + flags = 1 + data = length 418, hash C19014D7 + sample 21: + time = 548571 + flags = 1 + data = length 418, hash 62F4740C + sample 22: + time = 574693 + flags = 1 + data = length 418, hash BDE2439A + sample 23: + time = 600816 + flags = 1 + data = length 418, hash 5293CAC6 + sample 24: + time = 626938 + flags = 1 + data = length 417, hash 4DC35659 + sample 25: + time = 653061 + flags = 1 + data = length 418, hash 44A91C4C + sample 26: + time = 679183 + flags = 1 + data = length 418, hash 22E329E0 + sample 27: + time = 705306 + flags = 1 + data = length 418, hash 22C08A37 + sample 28: + time = 731428 + flags = 1 + data = length 418, hash 5917DE43 + sample 29: + time = 757551 + flags = 1 + data = length 418, hash 8A635616 + sample 30: + time = 783673 + flags = 1 + data = length 418, hash 2BC2D355 + sample 31: + time = 809795 + flags = 1 + data = length 418, hash 4D6C5C5 + sample 32: + time = 835918 + flags = 1 + data = length 418, hash 4D405A08 + sample 33: + time = 862040 + flags = 1 + data = length 418, hash F3A1AB29 + sample 34: + time = 888163 + flags = 1 + data = length 418, hash 9E14E0F0 + sample 35: + time = 914285 + flags = 1 + data = length 418, hash FA9CB2EA + sample 36: + time = 940408 + flags = 1 + data = length 418, hash 69C6ECC1 + sample 37: + time = 966530 + flags = 1 + data = length 418, hash C016523B + sample 38: + time = 992653 + flags = 1 + data = length 418, hash A7A34454 + sample 39: + time = 1018775 + flags = 1 + data = length 418, hash F4F0A99 + sample 40: + time = 1044897 + flags = 1 + data = length 418, hash 9AB89C0E + sample 41: + time = 1071020 + flags = 1 + data = length 418, hash 283B271 + sample 42: + time = 1097142 + flags = 1 + data = length 418, hash 413801D1 + sample 43: + time = 1123265 + flags = 1 + data = length 418, hash B0FBC474 + sample 44: + time = 1149387 + flags = 1 + data = length 418, hash 3D56A051 + sample 45: + time = 1175510 + flags = 1 + data = length 418, hash 21E56735 + sample 46: + time = 1201632 + flags = 1 + data = length 418, hash 4F494338 + sample 47: + time = 1227755 + flags = 1 + data = length 418, hash FBF06EAD + sample 48: + time = 1253877 + flags = 1 + data = length 417, hash 56198E7 + sample 49: + time = 1279999 + flags = 1 + data = length 418, hash C8E504E8 + sample 50: + time = 1306122 + flags = 1 + data = length 418, hash AAE14D02 + sample 51: + time = 1332244 + flags = 1 + data = length 418, hash 3B99EC44 + sample 52: + time = 1358367 + flags = 1 + data = length 418, hash 40B9A1BA + sample 53: + time = 1384489 + flags = 1 + data = length 418, hash 782D4052 + sample 54: + time = 1410612 + flags = 1 + data = length 418, hash 5DE9ECE6 + sample 55: + time = 1436734 + flags = 1 + data = length 418, hash BC628CA9 + sample 56: + time = 1462857 + flags = 1 + data = length 418, hash 1FD43DA0 + sample 57: + time = 1488979 + flags = 1 + data = length 418, hash E66C956B + sample 58: + time = 1515102 + flags = 1 + data = length 418, hash C4FA9048 + sample 59: + time = 1541224 + flags = 1 + data = length 418, hash 3EC107FD + sample 60: + time = 1567346 + flags = 1 + data = length 418, hash EC5C955D + sample 61: + time = 1593469 + flags = 1 + data = length 418, hash 177D7541 + sample 62: + time = 1619591 + flags = 1 + data = length 418, hash D53D7C61 + sample 63: + time = 1645714 + flags = 1 + data = length 418, hash 41994E54 + sample 64: + time = 1671836 + flags = 1 + data = length 418, hash 10A13197 + sample 65: + time = 1697959 + flags = 1 + data = length 418, hash 6B964E7A + sample 66: + time = 1724081 + flags = 1 + data = length 418, hash 23169DC3 + sample 67: + time = 1750204 + flags = 1 + data = length 418, hash BCB49A2 + sample 68: + time = 1776326 + flags = 1 + data = length 418, hash EAD6106F + sample 69: + time = 1802448 + flags = 1 + data = length 418, hash 5DB634E3 + sample 70: + time = 1828571 + flags = 1 + data = length 418, hash 74E5B060 + sample 71: + time = 1854693 + flags = 1 + data = length 418, hash EA5A9CB9 + sample 72: + time = 1880816 + flags = 1 + data = length 418, hash 63A62EEB + sample 73: + time = 1906938 + flags = 1 + data = length 417, hash B77518E9 + sample 74: + time = 1933061 + flags = 1 + data = length 418, hash BB8125FF + sample 75: + time = 1959183 + flags = 1 + data = length 418, hash 8034AE66 + sample 76: + time = 1985306 + flags = 1 + data = length 418, hash 4ED5A004 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/avi/sample-with-large-length.avi.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/avi/sample-with-large-length.avi.unknown_length.dump new file mode 100644 index 0000000000..49929884ce --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/avi/sample-with-large-length.avi.unknown_length.dump @@ -0,0 +1,573 @@ +seekMap: + isSeekable = true + duration = 2037551 + getPosition(0) = [[timeUs=0, position=10192]] + getPosition(1) = [[timeUs=0, position=10192]] + getPosition(1018775) = [[timeUs=0, position=10618]] + getPosition(2037551) = [[timeUs=0, position=10618]] +numberOfTracks = 2 +track 0: + total output bytes = 19538 + sample count = 58 + track duration = 1966666 + format 0: + id = 0 + sampleMimeType = video/avc + maxInputSize = 1858 + width = 256 + height = 144 + sample 0: + time = 0 + flags = 1 + data = length 794, hash E51B392 + sample 1: + time = 66666 + flags = 0 + data = length 1269, hash F97B0D34 + sample 2: + time = 99999 + flags = 0 + data = length 1858, hash BF98E83E + sample 3: + time = 133333 + flags = 0 + data = length 12, hash 57B58178 + sample 4: + time = 166666 + flags = 0 + data = length 572, hash 6D29902A + sample 5: + time = 199999 + flags = 0 + data = length 321, hash 989CC24 + sample 6: + time = 233333 + flags = 0 + data = length 104, hash C85D189C + sample 7: + time = 266666 + flags = 0 + data = length 15, hash 54DD1283 + sample 8: + time = 299999 + flags = 0 + data = length 47, hash 19C0FB57 + sample 9: + time = 333333 + flags = 0 + data = length 871, hash A2E94A8E + sample 10: + time = 366666 + flags = 0 + data = length 83, hash B681B415 + sample 11: + time = 399999 + flags = 0 + data = length 50, hash 47CF138C + sample 12: + time = 433333 + flags = 0 + data = length 24, hash 60C537AA + sample 13: + time = 466666 + flags = 0 + data = length 1372, hash 7CD6E34D + sample 14: + time = 499999 + flags = 0 + data = length 79, hash FBD5B0AB + sample 15: + time = 533333 + flags = 0 + data = length 74, hash 834B3EED + sample 16: + time = 566666 + flags = 0 + data = length 59, hash FDD25EF3 + sample 17: + time = 599999 + flags = 0 + data = length 948, hash 66EE7B18 + sample 18: + time = 633333 + flags = 0 + data = length 146, hash 1A35D839 + sample 19: + time = 666666 + flags = 0 + data = length 52, hash E2BF7ECF + sample 20: + time = 699999 + flags = 0 + data = length 819, hash 2B961CBC + sample 21: + time = 733333 + flags = 0 + data = length 88, hash F5BC3699 + sample 22: + time = 766666 + flags = 0 + data = length 348, hash 66A236DA + sample 23: + time = 799999 + flags = 0 + data = length 174, hash 6AE36E16 + sample 24: + time = 833333 + flags = 0 + data = length 47, hash 3D24B5BF + sample 25: + time = 866666 + flags = 0 + data = length 90, hash 8EADE0DF + sample 26: + time = 899999 + flags = 0 + data = length 1052, hash 16A95E6A + sample 27: + time = 933333 + flags = 0 + data = length 174, hash 1F36339D + sample 28: + time = 966666 + flags = 0 + data = length 76, hash 10C85E1 + sample 29: + time = 999999 + flags = 0 + data = length 205, hash EABF2BD + sample 30: + time = 1033332 + flags = 0 + data = length 807, hash 42FAA50 + sample 31: + time = 1066666 + flags = 0 + data = length 243, hash 4B761AA4 + sample 32: + time = 1099999 + flags = 0 + data = length 139, hash C86B0369 + sample 33: + time = 1133332 + flags = 0 + data = length 78, hash 2BB2A65E + sample 34: + time = 1166666 + flags = 0 + data = length 825, hash 3E330796 + sample 35: + time = 1199999 + flags = 0 + data = length 584, hash BF3E78FF + sample 36: + time = 1233332 + flags = 0 + data = length 301, hash 29AD84AB + sample 37: + time = 1266666 + flags = 0 + data = length 232, hash DC364C13 + sample 38: + time = 1299999 + flags = 0 + data = length 144, hash 44500BAF + sample 39: + time = 1333332 + flags = 0 + data = length 739, hash EA2DBF29 + sample 40: + time = 1366666 + flags = 0 + data = length 412, hash 9A7299B6 + sample 41: + time = 1399999 + flags = 0 + data = length 597, hash 8BB4D193 + sample 42: + time = 1433332 + flags = 0 + data = length 297, hash A655FD4C + sample 43: + time = 1466666 + flags = 0 + data = length 212, hash A6A1DA37 + sample 44: + time = 1499999 + flags = 0 + data = length 223, hash 2C4CE2AB + sample 45: + time = 1533332 + flags = 0 + data = length 697, hash 79DABA1E + sample 46: + time = 1566666 + flags = 0 + data = length 356, hash 6183273 + sample 47: + time = 1599999 + flags = 0 + data = length 259, hash 931056F0 + sample 48: + time = 1633332 + flags = 0 + data = length 227, hash 74A9B2CF + sample 49: + time = 1666666 + flags = 0 + data = length 43, hash 1664850A + sample 50: + time = 1699999 + flags = 0 + data = length 19, hash B3E68F9 + sample 51: + time = 1733332 + flags = 0 + data = length 14, hash 57B3B0EA + sample 52: + time = 1766666 + flags = 0 + data = length 109, hash 33F32F67 + sample 53: + time = 1799999 + flags = 0 + data = length 21, hash 47523E7 + sample 54: + time = 1833332 + flags = 0 + data = length 14, hash 9D5C990C + sample 55: + time = 1866666 + flags = 0 + data = length 14, hash 5C20A241 + sample 56: + time = 1899999 + flags = 0 + data = length 84, hash 6EC1E69C + sample 57: + time = 1933332 + flags = 0 + data = length 25, hash BAFA5220 +track 1: + total output bytes = 32600 + sample count = 78 + track duration = 2037551 + format 0: + id = 1 + sampleMimeType = audio/mpeg + maxInputSize = 418 + channelCount = 2 + sampleRate = 44100 + sample 0: + time = 0 + flags = 1 + data = length 417, hash 929E87CB + sample 1: + time = 26122 + flags = 1 + data = length 418, hash 6B809A2C + sample 2: + time = 52244 + flags = 1 + data = length 418, hash 2B5563D9 + sample 3: + time = 78367 + flags = 1 + data = length 418, hash 98748D4E + sample 4: + time = 104489 + flags = 1 + data = length 418, hash 2FD35E33 + sample 5: + time = 130612 + flags = 1 + data = length 418, hash 530A8AB0 + sample 6: + time = 156734 + flags = 1 + data = length 418, hash 479DC512 + sample 7: + time = 182857 + flags = 1 + data = length 418, hash 44FD78BD + sample 8: + time = 208979 + flags = 1 + data = length 418, hash E645C22C + sample 9: + time = 235102 + flags = 1 + data = length 418, hash ADD19311 + sample 10: + time = 261224 + flags = 1 + data = length 418, hash 1B369E9F + sample 11: + time = 287346 + flags = 1 + data = length 418, hash 5E2D4C48 + sample 12: + time = 313469 + flags = 1 + data = length 418, hash CE2ADAF7 + sample 13: + time = 339591 + flags = 1 + data = length 418, hash 4FAC77C + sample 14: + time = 365714 + flags = 1 + data = length 418, hash 42D43042 + sample 15: + time = 391836 + flags = 1 + data = length 418, hash DD361ADB + sample 16: + time = 417959 + flags = 1 + data = length 418, hash 2BBC2C9B + sample 17: + time = 444081 + flags = 1 + data = length 418, hash 4FCDE685 + sample 18: + time = 470204 + flags = 1 + data = length 418, hash 309C89C7 + sample 19: + time = 496326 + flags = 1 + data = length 418, hash 78DDE345 + sample 20: + time = 522448 + flags = 1 + data = length 418, hash E6BECDD1 + sample 21: + time = 548571 + flags = 1 + data = length 418, hash C19014D7 + sample 22: + time = 574693 + flags = 1 + data = length 418, hash 62F4740C + sample 23: + time = 600816 + flags = 1 + data = length 418, hash BDE2439A + sample 24: + time = 626938 + flags = 1 + data = length 418, hash 5293CAC6 + sample 25: + time = 653061 + flags = 1 + data = length 417, hash 4DC35659 + sample 26: + time = 679183 + flags = 1 + data = length 418, hash 44A91C4C + sample 27: + time = 705306 + flags = 1 + data = length 418, hash 22E329E0 + sample 28: + time = 731428 + flags = 1 + data = length 418, hash 22C08A37 + sample 29: + time = 757551 + flags = 1 + data = length 418, hash 5917DE43 + sample 30: + time = 783673 + flags = 1 + data = length 418, hash 8A635616 + sample 31: + time = 809795 + flags = 1 + data = length 418, hash 2BC2D355 + sample 32: + time = 835918 + flags = 1 + data = length 418, hash 4D6C5C5 + sample 33: + time = 862040 + flags = 1 + data = length 418, hash 4D405A08 + sample 34: + time = 888163 + flags = 1 + data = length 418, hash F3A1AB29 + sample 35: + time = 914285 + flags = 1 + data = length 418, hash 9E14E0F0 + sample 36: + time = 940408 + flags = 1 + data = length 418, hash FA9CB2EA + sample 37: + time = 966530 + flags = 1 + data = length 418, hash 69C6ECC1 + sample 38: + time = 992653 + flags = 1 + data = length 418, hash C016523B + sample 39: + time = 1018775 + flags = 1 + data = length 418, hash A7A34454 + sample 40: + time = 1044897 + flags = 1 + data = length 418, hash F4F0A99 + sample 41: + time = 1071020 + flags = 1 + data = length 418, hash 9AB89C0E + sample 42: + time = 1097142 + flags = 1 + data = length 418, hash 283B271 + sample 43: + time = 1123265 + flags = 1 + data = length 418, hash 413801D1 + sample 44: + time = 1149387 + flags = 1 + data = length 418, hash B0FBC474 + sample 45: + time = 1175510 + flags = 1 + data = length 418, hash 3D56A051 + sample 46: + time = 1201632 + flags = 1 + data = length 418, hash 21E56735 + sample 47: + time = 1227755 + flags = 1 + data = length 418, hash 4F494338 + sample 48: + time = 1253877 + flags = 1 + data = length 418, hash FBF06EAD + sample 49: + time = 1279999 + flags = 1 + data = length 417, hash 56198E7 + sample 50: + time = 1306122 + flags = 1 + data = length 418, hash C8E504E8 + sample 51: + time = 1332244 + flags = 1 + data = length 418, hash AAE14D02 + sample 52: + time = 1358367 + flags = 1 + data = length 418, hash 3B99EC44 + sample 53: + time = 1384489 + flags = 1 + data = length 418, hash 40B9A1BA + sample 54: + time = 1410612 + flags = 1 + data = length 418, hash 782D4052 + sample 55: + time = 1436734 + flags = 1 + data = length 418, hash 5DE9ECE6 + sample 56: + time = 1462857 + flags = 1 + data = length 418, hash BC628CA9 + sample 57: + time = 1488979 + flags = 1 + data = length 418, hash 1FD43DA0 + sample 58: + time = 1515102 + flags = 1 + data = length 418, hash E66C956B + sample 59: + time = 1541224 + flags = 1 + data = length 418, hash C4FA9048 + sample 60: + time = 1567346 + flags = 1 + data = length 418, hash 3EC107FD + sample 61: + time = 1593469 + flags = 1 + data = length 418, hash EC5C955D + sample 62: + time = 1619591 + flags = 1 + data = length 418, hash 177D7541 + sample 63: + time = 1645714 + flags = 1 + data = length 418, hash D53D7C61 + sample 64: + time = 1671836 + flags = 1 + data = length 418, hash 41994E54 + sample 65: + time = 1697959 + flags = 1 + data = length 418, hash 10A13197 + sample 66: + time = 1724081 + flags = 1 + data = length 418, hash 6B964E7A + sample 67: + time = 1750204 + flags = 1 + data = length 418, hash 23169DC3 + sample 68: + time = 1776326 + flags = 1 + data = length 418, hash BCB49A2 + sample 69: + time = 1802448 + flags = 1 + data = length 418, hash EAD6106F + sample 70: + time = 1828571 + flags = 1 + data = length 418, hash 5DB634E3 + sample 71: + time = 1854693 + flags = 1 + data = length 418, hash 74E5B060 + sample 72: + time = 1880816 + flags = 1 + data = length 418, hash EA5A9CB9 + sample 73: + time = 1906938 + flags = 1 + data = length 418, hash 63A62EEB + sample 74: + time = 1933061 + flags = 1 + data = length 417, hash B77518E9 + sample 75: + time = 1959183 + flags = 1 + data = length 418, hash BB8125FF + sample 76: + time = 1985306 + flags = 1 + data = length 418, hash 8034AE66 + sample 77: + time = 2011428 + flags = 1 + data = length 418, hash 4ED5A004 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/media/avi/sample-with-large-length.avi b/libraries/test_data/src/test/assets/media/avi/sample-with-large-length.avi new file mode 100644 index 0000000000..f35b6b27ab Binary files /dev/null and b/libraries/test_data/src/test/assets/media/avi/sample-with-large-length.avi differ