From cd511ea60b13f6260fcf06049d895c25a5fa6e47 Mon Sep 17 00:00:00 2001 From: dancho Date: Thu, 9 Jan 2025 07:31:37 -0800 Subject: [PATCH] Add a test file for FragmentedMp4 captions The previous FragmentedMp4 captions test asset doesn't have captions. Fix a bug where captions before extractor seek were output after. PiperOrigin-RevId: 713665817 --- .../container/ReorderingSeiMessageQueue.java | 5 + .../extractor/mp4/FragmentedMp4Extractor.java | 2 +- ...agmentedMp4ExtractorParameterizedTest.java | 12 +- .../mp4/fragmented_captions.mp4.0.dump | 279 ++++++++++++++++++ ...ding_within_gop_sample_dependencies.0.dump | 279 ++++++++++++++++++ ...op_sample_dependencies.unknown_length.dump | 279 ++++++++++++++++++ ...ragmented_captions.mp4.unknown_length.dump | 279 ++++++++++++++++++ .../assets/media/mp4/fragmented_captions.mp4 | Bin 0 -> 63607 bytes 8 files changed, 1133 insertions(+), 2 deletions(-) create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/fragmented_captions.mp4.0.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/fragmented_captions.mp4.reading_within_gop_sample_dependencies.0.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/fragmented_captions.mp4.reading_within_gop_sample_dependencies.unknown_length.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp4/fragmented_captions.mp4.unknown_length.dump create mode 100644 libraries/test_data/src/test/assets/media/mp4/fragmented_captions.mp4 diff --git a/libraries/container/src/main/java/androidx/media3/container/ReorderingSeiMessageQueue.java b/libraries/container/src/main/java/androidx/media3/container/ReorderingSeiMessageQueue.java index cfcd5ca2fc..3c7665f288 100644 --- a/libraries/container/src/main/java/androidx/media3/container/ReorderingSeiMessageQueue.java +++ b/libraries/container/src/main/java/androidx/media3/container/ReorderingSeiMessageQueue.java @@ -159,6 +159,11 @@ public final class ReorderingSeiMessageQueue { return result; } + /** Empties the queue, discarding all previously {@linkplain #add added} messages. */ + public void clear() { + pendingSeiMessages.clear(); + } + /** * Empties the queue, passing all messages (least first) to the {@link SeiConsumer} provided * during construction. diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/FragmentedMp4Extractor.java b/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/FragmentedMp4Extractor.java index 76f881551e..6bd37531e3 100644 --- a/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/FragmentedMp4Extractor.java +++ b/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/FragmentedMp4Extractor.java @@ -471,7 +471,7 @@ public class FragmentedMp4Extractor implements Extractor { } pendingMetadataSampleInfos.clear(); pendingMetadataSampleBytes = 0; - reorderingSeiMessageQueue.flush(); + reorderingSeiMessageQueue.clear(); pendingSeekTimeUs = timeUs; containerAtoms.clear(); enterReadingAtomHeaderState(); diff --git a/libraries/extractor/src/test/java/androidx/media3/extractor/mp4/FragmentedMp4ExtractorParameterizedTest.java b/libraries/extractor/src/test/java/androidx/media3/extractor/mp4/FragmentedMp4ExtractorParameterizedTest.java index 5af9894930..c7bd6cd1ec 100644 --- a/libraries/extractor/src/test/java/androidx/media3/extractor/mp4/FragmentedMp4ExtractorParameterizedTest.java +++ b/libraries/extractor/src/test/java/androidx/media3/extractor/mp4/FragmentedMp4ExtractorParameterizedTest.java @@ -89,7 +89,7 @@ public final class FragmentedMp4ExtractorParameterizedTest { } @Test - public void sampleWithSeiPayloadParsing() throws Exception { + public void sampleWithSeiPayloadInputHasNoCaptions() throws Exception { // Enabling the CEA-608 track enables SEI payload parsing. List closedCaptions = Collections.singletonList( @@ -98,6 +98,16 @@ public final class FragmentedMp4ExtractorParameterizedTest { assertExtractorBehavior(closedCaptions, "media/mp4/sample_fragmented_sei.mp4"); } + @Test + public void sampleWithSeiPayloadInputHasCaptions() throws Exception { + // Enabling the CEA-608 track enables SEI payload parsing. + List closedCaptions = + Collections.singletonList( + new Format.Builder().setSampleMimeType(MimeTypes.APPLICATION_CEA608).build()); + + assertExtractorBehavior(closedCaptions, "media/mp4/fragmented_captions.mp4"); + } + @Test public void sampleWithAc3Track() throws Exception { assertExtractorBehavior( diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/fragmented_captions.mp4.0.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/fragmented_captions.mp4.0.dump new file mode 100644 index 0000000000..a382f88cf7 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/fragmented_captions.mp4.0.dump @@ -0,0 +1,279 @@ +seekMap: + isSeekable = false + duration = UNSET TIME + getPosition(0) = [[timeUs=0, position=782]] +numberOfTracks = 2 +track 0: + total output bytes = 61918 + sample count = 60 + format 0: + id = 1 + containerMimeType = video/mp4 + sampleMimeType = video/avc + codecs = avc1.4D400D + maxNumReorderSamples = 16 + width = 416 + height = 234 + colorInfo: + colorSpace = 2 + colorRange = 2 + colorTransfer = 3 + lumaBitdepth = 8 + chromaBitdepth = 8 + initializationData: + data = length 27, hash 9F13E633 + data = length 8, hash 94643657 + sample 0: + time = 0 + flags = 1 + data = length 12525, hash 70EB7B9A + sample 1: + time = 66733 + flags = 0 + data = length 896, hash 8D39AFC6 + sample 2: + time = 33377 + flags = 0 + data = length 511, hash 2EC93EA + sample 3: + time = 133466 + flags = 0 + data = length 774, hash 2418C615 + sample 4: + time = 100111 + flags = 0 + data = length 565, hash F8159C52 + sample 5: + time = 200200 + flags = 0 + data = length 735, hash 29A0A2C0 + sample 6: + time = 166844 + flags = 0 + data = length 549, hash 38D40850 + sample 7: + time = 266933 + flags = 0 + data = length 650, hash 15AD0370 + sample 8: + time = 233577 + flags = 0 + data = length 486, hash 54B8C0A7 + sample 9: + time = 333666 + flags = 0 + data = length 995, hash BF36D9F0 + sample 10: + time = 300311 + flags = 0 + data = length 520, hash 1A9EE62F + sample 11: + time = 400400 + flags = 0 + data = length 757, hash A2616892 + sample 12: + time = 367044 + flags = 0 + data = length 531, hash BEB68137 + sample 13: + time = 467133 + flags = 0 + data = length 739, hash D0D169A9 + sample 14: + time = 433777 + flags = 0 + data = length 506, hash D051E56C + sample 15: + time = 533866 + flags = 0 + data = length 746, hash 6CD81CA2 + sample 16: + time = 500511 + flags = 0 + data = length 431, hash B74C7BC7 + sample 17: + time = 600600 + flags = 0 + data = length 686, hash D7D75839 + sample 18: + time = 567244 + flags = 0 + data = length 545, hash F6477628 + sample 19: + time = 667333 + flags = 0 + data = length 976, hash 42D5681F + sample 20: + time = 633977 + flags = 0 + data = length 561, hash D556D118 + sample 21: + time = 734066 + flags = 0 + data = length 714, hash 84FF3F05 + sample 22: + time = 700711 + flags = 0 + data = length 483, hash B9D36F1E + sample 23: + time = 800800 + flags = 0 + data = length 724, hash 345E3E73 + sample 24: + time = 767444 + flags = 0 + data = length 504, hash 59318512 + sample 25: + time = 867533 + flags = 0 + data = length 753, hash 97EC8836 + sample 26: + time = 834177 + flags = 0 + data = length 525, hash 2DDD98B6 + sample 27: + time = 934266 + flags = 0 + data = length 691, hash 23F23778 + sample 28: + time = 900911 + flags = 0 + data = length 572, hash FB5B213 + sample 29: + time = 1001000 + flags = 0 + data = length 4918, hash 536C96E2 + sample 30: + time = 967644 + flags = 0 + data = length 522, hash 7E8A61B + sample 31: + time = 1067733 + flags = 0 + data = length 924, hash 23D2B41F + sample 32: + time = 1034377 + flags = 0 + data = length 521, hash A13C46C2 + sample 33: + time = 1134466 + flags = 0 + data = length 843, hash 629F54ED + sample 34: + time = 1101111 + flags = 0 + data = length 575, hash DF1AA7B8 + sample 35: + time = 1201200 + flags = 0 + data = length 778, hash ED958308 + sample 36: + time = 1167844 + flags = 0 + data = length 530, hash CC1B02EB + sample 37: + time = 1267933 + flags = 0 + data = length 699, hash 905E8F93 + sample 38: + time = 1234577 + flags = 0 + data = length 471, hash 42C41C8D + sample 39: + time = 1334666 + flags = 0 + data = length 1038, hash 25F48EF6 + sample 40: + time = 1301311 + flags = 0 + data = length 492, hash 407AB129 + sample 41: + time = 1401400 + flags = 0 + data = length 804, hash A422F625 + sample 42: + time = 1368044 + flags = 0 + data = length 539, hash 5420F81E + sample 43: + time = 1468133 + flags = 0 + data = length 748, hash 95E9F0E7 + sample 44: + time = 1434777 + flags = 0 + data = length 496, hash DC2A2A82 + sample 45: + time = 1534866 + flags = 0 + data = length 765, hash A9F0B2FC + sample 46: + time = 1501511 + flags = 0 + data = length 411, hash 959BCB04 + sample 47: + time = 1601600 + flags = 0 + data = length 731, hash E7838877 + sample 48: + time = 1568244 + flags = 0 + data = length 547, hash BEE72EE1 + sample 49: + time = 1668333 + flags = 0 + data = length 1029, hash DBE11BAA + sample 50: + time = 1634977 + flags = 0 + data = length 583, hash 9DCD17D6 + sample 51: + time = 1735066 + flags = 0 + data = length 749, hash B28BE5F3 + sample 52: + time = 1701711 + flags = 0 + data = length 512, hash 6793DB68 + sample 53: + time = 1801800 + flags = 0 + data = length 791, hash 351F1BDB + sample 54: + time = 1768444 + flags = 0 + data = length 500, hash B84AEF4 + sample 55: + time = 1868533 + flags = 0 + data = length 806, hash 72768A97 + sample 56: + time = 1835177 + flags = 0 + data = length 509, hash 7FAEBD47 + sample 57: + time = 1935266 + flags = 0 + data = length 694, hash 2F026583 + sample 58: + time = 1901911 + flags = 0 + data = length 577, hash 9E02A111 + sample 59: + time = 2002000 + flags = 0 + data = length 7166, hash 34327E96 +track 100: + total output bytes = 45 + sample count = 2 + format 0: + sampleMimeType = application/cea-608 + sample 0: + time = 0 + flags = 1 + data = length 36, hash 6E15DFAD + sample 1: + time = 1868533 + flags = 1 + data = length 9, hash 604EC6AA +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/fragmented_captions.mp4.reading_within_gop_sample_dependencies.0.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/fragmented_captions.mp4.reading_within_gop_sample_dependencies.0.dump new file mode 100644 index 0000000000..a382f88cf7 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/fragmented_captions.mp4.reading_within_gop_sample_dependencies.0.dump @@ -0,0 +1,279 @@ +seekMap: + isSeekable = false + duration = UNSET TIME + getPosition(0) = [[timeUs=0, position=782]] +numberOfTracks = 2 +track 0: + total output bytes = 61918 + sample count = 60 + format 0: + id = 1 + containerMimeType = video/mp4 + sampleMimeType = video/avc + codecs = avc1.4D400D + maxNumReorderSamples = 16 + width = 416 + height = 234 + colorInfo: + colorSpace = 2 + colorRange = 2 + colorTransfer = 3 + lumaBitdepth = 8 + chromaBitdepth = 8 + initializationData: + data = length 27, hash 9F13E633 + data = length 8, hash 94643657 + sample 0: + time = 0 + flags = 1 + data = length 12525, hash 70EB7B9A + sample 1: + time = 66733 + flags = 0 + data = length 896, hash 8D39AFC6 + sample 2: + time = 33377 + flags = 0 + data = length 511, hash 2EC93EA + sample 3: + time = 133466 + flags = 0 + data = length 774, hash 2418C615 + sample 4: + time = 100111 + flags = 0 + data = length 565, hash F8159C52 + sample 5: + time = 200200 + flags = 0 + data = length 735, hash 29A0A2C0 + sample 6: + time = 166844 + flags = 0 + data = length 549, hash 38D40850 + sample 7: + time = 266933 + flags = 0 + data = length 650, hash 15AD0370 + sample 8: + time = 233577 + flags = 0 + data = length 486, hash 54B8C0A7 + sample 9: + time = 333666 + flags = 0 + data = length 995, hash BF36D9F0 + sample 10: + time = 300311 + flags = 0 + data = length 520, hash 1A9EE62F + sample 11: + time = 400400 + flags = 0 + data = length 757, hash A2616892 + sample 12: + time = 367044 + flags = 0 + data = length 531, hash BEB68137 + sample 13: + time = 467133 + flags = 0 + data = length 739, hash D0D169A9 + sample 14: + time = 433777 + flags = 0 + data = length 506, hash D051E56C + sample 15: + time = 533866 + flags = 0 + data = length 746, hash 6CD81CA2 + sample 16: + time = 500511 + flags = 0 + data = length 431, hash B74C7BC7 + sample 17: + time = 600600 + flags = 0 + data = length 686, hash D7D75839 + sample 18: + time = 567244 + flags = 0 + data = length 545, hash F6477628 + sample 19: + time = 667333 + flags = 0 + data = length 976, hash 42D5681F + sample 20: + time = 633977 + flags = 0 + data = length 561, hash D556D118 + sample 21: + time = 734066 + flags = 0 + data = length 714, hash 84FF3F05 + sample 22: + time = 700711 + flags = 0 + data = length 483, hash B9D36F1E + sample 23: + time = 800800 + flags = 0 + data = length 724, hash 345E3E73 + sample 24: + time = 767444 + flags = 0 + data = length 504, hash 59318512 + sample 25: + time = 867533 + flags = 0 + data = length 753, hash 97EC8836 + sample 26: + time = 834177 + flags = 0 + data = length 525, hash 2DDD98B6 + sample 27: + time = 934266 + flags = 0 + data = length 691, hash 23F23778 + sample 28: + time = 900911 + flags = 0 + data = length 572, hash FB5B213 + sample 29: + time = 1001000 + flags = 0 + data = length 4918, hash 536C96E2 + sample 30: + time = 967644 + flags = 0 + data = length 522, hash 7E8A61B + sample 31: + time = 1067733 + flags = 0 + data = length 924, hash 23D2B41F + sample 32: + time = 1034377 + flags = 0 + data = length 521, hash A13C46C2 + sample 33: + time = 1134466 + flags = 0 + data = length 843, hash 629F54ED + sample 34: + time = 1101111 + flags = 0 + data = length 575, hash DF1AA7B8 + sample 35: + time = 1201200 + flags = 0 + data = length 778, hash ED958308 + sample 36: + time = 1167844 + flags = 0 + data = length 530, hash CC1B02EB + sample 37: + time = 1267933 + flags = 0 + data = length 699, hash 905E8F93 + sample 38: + time = 1234577 + flags = 0 + data = length 471, hash 42C41C8D + sample 39: + time = 1334666 + flags = 0 + data = length 1038, hash 25F48EF6 + sample 40: + time = 1301311 + flags = 0 + data = length 492, hash 407AB129 + sample 41: + time = 1401400 + flags = 0 + data = length 804, hash A422F625 + sample 42: + time = 1368044 + flags = 0 + data = length 539, hash 5420F81E + sample 43: + time = 1468133 + flags = 0 + data = length 748, hash 95E9F0E7 + sample 44: + time = 1434777 + flags = 0 + data = length 496, hash DC2A2A82 + sample 45: + time = 1534866 + flags = 0 + data = length 765, hash A9F0B2FC + sample 46: + time = 1501511 + flags = 0 + data = length 411, hash 959BCB04 + sample 47: + time = 1601600 + flags = 0 + data = length 731, hash E7838877 + sample 48: + time = 1568244 + flags = 0 + data = length 547, hash BEE72EE1 + sample 49: + time = 1668333 + flags = 0 + data = length 1029, hash DBE11BAA + sample 50: + time = 1634977 + flags = 0 + data = length 583, hash 9DCD17D6 + sample 51: + time = 1735066 + flags = 0 + data = length 749, hash B28BE5F3 + sample 52: + time = 1701711 + flags = 0 + data = length 512, hash 6793DB68 + sample 53: + time = 1801800 + flags = 0 + data = length 791, hash 351F1BDB + sample 54: + time = 1768444 + flags = 0 + data = length 500, hash B84AEF4 + sample 55: + time = 1868533 + flags = 0 + data = length 806, hash 72768A97 + sample 56: + time = 1835177 + flags = 0 + data = length 509, hash 7FAEBD47 + sample 57: + time = 1935266 + flags = 0 + data = length 694, hash 2F026583 + sample 58: + time = 1901911 + flags = 0 + data = length 577, hash 9E02A111 + sample 59: + time = 2002000 + flags = 0 + data = length 7166, hash 34327E96 +track 100: + total output bytes = 45 + sample count = 2 + format 0: + sampleMimeType = application/cea-608 + sample 0: + time = 0 + flags = 1 + data = length 36, hash 6E15DFAD + sample 1: + time = 1868533 + flags = 1 + data = length 9, hash 604EC6AA +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/fragmented_captions.mp4.reading_within_gop_sample_dependencies.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/fragmented_captions.mp4.reading_within_gop_sample_dependencies.unknown_length.dump new file mode 100644 index 0000000000..a382f88cf7 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/fragmented_captions.mp4.reading_within_gop_sample_dependencies.unknown_length.dump @@ -0,0 +1,279 @@ +seekMap: + isSeekable = false + duration = UNSET TIME + getPosition(0) = [[timeUs=0, position=782]] +numberOfTracks = 2 +track 0: + total output bytes = 61918 + sample count = 60 + format 0: + id = 1 + containerMimeType = video/mp4 + sampleMimeType = video/avc + codecs = avc1.4D400D + maxNumReorderSamples = 16 + width = 416 + height = 234 + colorInfo: + colorSpace = 2 + colorRange = 2 + colorTransfer = 3 + lumaBitdepth = 8 + chromaBitdepth = 8 + initializationData: + data = length 27, hash 9F13E633 + data = length 8, hash 94643657 + sample 0: + time = 0 + flags = 1 + data = length 12525, hash 70EB7B9A + sample 1: + time = 66733 + flags = 0 + data = length 896, hash 8D39AFC6 + sample 2: + time = 33377 + flags = 0 + data = length 511, hash 2EC93EA + sample 3: + time = 133466 + flags = 0 + data = length 774, hash 2418C615 + sample 4: + time = 100111 + flags = 0 + data = length 565, hash F8159C52 + sample 5: + time = 200200 + flags = 0 + data = length 735, hash 29A0A2C0 + sample 6: + time = 166844 + flags = 0 + data = length 549, hash 38D40850 + sample 7: + time = 266933 + flags = 0 + data = length 650, hash 15AD0370 + sample 8: + time = 233577 + flags = 0 + data = length 486, hash 54B8C0A7 + sample 9: + time = 333666 + flags = 0 + data = length 995, hash BF36D9F0 + sample 10: + time = 300311 + flags = 0 + data = length 520, hash 1A9EE62F + sample 11: + time = 400400 + flags = 0 + data = length 757, hash A2616892 + sample 12: + time = 367044 + flags = 0 + data = length 531, hash BEB68137 + sample 13: + time = 467133 + flags = 0 + data = length 739, hash D0D169A9 + sample 14: + time = 433777 + flags = 0 + data = length 506, hash D051E56C + sample 15: + time = 533866 + flags = 0 + data = length 746, hash 6CD81CA2 + sample 16: + time = 500511 + flags = 0 + data = length 431, hash B74C7BC7 + sample 17: + time = 600600 + flags = 0 + data = length 686, hash D7D75839 + sample 18: + time = 567244 + flags = 0 + data = length 545, hash F6477628 + sample 19: + time = 667333 + flags = 0 + data = length 976, hash 42D5681F + sample 20: + time = 633977 + flags = 0 + data = length 561, hash D556D118 + sample 21: + time = 734066 + flags = 0 + data = length 714, hash 84FF3F05 + sample 22: + time = 700711 + flags = 0 + data = length 483, hash B9D36F1E + sample 23: + time = 800800 + flags = 0 + data = length 724, hash 345E3E73 + sample 24: + time = 767444 + flags = 0 + data = length 504, hash 59318512 + sample 25: + time = 867533 + flags = 0 + data = length 753, hash 97EC8836 + sample 26: + time = 834177 + flags = 0 + data = length 525, hash 2DDD98B6 + sample 27: + time = 934266 + flags = 0 + data = length 691, hash 23F23778 + sample 28: + time = 900911 + flags = 0 + data = length 572, hash FB5B213 + sample 29: + time = 1001000 + flags = 0 + data = length 4918, hash 536C96E2 + sample 30: + time = 967644 + flags = 0 + data = length 522, hash 7E8A61B + sample 31: + time = 1067733 + flags = 0 + data = length 924, hash 23D2B41F + sample 32: + time = 1034377 + flags = 0 + data = length 521, hash A13C46C2 + sample 33: + time = 1134466 + flags = 0 + data = length 843, hash 629F54ED + sample 34: + time = 1101111 + flags = 0 + data = length 575, hash DF1AA7B8 + sample 35: + time = 1201200 + flags = 0 + data = length 778, hash ED958308 + sample 36: + time = 1167844 + flags = 0 + data = length 530, hash CC1B02EB + sample 37: + time = 1267933 + flags = 0 + data = length 699, hash 905E8F93 + sample 38: + time = 1234577 + flags = 0 + data = length 471, hash 42C41C8D + sample 39: + time = 1334666 + flags = 0 + data = length 1038, hash 25F48EF6 + sample 40: + time = 1301311 + flags = 0 + data = length 492, hash 407AB129 + sample 41: + time = 1401400 + flags = 0 + data = length 804, hash A422F625 + sample 42: + time = 1368044 + flags = 0 + data = length 539, hash 5420F81E + sample 43: + time = 1468133 + flags = 0 + data = length 748, hash 95E9F0E7 + sample 44: + time = 1434777 + flags = 0 + data = length 496, hash DC2A2A82 + sample 45: + time = 1534866 + flags = 0 + data = length 765, hash A9F0B2FC + sample 46: + time = 1501511 + flags = 0 + data = length 411, hash 959BCB04 + sample 47: + time = 1601600 + flags = 0 + data = length 731, hash E7838877 + sample 48: + time = 1568244 + flags = 0 + data = length 547, hash BEE72EE1 + sample 49: + time = 1668333 + flags = 0 + data = length 1029, hash DBE11BAA + sample 50: + time = 1634977 + flags = 0 + data = length 583, hash 9DCD17D6 + sample 51: + time = 1735066 + flags = 0 + data = length 749, hash B28BE5F3 + sample 52: + time = 1701711 + flags = 0 + data = length 512, hash 6793DB68 + sample 53: + time = 1801800 + flags = 0 + data = length 791, hash 351F1BDB + sample 54: + time = 1768444 + flags = 0 + data = length 500, hash B84AEF4 + sample 55: + time = 1868533 + flags = 0 + data = length 806, hash 72768A97 + sample 56: + time = 1835177 + flags = 0 + data = length 509, hash 7FAEBD47 + sample 57: + time = 1935266 + flags = 0 + data = length 694, hash 2F026583 + sample 58: + time = 1901911 + flags = 0 + data = length 577, hash 9E02A111 + sample 59: + time = 2002000 + flags = 0 + data = length 7166, hash 34327E96 +track 100: + total output bytes = 45 + sample count = 2 + format 0: + sampleMimeType = application/cea-608 + sample 0: + time = 0 + flags = 1 + data = length 36, hash 6E15DFAD + sample 1: + time = 1868533 + flags = 1 + data = length 9, hash 604EC6AA +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp4/fragmented_captions.mp4.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/mp4/fragmented_captions.mp4.unknown_length.dump new file mode 100644 index 0000000000..a382f88cf7 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp4/fragmented_captions.mp4.unknown_length.dump @@ -0,0 +1,279 @@ +seekMap: + isSeekable = false + duration = UNSET TIME + getPosition(0) = [[timeUs=0, position=782]] +numberOfTracks = 2 +track 0: + total output bytes = 61918 + sample count = 60 + format 0: + id = 1 + containerMimeType = video/mp4 + sampleMimeType = video/avc + codecs = avc1.4D400D + maxNumReorderSamples = 16 + width = 416 + height = 234 + colorInfo: + colorSpace = 2 + colorRange = 2 + colorTransfer = 3 + lumaBitdepth = 8 + chromaBitdepth = 8 + initializationData: + data = length 27, hash 9F13E633 + data = length 8, hash 94643657 + sample 0: + time = 0 + flags = 1 + data = length 12525, hash 70EB7B9A + sample 1: + time = 66733 + flags = 0 + data = length 896, hash 8D39AFC6 + sample 2: + time = 33377 + flags = 0 + data = length 511, hash 2EC93EA + sample 3: + time = 133466 + flags = 0 + data = length 774, hash 2418C615 + sample 4: + time = 100111 + flags = 0 + data = length 565, hash F8159C52 + sample 5: + time = 200200 + flags = 0 + data = length 735, hash 29A0A2C0 + sample 6: + time = 166844 + flags = 0 + data = length 549, hash 38D40850 + sample 7: + time = 266933 + flags = 0 + data = length 650, hash 15AD0370 + sample 8: + time = 233577 + flags = 0 + data = length 486, hash 54B8C0A7 + sample 9: + time = 333666 + flags = 0 + data = length 995, hash BF36D9F0 + sample 10: + time = 300311 + flags = 0 + data = length 520, hash 1A9EE62F + sample 11: + time = 400400 + flags = 0 + data = length 757, hash A2616892 + sample 12: + time = 367044 + flags = 0 + data = length 531, hash BEB68137 + sample 13: + time = 467133 + flags = 0 + data = length 739, hash D0D169A9 + sample 14: + time = 433777 + flags = 0 + data = length 506, hash D051E56C + sample 15: + time = 533866 + flags = 0 + data = length 746, hash 6CD81CA2 + sample 16: + time = 500511 + flags = 0 + data = length 431, hash B74C7BC7 + sample 17: + time = 600600 + flags = 0 + data = length 686, hash D7D75839 + sample 18: + time = 567244 + flags = 0 + data = length 545, hash F6477628 + sample 19: + time = 667333 + flags = 0 + data = length 976, hash 42D5681F + sample 20: + time = 633977 + flags = 0 + data = length 561, hash D556D118 + sample 21: + time = 734066 + flags = 0 + data = length 714, hash 84FF3F05 + sample 22: + time = 700711 + flags = 0 + data = length 483, hash B9D36F1E + sample 23: + time = 800800 + flags = 0 + data = length 724, hash 345E3E73 + sample 24: + time = 767444 + flags = 0 + data = length 504, hash 59318512 + sample 25: + time = 867533 + flags = 0 + data = length 753, hash 97EC8836 + sample 26: + time = 834177 + flags = 0 + data = length 525, hash 2DDD98B6 + sample 27: + time = 934266 + flags = 0 + data = length 691, hash 23F23778 + sample 28: + time = 900911 + flags = 0 + data = length 572, hash FB5B213 + sample 29: + time = 1001000 + flags = 0 + data = length 4918, hash 536C96E2 + sample 30: + time = 967644 + flags = 0 + data = length 522, hash 7E8A61B + sample 31: + time = 1067733 + flags = 0 + data = length 924, hash 23D2B41F + sample 32: + time = 1034377 + flags = 0 + data = length 521, hash A13C46C2 + sample 33: + time = 1134466 + flags = 0 + data = length 843, hash 629F54ED + sample 34: + time = 1101111 + flags = 0 + data = length 575, hash DF1AA7B8 + sample 35: + time = 1201200 + flags = 0 + data = length 778, hash ED958308 + sample 36: + time = 1167844 + flags = 0 + data = length 530, hash CC1B02EB + sample 37: + time = 1267933 + flags = 0 + data = length 699, hash 905E8F93 + sample 38: + time = 1234577 + flags = 0 + data = length 471, hash 42C41C8D + sample 39: + time = 1334666 + flags = 0 + data = length 1038, hash 25F48EF6 + sample 40: + time = 1301311 + flags = 0 + data = length 492, hash 407AB129 + sample 41: + time = 1401400 + flags = 0 + data = length 804, hash A422F625 + sample 42: + time = 1368044 + flags = 0 + data = length 539, hash 5420F81E + sample 43: + time = 1468133 + flags = 0 + data = length 748, hash 95E9F0E7 + sample 44: + time = 1434777 + flags = 0 + data = length 496, hash DC2A2A82 + sample 45: + time = 1534866 + flags = 0 + data = length 765, hash A9F0B2FC + sample 46: + time = 1501511 + flags = 0 + data = length 411, hash 959BCB04 + sample 47: + time = 1601600 + flags = 0 + data = length 731, hash E7838877 + sample 48: + time = 1568244 + flags = 0 + data = length 547, hash BEE72EE1 + sample 49: + time = 1668333 + flags = 0 + data = length 1029, hash DBE11BAA + sample 50: + time = 1634977 + flags = 0 + data = length 583, hash 9DCD17D6 + sample 51: + time = 1735066 + flags = 0 + data = length 749, hash B28BE5F3 + sample 52: + time = 1701711 + flags = 0 + data = length 512, hash 6793DB68 + sample 53: + time = 1801800 + flags = 0 + data = length 791, hash 351F1BDB + sample 54: + time = 1768444 + flags = 0 + data = length 500, hash B84AEF4 + sample 55: + time = 1868533 + flags = 0 + data = length 806, hash 72768A97 + sample 56: + time = 1835177 + flags = 0 + data = length 509, hash 7FAEBD47 + sample 57: + time = 1935266 + flags = 0 + data = length 694, hash 2F026583 + sample 58: + time = 1901911 + flags = 0 + data = length 577, hash 9E02A111 + sample 59: + time = 2002000 + flags = 0 + data = length 7166, hash 34327E96 +track 100: + total output bytes = 45 + sample count = 2 + format 0: + sampleMimeType = application/cea-608 + sample 0: + time = 0 + flags = 1 + data = length 36, hash 6E15DFAD + sample 1: + time = 1868533 + flags = 1 + data = length 9, hash 604EC6AA +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/media/mp4/fragmented_captions.mp4 b/libraries/test_data/src/test/assets/media/mp4/fragmented_captions.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..486678791a4f4d30deb9cee71fc4448f618589a6 GIT binary patch literal 63607 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 literal 0 HcmV?d00001