diff --git a/libraries/common/src/main/java/androidx/media3/common/MimeTypes.java b/libraries/common/src/main/java/androidx/media3/common/MimeTypes.java index bd35e90d2c..7b0c1d0d1e 100644 --- a/libraries/common/src/main/java/androidx/media3/common/MimeTypes.java +++ b/libraries/common/src/main/java/androidx/media3/common/MimeTypes.java @@ -44,6 +44,7 @@ public final class MimeTypes { public static final String VIDEO_WEBM = BASE_TYPE_VIDEO + "/webm"; public static final String VIDEO_H263 = BASE_TYPE_VIDEO + "/3gpp"; public static final String VIDEO_H264 = BASE_TYPE_VIDEO + "/avc"; + @UnstableApi public static final String VIDEO_APV = BASE_TYPE_VIDEO + "/apv"; public static final String VIDEO_H265 = BASE_TYPE_VIDEO + "/hevc"; @UnstableApi public static final String VIDEO_VP8 = BASE_TYPE_VIDEO + "/x-vnd.on2.vp8"; @UnstableApi public static final String VIDEO_VP9 = BASE_TYPE_VIDEO + "/x-vnd.on2.vp9"; diff --git a/libraries/container/src/main/java/androidx/media3/container/Mp4Box.java b/libraries/container/src/main/java/androidx/media3/container/Mp4Box.java index bdf4709096..76c11c5c82 100644 --- a/libraries/container/src/main/java/androidx/media3/container/Mp4Box.java +++ b/libraries/container/src/main/java/androidx/media3/container/Mp4Box.java @@ -45,6 +45,12 @@ public abstract class Mp4Box { @SuppressWarnings("ConstantCaseForConstants") public static final int TYPE_ftyp = 0x66747970; + @SuppressWarnings("ConstantCaseForConstants") + public static final int TYPE_apv1 = 0x61707631; + + @SuppressWarnings("ConstantCaseForConstants") + public static final int TYPE_apvC = 0x61707643; + @SuppressWarnings("ConstantCaseForConstants") public static final int TYPE_avc1 = 0x61766331; diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/BoxParser.java b/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/BoxParser.java index c4dc05e567..2ef5faa443 100644 --- a/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/BoxParser.java +++ b/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/BoxParser.java @@ -1033,7 +1033,8 @@ public final class BoxParser { || childAtomType == Mp4Box.TYPE_dvav || childAtomType == Mp4Box.TYPE_dva1 || childAtomType == Mp4Box.TYPE_dvhe - || childAtomType == Mp4Box.TYPE_dvh1) { + || childAtomType == Mp4Box.TYPE_dvh1 + || childAtomType == Mp4Box.TYPE_apv1) { parseVideoSampleEntry( stsd, childAtomType, @@ -1454,6 +1455,22 @@ public final class BoxParser { break; } } + } else if (childAtomType == Mp4Box.TYPE_apvC) { + mimeType = MimeTypes.VIDEO_APV; + + int childAtomBodySize = childAtomSize - Mp4Box.HEADER_SIZE; + byte[] initializationDataChunk = new byte[childAtomBodySize]; + parent.readBytes(initializationDataChunk, /* offset= */ 0, childAtomBodySize); + initializationData = ImmutableList.of(initializationDataChunk); + + parent.setPosition(childStartPosition + Mp4Box.HEADER_SIZE); + ColorInfo colorInfo = parseApvc(parent); + + bitdepthLuma = colorInfo.lumaBitdepth; + bitdepthChroma = colorInfo.chromaBitdepth; + colorSpace = colorInfo.colorSpace; + colorRange = colorInfo.colorRange; + colorTransfer = colorInfo.colorTransfer; } else if (childAtomType == Mp4Box.TYPE_colr) { // Only modify these values if 'colorSpace' and 'colorTransfer' have not been previously // established by the bitstream. The absence of color descriptors ('colorSpace' and @@ -1660,6 +1677,57 @@ public final class BoxParser { return colorInfo.build(); } + // TODO(Internal: b/375329008): Add a published spec link of APV codec to the Javadoc. + /** + * Parses the apvC configuration record and returns a {@link ColorInfo} from its data. + * + *

See apvC configuration record syntax from the spec. + * + *

The sections referenced in the method are from this spec. + * + * @param data The apvC atom data. + * @return {@link ColorInfo} parsed from the apvC data. + */ + private static ColorInfo parseApvc(ParsableByteArray data) { + ColorInfo.Builder colorInfo = new ColorInfo.Builder(); + ParsableBitArray bitArray = new ParsableBitArray(data.getData()); + bitArray.setPosition(data.getPosition() * 8); // Convert byte to bit position. + + // See Section 2.2.3, APVDecoderConfigurationBox. + bitArray.skipBits(6); // configurationVersion + boolean isStaticFrameHeader = bitArray.readBit(); // static_frame_header + bitArray.skipBit(); // capture_time_distance_ignored + + // Skip largest_frame_header_size (2 bytes), largest_profile_idc (1 byte), largest_level_idc (1 + // byte), largest_frame_width_minus1 (4 bytes), largest_frame_height_minus1 (4 bytes) + bitArray.skipBytes(12); + bitArray.skipBits(4); // largest_chromat_format_idc + + int bitDepth = bitArray.readBits(4) + 8; // largest_bit_depth_minus8 + 8 + colorInfo.setLumaBitdepth(bitDepth); + colorInfo.setChromaBitdepth(bitDepth); + bitArray.skipBits(8); // largest_capture_time_distance + + if (isStaticFrameHeader) { + bitArray.skipBits(7); // reserved_zero_7bits + if (!bitArray.readBit()) { // frame_header_repeated + bitArray.skipBits(6); // reserved_zero_6bits + boolean isColorDescriptionPresent = + bitArray.readBit(); // color_description_present_flag_info + bitArray.skipBit(); // use_q_matrix_info + if (isColorDescriptionPresent) { + int colorPrimaries = bitArray.readBits(8); // color_primaries + int transferCharacteristics = bitArray.readBits(8); // transfer_characteristics + colorInfo + .setColorSpace(ColorInfo.isoColorPrimariesToColorSpace(colorPrimaries)) + .setColorTransfer( + ColorInfo.isoTransferCharacteristicsToColorTransfer(transferCharacteristics)); + } + } + } + return colorInfo.build(); + } + private static ByteBuffer allocateHdrStaticInfo() { // For HDR static info, Android decoders expect a 25-byte array. The first byte is zero to // represent Static Metadata Type 1, as per CTA-861-G:2017, Table 44. The following 24 bytes 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 528a62d337..3490aaa2e2 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 @@ -168,6 +168,11 @@ public final class Mp4ExtractorParameterizedTest { assertExtractorBehavior("media/mp4/sample_with_av1c.mp4"); } + @Test + public void mp4SampleWithApvC() throws Exception { + assertExtractorBehavior("media/mp4/sample_with_apvc.mp4"); + } + @Test public void mp4SampleWithMhm1BlCicp1Track() throws Exception { assertExtractorBehavior("media/mp4/sample_mhm1_bl_cicp1.mp4"); diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_with_apvc.mp4.0.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_with_apvc.mp4.0.dump new file mode 100644 index 0000000000..53eccede22 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_with_apvc.mp4.0.dump @@ -0,0 +1,526 @@ +seekMap: + isSeekable = true + duration = 4166600 + getPosition(0) = [[timeUs=0, position=40]] + getPosition(1) = [[timeUs=0, position=40], [timeUs=33333, position=46331]] + getPosition(2083300) = [[timeUs=2066644, position=2174095], [timeUs=2099977, position=2207700]] + getPosition(4166600) = [[timeUs=4133288, position=4244318]] +numberOfTracks = 1 +track 0: + total output bytes = 4277755 + sample count = 125 + track duration = 4166600 + format 0: + id = 1 + sampleMimeType = video/apv + maxInputSize = 46321 + width = 640 + height = 480 + frameRate = 30.00 + colorInfo: + lumaBitdepth = 8 + chromaBitdepth = 8 + metadata = entries=[mdta: key=com.android.version, value=14, xyz: latitude=0.0, longitude=-180.0, Mp4Timestamp: creation time=3805782157, modification time=3805782157, timescale=10000] + initializationData: + data = length 23, hash 7603C9E2 + sample 0: + time = 0 + flags = 1 + data = length 46291, hash F184D3EA + sample 1: + time = 33333 + flags = 1 + data = length 45054, hash F206D4C7 + sample 2: + time = 66666 + flags = 1 + data = length 43917, hash 41AF8999 + sample 3: + time = 100000 + flags = 1 + data = length 42718, hash 3133C7AA + sample 4: + time = 133333 + flags = 1 + data = length 42073, hash 65FC45EF + sample 5: + time = 166666 + flags = 1 + data = length 41038, hash 7BD21D86 + sample 6: + time = 200000 + flags = 1 + data = length 40179, hash 9BCCCD79 + sample 7: + time = 233333 + flags = 1 + data = length 38738, hash B3D91D1B + sample 8: + time = 266666 + flags = 1 + data = length 38176, hash FD0085E7 + sample 9: + time = 300000 + flags = 1 + data = length 37326, hash 306F7E88 + sample 10: + time = 333333 + flags = 1 + data = length 36940, hash EE677695 + sample 11: + time = 366666 + flags = 1 + data = length 36320, hash 3FCF3B37 + sample 12: + time = 400000 + flags = 1 + data = length 35664, hash A5C0C7CB + sample 13: + time = 433333 + flags = 1 + data = length 35666, hash F54C69A5 + sample 14: + time = 466666 + flags = 1 + data = length 35300, hash 77430247 + sample 15: + time = 500000 + flags = 1 + data = length 34693, hash BF72F842 + sample 16: + time = 533333 + flags = 1 + data = length 34708, hash 881A49B1 + sample 17: + time = 566655 + flags = 1 + data = length 33840, hash 9A0CC574 + sample 18: + time = 599988 + flags = 1 + data = length 33835, hash F85444D0 + sample 19: + time = 633322 + flags = 1 + data = length 33845, hash 4B29F464 + sample 20: + time = 666655 + flags = 1 + data = length 33820, hash 3CDA4C6E + sample 21: + time = 699988 + flags = 1 + data = length 33815, hash 79E145BF + sample 22: + time = 733322 + flags = 1 + data = length 33832, hash 584A281 + sample 23: + time = 766655 + flags = 1 + data = length 33805, hash 9EA0615E + sample 24: + time = 799988 + flags = 1 + data = length 33797, hash CC7BD45E + sample 25: + time = 833322 + flags = 1 + data = length 33476, hash E0627655 + sample 26: + time = 866655 + flags = 1 + data = length 33475, hash FBB3502A + sample 27: + time = 899988 + flags = 1 + data = length 33465, hash 619353FE + sample 28: + time = 933322 + flags = 1 + data = length 33459, hash 93D6B187 + sample 29: + time = 966655 + flags = 1 + data = length 33461, hash DF9982DC + sample 30: + time = 999988 + flags = 1 + data = length 33449, hash 25E4D68E + sample 31: + time = 1033322 + flags = 1 + data = length 33432, hash F73FC227 + sample 32: + time = 1066655 + flags = 1 + data = length 33419, hash B13787E3 + sample 33: + time = 1099988 + flags = 1 + data = length 33386, hash 788C2D32 + sample 34: + time = 1133322 + flags = 1 + data = length 33727, hash 46D81267 + sample 35: + time = 1166655 + flags = 1 + data = length 33707, hash B5D58D87 + sample 36: + time = 1199988 + flags = 1 + data = length 33671, hash E7BAAE7F + sample 37: + time = 1233322 + flags = 1 + data = length 33638, hash 18005555 + sample 38: + time = 1266655 + flags = 1 + data = length 33593, hash 42021830 + sample 39: + time = 1299988 + flags = 1 + data = length 33569, hash D8029128 + sample 40: + time = 1333322 + flags = 1 + data = length 33523, hash FB58F62 + sample 41: + time = 1366655 + flags = 1 + data = length 33497, hash 129B0638 + sample 42: + time = 1399988 + flags = 1 + data = length 33473, hash 7A79A045 + sample 43: + time = 1433322 + flags = 1 + data = length 33445, hash 4E0CF40B + sample 44: + time = 1466655 + flags = 1 + data = length 33418, hash 635FCB0 + sample 45: + time = 1499988 + flags = 1 + data = length 33424, hash D2D749EE + sample 46: + time = 1533322 + flags = 1 + data = length 33405, hash 5A62251E + sample 47: + time = 1566655 + flags = 1 + data = length 33403, hash 719C366 + sample 48: + time = 1599988 + flags = 1 + data = length 33422, hash 3ED7C42D + sample 49: + time = 1633322 + flags = 1 + data = length 33430, hash 7A8CA910 + sample 50: + time = 1666655 + flags = 1 + data = length 33217, hash E28C94FD + sample 51: + time = 1699977 + flags = 1 + data = length 33263, hash 66DA3079 + sample 52: + time = 1733311 + flags = 1 + data = length 33308, hash 7A7D0074 + sample 53: + time = 1766644 + flags = 1 + data = length 33340, hash C0B0CDEA + sample 54: + time = 1799977 + flags = 1 + data = length 33372, hash AB58ECF3 + sample 55: + time = 1833311 + flags = 1 + data = length 33436, hash AF2870E0 + sample 56: + time = 1866644 + flags = 1 + data = length 33484, hash 5B399761 + sample 57: + time = 1899977 + flags = 1 + data = length 33533, hash 7C123CE2 + sample 58: + time = 1933311 + flags = 1 + data = length 33577, hash 5B94935F + sample 59: + time = 1966644 + flags = 1 + data = length 33615, hash 656D8603 + sample 60: + time = 1999977 + flags = 1 + data = length 33556, hash 68E72B55 + sample 61: + time = 2033311 + flags = 1 + data = length 33597, hash FFB1545C + sample 62: + time = 2066644 + flags = 1 + data = length 33605, hash 84DC1F1D + sample 63: + time = 2099977 + flags = 1 + data = length 33144, hash 57E599D4 + sample 64: + time = 2133311 + flags = 1 + data = length 33171, hash FB92ED17 + sample 65: + time = 2166644 + flags = 1 + data = length 33651, hash AF3A5151 + sample 66: + time = 2199977 + flags = 1 + data = length 33174, hash C2094641 + sample 67: + time = 2233311 + flags = 1 + data = length 33185, hash 17FC6A0 + sample 68: + time = 2266644 + flags = 1 + data = length 33659, hash 8CAA78B3 + sample 69: + time = 2299977 + flags = 1 + data = length 33164, hash 611D5ED + sample 70: + time = 2333311 + flags = 1 + data = length 33631, hash 7FC4E90C + sample 71: + time = 2366644 + flags = 1 + data = length 33157, hash 8C9BE824 + sample 72: + time = 2399977 + flags = 1 + data = length 33613, hash 8F56735C + sample 73: + time = 2433311 + flags = 1 + data = length 33130, hash FE728EAD + sample 74: + time = 2466644 + flags = 1 + data = length 33589, hash 5AD12E53 + sample 75: + time = 2499977 + flags = 1 + data = length 33612, hash 40695796 + sample 76: + time = 2533311 + flags = 1 + data = length 33134, hash B0122256 + sample 77: + time = 2566644 + flags = 1 + data = length 33590, hash 5787C725 + sample 78: + time = 2599977 + flags = 1 + data = length 33595, hash 81B7A445 + sample 79: + time = 2633311 + flags = 1 + data = length 33562, hash 3B6CF24A + sample 80: + time = 2666644 + flags = 1 + data = length 33086, hash DFA77B90 + sample 81: + time = 2699977 + flags = 1 + data = length 33559, hash 7EE31196 + sample 82: + time = 2733311 + flags = 1 + data = length 33534, hash 1E533F20 + sample 83: + time = 2766644 + flags = 1 + data = length 33535, hash EA10535 + sample 84: + time = 2799966 + flags = 1 + data = length 33522, hash AD85B29A + sample 85: + time = 2833300 + flags = 1 + data = length 33482, hash 242C9D1 + sample 86: + time = 2866633 + flags = 1 + data = length 33474, hash A5BA5430 + sample 87: + time = 2899966 + flags = 1 + data = length 33453, hash 13A2FEFE + sample 88: + time = 2933300 + flags = 1 + data = length 33409, hash 5C8231F1 + sample 89: + time = 2966633 + flags = 1 + data = length 33385, hash C38CC146 + sample 90: + time = 2999966 + flags = 1 + data = length 33355, hash 950481DC + sample 91: + time = 3033300 + flags = 1 + data = length 33335, hash 2744D3BC + sample 92: + time = 3066633 + flags = 1 + data = length 33377, hash 67C4C0 + sample 93: + time = 3099966 + flags = 1 + data = length 33339, hash 746966D3 + sample 94: + time = 3133300 + flags = 1 + data = length 33319, hash 1398764F + sample 95: + time = 3166633 + flags = 1 + data = length 33287, hash 9E7473D0 + sample 96: + time = 3199966 + flags = 1 + data = length 33265, hash EEAF849B + sample 97: + time = 3233300 + flags = 1 + data = length 33261, hash 8037846B + sample 98: + time = 3266633 + flags = 1 + data = length 33226, hash 4F4FAA8D + sample 99: + time = 3299966 + flags = 1 + data = length 33203, hash 20A984DE + sample 100: + time = 3333300 + flags = 1 + data = length 33588, hash F0F05CD1 + sample 101: + time = 3366633 + flags = 1 + data = length 33594, hash A3257252 + sample 102: + time = 3399966 + flags = 1 + data = length 33584, hash 54AC38AC + sample 103: + time = 3433300 + flags = 1 + data = length 33216, hash 7A5A33B9 + sample 104: + time = 3466633 + flags = 1 + data = length 33219, hash F1083DEC + sample 105: + time = 3499966 + flags = 1 + data = length 33592, hash 3BB94CA7 + sample 106: + time = 3533300 + flags = 1 + data = length 33227, hash 9E084D49 + sample 107: + time = 3566633 + flags = 1 + data = length 33244, hash CCAFE8CB + sample 108: + time = 3599966 + flags = 1 + data = length 33250, hash 920EF3EA + sample 109: + time = 3633300 + flags = 1 + data = length 33278, hash D1089D1B + sample 110: + time = 3666633 + flags = 1 + data = length 33300, hash 2BED2033 + sample 111: + time = 3699966 + flags = 1 + data = length 33321, hash FD2B6BE7 + sample 112: + time = 3733300 + flags = 1 + data = length 33337, hash F63EA811 + sample 113: + time = 3766633 + flags = 1 + data = length 33383, hash 9DAB8833 + sample 114: + time = 3799966 + flags = 1 + data = length 33321, hash 55D58114 + sample 115: + time = 3833300 + flags = 1 + data = length 33347, hash 412B5794 + sample 116: + time = 3866633 + flags = 1 + data = length 33374, hash 283D32F9 + sample 117: + time = 3899955 + flags = 1 + data = length 33420, hash ADA33226 + sample 118: + time = 3933288 + flags = 1 + data = length 33435, hash 483803AC + sample 119: + time = 3966622 + flags = 1 + data = length 33469, hash EAEF9B95 + sample 120: + time = 3999955 + flags = 1 + data = length 33507, hash CCD8AF2C + sample 121: + time = 4033288 + flags = 1 + data = length 33509, hash 845D5587 + sample 122: + time = 4066622 + flags = 1 + data = length 33453, hash 28BF6F7F + sample 123: + time = 4099955 + flags = 1 + data = length 33483, hash A98EABD3 + sample 124: + time = 4133288 + flags = 536870913 + data = length 33477, hash 404E7F2D +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_with_apvc.mp4.1.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_with_apvc.mp4.1.dump new file mode 100644 index 0000000000..24276c9df5 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_with_apvc.mp4.1.dump @@ -0,0 +1,362 @@ +seekMap: + isSeekable = true + duration = 4166600 + getPosition(0) = [[timeUs=0, position=40]] + getPosition(1) = [[timeUs=0, position=40], [timeUs=33333, position=46331]] + getPosition(2083300) = [[timeUs=2066644, position=2174095], [timeUs=2099977, position=2207700]] + getPosition(4166600) = [[timeUs=4133288, position=4244318]] +numberOfTracks = 1 +track 0: + total output bytes = 2805915 + sample count = 84 + track duration = 4166600 + format 0: + id = 1 + sampleMimeType = video/apv + maxInputSize = 46321 + width = 640 + height = 480 + frameRate = 30.00 + colorInfo: + lumaBitdepth = 8 + chromaBitdepth = 8 + metadata = entries=[mdta: key=com.android.version, value=14, xyz: latitude=0.0, longitude=-180.0, Mp4Timestamp: creation time=3805782157, modification time=3805782157, timescale=10000] + initializationData: + data = length 23, hash 7603C9E2 + sample 0: + time = 1366655 + flags = 1 + data = length 33497, hash 129B0638 + sample 1: + time = 1399988 + flags = 1 + data = length 33473, hash 7A79A045 + sample 2: + time = 1433322 + flags = 1 + data = length 33445, hash 4E0CF40B + sample 3: + time = 1466655 + flags = 1 + data = length 33418, hash 635FCB0 + sample 4: + time = 1499988 + flags = 1 + data = length 33424, hash D2D749EE + sample 5: + time = 1533322 + flags = 1 + data = length 33405, hash 5A62251E + sample 6: + time = 1566655 + flags = 1 + data = length 33403, hash 719C366 + sample 7: + time = 1599988 + flags = 1 + data = length 33422, hash 3ED7C42D + sample 8: + time = 1633322 + flags = 1 + data = length 33430, hash 7A8CA910 + sample 9: + time = 1666655 + flags = 1 + data = length 33217, hash E28C94FD + sample 10: + time = 1699977 + flags = 1 + data = length 33263, hash 66DA3079 + sample 11: + time = 1733311 + flags = 1 + data = length 33308, hash 7A7D0074 + sample 12: + time = 1766644 + flags = 1 + data = length 33340, hash C0B0CDEA + sample 13: + time = 1799977 + flags = 1 + data = length 33372, hash AB58ECF3 + sample 14: + time = 1833311 + flags = 1 + data = length 33436, hash AF2870E0 + sample 15: + time = 1866644 + flags = 1 + data = length 33484, hash 5B399761 + sample 16: + time = 1899977 + flags = 1 + data = length 33533, hash 7C123CE2 + sample 17: + time = 1933311 + flags = 1 + data = length 33577, hash 5B94935F + sample 18: + time = 1966644 + flags = 1 + data = length 33615, hash 656D8603 + sample 19: + time = 1999977 + flags = 1 + data = length 33556, hash 68E72B55 + sample 20: + time = 2033311 + flags = 1 + data = length 33597, hash FFB1545C + sample 21: + time = 2066644 + flags = 1 + data = length 33605, hash 84DC1F1D + sample 22: + time = 2099977 + flags = 1 + data = length 33144, hash 57E599D4 + sample 23: + time = 2133311 + flags = 1 + data = length 33171, hash FB92ED17 + sample 24: + time = 2166644 + flags = 1 + data = length 33651, hash AF3A5151 + sample 25: + time = 2199977 + flags = 1 + data = length 33174, hash C2094641 + sample 26: + time = 2233311 + flags = 1 + data = length 33185, hash 17FC6A0 + sample 27: + time = 2266644 + flags = 1 + data = length 33659, hash 8CAA78B3 + sample 28: + time = 2299977 + flags = 1 + data = length 33164, hash 611D5ED + sample 29: + time = 2333311 + flags = 1 + data = length 33631, hash 7FC4E90C + sample 30: + time = 2366644 + flags = 1 + data = length 33157, hash 8C9BE824 + sample 31: + time = 2399977 + flags = 1 + data = length 33613, hash 8F56735C + sample 32: + time = 2433311 + flags = 1 + data = length 33130, hash FE728EAD + sample 33: + time = 2466644 + flags = 1 + data = length 33589, hash 5AD12E53 + sample 34: + time = 2499977 + flags = 1 + data = length 33612, hash 40695796 + sample 35: + time = 2533311 + flags = 1 + data = length 33134, hash B0122256 + sample 36: + time = 2566644 + flags = 1 + data = length 33590, hash 5787C725 + sample 37: + time = 2599977 + flags = 1 + data = length 33595, hash 81B7A445 + sample 38: + time = 2633311 + flags = 1 + data = length 33562, hash 3B6CF24A + sample 39: + time = 2666644 + flags = 1 + data = length 33086, hash DFA77B90 + sample 40: + time = 2699977 + flags = 1 + data = length 33559, hash 7EE31196 + sample 41: + time = 2733311 + flags = 1 + data = length 33534, hash 1E533F20 + sample 42: + time = 2766644 + flags = 1 + data = length 33535, hash EA10535 + sample 43: + time = 2799966 + flags = 1 + data = length 33522, hash AD85B29A + sample 44: + time = 2833300 + flags = 1 + data = length 33482, hash 242C9D1 + sample 45: + time = 2866633 + flags = 1 + data = length 33474, hash A5BA5430 + sample 46: + time = 2899966 + flags = 1 + data = length 33453, hash 13A2FEFE + sample 47: + time = 2933300 + flags = 1 + data = length 33409, hash 5C8231F1 + sample 48: + time = 2966633 + flags = 1 + data = length 33385, hash C38CC146 + sample 49: + time = 2999966 + flags = 1 + data = length 33355, hash 950481DC + sample 50: + time = 3033300 + flags = 1 + data = length 33335, hash 2744D3BC + sample 51: + time = 3066633 + flags = 1 + data = length 33377, hash 67C4C0 + sample 52: + time = 3099966 + flags = 1 + data = length 33339, hash 746966D3 + sample 53: + time = 3133300 + flags = 1 + data = length 33319, hash 1398764F + sample 54: + time = 3166633 + flags = 1 + data = length 33287, hash 9E7473D0 + sample 55: + time = 3199966 + flags = 1 + data = length 33265, hash EEAF849B + sample 56: + time = 3233300 + flags = 1 + data = length 33261, hash 8037846B + sample 57: + time = 3266633 + flags = 1 + data = length 33226, hash 4F4FAA8D + sample 58: + time = 3299966 + flags = 1 + data = length 33203, hash 20A984DE + sample 59: + time = 3333300 + flags = 1 + data = length 33588, hash F0F05CD1 + sample 60: + time = 3366633 + flags = 1 + data = length 33594, hash A3257252 + sample 61: + time = 3399966 + flags = 1 + data = length 33584, hash 54AC38AC + sample 62: + time = 3433300 + flags = 1 + data = length 33216, hash 7A5A33B9 + sample 63: + time = 3466633 + flags = 1 + data = length 33219, hash F1083DEC + sample 64: + time = 3499966 + flags = 1 + data = length 33592, hash 3BB94CA7 + sample 65: + time = 3533300 + flags = 1 + data = length 33227, hash 9E084D49 + sample 66: + time = 3566633 + flags = 1 + data = length 33244, hash CCAFE8CB + sample 67: + time = 3599966 + flags = 1 + data = length 33250, hash 920EF3EA + sample 68: + time = 3633300 + flags = 1 + data = length 33278, hash D1089D1B + sample 69: + time = 3666633 + flags = 1 + data = length 33300, hash 2BED2033 + sample 70: + time = 3699966 + flags = 1 + data = length 33321, hash FD2B6BE7 + sample 71: + time = 3733300 + flags = 1 + data = length 33337, hash F63EA811 + sample 72: + time = 3766633 + flags = 1 + data = length 33383, hash 9DAB8833 + sample 73: + time = 3799966 + flags = 1 + data = length 33321, hash 55D58114 + sample 74: + time = 3833300 + flags = 1 + data = length 33347, hash 412B5794 + sample 75: + time = 3866633 + flags = 1 + data = length 33374, hash 283D32F9 + sample 76: + time = 3899955 + flags = 1 + data = length 33420, hash ADA33226 + sample 77: + time = 3933288 + flags = 1 + data = length 33435, hash 483803AC + sample 78: + time = 3966622 + flags = 1 + data = length 33469, hash EAEF9B95 + sample 79: + time = 3999955 + flags = 1 + data = length 33507, hash CCD8AF2C + sample 80: + time = 4033288 + flags = 1 + data = length 33509, hash 845D5587 + sample 81: + time = 4066622 + flags = 1 + data = length 33453, hash 28BF6F7F + sample 82: + time = 4099955 + flags = 1 + data = length 33483, hash A98EABD3 + sample 83: + time = 4133288 + flags = 536870913 + data = length 33477, hash 404E7F2D +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_with_apvc.mp4.2.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_with_apvc.mp4.2.dump new file mode 100644 index 0000000000..166520ea03 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_with_apvc.mp4.2.dump @@ -0,0 +1,194 @@ +seekMap: + isSeekable = true + duration = 4166600 + getPosition(0) = [[timeUs=0, position=40]] + getPosition(1) = [[timeUs=0, position=40], [timeUs=33333, position=46331]] + getPosition(2083300) = [[timeUs=2066644, position=2174095], [timeUs=2099977, position=2207700]] + getPosition(4166600) = [[timeUs=4133288, position=4244318]] +numberOfTracks = 1 +track 0: + total output bytes = 1402155 + sample count = 42 + track duration = 4166600 + format 0: + id = 1 + sampleMimeType = video/apv + maxInputSize = 46321 + width = 640 + height = 480 + frameRate = 30.00 + colorInfo: + lumaBitdepth = 8 + chromaBitdepth = 8 + metadata = entries=[mdta: key=com.android.version, value=14, xyz: latitude=0.0, longitude=-180.0, Mp4Timestamp: creation time=3805782157, modification time=3805782157, timescale=10000] + initializationData: + data = length 23, hash 7603C9E2 + sample 0: + time = 2766644 + flags = 1 + data = length 33535, hash EA10535 + sample 1: + time = 2799966 + flags = 1 + data = length 33522, hash AD85B29A + sample 2: + time = 2833300 + flags = 1 + data = length 33482, hash 242C9D1 + sample 3: + time = 2866633 + flags = 1 + data = length 33474, hash A5BA5430 + sample 4: + time = 2899966 + flags = 1 + data = length 33453, hash 13A2FEFE + sample 5: + time = 2933300 + flags = 1 + data = length 33409, hash 5C8231F1 + sample 6: + time = 2966633 + flags = 1 + data = length 33385, hash C38CC146 + sample 7: + time = 2999966 + flags = 1 + data = length 33355, hash 950481DC + sample 8: + time = 3033300 + flags = 1 + data = length 33335, hash 2744D3BC + sample 9: + time = 3066633 + flags = 1 + data = length 33377, hash 67C4C0 + sample 10: + time = 3099966 + flags = 1 + data = length 33339, hash 746966D3 + sample 11: + time = 3133300 + flags = 1 + data = length 33319, hash 1398764F + sample 12: + time = 3166633 + flags = 1 + data = length 33287, hash 9E7473D0 + sample 13: + time = 3199966 + flags = 1 + data = length 33265, hash EEAF849B + sample 14: + time = 3233300 + flags = 1 + data = length 33261, hash 8037846B + sample 15: + time = 3266633 + flags = 1 + data = length 33226, hash 4F4FAA8D + sample 16: + time = 3299966 + flags = 1 + data = length 33203, hash 20A984DE + sample 17: + time = 3333300 + flags = 1 + data = length 33588, hash F0F05CD1 + sample 18: + time = 3366633 + flags = 1 + data = length 33594, hash A3257252 + sample 19: + time = 3399966 + flags = 1 + data = length 33584, hash 54AC38AC + sample 20: + time = 3433300 + flags = 1 + data = length 33216, hash 7A5A33B9 + sample 21: + time = 3466633 + flags = 1 + data = length 33219, hash F1083DEC + sample 22: + time = 3499966 + flags = 1 + data = length 33592, hash 3BB94CA7 + sample 23: + time = 3533300 + flags = 1 + data = length 33227, hash 9E084D49 + sample 24: + time = 3566633 + flags = 1 + data = length 33244, hash CCAFE8CB + sample 25: + time = 3599966 + flags = 1 + data = length 33250, hash 920EF3EA + sample 26: + time = 3633300 + flags = 1 + data = length 33278, hash D1089D1B + sample 27: + time = 3666633 + flags = 1 + data = length 33300, hash 2BED2033 + sample 28: + time = 3699966 + flags = 1 + data = length 33321, hash FD2B6BE7 + sample 29: + time = 3733300 + flags = 1 + data = length 33337, hash F63EA811 + sample 30: + time = 3766633 + flags = 1 + data = length 33383, hash 9DAB8833 + sample 31: + time = 3799966 + flags = 1 + data = length 33321, hash 55D58114 + sample 32: + time = 3833300 + flags = 1 + data = length 33347, hash 412B5794 + sample 33: + time = 3866633 + flags = 1 + data = length 33374, hash 283D32F9 + sample 34: + time = 3899955 + flags = 1 + data = length 33420, hash ADA33226 + sample 35: + time = 3933288 + flags = 1 + data = length 33435, hash 483803AC + sample 36: + time = 3966622 + flags = 1 + data = length 33469, hash EAEF9B95 + sample 37: + time = 3999955 + flags = 1 + data = length 33507, hash CCD8AF2C + sample 38: + time = 4033288 + flags = 1 + data = length 33509, hash 845D5587 + sample 39: + time = 4066622 + flags = 1 + data = length 33453, hash 28BF6F7F + sample 40: + time = 4099955 + flags = 1 + data = length 33483, hash A98EABD3 + sample 41: + time = 4133288 + flags = 536870913 + data = length 33477, hash 404E7F2D +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_with_apvc.mp4.3.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_with_apvc.mp4.3.dump new file mode 100644 index 0000000000..4a265e4314 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_with_apvc.mp4.3.dump @@ -0,0 +1,30 @@ +seekMap: + isSeekable = true + duration = 4166600 + getPosition(0) = [[timeUs=0, position=40]] + getPosition(1) = [[timeUs=0, position=40], [timeUs=33333, position=46331]] + getPosition(2083300) = [[timeUs=2066644, position=2174095], [timeUs=2099977, position=2207700]] + getPosition(4166600) = [[timeUs=4133288, position=4244318]] +numberOfTracks = 1 +track 0: + total output bytes = 33477 + sample count = 1 + track duration = 4166600 + format 0: + id = 1 + sampleMimeType = video/apv + maxInputSize = 46321 + width = 640 + height = 480 + frameRate = 30.00 + colorInfo: + lumaBitdepth = 8 + chromaBitdepth = 8 + metadata = entries=[mdta: key=com.android.version, value=14, xyz: latitude=0.0, longitude=-180.0, Mp4Timestamp: creation time=3805782157, modification time=3805782157, timescale=10000] + initializationData: + data = length 23, hash 7603C9E2 + sample 0: + time = 4133288 + flags = 536870913 + data = length 33477, hash 404E7F2D +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_with_apvc.mp4.reading_within_gop_sample_dependencies.0.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_with_apvc.mp4.reading_within_gop_sample_dependencies.0.dump new file mode 100644 index 0000000000..53eccede22 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_with_apvc.mp4.reading_within_gop_sample_dependencies.0.dump @@ -0,0 +1,526 @@ +seekMap: + isSeekable = true + duration = 4166600 + getPosition(0) = [[timeUs=0, position=40]] + getPosition(1) = [[timeUs=0, position=40], [timeUs=33333, position=46331]] + getPosition(2083300) = [[timeUs=2066644, position=2174095], [timeUs=2099977, position=2207700]] + getPosition(4166600) = [[timeUs=4133288, position=4244318]] +numberOfTracks = 1 +track 0: + total output bytes = 4277755 + sample count = 125 + track duration = 4166600 + format 0: + id = 1 + sampleMimeType = video/apv + maxInputSize = 46321 + width = 640 + height = 480 + frameRate = 30.00 + colorInfo: + lumaBitdepth = 8 + chromaBitdepth = 8 + metadata = entries=[mdta: key=com.android.version, value=14, xyz: latitude=0.0, longitude=-180.0, Mp4Timestamp: creation time=3805782157, modification time=3805782157, timescale=10000] + initializationData: + data = length 23, hash 7603C9E2 + sample 0: + time = 0 + flags = 1 + data = length 46291, hash F184D3EA + sample 1: + time = 33333 + flags = 1 + data = length 45054, hash F206D4C7 + sample 2: + time = 66666 + flags = 1 + data = length 43917, hash 41AF8999 + sample 3: + time = 100000 + flags = 1 + data = length 42718, hash 3133C7AA + sample 4: + time = 133333 + flags = 1 + data = length 42073, hash 65FC45EF + sample 5: + time = 166666 + flags = 1 + data = length 41038, hash 7BD21D86 + sample 6: + time = 200000 + flags = 1 + data = length 40179, hash 9BCCCD79 + sample 7: + time = 233333 + flags = 1 + data = length 38738, hash B3D91D1B + sample 8: + time = 266666 + flags = 1 + data = length 38176, hash FD0085E7 + sample 9: + time = 300000 + flags = 1 + data = length 37326, hash 306F7E88 + sample 10: + time = 333333 + flags = 1 + data = length 36940, hash EE677695 + sample 11: + time = 366666 + flags = 1 + data = length 36320, hash 3FCF3B37 + sample 12: + time = 400000 + flags = 1 + data = length 35664, hash A5C0C7CB + sample 13: + time = 433333 + flags = 1 + data = length 35666, hash F54C69A5 + sample 14: + time = 466666 + flags = 1 + data = length 35300, hash 77430247 + sample 15: + time = 500000 + flags = 1 + data = length 34693, hash BF72F842 + sample 16: + time = 533333 + flags = 1 + data = length 34708, hash 881A49B1 + sample 17: + time = 566655 + flags = 1 + data = length 33840, hash 9A0CC574 + sample 18: + time = 599988 + flags = 1 + data = length 33835, hash F85444D0 + sample 19: + time = 633322 + flags = 1 + data = length 33845, hash 4B29F464 + sample 20: + time = 666655 + flags = 1 + data = length 33820, hash 3CDA4C6E + sample 21: + time = 699988 + flags = 1 + data = length 33815, hash 79E145BF + sample 22: + time = 733322 + flags = 1 + data = length 33832, hash 584A281 + sample 23: + time = 766655 + flags = 1 + data = length 33805, hash 9EA0615E + sample 24: + time = 799988 + flags = 1 + data = length 33797, hash CC7BD45E + sample 25: + time = 833322 + flags = 1 + data = length 33476, hash E0627655 + sample 26: + time = 866655 + flags = 1 + data = length 33475, hash FBB3502A + sample 27: + time = 899988 + flags = 1 + data = length 33465, hash 619353FE + sample 28: + time = 933322 + flags = 1 + data = length 33459, hash 93D6B187 + sample 29: + time = 966655 + flags = 1 + data = length 33461, hash DF9982DC + sample 30: + time = 999988 + flags = 1 + data = length 33449, hash 25E4D68E + sample 31: + time = 1033322 + flags = 1 + data = length 33432, hash F73FC227 + sample 32: + time = 1066655 + flags = 1 + data = length 33419, hash B13787E3 + sample 33: + time = 1099988 + flags = 1 + data = length 33386, hash 788C2D32 + sample 34: + time = 1133322 + flags = 1 + data = length 33727, hash 46D81267 + sample 35: + time = 1166655 + flags = 1 + data = length 33707, hash B5D58D87 + sample 36: + time = 1199988 + flags = 1 + data = length 33671, hash E7BAAE7F + sample 37: + time = 1233322 + flags = 1 + data = length 33638, hash 18005555 + sample 38: + time = 1266655 + flags = 1 + data = length 33593, hash 42021830 + sample 39: + time = 1299988 + flags = 1 + data = length 33569, hash D8029128 + sample 40: + time = 1333322 + flags = 1 + data = length 33523, hash FB58F62 + sample 41: + time = 1366655 + flags = 1 + data = length 33497, hash 129B0638 + sample 42: + time = 1399988 + flags = 1 + data = length 33473, hash 7A79A045 + sample 43: + time = 1433322 + flags = 1 + data = length 33445, hash 4E0CF40B + sample 44: + time = 1466655 + flags = 1 + data = length 33418, hash 635FCB0 + sample 45: + time = 1499988 + flags = 1 + data = length 33424, hash D2D749EE + sample 46: + time = 1533322 + flags = 1 + data = length 33405, hash 5A62251E + sample 47: + time = 1566655 + flags = 1 + data = length 33403, hash 719C366 + sample 48: + time = 1599988 + flags = 1 + data = length 33422, hash 3ED7C42D + sample 49: + time = 1633322 + flags = 1 + data = length 33430, hash 7A8CA910 + sample 50: + time = 1666655 + flags = 1 + data = length 33217, hash E28C94FD + sample 51: + time = 1699977 + flags = 1 + data = length 33263, hash 66DA3079 + sample 52: + time = 1733311 + flags = 1 + data = length 33308, hash 7A7D0074 + sample 53: + time = 1766644 + flags = 1 + data = length 33340, hash C0B0CDEA + sample 54: + time = 1799977 + flags = 1 + data = length 33372, hash AB58ECF3 + sample 55: + time = 1833311 + flags = 1 + data = length 33436, hash AF2870E0 + sample 56: + time = 1866644 + flags = 1 + data = length 33484, hash 5B399761 + sample 57: + time = 1899977 + flags = 1 + data = length 33533, hash 7C123CE2 + sample 58: + time = 1933311 + flags = 1 + data = length 33577, hash 5B94935F + sample 59: + time = 1966644 + flags = 1 + data = length 33615, hash 656D8603 + sample 60: + time = 1999977 + flags = 1 + data = length 33556, hash 68E72B55 + sample 61: + time = 2033311 + flags = 1 + data = length 33597, hash FFB1545C + sample 62: + time = 2066644 + flags = 1 + data = length 33605, hash 84DC1F1D + sample 63: + time = 2099977 + flags = 1 + data = length 33144, hash 57E599D4 + sample 64: + time = 2133311 + flags = 1 + data = length 33171, hash FB92ED17 + sample 65: + time = 2166644 + flags = 1 + data = length 33651, hash AF3A5151 + sample 66: + time = 2199977 + flags = 1 + data = length 33174, hash C2094641 + sample 67: + time = 2233311 + flags = 1 + data = length 33185, hash 17FC6A0 + sample 68: + time = 2266644 + flags = 1 + data = length 33659, hash 8CAA78B3 + sample 69: + time = 2299977 + flags = 1 + data = length 33164, hash 611D5ED + sample 70: + time = 2333311 + flags = 1 + data = length 33631, hash 7FC4E90C + sample 71: + time = 2366644 + flags = 1 + data = length 33157, hash 8C9BE824 + sample 72: + time = 2399977 + flags = 1 + data = length 33613, hash 8F56735C + sample 73: + time = 2433311 + flags = 1 + data = length 33130, hash FE728EAD + sample 74: + time = 2466644 + flags = 1 + data = length 33589, hash 5AD12E53 + sample 75: + time = 2499977 + flags = 1 + data = length 33612, hash 40695796 + sample 76: + time = 2533311 + flags = 1 + data = length 33134, hash B0122256 + sample 77: + time = 2566644 + flags = 1 + data = length 33590, hash 5787C725 + sample 78: + time = 2599977 + flags = 1 + data = length 33595, hash 81B7A445 + sample 79: + time = 2633311 + flags = 1 + data = length 33562, hash 3B6CF24A + sample 80: + time = 2666644 + flags = 1 + data = length 33086, hash DFA77B90 + sample 81: + time = 2699977 + flags = 1 + data = length 33559, hash 7EE31196 + sample 82: + time = 2733311 + flags = 1 + data = length 33534, hash 1E533F20 + sample 83: + time = 2766644 + flags = 1 + data = length 33535, hash EA10535 + sample 84: + time = 2799966 + flags = 1 + data = length 33522, hash AD85B29A + sample 85: + time = 2833300 + flags = 1 + data = length 33482, hash 242C9D1 + sample 86: + time = 2866633 + flags = 1 + data = length 33474, hash A5BA5430 + sample 87: + time = 2899966 + flags = 1 + data = length 33453, hash 13A2FEFE + sample 88: + time = 2933300 + flags = 1 + data = length 33409, hash 5C8231F1 + sample 89: + time = 2966633 + flags = 1 + data = length 33385, hash C38CC146 + sample 90: + time = 2999966 + flags = 1 + data = length 33355, hash 950481DC + sample 91: + time = 3033300 + flags = 1 + data = length 33335, hash 2744D3BC + sample 92: + time = 3066633 + flags = 1 + data = length 33377, hash 67C4C0 + sample 93: + time = 3099966 + flags = 1 + data = length 33339, hash 746966D3 + sample 94: + time = 3133300 + flags = 1 + data = length 33319, hash 1398764F + sample 95: + time = 3166633 + flags = 1 + data = length 33287, hash 9E7473D0 + sample 96: + time = 3199966 + flags = 1 + data = length 33265, hash EEAF849B + sample 97: + time = 3233300 + flags = 1 + data = length 33261, hash 8037846B + sample 98: + time = 3266633 + flags = 1 + data = length 33226, hash 4F4FAA8D + sample 99: + time = 3299966 + flags = 1 + data = length 33203, hash 20A984DE + sample 100: + time = 3333300 + flags = 1 + data = length 33588, hash F0F05CD1 + sample 101: + time = 3366633 + flags = 1 + data = length 33594, hash A3257252 + sample 102: + time = 3399966 + flags = 1 + data = length 33584, hash 54AC38AC + sample 103: + time = 3433300 + flags = 1 + data = length 33216, hash 7A5A33B9 + sample 104: + time = 3466633 + flags = 1 + data = length 33219, hash F1083DEC + sample 105: + time = 3499966 + flags = 1 + data = length 33592, hash 3BB94CA7 + sample 106: + time = 3533300 + flags = 1 + data = length 33227, hash 9E084D49 + sample 107: + time = 3566633 + flags = 1 + data = length 33244, hash CCAFE8CB + sample 108: + time = 3599966 + flags = 1 + data = length 33250, hash 920EF3EA + sample 109: + time = 3633300 + flags = 1 + data = length 33278, hash D1089D1B + sample 110: + time = 3666633 + flags = 1 + data = length 33300, hash 2BED2033 + sample 111: + time = 3699966 + flags = 1 + data = length 33321, hash FD2B6BE7 + sample 112: + time = 3733300 + flags = 1 + data = length 33337, hash F63EA811 + sample 113: + time = 3766633 + flags = 1 + data = length 33383, hash 9DAB8833 + sample 114: + time = 3799966 + flags = 1 + data = length 33321, hash 55D58114 + sample 115: + time = 3833300 + flags = 1 + data = length 33347, hash 412B5794 + sample 116: + time = 3866633 + flags = 1 + data = length 33374, hash 283D32F9 + sample 117: + time = 3899955 + flags = 1 + data = length 33420, hash ADA33226 + sample 118: + time = 3933288 + flags = 1 + data = length 33435, hash 483803AC + sample 119: + time = 3966622 + flags = 1 + data = length 33469, hash EAEF9B95 + sample 120: + time = 3999955 + flags = 1 + data = length 33507, hash CCD8AF2C + sample 121: + time = 4033288 + flags = 1 + data = length 33509, hash 845D5587 + sample 122: + time = 4066622 + flags = 1 + data = length 33453, hash 28BF6F7F + sample 123: + time = 4099955 + flags = 1 + data = length 33483, hash A98EABD3 + sample 124: + time = 4133288 + flags = 536870913 + data = length 33477, hash 404E7F2D +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_with_apvc.mp4.reading_within_gop_sample_dependencies.1.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_with_apvc.mp4.reading_within_gop_sample_dependencies.1.dump new file mode 100644 index 0000000000..24276c9df5 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_with_apvc.mp4.reading_within_gop_sample_dependencies.1.dump @@ -0,0 +1,362 @@ +seekMap: + isSeekable = true + duration = 4166600 + getPosition(0) = [[timeUs=0, position=40]] + getPosition(1) = [[timeUs=0, position=40], [timeUs=33333, position=46331]] + getPosition(2083300) = [[timeUs=2066644, position=2174095], [timeUs=2099977, position=2207700]] + getPosition(4166600) = [[timeUs=4133288, position=4244318]] +numberOfTracks = 1 +track 0: + total output bytes = 2805915 + sample count = 84 + track duration = 4166600 + format 0: + id = 1 + sampleMimeType = video/apv + maxInputSize = 46321 + width = 640 + height = 480 + frameRate = 30.00 + colorInfo: + lumaBitdepth = 8 + chromaBitdepth = 8 + metadata = entries=[mdta: key=com.android.version, value=14, xyz: latitude=0.0, longitude=-180.0, Mp4Timestamp: creation time=3805782157, modification time=3805782157, timescale=10000] + initializationData: + data = length 23, hash 7603C9E2 + sample 0: + time = 1366655 + flags = 1 + data = length 33497, hash 129B0638 + sample 1: + time = 1399988 + flags = 1 + data = length 33473, hash 7A79A045 + sample 2: + time = 1433322 + flags = 1 + data = length 33445, hash 4E0CF40B + sample 3: + time = 1466655 + flags = 1 + data = length 33418, hash 635FCB0 + sample 4: + time = 1499988 + flags = 1 + data = length 33424, hash D2D749EE + sample 5: + time = 1533322 + flags = 1 + data = length 33405, hash 5A62251E + sample 6: + time = 1566655 + flags = 1 + data = length 33403, hash 719C366 + sample 7: + time = 1599988 + flags = 1 + data = length 33422, hash 3ED7C42D + sample 8: + time = 1633322 + flags = 1 + data = length 33430, hash 7A8CA910 + sample 9: + time = 1666655 + flags = 1 + data = length 33217, hash E28C94FD + sample 10: + time = 1699977 + flags = 1 + data = length 33263, hash 66DA3079 + sample 11: + time = 1733311 + flags = 1 + data = length 33308, hash 7A7D0074 + sample 12: + time = 1766644 + flags = 1 + data = length 33340, hash C0B0CDEA + sample 13: + time = 1799977 + flags = 1 + data = length 33372, hash AB58ECF3 + sample 14: + time = 1833311 + flags = 1 + data = length 33436, hash AF2870E0 + sample 15: + time = 1866644 + flags = 1 + data = length 33484, hash 5B399761 + sample 16: + time = 1899977 + flags = 1 + data = length 33533, hash 7C123CE2 + sample 17: + time = 1933311 + flags = 1 + data = length 33577, hash 5B94935F + sample 18: + time = 1966644 + flags = 1 + data = length 33615, hash 656D8603 + sample 19: + time = 1999977 + flags = 1 + data = length 33556, hash 68E72B55 + sample 20: + time = 2033311 + flags = 1 + data = length 33597, hash FFB1545C + sample 21: + time = 2066644 + flags = 1 + data = length 33605, hash 84DC1F1D + sample 22: + time = 2099977 + flags = 1 + data = length 33144, hash 57E599D4 + sample 23: + time = 2133311 + flags = 1 + data = length 33171, hash FB92ED17 + sample 24: + time = 2166644 + flags = 1 + data = length 33651, hash AF3A5151 + sample 25: + time = 2199977 + flags = 1 + data = length 33174, hash C2094641 + sample 26: + time = 2233311 + flags = 1 + data = length 33185, hash 17FC6A0 + sample 27: + time = 2266644 + flags = 1 + data = length 33659, hash 8CAA78B3 + sample 28: + time = 2299977 + flags = 1 + data = length 33164, hash 611D5ED + sample 29: + time = 2333311 + flags = 1 + data = length 33631, hash 7FC4E90C + sample 30: + time = 2366644 + flags = 1 + data = length 33157, hash 8C9BE824 + sample 31: + time = 2399977 + flags = 1 + data = length 33613, hash 8F56735C + sample 32: + time = 2433311 + flags = 1 + data = length 33130, hash FE728EAD + sample 33: + time = 2466644 + flags = 1 + data = length 33589, hash 5AD12E53 + sample 34: + time = 2499977 + flags = 1 + data = length 33612, hash 40695796 + sample 35: + time = 2533311 + flags = 1 + data = length 33134, hash B0122256 + sample 36: + time = 2566644 + flags = 1 + data = length 33590, hash 5787C725 + sample 37: + time = 2599977 + flags = 1 + data = length 33595, hash 81B7A445 + sample 38: + time = 2633311 + flags = 1 + data = length 33562, hash 3B6CF24A + sample 39: + time = 2666644 + flags = 1 + data = length 33086, hash DFA77B90 + sample 40: + time = 2699977 + flags = 1 + data = length 33559, hash 7EE31196 + sample 41: + time = 2733311 + flags = 1 + data = length 33534, hash 1E533F20 + sample 42: + time = 2766644 + flags = 1 + data = length 33535, hash EA10535 + sample 43: + time = 2799966 + flags = 1 + data = length 33522, hash AD85B29A + sample 44: + time = 2833300 + flags = 1 + data = length 33482, hash 242C9D1 + sample 45: + time = 2866633 + flags = 1 + data = length 33474, hash A5BA5430 + sample 46: + time = 2899966 + flags = 1 + data = length 33453, hash 13A2FEFE + sample 47: + time = 2933300 + flags = 1 + data = length 33409, hash 5C8231F1 + sample 48: + time = 2966633 + flags = 1 + data = length 33385, hash C38CC146 + sample 49: + time = 2999966 + flags = 1 + data = length 33355, hash 950481DC + sample 50: + time = 3033300 + flags = 1 + data = length 33335, hash 2744D3BC + sample 51: + time = 3066633 + flags = 1 + data = length 33377, hash 67C4C0 + sample 52: + time = 3099966 + flags = 1 + data = length 33339, hash 746966D3 + sample 53: + time = 3133300 + flags = 1 + data = length 33319, hash 1398764F + sample 54: + time = 3166633 + flags = 1 + data = length 33287, hash 9E7473D0 + sample 55: + time = 3199966 + flags = 1 + data = length 33265, hash EEAF849B + sample 56: + time = 3233300 + flags = 1 + data = length 33261, hash 8037846B + sample 57: + time = 3266633 + flags = 1 + data = length 33226, hash 4F4FAA8D + sample 58: + time = 3299966 + flags = 1 + data = length 33203, hash 20A984DE + sample 59: + time = 3333300 + flags = 1 + data = length 33588, hash F0F05CD1 + sample 60: + time = 3366633 + flags = 1 + data = length 33594, hash A3257252 + sample 61: + time = 3399966 + flags = 1 + data = length 33584, hash 54AC38AC + sample 62: + time = 3433300 + flags = 1 + data = length 33216, hash 7A5A33B9 + sample 63: + time = 3466633 + flags = 1 + data = length 33219, hash F1083DEC + sample 64: + time = 3499966 + flags = 1 + data = length 33592, hash 3BB94CA7 + sample 65: + time = 3533300 + flags = 1 + data = length 33227, hash 9E084D49 + sample 66: + time = 3566633 + flags = 1 + data = length 33244, hash CCAFE8CB + sample 67: + time = 3599966 + flags = 1 + data = length 33250, hash 920EF3EA + sample 68: + time = 3633300 + flags = 1 + data = length 33278, hash D1089D1B + sample 69: + time = 3666633 + flags = 1 + data = length 33300, hash 2BED2033 + sample 70: + time = 3699966 + flags = 1 + data = length 33321, hash FD2B6BE7 + sample 71: + time = 3733300 + flags = 1 + data = length 33337, hash F63EA811 + sample 72: + time = 3766633 + flags = 1 + data = length 33383, hash 9DAB8833 + sample 73: + time = 3799966 + flags = 1 + data = length 33321, hash 55D58114 + sample 74: + time = 3833300 + flags = 1 + data = length 33347, hash 412B5794 + sample 75: + time = 3866633 + flags = 1 + data = length 33374, hash 283D32F9 + sample 76: + time = 3899955 + flags = 1 + data = length 33420, hash ADA33226 + sample 77: + time = 3933288 + flags = 1 + data = length 33435, hash 483803AC + sample 78: + time = 3966622 + flags = 1 + data = length 33469, hash EAEF9B95 + sample 79: + time = 3999955 + flags = 1 + data = length 33507, hash CCD8AF2C + sample 80: + time = 4033288 + flags = 1 + data = length 33509, hash 845D5587 + sample 81: + time = 4066622 + flags = 1 + data = length 33453, hash 28BF6F7F + sample 82: + time = 4099955 + flags = 1 + data = length 33483, hash A98EABD3 + sample 83: + time = 4133288 + flags = 536870913 + data = length 33477, hash 404E7F2D +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_with_apvc.mp4.reading_within_gop_sample_dependencies.2.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_with_apvc.mp4.reading_within_gop_sample_dependencies.2.dump new file mode 100644 index 0000000000..166520ea03 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_with_apvc.mp4.reading_within_gop_sample_dependencies.2.dump @@ -0,0 +1,194 @@ +seekMap: + isSeekable = true + duration = 4166600 + getPosition(0) = [[timeUs=0, position=40]] + getPosition(1) = [[timeUs=0, position=40], [timeUs=33333, position=46331]] + getPosition(2083300) = [[timeUs=2066644, position=2174095], [timeUs=2099977, position=2207700]] + getPosition(4166600) = [[timeUs=4133288, position=4244318]] +numberOfTracks = 1 +track 0: + total output bytes = 1402155 + sample count = 42 + track duration = 4166600 + format 0: + id = 1 + sampleMimeType = video/apv + maxInputSize = 46321 + width = 640 + height = 480 + frameRate = 30.00 + colorInfo: + lumaBitdepth = 8 + chromaBitdepth = 8 + metadata = entries=[mdta: key=com.android.version, value=14, xyz: latitude=0.0, longitude=-180.0, Mp4Timestamp: creation time=3805782157, modification time=3805782157, timescale=10000] + initializationData: + data = length 23, hash 7603C9E2 + sample 0: + time = 2766644 + flags = 1 + data = length 33535, hash EA10535 + sample 1: + time = 2799966 + flags = 1 + data = length 33522, hash AD85B29A + sample 2: + time = 2833300 + flags = 1 + data = length 33482, hash 242C9D1 + sample 3: + time = 2866633 + flags = 1 + data = length 33474, hash A5BA5430 + sample 4: + time = 2899966 + flags = 1 + data = length 33453, hash 13A2FEFE + sample 5: + time = 2933300 + flags = 1 + data = length 33409, hash 5C8231F1 + sample 6: + time = 2966633 + flags = 1 + data = length 33385, hash C38CC146 + sample 7: + time = 2999966 + flags = 1 + data = length 33355, hash 950481DC + sample 8: + time = 3033300 + flags = 1 + data = length 33335, hash 2744D3BC + sample 9: + time = 3066633 + flags = 1 + data = length 33377, hash 67C4C0 + sample 10: + time = 3099966 + flags = 1 + data = length 33339, hash 746966D3 + sample 11: + time = 3133300 + flags = 1 + data = length 33319, hash 1398764F + sample 12: + time = 3166633 + flags = 1 + data = length 33287, hash 9E7473D0 + sample 13: + time = 3199966 + flags = 1 + data = length 33265, hash EEAF849B + sample 14: + time = 3233300 + flags = 1 + data = length 33261, hash 8037846B + sample 15: + time = 3266633 + flags = 1 + data = length 33226, hash 4F4FAA8D + sample 16: + time = 3299966 + flags = 1 + data = length 33203, hash 20A984DE + sample 17: + time = 3333300 + flags = 1 + data = length 33588, hash F0F05CD1 + sample 18: + time = 3366633 + flags = 1 + data = length 33594, hash A3257252 + sample 19: + time = 3399966 + flags = 1 + data = length 33584, hash 54AC38AC + sample 20: + time = 3433300 + flags = 1 + data = length 33216, hash 7A5A33B9 + sample 21: + time = 3466633 + flags = 1 + data = length 33219, hash F1083DEC + sample 22: + time = 3499966 + flags = 1 + data = length 33592, hash 3BB94CA7 + sample 23: + time = 3533300 + flags = 1 + data = length 33227, hash 9E084D49 + sample 24: + time = 3566633 + flags = 1 + data = length 33244, hash CCAFE8CB + sample 25: + time = 3599966 + flags = 1 + data = length 33250, hash 920EF3EA + sample 26: + time = 3633300 + flags = 1 + data = length 33278, hash D1089D1B + sample 27: + time = 3666633 + flags = 1 + data = length 33300, hash 2BED2033 + sample 28: + time = 3699966 + flags = 1 + data = length 33321, hash FD2B6BE7 + sample 29: + time = 3733300 + flags = 1 + data = length 33337, hash F63EA811 + sample 30: + time = 3766633 + flags = 1 + data = length 33383, hash 9DAB8833 + sample 31: + time = 3799966 + flags = 1 + data = length 33321, hash 55D58114 + sample 32: + time = 3833300 + flags = 1 + data = length 33347, hash 412B5794 + sample 33: + time = 3866633 + flags = 1 + data = length 33374, hash 283D32F9 + sample 34: + time = 3899955 + flags = 1 + data = length 33420, hash ADA33226 + sample 35: + time = 3933288 + flags = 1 + data = length 33435, hash 483803AC + sample 36: + time = 3966622 + flags = 1 + data = length 33469, hash EAEF9B95 + sample 37: + time = 3999955 + flags = 1 + data = length 33507, hash CCD8AF2C + sample 38: + time = 4033288 + flags = 1 + data = length 33509, hash 845D5587 + sample 39: + time = 4066622 + flags = 1 + data = length 33453, hash 28BF6F7F + sample 40: + time = 4099955 + flags = 1 + data = length 33483, hash A98EABD3 + sample 41: + time = 4133288 + flags = 536870913 + data = length 33477, hash 404E7F2D +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_with_apvc.mp4.reading_within_gop_sample_dependencies.3.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_with_apvc.mp4.reading_within_gop_sample_dependencies.3.dump new file mode 100644 index 0000000000..4a265e4314 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_with_apvc.mp4.reading_within_gop_sample_dependencies.3.dump @@ -0,0 +1,30 @@ +seekMap: + isSeekable = true + duration = 4166600 + getPosition(0) = [[timeUs=0, position=40]] + getPosition(1) = [[timeUs=0, position=40], [timeUs=33333, position=46331]] + getPosition(2083300) = [[timeUs=2066644, position=2174095], [timeUs=2099977, position=2207700]] + getPosition(4166600) = [[timeUs=4133288, position=4244318]] +numberOfTracks = 1 +track 0: + total output bytes = 33477 + sample count = 1 + track duration = 4166600 + format 0: + id = 1 + sampleMimeType = video/apv + maxInputSize = 46321 + width = 640 + height = 480 + frameRate = 30.00 + colorInfo: + lumaBitdepth = 8 + chromaBitdepth = 8 + metadata = entries=[mdta: key=com.android.version, value=14, xyz: latitude=0.0, longitude=-180.0, Mp4Timestamp: creation time=3805782157, modification time=3805782157, timescale=10000] + initializationData: + data = length 23, hash 7603C9E2 + sample 0: + time = 4133288 + flags = 536870913 + data = length 33477, hash 404E7F2D +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_with_apvc.mp4.reading_within_gop_sample_dependencies.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_with_apvc.mp4.reading_within_gop_sample_dependencies.unknown_length.dump new file mode 100644 index 0000000000..53eccede22 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_with_apvc.mp4.reading_within_gop_sample_dependencies.unknown_length.dump @@ -0,0 +1,526 @@ +seekMap: + isSeekable = true + duration = 4166600 + getPosition(0) = [[timeUs=0, position=40]] + getPosition(1) = [[timeUs=0, position=40], [timeUs=33333, position=46331]] + getPosition(2083300) = [[timeUs=2066644, position=2174095], [timeUs=2099977, position=2207700]] + getPosition(4166600) = [[timeUs=4133288, position=4244318]] +numberOfTracks = 1 +track 0: + total output bytes = 4277755 + sample count = 125 + track duration = 4166600 + format 0: + id = 1 + sampleMimeType = video/apv + maxInputSize = 46321 + width = 640 + height = 480 + frameRate = 30.00 + colorInfo: + lumaBitdepth = 8 + chromaBitdepth = 8 + metadata = entries=[mdta: key=com.android.version, value=14, xyz: latitude=0.0, longitude=-180.0, Mp4Timestamp: creation time=3805782157, modification time=3805782157, timescale=10000] + initializationData: + data = length 23, hash 7603C9E2 + sample 0: + time = 0 + flags = 1 + data = length 46291, hash F184D3EA + sample 1: + time = 33333 + flags = 1 + data = length 45054, hash F206D4C7 + sample 2: + time = 66666 + flags = 1 + data = length 43917, hash 41AF8999 + sample 3: + time = 100000 + flags = 1 + data = length 42718, hash 3133C7AA + sample 4: + time = 133333 + flags = 1 + data = length 42073, hash 65FC45EF + sample 5: + time = 166666 + flags = 1 + data = length 41038, hash 7BD21D86 + sample 6: + time = 200000 + flags = 1 + data = length 40179, hash 9BCCCD79 + sample 7: + time = 233333 + flags = 1 + data = length 38738, hash B3D91D1B + sample 8: + time = 266666 + flags = 1 + data = length 38176, hash FD0085E7 + sample 9: + time = 300000 + flags = 1 + data = length 37326, hash 306F7E88 + sample 10: + time = 333333 + flags = 1 + data = length 36940, hash EE677695 + sample 11: + time = 366666 + flags = 1 + data = length 36320, hash 3FCF3B37 + sample 12: + time = 400000 + flags = 1 + data = length 35664, hash A5C0C7CB + sample 13: + time = 433333 + flags = 1 + data = length 35666, hash F54C69A5 + sample 14: + time = 466666 + flags = 1 + data = length 35300, hash 77430247 + sample 15: + time = 500000 + flags = 1 + data = length 34693, hash BF72F842 + sample 16: + time = 533333 + flags = 1 + data = length 34708, hash 881A49B1 + sample 17: + time = 566655 + flags = 1 + data = length 33840, hash 9A0CC574 + sample 18: + time = 599988 + flags = 1 + data = length 33835, hash F85444D0 + sample 19: + time = 633322 + flags = 1 + data = length 33845, hash 4B29F464 + sample 20: + time = 666655 + flags = 1 + data = length 33820, hash 3CDA4C6E + sample 21: + time = 699988 + flags = 1 + data = length 33815, hash 79E145BF + sample 22: + time = 733322 + flags = 1 + data = length 33832, hash 584A281 + sample 23: + time = 766655 + flags = 1 + data = length 33805, hash 9EA0615E + sample 24: + time = 799988 + flags = 1 + data = length 33797, hash CC7BD45E + sample 25: + time = 833322 + flags = 1 + data = length 33476, hash E0627655 + sample 26: + time = 866655 + flags = 1 + data = length 33475, hash FBB3502A + sample 27: + time = 899988 + flags = 1 + data = length 33465, hash 619353FE + sample 28: + time = 933322 + flags = 1 + data = length 33459, hash 93D6B187 + sample 29: + time = 966655 + flags = 1 + data = length 33461, hash DF9982DC + sample 30: + time = 999988 + flags = 1 + data = length 33449, hash 25E4D68E + sample 31: + time = 1033322 + flags = 1 + data = length 33432, hash F73FC227 + sample 32: + time = 1066655 + flags = 1 + data = length 33419, hash B13787E3 + sample 33: + time = 1099988 + flags = 1 + data = length 33386, hash 788C2D32 + sample 34: + time = 1133322 + flags = 1 + data = length 33727, hash 46D81267 + sample 35: + time = 1166655 + flags = 1 + data = length 33707, hash B5D58D87 + sample 36: + time = 1199988 + flags = 1 + data = length 33671, hash E7BAAE7F + sample 37: + time = 1233322 + flags = 1 + data = length 33638, hash 18005555 + sample 38: + time = 1266655 + flags = 1 + data = length 33593, hash 42021830 + sample 39: + time = 1299988 + flags = 1 + data = length 33569, hash D8029128 + sample 40: + time = 1333322 + flags = 1 + data = length 33523, hash FB58F62 + sample 41: + time = 1366655 + flags = 1 + data = length 33497, hash 129B0638 + sample 42: + time = 1399988 + flags = 1 + data = length 33473, hash 7A79A045 + sample 43: + time = 1433322 + flags = 1 + data = length 33445, hash 4E0CF40B + sample 44: + time = 1466655 + flags = 1 + data = length 33418, hash 635FCB0 + sample 45: + time = 1499988 + flags = 1 + data = length 33424, hash D2D749EE + sample 46: + time = 1533322 + flags = 1 + data = length 33405, hash 5A62251E + sample 47: + time = 1566655 + flags = 1 + data = length 33403, hash 719C366 + sample 48: + time = 1599988 + flags = 1 + data = length 33422, hash 3ED7C42D + sample 49: + time = 1633322 + flags = 1 + data = length 33430, hash 7A8CA910 + sample 50: + time = 1666655 + flags = 1 + data = length 33217, hash E28C94FD + sample 51: + time = 1699977 + flags = 1 + data = length 33263, hash 66DA3079 + sample 52: + time = 1733311 + flags = 1 + data = length 33308, hash 7A7D0074 + sample 53: + time = 1766644 + flags = 1 + data = length 33340, hash C0B0CDEA + sample 54: + time = 1799977 + flags = 1 + data = length 33372, hash AB58ECF3 + sample 55: + time = 1833311 + flags = 1 + data = length 33436, hash AF2870E0 + sample 56: + time = 1866644 + flags = 1 + data = length 33484, hash 5B399761 + sample 57: + time = 1899977 + flags = 1 + data = length 33533, hash 7C123CE2 + sample 58: + time = 1933311 + flags = 1 + data = length 33577, hash 5B94935F + sample 59: + time = 1966644 + flags = 1 + data = length 33615, hash 656D8603 + sample 60: + time = 1999977 + flags = 1 + data = length 33556, hash 68E72B55 + sample 61: + time = 2033311 + flags = 1 + data = length 33597, hash FFB1545C + sample 62: + time = 2066644 + flags = 1 + data = length 33605, hash 84DC1F1D + sample 63: + time = 2099977 + flags = 1 + data = length 33144, hash 57E599D4 + sample 64: + time = 2133311 + flags = 1 + data = length 33171, hash FB92ED17 + sample 65: + time = 2166644 + flags = 1 + data = length 33651, hash AF3A5151 + sample 66: + time = 2199977 + flags = 1 + data = length 33174, hash C2094641 + sample 67: + time = 2233311 + flags = 1 + data = length 33185, hash 17FC6A0 + sample 68: + time = 2266644 + flags = 1 + data = length 33659, hash 8CAA78B3 + sample 69: + time = 2299977 + flags = 1 + data = length 33164, hash 611D5ED + sample 70: + time = 2333311 + flags = 1 + data = length 33631, hash 7FC4E90C + sample 71: + time = 2366644 + flags = 1 + data = length 33157, hash 8C9BE824 + sample 72: + time = 2399977 + flags = 1 + data = length 33613, hash 8F56735C + sample 73: + time = 2433311 + flags = 1 + data = length 33130, hash FE728EAD + sample 74: + time = 2466644 + flags = 1 + data = length 33589, hash 5AD12E53 + sample 75: + time = 2499977 + flags = 1 + data = length 33612, hash 40695796 + sample 76: + time = 2533311 + flags = 1 + data = length 33134, hash B0122256 + sample 77: + time = 2566644 + flags = 1 + data = length 33590, hash 5787C725 + sample 78: + time = 2599977 + flags = 1 + data = length 33595, hash 81B7A445 + sample 79: + time = 2633311 + flags = 1 + data = length 33562, hash 3B6CF24A + sample 80: + time = 2666644 + flags = 1 + data = length 33086, hash DFA77B90 + sample 81: + time = 2699977 + flags = 1 + data = length 33559, hash 7EE31196 + sample 82: + time = 2733311 + flags = 1 + data = length 33534, hash 1E533F20 + sample 83: + time = 2766644 + flags = 1 + data = length 33535, hash EA10535 + sample 84: + time = 2799966 + flags = 1 + data = length 33522, hash AD85B29A + sample 85: + time = 2833300 + flags = 1 + data = length 33482, hash 242C9D1 + sample 86: + time = 2866633 + flags = 1 + data = length 33474, hash A5BA5430 + sample 87: + time = 2899966 + flags = 1 + data = length 33453, hash 13A2FEFE + sample 88: + time = 2933300 + flags = 1 + data = length 33409, hash 5C8231F1 + sample 89: + time = 2966633 + flags = 1 + data = length 33385, hash C38CC146 + sample 90: + time = 2999966 + flags = 1 + data = length 33355, hash 950481DC + sample 91: + time = 3033300 + flags = 1 + data = length 33335, hash 2744D3BC + sample 92: + time = 3066633 + flags = 1 + data = length 33377, hash 67C4C0 + sample 93: + time = 3099966 + flags = 1 + data = length 33339, hash 746966D3 + sample 94: + time = 3133300 + flags = 1 + data = length 33319, hash 1398764F + sample 95: + time = 3166633 + flags = 1 + data = length 33287, hash 9E7473D0 + sample 96: + time = 3199966 + flags = 1 + data = length 33265, hash EEAF849B + sample 97: + time = 3233300 + flags = 1 + data = length 33261, hash 8037846B + sample 98: + time = 3266633 + flags = 1 + data = length 33226, hash 4F4FAA8D + sample 99: + time = 3299966 + flags = 1 + data = length 33203, hash 20A984DE + sample 100: + time = 3333300 + flags = 1 + data = length 33588, hash F0F05CD1 + sample 101: + time = 3366633 + flags = 1 + data = length 33594, hash A3257252 + sample 102: + time = 3399966 + flags = 1 + data = length 33584, hash 54AC38AC + sample 103: + time = 3433300 + flags = 1 + data = length 33216, hash 7A5A33B9 + sample 104: + time = 3466633 + flags = 1 + data = length 33219, hash F1083DEC + sample 105: + time = 3499966 + flags = 1 + data = length 33592, hash 3BB94CA7 + sample 106: + time = 3533300 + flags = 1 + data = length 33227, hash 9E084D49 + sample 107: + time = 3566633 + flags = 1 + data = length 33244, hash CCAFE8CB + sample 108: + time = 3599966 + flags = 1 + data = length 33250, hash 920EF3EA + sample 109: + time = 3633300 + flags = 1 + data = length 33278, hash D1089D1B + sample 110: + time = 3666633 + flags = 1 + data = length 33300, hash 2BED2033 + sample 111: + time = 3699966 + flags = 1 + data = length 33321, hash FD2B6BE7 + sample 112: + time = 3733300 + flags = 1 + data = length 33337, hash F63EA811 + sample 113: + time = 3766633 + flags = 1 + data = length 33383, hash 9DAB8833 + sample 114: + time = 3799966 + flags = 1 + data = length 33321, hash 55D58114 + sample 115: + time = 3833300 + flags = 1 + data = length 33347, hash 412B5794 + sample 116: + time = 3866633 + flags = 1 + data = length 33374, hash 283D32F9 + sample 117: + time = 3899955 + flags = 1 + data = length 33420, hash ADA33226 + sample 118: + time = 3933288 + flags = 1 + data = length 33435, hash 483803AC + sample 119: + time = 3966622 + flags = 1 + data = length 33469, hash EAEF9B95 + sample 120: + time = 3999955 + flags = 1 + data = length 33507, hash CCD8AF2C + sample 121: + time = 4033288 + flags = 1 + data = length 33509, hash 845D5587 + sample 122: + time = 4066622 + flags = 1 + data = length 33453, hash 28BF6F7F + sample 123: + time = 4099955 + flags = 1 + data = length 33483, hash A98EABD3 + sample 124: + time = 4133288 + flags = 536870913 + data = length 33477, hash 404E7F2D +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/sample_with_apvc.mp4.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_with_apvc.mp4.unknown_length.dump new file mode 100644 index 0000000000..53eccede22 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/sample_with_apvc.mp4.unknown_length.dump @@ -0,0 +1,526 @@ +seekMap: + isSeekable = true + duration = 4166600 + getPosition(0) = [[timeUs=0, position=40]] + getPosition(1) = [[timeUs=0, position=40], [timeUs=33333, position=46331]] + getPosition(2083300) = [[timeUs=2066644, position=2174095], [timeUs=2099977, position=2207700]] + getPosition(4166600) = [[timeUs=4133288, position=4244318]] +numberOfTracks = 1 +track 0: + total output bytes = 4277755 + sample count = 125 + track duration = 4166600 + format 0: + id = 1 + sampleMimeType = video/apv + maxInputSize = 46321 + width = 640 + height = 480 + frameRate = 30.00 + colorInfo: + lumaBitdepth = 8 + chromaBitdepth = 8 + metadata = entries=[mdta: key=com.android.version, value=14, xyz: latitude=0.0, longitude=-180.0, Mp4Timestamp: creation time=3805782157, modification time=3805782157, timescale=10000] + initializationData: + data = length 23, hash 7603C9E2 + sample 0: + time = 0 + flags = 1 + data = length 46291, hash F184D3EA + sample 1: + time = 33333 + flags = 1 + data = length 45054, hash F206D4C7 + sample 2: + time = 66666 + flags = 1 + data = length 43917, hash 41AF8999 + sample 3: + time = 100000 + flags = 1 + data = length 42718, hash 3133C7AA + sample 4: + time = 133333 + flags = 1 + data = length 42073, hash 65FC45EF + sample 5: + time = 166666 + flags = 1 + data = length 41038, hash 7BD21D86 + sample 6: + time = 200000 + flags = 1 + data = length 40179, hash 9BCCCD79 + sample 7: + time = 233333 + flags = 1 + data = length 38738, hash B3D91D1B + sample 8: + time = 266666 + flags = 1 + data = length 38176, hash FD0085E7 + sample 9: + time = 300000 + flags = 1 + data = length 37326, hash 306F7E88 + sample 10: + time = 333333 + flags = 1 + data = length 36940, hash EE677695 + sample 11: + time = 366666 + flags = 1 + data = length 36320, hash 3FCF3B37 + sample 12: + time = 400000 + flags = 1 + data = length 35664, hash A5C0C7CB + sample 13: + time = 433333 + flags = 1 + data = length 35666, hash F54C69A5 + sample 14: + time = 466666 + flags = 1 + data = length 35300, hash 77430247 + sample 15: + time = 500000 + flags = 1 + data = length 34693, hash BF72F842 + sample 16: + time = 533333 + flags = 1 + data = length 34708, hash 881A49B1 + sample 17: + time = 566655 + flags = 1 + data = length 33840, hash 9A0CC574 + sample 18: + time = 599988 + flags = 1 + data = length 33835, hash F85444D0 + sample 19: + time = 633322 + flags = 1 + data = length 33845, hash 4B29F464 + sample 20: + time = 666655 + flags = 1 + data = length 33820, hash 3CDA4C6E + sample 21: + time = 699988 + flags = 1 + data = length 33815, hash 79E145BF + sample 22: + time = 733322 + flags = 1 + data = length 33832, hash 584A281 + sample 23: + time = 766655 + flags = 1 + data = length 33805, hash 9EA0615E + sample 24: + time = 799988 + flags = 1 + data = length 33797, hash CC7BD45E + sample 25: + time = 833322 + flags = 1 + data = length 33476, hash E0627655 + sample 26: + time = 866655 + flags = 1 + data = length 33475, hash FBB3502A + sample 27: + time = 899988 + flags = 1 + data = length 33465, hash 619353FE + sample 28: + time = 933322 + flags = 1 + data = length 33459, hash 93D6B187 + sample 29: + time = 966655 + flags = 1 + data = length 33461, hash DF9982DC + sample 30: + time = 999988 + flags = 1 + data = length 33449, hash 25E4D68E + sample 31: + time = 1033322 + flags = 1 + data = length 33432, hash F73FC227 + sample 32: + time = 1066655 + flags = 1 + data = length 33419, hash B13787E3 + sample 33: + time = 1099988 + flags = 1 + data = length 33386, hash 788C2D32 + sample 34: + time = 1133322 + flags = 1 + data = length 33727, hash 46D81267 + sample 35: + time = 1166655 + flags = 1 + data = length 33707, hash B5D58D87 + sample 36: + time = 1199988 + flags = 1 + data = length 33671, hash E7BAAE7F + sample 37: + time = 1233322 + flags = 1 + data = length 33638, hash 18005555 + sample 38: + time = 1266655 + flags = 1 + data = length 33593, hash 42021830 + sample 39: + time = 1299988 + flags = 1 + data = length 33569, hash D8029128 + sample 40: + time = 1333322 + flags = 1 + data = length 33523, hash FB58F62 + sample 41: + time = 1366655 + flags = 1 + data = length 33497, hash 129B0638 + sample 42: + time = 1399988 + flags = 1 + data = length 33473, hash 7A79A045 + sample 43: + time = 1433322 + flags = 1 + data = length 33445, hash 4E0CF40B + sample 44: + time = 1466655 + flags = 1 + data = length 33418, hash 635FCB0 + sample 45: + time = 1499988 + flags = 1 + data = length 33424, hash D2D749EE + sample 46: + time = 1533322 + flags = 1 + data = length 33405, hash 5A62251E + sample 47: + time = 1566655 + flags = 1 + data = length 33403, hash 719C366 + sample 48: + time = 1599988 + flags = 1 + data = length 33422, hash 3ED7C42D + sample 49: + time = 1633322 + flags = 1 + data = length 33430, hash 7A8CA910 + sample 50: + time = 1666655 + flags = 1 + data = length 33217, hash E28C94FD + sample 51: + time = 1699977 + flags = 1 + data = length 33263, hash 66DA3079 + sample 52: + time = 1733311 + flags = 1 + data = length 33308, hash 7A7D0074 + sample 53: + time = 1766644 + flags = 1 + data = length 33340, hash C0B0CDEA + sample 54: + time = 1799977 + flags = 1 + data = length 33372, hash AB58ECF3 + sample 55: + time = 1833311 + flags = 1 + data = length 33436, hash AF2870E0 + sample 56: + time = 1866644 + flags = 1 + data = length 33484, hash 5B399761 + sample 57: + time = 1899977 + flags = 1 + data = length 33533, hash 7C123CE2 + sample 58: + time = 1933311 + flags = 1 + data = length 33577, hash 5B94935F + sample 59: + time = 1966644 + flags = 1 + data = length 33615, hash 656D8603 + sample 60: + time = 1999977 + flags = 1 + data = length 33556, hash 68E72B55 + sample 61: + time = 2033311 + flags = 1 + data = length 33597, hash FFB1545C + sample 62: + time = 2066644 + flags = 1 + data = length 33605, hash 84DC1F1D + sample 63: + time = 2099977 + flags = 1 + data = length 33144, hash 57E599D4 + sample 64: + time = 2133311 + flags = 1 + data = length 33171, hash FB92ED17 + sample 65: + time = 2166644 + flags = 1 + data = length 33651, hash AF3A5151 + sample 66: + time = 2199977 + flags = 1 + data = length 33174, hash C2094641 + sample 67: + time = 2233311 + flags = 1 + data = length 33185, hash 17FC6A0 + sample 68: + time = 2266644 + flags = 1 + data = length 33659, hash 8CAA78B3 + sample 69: + time = 2299977 + flags = 1 + data = length 33164, hash 611D5ED + sample 70: + time = 2333311 + flags = 1 + data = length 33631, hash 7FC4E90C + sample 71: + time = 2366644 + flags = 1 + data = length 33157, hash 8C9BE824 + sample 72: + time = 2399977 + flags = 1 + data = length 33613, hash 8F56735C + sample 73: + time = 2433311 + flags = 1 + data = length 33130, hash FE728EAD + sample 74: + time = 2466644 + flags = 1 + data = length 33589, hash 5AD12E53 + sample 75: + time = 2499977 + flags = 1 + data = length 33612, hash 40695796 + sample 76: + time = 2533311 + flags = 1 + data = length 33134, hash B0122256 + sample 77: + time = 2566644 + flags = 1 + data = length 33590, hash 5787C725 + sample 78: + time = 2599977 + flags = 1 + data = length 33595, hash 81B7A445 + sample 79: + time = 2633311 + flags = 1 + data = length 33562, hash 3B6CF24A + sample 80: + time = 2666644 + flags = 1 + data = length 33086, hash DFA77B90 + sample 81: + time = 2699977 + flags = 1 + data = length 33559, hash 7EE31196 + sample 82: + time = 2733311 + flags = 1 + data = length 33534, hash 1E533F20 + sample 83: + time = 2766644 + flags = 1 + data = length 33535, hash EA10535 + sample 84: + time = 2799966 + flags = 1 + data = length 33522, hash AD85B29A + sample 85: + time = 2833300 + flags = 1 + data = length 33482, hash 242C9D1 + sample 86: + time = 2866633 + flags = 1 + data = length 33474, hash A5BA5430 + sample 87: + time = 2899966 + flags = 1 + data = length 33453, hash 13A2FEFE + sample 88: + time = 2933300 + flags = 1 + data = length 33409, hash 5C8231F1 + sample 89: + time = 2966633 + flags = 1 + data = length 33385, hash C38CC146 + sample 90: + time = 2999966 + flags = 1 + data = length 33355, hash 950481DC + sample 91: + time = 3033300 + flags = 1 + data = length 33335, hash 2744D3BC + sample 92: + time = 3066633 + flags = 1 + data = length 33377, hash 67C4C0 + sample 93: + time = 3099966 + flags = 1 + data = length 33339, hash 746966D3 + sample 94: + time = 3133300 + flags = 1 + data = length 33319, hash 1398764F + sample 95: + time = 3166633 + flags = 1 + data = length 33287, hash 9E7473D0 + sample 96: + time = 3199966 + flags = 1 + data = length 33265, hash EEAF849B + sample 97: + time = 3233300 + flags = 1 + data = length 33261, hash 8037846B + sample 98: + time = 3266633 + flags = 1 + data = length 33226, hash 4F4FAA8D + sample 99: + time = 3299966 + flags = 1 + data = length 33203, hash 20A984DE + sample 100: + time = 3333300 + flags = 1 + data = length 33588, hash F0F05CD1 + sample 101: + time = 3366633 + flags = 1 + data = length 33594, hash A3257252 + sample 102: + time = 3399966 + flags = 1 + data = length 33584, hash 54AC38AC + sample 103: + time = 3433300 + flags = 1 + data = length 33216, hash 7A5A33B9 + sample 104: + time = 3466633 + flags = 1 + data = length 33219, hash F1083DEC + sample 105: + time = 3499966 + flags = 1 + data = length 33592, hash 3BB94CA7 + sample 106: + time = 3533300 + flags = 1 + data = length 33227, hash 9E084D49 + sample 107: + time = 3566633 + flags = 1 + data = length 33244, hash CCAFE8CB + sample 108: + time = 3599966 + flags = 1 + data = length 33250, hash 920EF3EA + sample 109: + time = 3633300 + flags = 1 + data = length 33278, hash D1089D1B + sample 110: + time = 3666633 + flags = 1 + data = length 33300, hash 2BED2033 + sample 111: + time = 3699966 + flags = 1 + data = length 33321, hash FD2B6BE7 + sample 112: + time = 3733300 + flags = 1 + data = length 33337, hash F63EA811 + sample 113: + time = 3766633 + flags = 1 + data = length 33383, hash 9DAB8833 + sample 114: + time = 3799966 + flags = 1 + data = length 33321, hash 55D58114 + sample 115: + time = 3833300 + flags = 1 + data = length 33347, hash 412B5794 + sample 116: + time = 3866633 + flags = 1 + data = length 33374, hash 283D32F9 + sample 117: + time = 3899955 + flags = 1 + data = length 33420, hash ADA33226 + sample 118: + time = 3933288 + flags = 1 + data = length 33435, hash 483803AC + sample 119: + time = 3966622 + flags = 1 + data = length 33469, hash EAEF9B95 + sample 120: + time = 3999955 + flags = 1 + data = length 33507, hash CCD8AF2C + sample 121: + time = 4033288 + flags = 1 + data = length 33509, hash 845D5587 + sample 122: + time = 4066622 + flags = 1 + data = length 33453, hash 28BF6F7F + sample 123: + time = 4099955 + flags = 1 + data = length 33483, hash A98EABD3 + sample 124: + time = 4133288 + flags = 536870913 + data = length 33477, hash 404E7F2D +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/media/mp4/sample_with_apvc.mp4 b/libraries/test_data/src/test/assets/media/mp4/sample_with_apvc.mp4 new file mode 100644 index 0000000000..3a66a8474d Binary files /dev/null and b/libraries/test_data/src/test/assets/media/mp4/sample_with_apvc.mp4 differ