From 63da73df00e57a5573090fcff961c2d2c3911b4c Mon Sep 17 00:00:00 2001 From: kimvde Date: Thu, 16 Apr 2020 15:46:06 +0100 Subject: [PATCH] Add tests for ID3 in Mp3Extractor PiperOrigin-RevId: 306844582 --- .../extractor/mp3/Mp3ExtractorTest.java | 19 + .../test/assets/mp3/bear-id3-disabled.0.dump | 487 +++++++++++++++++ .../test/assets/mp3/bear-id3-disabled.1.dump | 339 ++++++++++++ .../test/assets/mp3/bear-id3-disabled.2.dump | 187 +++++++ .../test/assets/mp3/bear-id3-disabled.3.dump | 19 + .../mp3/bear-id3-disabled.unknown_length.dump | 487 +++++++++++++++++ .../test/assets/mp3/bear-id3-enabled.0.dump | 488 ++++++++++++++++++ .../test/assets/mp3/bear-id3-enabled.1.dump | 340 ++++++++++++ .../test/assets/mp3/bear-id3-enabled.2.dump | 188 +++++++ .../test/assets/mp3/bear-id3-enabled.3.dump | 20 + .../mp3/bear-id3-enabled.unknown_length.dump | 488 ++++++++++++++++++ testdata/src/test/assets/mp3/bear-id3.mp3 | Bin 0 -> 77901 bytes 12 files changed, 3062 insertions(+) create mode 100644 testdata/src/test/assets/mp3/bear-id3-disabled.0.dump create mode 100644 testdata/src/test/assets/mp3/bear-id3-disabled.1.dump create mode 100644 testdata/src/test/assets/mp3/bear-id3-disabled.2.dump create mode 100644 testdata/src/test/assets/mp3/bear-id3-disabled.3.dump create mode 100644 testdata/src/test/assets/mp3/bear-id3-disabled.unknown_length.dump create mode 100644 testdata/src/test/assets/mp3/bear-id3-enabled.0.dump create mode 100644 testdata/src/test/assets/mp3/bear-id3-enabled.1.dump create mode 100644 testdata/src/test/assets/mp3/bear-id3-enabled.2.dump create mode 100644 testdata/src/test/assets/mp3/bear-id3-enabled.3.dump create mode 100644 testdata/src/test/assets/mp3/bear-id3-enabled.unknown_length.dump create mode 100644 testdata/src/test/assets/mp3/bear-id3.mp3 diff --git a/library/extractor/src/test/java/com/google/android/exoplayer2/extractor/mp3/Mp3ExtractorTest.java b/library/extractor/src/test/java/com/google/android/exoplayer2/extractor/mp3/Mp3ExtractorTest.java index 554c0327d7..5622137448 100644 --- a/library/extractor/src/test/java/com/google/android/exoplayer2/extractor/mp3/Mp3ExtractorTest.java +++ b/library/extractor/src/test/java/com/google/android/exoplayer2/extractor/mp3/Mp3ExtractorTest.java @@ -15,6 +15,7 @@ */ package com.google.android.exoplayer2.extractor.mp3; +import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; import com.google.android.exoplayer2.testutil.ExtractorAsserts; import org.junit.Test; @@ -46,4 +47,22 @@ public final class Mp3ExtractorTest { public void trimmedMp3Sample() throws Exception { ExtractorAsserts.assertBehavior(Mp3Extractor::new, "mp3/play-trimmed.mp3"); } + + @Test + public void mp3SampleWithId3Enabled() throws Exception { + ExtractorAsserts.assertBehavior( + Mp3Extractor::new, + /* file= */ "mp3/bear-id3.mp3", + ApplicationProvider.getApplicationContext(), + /* dumpFilesPrefix= */ "mp3/bear-id3-enabled"); + } + + @Test + public void mp3SampleWithId3Disabled() throws Exception { + ExtractorAsserts.assertBehavior( + () -> new Mp3Extractor(Mp3Extractor.FLAG_DISABLE_ID3_METADATA), + /* file= */ "mp3/bear-id3.mp3", + ApplicationProvider.getApplicationContext(), + /* dumpFilesPrefix= */ "mp3/bear-id3-disabled"); + } } diff --git a/testdata/src/test/assets/mp3/bear-id3-disabled.0.dump b/testdata/src/test/assets/mp3/bear-id3-disabled.0.dump new file mode 100644 index 0000000000..a80bf5e315 --- /dev/null +++ b/testdata/src/test/assets/mp3/bear-id3-disabled.0.dump @@ -0,0 +1,487 @@ +seekMap: + isSeekable = true + duration = 2808000 + getPosition(0) = [[timeUs=0, position=39740]] + getPosition(1) = [[timeUs=0, position=39740]] + getPosition(1404000) = [[timeUs=1404000, position=58820]] + getPosition(2808000) = [[timeUs=2808000, position=77900]] +numberOfTracks = 1 +track 0: + total output bytes = 38160 + sample count = 117 + format 0: + sampleMimeType = audio/mpeg + maxInputSize = 4096 + channelCount = 2 + sampleRate = 48000 + encoderDelay = 576 + encoderPadding = 576 + sample 0: + time = 0 + flags = 1 + data = length 96, hash 1F161542 + sample 1: + time = 24000 + flags = 1 + data = length 768, hash CD1DC50F + sample 2: + time = 48000 + flags = 1 + data = length 336, hash 3F64124B + sample 3: + time = 72000 + flags = 1 + data = length 336, hash 8FFED94E + sample 4: + time = 96000 + flags = 1 + data = length 288, hash 9CD77D47 + sample 5: + time = 120000 + flags = 1 + data = length 384, hash 24607BB5 + sample 6: + time = 144000 + flags = 1 + data = length 480, hash 4937EBAB + sample 7: + time = 168000 + flags = 1 + data = length 336, hash 546342B1 + sample 8: + time = 192000 + flags = 1 + data = length 336, hash 79E0923F + sample 9: + time = 216000 + flags = 1 + data = length 336, hash AB1F3948 + sample 10: + time = 240000 + flags = 1 + data = length 336, hash C3A4D888 + sample 11: + time = 264000 + flags = 1 + data = length 288, hash 7867DA45 + sample 12: + time = 288000 + flags = 1 + data = length 336, hash B1240B73 + sample 13: + time = 312000 + flags = 1 + data = length 336, hash 94CFCD35 + sample 14: + time = 336000 + flags = 1 + data = length 288, hash 94F412C + sample 15: + time = 360000 + flags = 1 + data = length 336, hash A1D9FF41 + sample 16: + time = 384000 + flags = 1 + data = length 288, hash 2A8DA21B + sample 17: + time = 408000 + flags = 1 + data = length 336, hash 6A429CE + sample 18: + time = 432000 + flags = 1 + data = length 336, hash 68853982 + sample 19: + time = 456000 + flags = 1 + data = length 384, hash 1D6F779C + sample 20: + time = 480000 + flags = 1 + data = length 480, hash 6B31EBEE + sample 21: + time = 504000 + flags = 1 + data = length 336, hash 888335BE + sample 22: + time = 528000 + flags = 1 + data = length 336, hash 6072AC8B + sample 23: + time = 552000 + flags = 1 + data = length 336, hash C9D24234 + sample 24: + time = 576000 + flags = 1 + data = length 288, hash 52BF4D1E + sample 25: + time = 600000 + flags = 1 + data = length 336, hash F93F4F0 + sample 26: + time = 624000 + flags = 1 + data = length 336, hash 8617688A + sample 27: + time = 648000 + flags = 1 + data = length 480, hash FAB0D31B + sample 28: + time = 672000 + flags = 1 + data = length 384, hash FA4B53E2 + sample 29: + time = 696000 + flags = 1 + data = length 336, hash 8C435F6A + sample 30: + time = 720000 + flags = 1 + data = length 336, hash 60D3F80C + sample 31: + time = 744000 + flags = 1 + data = length 336, hash DC15B68B + sample 32: + time = 768000 + flags = 1 + data = length 288, hash FF3DF141 + sample 33: + time = 792000 + flags = 1 + data = length 336, hash A64B3042 + sample 34: + time = 816000 + flags = 1 + data = length 336, hash ACA622A1 + sample 35: + time = 840000 + flags = 1 + data = length 288, hash 3E34B8D4 + sample 36: + time = 864000 + flags = 1 + data = length 288, hash 9B96F72A + sample 37: + time = 888000 + flags = 1 + data = length 336, hash E917C122 + sample 38: + time = 912000 + flags = 1 + data = length 336, hash 10ED1470 + sample 39: + time = 936000 + flags = 1 + data = length 288, hash 706B8A7C + sample 40: + time = 960000 + flags = 1 + data = length 336, hash 71FFE4A0 + sample 41: + time = 984000 + flags = 1 + data = length 336, hash D4160463 + sample 42: + time = 1008000 + flags = 1 + data = length 336, hash EC557B14 + sample 43: + time = 1032000 + flags = 1 + data = length 288, hash 5598CF8B + sample 44: + time = 1056000 + flags = 1 + data = length 336, hash 7E0AB41 + sample 45: + time = 1080000 + flags = 1 + data = length 336, hash 1C585FEF + sample 46: + time = 1104000 + flags = 1 + data = length 336, hash A4A4855E + sample 47: + time = 1128000 + flags = 1 + data = length 336, hash CECA51D3 + sample 48: + time = 1152000 + flags = 1 + data = length 288, hash 2D362DC5 + sample 49: + time = 1176000 + flags = 1 + data = length 336, hash 9EB2609D + sample 50: + time = 1200000 + flags = 1 + data = length 336, hash 28FFB3FE + sample 51: + time = 1224000 + flags = 1 + data = length 288, hash 2AA2D216 + sample 52: + time = 1248000 + flags = 1 + data = length 336, hash CDBC7032 + sample 53: + time = 1272000 + flags = 1 + data = length 336, hash 25B13FE7 + sample 54: + time = 1296000 + flags = 1 + data = length 336, hash DB6BB1E + sample 55: + time = 1320000 + flags = 1 + data = length 336, hash EBE951F4 + sample 56: + time = 1344000 + flags = 1 + data = length 288, hash 9E2EBFF7 + sample 57: + time = 1368000 + flags = 1 + data = length 336, hash 36A7D455 + sample 58: + time = 1392000 + flags = 1 + data = length 336, hash 84545F8C + sample 59: + time = 1416000 + flags = 1 + data = length 336, hash F66F3045 + sample 60: + time = 1440000 + flags = 1 + data = length 576, hash 5AB089EA + sample 61: + time = 1464000 + flags = 1 + data = length 336, hash 8868086 + sample 62: + time = 1488000 + flags = 1 + data = length 336, hash D5EB6D63 + sample 63: + time = 1512000 + flags = 1 + data = length 288, hash 7A5374B7 + sample 64: + time = 1536000 + flags = 1 + data = length 336, hash BEB27A75 + sample 65: + time = 1560000 + flags = 1 + data = length 336, hash E251E0FD + sample 66: + time = 1584000 + flags = 1 + data = length 288, hash D54C970 + sample 67: + time = 1608000 + flags = 1 + data = length 336, hash 52C473B9 + sample 68: + time = 1632000 + flags = 1 + data = length 336, hash F5F13334 + sample 69: + time = 1656000 + flags = 1 + data = length 480, hash A5F1E987 + sample 70: + time = 1680000 + flags = 1 + data = length 288, hash 453A1267 + sample 71: + time = 1704000 + flags = 1 + data = length 288, hash 7C6C2EA9 + sample 72: + time = 1728000 + flags = 1 + data = length 336, hash F4BFECA4 + sample 73: + time = 1752000 + flags = 1 + data = length 336, hash 751A395A + sample 74: + time = 1776000 + flags = 1 + data = length 336, hash EE38DB02 + sample 75: + time = 1800000 + flags = 1 + data = length 336, hash F18837E2 + sample 76: + time = 1824000 + flags = 1 + data = length 336, hash ED36B78E + sample 77: + time = 1848000 + flags = 1 + data = length 336, hash B3D28289 + sample 78: + time = 1872000 + flags = 1 + data = length 288, hash 8BDE28E1 + sample 79: + time = 1896000 + flags = 1 + data = length 336, hash CFD5E966 + sample 80: + time = 1920000 + flags = 1 + data = length 288, hash DC08E267 + sample 81: + time = 1944000 + flags = 1 + data = length 336, hash 6530CB78 + sample 82: + time = 1968000 + flags = 1 + data = length 336, hash 6CC6636E + sample 83: + time = 1992000 + flags = 1 + data = length 336, hash 613047C1 + sample 84: + time = 2016000 + flags = 1 + data = length 288, hash CDC747BF + sample 85: + time = 2040000 + flags = 1 + data = length 336, hash AF22AA74 + sample 86: + time = 2064000 + flags = 1 + data = length 384, hash 82F326AA + sample 87: + time = 2088000 + flags = 1 + data = length 384, hash EDA26C4D + sample 88: + time = 2112000 + flags = 1 + data = length 336, hash 94C643DC + sample 89: + time = 2136000 + flags = 1 + data = length 288, hash CB5D9C40 + sample 90: + time = 2160000 + flags = 1 + data = length 336, hash 1E69DE3F + sample 91: + time = 2184000 + flags = 1 + data = length 336, hash 7E472219 + sample 92: + time = 2208000 + flags = 1 + data = length 336, hash DA47B9FA + sample 93: + time = 2232000 + flags = 1 + data = length 336, hash DD0ABB7C + sample 94: + time = 2256000 + flags = 1 + data = length 288, hash DBF93FAC + sample 95: + time = 2280000 + flags = 1 + data = length 336, hash 243F4B2 + sample 96: + time = 2304000 + flags = 1 + data = length 336, hash 2E881490 + sample 97: + time = 2328000 + flags = 1 + data = length 288, hash 1C28C8BE + sample 98: + time = 2352000 + flags = 1 + data = length 336, hash C73E5D30 + sample 99: + time = 2376000 + flags = 1 + data = length 288, hash 98B5BFF6 + sample 100: + time = 2400000 + flags = 1 + data = length 336, hash E0135533 + sample 101: + time = 2424000 + flags = 1 + data = length 336, hash D13C9DBC + sample 102: + time = 2448000 + flags = 1 + data = length 336, hash 63D524CA + sample 103: + time = 2472000 + flags = 1 + data = length 288, hash A28514C3 + sample 104: + time = 2496000 + flags = 1 + data = length 336, hash 72B647FF + sample 105: + time = 2520000 + flags = 1 + data = length 336, hash 8F740AB1 + sample 106: + time = 2544000 + flags = 1 + data = length 336, hash 5E3C7E93 + sample 107: + time = 2568000 + flags = 1 + data = length 336, hash 121B913B + sample 108: + time = 2592000 + flags = 1 + data = length 336, hash 578FCCF2 + sample 109: + time = 2616000 + flags = 1 + data = length 336, hash 5B5823DE + sample 110: + time = 2640000 + flags = 1 + data = length 384, hash D8B83F78 + sample 111: + time = 2664000 + flags = 1 + data = length 240, hash E649682F + sample 112: + time = 2688000 + flags = 1 + data = length 96, hash C559A6F4 + sample 113: + time = 2712000 + flags = 1 + data = length 96, hash 792796BC + sample 114: + time = 2736000 + flags = 1 + data = length 120, hash 8172CD0E + sample 115: + time = 2760000 + flags = 1 + data = length 120, hash F562B52F + sample 116: + time = 2784000 + flags = 1 + data = length 96, hash FF8D5B98 +tracksEnded = true diff --git a/testdata/src/test/assets/mp3/bear-id3-disabled.1.dump b/testdata/src/test/assets/mp3/bear-id3-disabled.1.dump new file mode 100644 index 0000000000..27e36ebd7a --- /dev/null +++ b/testdata/src/test/assets/mp3/bear-id3-disabled.1.dump @@ -0,0 +1,339 @@ +seekMap: + isSeekable = true + duration = 2808000 + getPosition(0) = [[timeUs=0, position=39740]] + getPosition(1) = [[timeUs=0, position=39740]] + getPosition(1404000) = [[timeUs=1404000, position=58820]] + getPosition(2808000) = [[timeUs=2808000, position=77900]] +numberOfTracks = 1 +track 0: + total output bytes = 25344 + sample count = 80 + format 0: + sampleMimeType = audio/mpeg + maxInputSize = 4096 + channelCount = 2 + sampleRate = 48000 + encoderDelay = 576 + encoderPadding = 576 + sample 0: + time = 943000 + flags = 1 + data = length 336, hash E917C122 + sample 1: + time = 967000 + flags = 1 + data = length 336, hash 10ED1470 + sample 2: + time = 991000 + flags = 1 + data = length 288, hash 706B8A7C + sample 3: + time = 1015000 + flags = 1 + data = length 336, hash 71FFE4A0 + sample 4: + time = 1039000 + flags = 1 + data = length 336, hash D4160463 + sample 5: + time = 1063000 + flags = 1 + data = length 336, hash EC557B14 + sample 6: + time = 1087000 + flags = 1 + data = length 288, hash 5598CF8B + sample 7: + time = 1111000 + flags = 1 + data = length 336, hash 7E0AB41 + sample 8: + time = 1135000 + flags = 1 + data = length 336, hash 1C585FEF + sample 9: + time = 1159000 + flags = 1 + data = length 336, hash A4A4855E + sample 10: + time = 1183000 + flags = 1 + data = length 336, hash CECA51D3 + sample 11: + time = 1207000 + flags = 1 + data = length 288, hash 2D362DC5 + sample 12: + time = 1231000 + flags = 1 + data = length 336, hash 9EB2609D + sample 13: + time = 1255000 + flags = 1 + data = length 336, hash 28FFB3FE + sample 14: + time = 1279000 + flags = 1 + data = length 288, hash 2AA2D216 + sample 15: + time = 1303000 + flags = 1 + data = length 336, hash CDBC7032 + sample 16: + time = 1327000 + flags = 1 + data = length 336, hash 25B13FE7 + sample 17: + time = 1351000 + flags = 1 + data = length 336, hash DB6BB1E + sample 18: + time = 1375000 + flags = 1 + data = length 336, hash EBE951F4 + sample 19: + time = 1399000 + flags = 1 + data = length 288, hash 9E2EBFF7 + sample 20: + time = 1423000 + flags = 1 + data = length 336, hash 36A7D455 + sample 21: + time = 1447000 + flags = 1 + data = length 336, hash 84545F8C + sample 22: + time = 1471000 + flags = 1 + data = length 336, hash F66F3045 + sample 23: + time = 1495000 + flags = 1 + data = length 576, hash 5AB089EA + sample 24: + time = 1519000 + flags = 1 + data = length 336, hash 8868086 + sample 25: + time = 1543000 + flags = 1 + data = length 336, hash D5EB6D63 + sample 26: + time = 1567000 + flags = 1 + data = length 288, hash 7A5374B7 + sample 27: + time = 1591000 + flags = 1 + data = length 336, hash BEB27A75 + sample 28: + time = 1615000 + flags = 1 + data = length 336, hash E251E0FD + sample 29: + time = 1639000 + flags = 1 + data = length 288, hash D54C970 + sample 30: + time = 1663000 + flags = 1 + data = length 336, hash 52C473B9 + sample 31: + time = 1687000 + flags = 1 + data = length 336, hash F5F13334 + sample 32: + time = 1711000 + flags = 1 + data = length 480, hash A5F1E987 + sample 33: + time = 1735000 + flags = 1 + data = length 288, hash 453A1267 + sample 34: + time = 1759000 + flags = 1 + data = length 288, hash 7C6C2EA9 + sample 35: + time = 1783000 + flags = 1 + data = length 336, hash F4BFECA4 + sample 36: + time = 1807000 + flags = 1 + data = length 336, hash 751A395A + sample 37: + time = 1831000 + flags = 1 + data = length 336, hash EE38DB02 + sample 38: + time = 1855000 + flags = 1 + data = length 336, hash F18837E2 + sample 39: + time = 1879000 + flags = 1 + data = length 336, hash ED36B78E + sample 40: + time = 1903000 + flags = 1 + data = length 336, hash B3D28289 + sample 41: + time = 1927000 + flags = 1 + data = length 288, hash 8BDE28E1 + sample 42: + time = 1951000 + flags = 1 + data = length 336, hash CFD5E966 + sample 43: + time = 1975000 + flags = 1 + data = length 288, hash DC08E267 + sample 44: + time = 1999000 + flags = 1 + data = length 336, hash 6530CB78 + sample 45: + time = 2023000 + flags = 1 + data = length 336, hash 6CC6636E + sample 46: + time = 2047000 + flags = 1 + data = length 336, hash 613047C1 + sample 47: + time = 2071000 + flags = 1 + data = length 288, hash CDC747BF + sample 48: + time = 2095000 + flags = 1 + data = length 336, hash AF22AA74 + sample 49: + time = 2119000 + flags = 1 + data = length 384, hash 82F326AA + sample 50: + time = 2143000 + flags = 1 + data = length 384, hash EDA26C4D + sample 51: + time = 2167000 + flags = 1 + data = length 336, hash 94C643DC + sample 52: + time = 2191000 + flags = 1 + data = length 288, hash CB5D9C40 + sample 53: + time = 2215000 + flags = 1 + data = length 336, hash 1E69DE3F + sample 54: + time = 2239000 + flags = 1 + data = length 336, hash 7E472219 + sample 55: + time = 2263000 + flags = 1 + data = length 336, hash DA47B9FA + sample 56: + time = 2287000 + flags = 1 + data = length 336, hash DD0ABB7C + sample 57: + time = 2311000 + flags = 1 + data = length 288, hash DBF93FAC + sample 58: + time = 2335000 + flags = 1 + data = length 336, hash 243F4B2 + sample 59: + time = 2359000 + flags = 1 + data = length 336, hash 2E881490 + sample 60: + time = 2383000 + flags = 1 + data = length 288, hash 1C28C8BE + sample 61: + time = 2407000 + flags = 1 + data = length 336, hash C73E5D30 + sample 62: + time = 2431000 + flags = 1 + data = length 288, hash 98B5BFF6 + sample 63: + time = 2455000 + flags = 1 + data = length 336, hash E0135533 + sample 64: + time = 2479000 + flags = 1 + data = length 336, hash D13C9DBC + sample 65: + time = 2503000 + flags = 1 + data = length 336, hash 63D524CA + sample 66: + time = 2527000 + flags = 1 + data = length 288, hash A28514C3 + sample 67: + time = 2551000 + flags = 1 + data = length 336, hash 72B647FF + sample 68: + time = 2575000 + flags = 1 + data = length 336, hash 8F740AB1 + sample 69: + time = 2599000 + flags = 1 + data = length 336, hash 5E3C7E93 + sample 70: + time = 2623000 + flags = 1 + data = length 336, hash 121B913B + sample 71: + time = 2647000 + flags = 1 + data = length 336, hash 578FCCF2 + sample 72: + time = 2671000 + flags = 1 + data = length 336, hash 5B5823DE + sample 73: + time = 2695000 + flags = 1 + data = length 384, hash D8B83F78 + sample 74: + time = 2719000 + flags = 1 + data = length 240, hash E649682F + sample 75: + time = 2743000 + flags = 1 + data = length 96, hash C559A6F4 + sample 76: + time = 2767000 + flags = 1 + data = length 96, hash 792796BC + sample 77: + time = 2791000 + flags = 1 + data = length 120, hash 8172CD0E + sample 78: + time = 2815000 + flags = 1 + data = length 120, hash F562B52F + sample 79: + time = 2839000 + flags = 1 + data = length 96, hash FF8D5B98 +tracksEnded = true diff --git a/testdata/src/test/assets/mp3/bear-id3-disabled.2.dump b/testdata/src/test/assets/mp3/bear-id3-disabled.2.dump new file mode 100644 index 0000000000..356e7d9872 --- /dev/null +++ b/testdata/src/test/assets/mp3/bear-id3-disabled.2.dump @@ -0,0 +1,187 @@ +seekMap: + isSeekable = true + duration = 2808000 + getPosition(0) = [[timeUs=0, position=39740]] + getPosition(1) = [[timeUs=0, position=39740]] + getPosition(1404000) = [[timeUs=1404000, position=58820]] + getPosition(2808000) = [[timeUs=2808000, position=77900]] +numberOfTracks = 1 +track 0: + total output bytes = 12624 + sample count = 42 + format 0: + sampleMimeType = audio/mpeg + maxInputSize = 4096 + channelCount = 2 + sampleRate = 48000 + encoderDelay = 576 + encoderPadding = 576 + sample 0: + time = 1879000 + flags = 1 + data = length 336, hash F18837E2 + sample 1: + time = 1903000 + flags = 1 + data = length 336, hash ED36B78E + sample 2: + time = 1927000 + flags = 1 + data = length 336, hash B3D28289 + sample 3: + time = 1951000 + flags = 1 + data = length 288, hash 8BDE28E1 + sample 4: + time = 1975000 + flags = 1 + data = length 336, hash CFD5E966 + sample 5: + time = 1999000 + flags = 1 + data = length 288, hash DC08E267 + sample 6: + time = 2023000 + flags = 1 + data = length 336, hash 6530CB78 + sample 7: + time = 2047000 + flags = 1 + data = length 336, hash 6CC6636E + sample 8: + time = 2071000 + flags = 1 + data = length 336, hash 613047C1 + sample 9: + time = 2095000 + flags = 1 + data = length 288, hash CDC747BF + sample 10: + time = 2119000 + flags = 1 + data = length 336, hash AF22AA74 + sample 11: + time = 2143000 + flags = 1 + data = length 384, hash 82F326AA + sample 12: + time = 2167000 + flags = 1 + data = length 384, hash EDA26C4D + sample 13: + time = 2191000 + flags = 1 + data = length 336, hash 94C643DC + sample 14: + time = 2215000 + flags = 1 + data = length 288, hash CB5D9C40 + sample 15: + time = 2239000 + flags = 1 + data = length 336, hash 1E69DE3F + sample 16: + time = 2263000 + flags = 1 + data = length 336, hash 7E472219 + sample 17: + time = 2287000 + flags = 1 + data = length 336, hash DA47B9FA + sample 18: + time = 2311000 + flags = 1 + data = length 336, hash DD0ABB7C + sample 19: + time = 2335000 + flags = 1 + data = length 288, hash DBF93FAC + sample 20: + time = 2359000 + flags = 1 + data = length 336, hash 243F4B2 + sample 21: + time = 2383000 + flags = 1 + data = length 336, hash 2E881490 + sample 22: + time = 2407000 + flags = 1 + data = length 288, hash 1C28C8BE + sample 23: + time = 2431000 + flags = 1 + data = length 336, hash C73E5D30 + sample 24: + time = 2455000 + flags = 1 + data = length 288, hash 98B5BFF6 + sample 25: + time = 2479000 + flags = 1 + data = length 336, hash E0135533 + sample 26: + time = 2503000 + flags = 1 + data = length 336, hash D13C9DBC + sample 27: + time = 2527000 + flags = 1 + data = length 336, hash 63D524CA + sample 28: + time = 2551000 + flags = 1 + data = length 288, hash A28514C3 + sample 29: + time = 2575000 + flags = 1 + data = length 336, hash 72B647FF + sample 30: + time = 2599000 + flags = 1 + data = length 336, hash 8F740AB1 + sample 31: + time = 2623000 + flags = 1 + data = length 336, hash 5E3C7E93 + sample 32: + time = 2647000 + flags = 1 + data = length 336, hash 121B913B + sample 33: + time = 2671000 + flags = 1 + data = length 336, hash 578FCCF2 + sample 34: + time = 2695000 + flags = 1 + data = length 336, hash 5B5823DE + sample 35: + time = 2719000 + flags = 1 + data = length 384, hash D8B83F78 + sample 36: + time = 2743000 + flags = 1 + data = length 240, hash E649682F + sample 37: + time = 2767000 + flags = 1 + data = length 96, hash C559A6F4 + sample 38: + time = 2791000 + flags = 1 + data = length 96, hash 792796BC + sample 39: + time = 2815000 + flags = 1 + data = length 120, hash 8172CD0E + sample 40: + time = 2839000 + flags = 1 + data = length 120, hash F562B52F + sample 41: + time = 2863000 + flags = 1 + data = length 96, hash FF8D5B98 +tracksEnded = true diff --git a/testdata/src/test/assets/mp3/bear-id3-disabled.3.dump b/testdata/src/test/assets/mp3/bear-id3-disabled.3.dump new file mode 100644 index 0000000000..44c93750bc --- /dev/null +++ b/testdata/src/test/assets/mp3/bear-id3-disabled.3.dump @@ -0,0 +1,19 @@ +seekMap: + isSeekable = true + duration = 2808000 + getPosition(0) = [[timeUs=0, position=39740]] + getPosition(1) = [[timeUs=0, position=39740]] + getPosition(1404000) = [[timeUs=1404000, position=58820]] + getPosition(2808000) = [[timeUs=2808000, position=77900]] +numberOfTracks = 1 +track 0: + total output bytes = 0 + sample count = 0 + format 0: + sampleMimeType = audio/mpeg + maxInputSize = 4096 + channelCount = 2 + sampleRate = 48000 + encoderDelay = 576 + encoderPadding = 576 +tracksEnded = true diff --git a/testdata/src/test/assets/mp3/bear-id3-disabled.unknown_length.dump b/testdata/src/test/assets/mp3/bear-id3-disabled.unknown_length.dump new file mode 100644 index 0000000000..a80bf5e315 --- /dev/null +++ b/testdata/src/test/assets/mp3/bear-id3-disabled.unknown_length.dump @@ -0,0 +1,487 @@ +seekMap: + isSeekable = true + duration = 2808000 + getPosition(0) = [[timeUs=0, position=39740]] + getPosition(1) = [[timeUs=0, position=39740]] + getPosition(1404000) = [[timeUs=1404000, position=58820]] + getPosition(2808000) = [[timeUs=2808000, position=77900]] +numberOfTracks = 1 +track 0: + total output bytes = 38160 + sample count = 117 + format 0: + sampleMimeType = audio/mpeg + maxInputSize = 4096 + channelCount = 2 + sampleRate = 48000 + encoderDelay = 576 + encoderPadding = 576 + sample 0: + time = 0 + flags = 1 + data = length 96, hash 1F161542 + sample 1: + time = 24000 + flags = 1 + data = length 768, hash CD1DC50F + sample 2: + time = 48000 + flags = 1 + data = length 336, hash 3F64124B + sample 3: + time = 72000 + flags = 1 + data = length 336, hash 8FFED94E + sample 4: + time = 96000 + flags = 1 + data = length 288, hash 9CD77D47 + sample 5: + time = 120000 + flags = 1 + data = length 384, hash 24607BB5 + sample 6: + time = 144000 + flags = 1 + data = length 480, hash 4937EBAB + sample 7: + time = 168000 + flags = 1 + data = length 336, hash 546342B1 + sample 8: + time = 192000 + flags = 1 + data = length 336, hash 79E0923F + sample 9: + time = 216000 + flags = 1 + data = length 336, hash AB1F3948 + sample 10: + time = 240000 + flags = 1 + data = length 336, hash C3A4D888 + sample 11: + time = 264000 + flags = 1 + data = length 288, hash 7867DA45 + sample 12: + time = 288000 + flags = 1 + data = length 336, hash B1240B73 + sample 13: + time = 312000 + flags = 1 + data = length 336, hash 94CFCD35 + sample 14: + time = 336000 + flags = 1 + data = length 288, hash 94F412C + sample 15: + time = 360000 + flags = 1 + data = length 336, hash A1D9FF41 + sample 16: + time = 384000 + flags = 1 + data = length 288, hash 2A8DA21B + sample 17: + time = 408000 + flags = 1 + data = length 336, hash 6A429CE + sample 18: + time = 432000 + flags = 1 + data = length 336, hash 68853982 + sample 19: + time = 456000 + flags = 1 + data = length 384, hash 1D6F779C + sample 20: + time = 480000 + flags = 1 + data = length 480, hash 6B31EBEE + sample 21: + time = 504000 + flags = 1 + data = length 336, hash 888335BE + sample 22: + time = 528000 + flags = 1 + data = length 336, hash 6072AC8B + sample 23: + time = 552000 + flags = 1 + data = length 336, hash C9D24234 + sample 24: + time = 576000 + flags = 1 + data = length 288, hash 52BF4D1E + sample 25: + time = 600000 + flags = 1 + data = length 336, hash F93F4F0 + sample 26: + time = 624000 + flags = 1 + data = length 336, hash 8617688A + sample 27: + time = 648000 + flags = 1 + data = length 480, hash FAB0D31B + sample 28: + time = 672000 + flags = 1 + data = length 384, hash FA4B53E2 + sample 29: + time = 696000 + flags = 1 + data = length 336, hash 8C435F6A + sample 30: + time = 720000 + flags = 1 + data = length 336, hash 60D3F80C + sample 31: + time = 744000 + flags = 1 + data = length 336, hash DC15B68B + sample 32: + time = 768000 + flags = 1 + data = length 288, hash FF3DF141 + sample 33: + time = 792000 + flags = 1 + data = length 336, hash A64B3042 + sample 34: + time = 816000 + flags = 1 + data = length 336, hash ACA622A1 + sample 35: + time = 840000 + flags = 1 + data = length 288, hash 3E34B8D4 + sample 36: + time = 864000 + flags = 1 + data = length 288, hash 9B96F72A + sample 37: + time = 888000 + flags = 1 + data = length 336, hash E917C122 + sample 38: + time = 912000 + flags = 1 + data = length 336, hash 10ED1470 + sample 39: + time = 936000 + flags = 1 + data = length 288, hash 706B8A7C + sample 40: + time = 960000 + flags = 1 + data = length 336, hash 71FFE4A0 + sample 41: + time = 984000 + flags = 1 + data = length 336, hash D4160463 + sample 42: + time = 1008000 + flags = 1 + data = length 336, hash EC557B14 + sample 43: + time = 1032000 + flags = 1 + data = length 288, hash 5598CF8B + sample 44: + time = 1056000 + flags = 1 + data = length 336, hash 7E0AB41 + sample 45: + time = 1080000 + flags = 1 + data = length 336, hash 1C585FEF + sample 46: + time = 1104000 + flags = 1 + data = length 336, hash A4A4855E + sample 47: + time = 1128000 + flags = 1 + data = length 336, hash CECA51D3 + sample 48: + time = 1152000 + flags = 1 + data = length 288, hash 2D362DC5 + sample 49: + time = 1176000 + flags = 1 + data = length 336, hash 9EB2609D + sample 50: + time = 1200000 + flags = 1 + data = length 336, hash 28FFB3FE + sample 51: + time = 1224000 + flags = 1 + data = length 288, hash 2AA2D216 + sample 52: + time = 1248000 + flags = 1 + data = length 336, hash CDBC7032 + sample 53: + time = 1272000 + flags = 1 + data = length 336, hash 25B13FE7 + sample 54: + time = 1296000 + flags = 1 + data = length 336, hash DB6BB1E + sample 55: + time = 1320000 + flags = 1 + data = length 336, hash EBE951F4 + sample 56: + time = 1344000 + flags = 1 + data = length 288, hash 9E2EBFF7 + sample 57: + time = 1368000 + flags = 1 + data = length 336, hash 36A7D455 + sample 58: + time = 1392000 + flags = 1 + data = length 336, hash 84545F8C + sample 59: + time = 1416000 + flags = 1 + data = length 336, hash F66F3045 + sample 60: + time = 1440000 + flags = 1 + data = length 576, hash 5AB089EA + sample 61: + time = 1464000 + flags = 1 + data = length 336, hash 8868086 + sample 62: + time = 1488000 + flags = 1 + data = length 336, hash D5EB6D63 + sample 63: + time = 1512000 + flags = 1 + data = length 288, hash 7A5374B7 + sample 64: + time = 1536000 + flags = 1 + data = length 336, hash BEB27A75 + sample 65: + time = 1560000 + flags = 1 + data = length 336, hash E251E0FD + sample 66: + time = 1584000 + flags = 1 + data = length 288, hash D54C970 + sample 67: + time = 1608000 + flags = 1 + data = length 336, hash 52C473B9 + sample 68: + time = 1632000 + flags = 1 + data = length 336, hash F5F13334 + sample 69: + time = 1656000 + flags = 1 + data = length 480, hash A5F1E987 + sample 70: + time = 1680000 + flags = 1 + data = length 288, hash 453A1267 + sample 71: + time = 1704000 + flags = 1 + data = length 288, hash 7C6C2EA9 + sample 72: + time = 1728000 + flags = 1 + data = length 336, hash F4BFECA4 + sample 73: + time = 1752000 + flags = 1 + data = length 336, hash 751A395A + sample 74: + time = 1776000 + flags = 1 + data = length 336, hash EE38DB02 + sample 75: + time = 1800000 + flags = 1 + data = length 336, hash F18837E2 + sample 76: + time = 1824000 + flags = 1 + data = length 336, hash ED36B78E + sample 77: + time = 1848000 + flags = 1 + data = length 336, hash B3D28289 + sample 78: + time = 1872000 + flags = 1 + data = length 288, hash 8BDE28E1 + sample 79: + time = 1896000 + flags = 1 + data = length 336, hash CFD5E966 + sample 80: + time = 1920000 + flags = 1 + data = length 288, hash DC08E267 + sample 81: + time = 1944000 + flags = 1 + data = length 336, hash 6530CB78 + sample 82: + time = 1968000 + flags = 1 + data = length 336, hash 6CC6636E + sample 83: + time = 1992000 + flags = 1 + data = length 336, hash 613047C1 + sample 84: + time = 2016000 + flags = 1 + data = length 288, hash CDC747BF + sample 85: + time = 2040000 + flags = 1 + data = length 336, hash AF22AA74 + sample 86: + time = 2064000 + flags = 1 + data = length 384, hash 82F326AA + sample 87: + time = 2088000 + flags = 1 + data = length 384, hash EDA26C4D + sample 88: + time = 2112000 + flags = 1 + data = length 336, hash 94C643DC + sample 89: + time = 2136000 + flags = 1 + data = length 288, hash CB5D9C40 + sample 90: + time = 2160000 + flags = 1 + data = length 336, hash 1E69DE3F + sample 91: + time = 2184000 + flags = 1 + data = length 336, hash 7E472219 + sample 92: + time = 2208000 + flags = 1 + data = length 336, hash DA47B9FA + sample 93: + time = 2232000 + flags = 1 + data = length 336, hash DD0ABB7C + sample 94: + time = 2256000 + flags = 1 + data = length 288, hash DBF93FAC + sample 95: + time = 2280000 + flags = 1 + data = length 336, hash 243F4B2 + sample 96: + time = 2304000 + flags = 1 + data = length 336, hash 2E881490 + sample 97: + time = 2328000 + flags = 1 + data = length 288, hash 1C28C8BE + sample 98: + time = 2352000 + flags = 1 + data = length 336, hash C73E5D30 + sample 99: + time = 2376000 + flags = 1 + data = length 288, hash 98B5BFF6 + sample 100: + time = 2400000 + flags = 1 + data = length 336, hash E0135533 + sample 101: + time = 2424000 + flags = 1 + data = length 336, hash D13C9DBC + sample 102: + time = 2448000 + flags = 1 + data = length 336, hash 63D524CA + sample 103: + time = 2472000 + flags = 1 + data = length 288, hash A28514C3 + sample 104: + time = 2496000 + flags = 1 + data = length 336, hash 72B647FF + sample 105: + time = 2520000 + flags = 1 + data = length 336, hash 8F740AB1 + sample 106: + time = 2544000 + flags = 1 + data = length 336, hash 5E3C7E93 + sample 107: + time = 2568000 + flags = 1 + data = length 336, hash 121B913B + sample 108: + time = 2592000 + flags = 1 + data = length 336, hash 578FCCF2 + sample 109: + time = 2616000 + flags = 1 + data = length 336, hash 5B5823DE + sample 110: + time = 2640000 + flags = 1 + data = length 384, hash D8B83F78 + sample 111: + time = 2664000 + flags = 1 + data = length 240, hash E649682F + sample 112: + time = 2688000 + flags = 1 + data = length 96, hash C559A6F4 + sample 113: + time = 2712000 + flags = 1 + data = length 96, hash 792796BC + sample 114: + time = 2736000 + flags = 1 + data = length 120, hash 8172CD0E + sample 115: + time = 2760000 + flags = 1 + data = length 120, hash F562B52F + sample 116: + time = 2784000 + flags = 1 + data = length 96, hash FF8D5B98 +tracksEnded = true diff --git a/testdata/src/test/assets/mp3/bear-id3-enabled.0.dump b/testdata/src/test/assets/mp3/bear-id3-enabled.0.dump new file mode 100644 index 0000000000..c252057e47 --- /dev/null +++ b/testdata/src/test/assets/mp3/bear-id3-enabled.0.dump @@ -0,0 +1,488 @@ +seekMap: + isSeekable = true + duration = 2808000 + getPosition(0) = [[timeUs=0, position=39740]] + getPosition(1) = [[timeUs=0, position=39740]] + getPosition(1404000) = [[timeUs=1404000, position=58820]] + getPosition(2808000) = [[timeUs=2808000, position=77900]] +numberOfTracks = 1 +track 0: + total output bytes = 38160 + sample count = 117 + format 0: + sampleMimeType = audio/mpeg + maxInputSize = 4096 + channelCount = 2 + sampleRate = 48000 + encoderDelay = 576 + encoderPadding = 576 + metadata = entries=[TIT2: description=null: value=Test title, TPE1: description=null: value=Test Artist, TALB: description=null: value=Test Album, TXXX: description=Test description: value=Test user info, COMM: language=eng, description=Test description, WXXX: url=Test URL, TSSE: description=null: value=Lavf58.29.100, MLLT, PRIV: owner=test@gmail.com, UNKN, GEOB: mimeType=test/mime, filename=Testfilename.txt, description=Test description, CHAP, CHAP, CTOC, APIC: mimeType=image/jpeg, description=Test description] + sample 0: + time = 0 + flags = 1 + data = length 96, hash 1F161542 + sample 1: + time = 24000 + flags = 1 + data = length 768, hash CD1DC50F + sample 2: + time = 48000 + flags = 1 + data = length 336, hash 3F64124B + sample 3: + time = 72000 + flags = 1 + data = length 336, hash 8FFED94E + sample 4: + time = 96000 + flags = 1 + data = length 288, hash 9CD77D47 + sample 5: + time = 120000 + flags = 1 + data = length 384, hash 24607BB5 + sample 6: + time = 144000 + flags = 1 + data = length 480, hash 4937EBAB + sample 7: + time = 168000 + flags = 1 + data = length 336, hash 546342B1 + sample 8: + time = 192000 + flags = 1 + data = length 336, hash 79E0923F + sample 9: + time = 216000 + flags = 1 + data = length 336, hash AB1F3948 + sample 10: + time = 240000 + flags = 1 + data = length 336, hash C3A4D888 + sample 11: + time = 264000 + flags = 1 + data = length 288, hash 7867DA45 + sample 12: + time = 288000 + flags = 1 + data = length 336, hash B1240B73 + sample 13: + time = 312000 + flags = 1 + data = length 336, hash 94CFCD35 + sample 14: + time = 336000 + flags = 1 + data = length 288, hash 94F412C + sample 15: + time = 360000 + flags = 1 + data = length 336, hash A1D9FF41 + sample 16: + time = 384000 + flags = 1 + data = length 288, hash 2A8DA21B + sample 17: + time = 408000 + flags = 1 + data = length 336, hash 6A429CE + sample 18: + time = 432000 + flags = 1 + data = length 336, hash 68853982 + sample 19: + time = 456000 + flags = 1 + data = length 384, hash 1D6F779C + sample 20: + time = 480000 + flags = 1 + data = length 480, hash 6B31EBEE + sample 21: + time = 504000 + flags = 1 + data = length 336, hash 888335BE + sample 22: + time = 528000 + flags = 1 + data = length 336, hash 6072AC8B + sample 23: + time = 552000 + flags = 1 + data = length 336, hash C9D24234 + sample 24: + time = 576000 + flags = 1 + data = length 288, hash 52BF4D1E + sample 25: + time = 600000 + flags = 1 + data = length 336, hash F93F4F0 + sample 26: + time = 624000 + flags = 1 + data = length 336, hash 8617688A + sample 27: + time = 648000 + flags = 1 + data = length 480, hash FAB0D31B + sample 28: + time = 672000 + flags = 1 + data = length 384, hash FA4B53E2 + sample 29: + time = 696000 + flags = 1 + data = length 336, hash 8C435F6A + sample 30: + time = 720000 + flags = 1 + data = length 336, hash 60D3F80C + sample 31: + time = 744000 + flags = 1 + data = length 336, hash DC15B68B + sample 32: + time = 768000 + flags = 1 + data = length 288, hash FF3DF141 + sample 33: + time = 792000 + flags = 1 + data = length 336, hash A64B3042 + sample 34: + time = 816000 + flags = 1 + data = length 336, hash ACA622A1 + sample 35: + time = 840000 + flags = 1 + data = length 288, hash 3E34B8D4 + sample 36: + time = 864000 + flags = 1 + data = length 288, hash 9B96F72A + sample 37: + time = 888000 + flags = 1 + data = length 336, hash E917C122 + sample 38: + time = 912000 + flags = 1 + data = length 336, hash 10ED1470 + sample 39: + time = 936000 + flags = 1 + data = length 288, hash 706B8A7C + sample 40: + time = 960000 + flags = 1 + data = length 336, hash 71FFE4A0 + sample 41: + time = 984000 + flags = 1 + data = length 336, hash D4160463 + sample 42: + time = 1008000 + flags = 1 + data = length 336, hash EC557B14 + sample 43: + time = 1032000 + flags = 1 + data = length 288, hash 5598CF8B + sample 44: + time = 1056000 + flags = 1 + data = length 336, hash 7E0AB41 + sample 45: + time = 1080000 + flags = 1 + data = length 336, hash 1C585FEF + sample 46: + time = 1104000 + flags = 1 + data = length 336, hash A4A4855E + sample 47: + time = 1128000 + flags = 1 + data = length 336, hash CECA51D3 + sample 48: + time = 1152000 + flags = 1 + data = length 288, hash 2D362DC5 + sample 49: + time = 1176000 + flags = 1 + data = length 336, hash 9EB2609D + sample 50: + time = 1200000 + flags = 1 + data = length 336, hash 28FFB3FE + sample 51: + time = 1224000 + flags = 1 + data = length 288, hash 2AA2D216 + sample 52: + time = 1248000 + flags = 1 + data = length 336, hash CDBC7032 + sample 53: + time = 1272000 + flags = 1 + data = length 336, hash 25B13FE7 + sample 54: + time = 1296000 + flags = 1 + data = length 336, hash DB6BB1E + sample 55: + time = 1320000 + flags = 1 + data = length 336, hash EBE951F4 + sample 56: + time = 1344000 + flags = 1 + data = length 288, hash 9E2EBFF7 + sample 57: + time = 1368000 + flags = 1 + data = length 336, hash 36A7D455 + sample 58: + time = 1392000 + flags = 1 + data = length 336, hash 84545F8C + sample 59: + time = 1416000 + flags = 1 + data = length 336, hash F66F3045 + sample 60: + time = 1440000 + flags = 1 + data = length 576, hash 5AB089EA + sample 61: + time = 1464000 + flags = 1 + data = length 336, hash 8868086 + sample 62: + time = 1488000 + flags = 1 + data = length 336, hash D5EB6D63 + sample 63: + time = 1512000 + flags = 1 + data = length 288, hash 7A5374B7 + sample 64: + time = 1536000 + flags = 1 + data = length 336, hash BEB27A75 + sample 65: + time = 1560000 + flags = 1 + data = length 336, hash E251E0FD + sample 66: + time = 1584000 + flags = 1 + data = length 288, hash D54C970 + sample 67: + time = 1608000 + flags = 1 + data = length 336, hash 52C473B9 + sample 68: + time = 1632000 + flags = 1 + data = length 336, hash F5F13334 + sample 69: + time = 1656000 + flags = 1 + data = length 480, hash A5F1E987 + sample 70: + time = 1680000 + flags = 1 + data = length 288, hash 453A1267 + sample 71: + time = 1704000 + flags = 1 + data = length 288, hash 7C6C2EA9 + sample 72: + time = 1728000 + flags = 1 + data = length 336, hash F4BFECA4 + sample 73: + time = 1752000 + flags = 1 + data = length 336, hash 751A395A + sample 74: + time = 1776000 + flags = 1 + data = length 336, hash EE38DB02 + sample 75: + time = 1800000 + flags = 1 + data = length 336, hash F18837E2 + sample 76: + time = 1824000 + flags = 1 + data = length 336, hash ED36B78E + sample 77: + time = 1848000 + flags = 1 + data = length 336, hash B3D28289 + sample 78: + time = 1872000 + flags = 1 + data = length 288, hash 8BDE28E1 + sample 79: + time = 1896000 + flags = 1 + data = length 336, hash CFD5E966 + sample 80: + time = 1920000 + flags = 1 + data = length 288, hash DC08E267 + sample 81: + time = 1944000 + flags = 1 + data = length 336, hash 6530CB78 + sample 82: + time = 1968000 + flags = 1 + data = length 336, hash 6CC6636E + sample 83: + time = 1992000 + flags = 1 + data = length 336, hash 613047C1 + sample 84: + time = 2016000 + flags = 1 + data = length 288, hash CDC747BF + sample 85: + time = 2040000 + flags = 1 + data = length 336, hash AF22AA74 + sample 86: + time = 2064000 + flags = 1 + data = length 384, hash 82F326AA + sample 87: + time = 2088000 + flags = 1 + data = length 384, hash EDA26C4D + sample 88: + time = 2112000 + flags = 1 + data = length 336, hash 94C643DC + sample 89: + time = 2136000 + flags = 1 + data = length 288, hash CB5D9C40 + sample 90: + time = 2160000 + flags = 1 + data = length 336, hash 1E69DE3F + sample 91: + time = 2184000 + flags = 1 + data = length 336, hash 7E472219 + sample 92: + time = 2208000 + flags = 1 + data = length 336, hash DA47B9FA + sample 93: + time = 2232000 + flags = 1 + data = length 336, hash DD0ABB7C + sample 94: + time = 2256000 + flags = 1 + data = length 288, hash DBF93FAC + sample 95: + time = 2280000 + flags = 1 + data = length 336, hash 243F4B2 + sample 96: + time = 2304000 + flags = 1 + data = length 336, hash 2E881490 + sample 97: + time = 2328000 + flags = 1 + data = length 288, hash 1C28C8BE + sample 98: + time = 2352000 + flags = 1 + data = length 336, hash C73E5D30 + sample 99: + time = 2376000 + flags = 1 + data = length 288, hash 98B5BFF6 + sample 100: + time = 2400000 + flags = 1 + data = length 336, hash E0135533 + sample 101: + time = 2424000 + flags = 1 + data = length 336, hash D13C9DBC + sample 102: + time = 2448000 + flags = 1 + data = length 336, hash 63D524CA + sample 103: + time = 2472000 + flags = 1 + data = length 288, hash A28514C3 + sample 104: + time = 2496000 + flags = 1 + data = length 336, hash 72B647FF + sample 105: + time = 2520000 + flags = 1 + data = length 336, hash 8F740AB1 + sample 106: + time = 2544000 + flags = 1 + data = length 336, hash 5E3C7E93 + sample 107: + time = 2568000 + flags = 1 + data = length 336, hash 121B913B + sample 108: + time = 2592000 + flags = 1 + data = length 336, hash 578FCCF2 + sample 109: + time = 2616000 + flags = 1 + data = length 336, hash 5B5823DE + sample 110: + time = 2640000 + flags = 1 + data = length 384, hash D8B83F78 + sample 111: + time = 2664000 + flags = 1 + data = length 240, hash E649682F + sample 112: + time = 2688000 + flags = 1 + data = length 96, hash C559A6F4 + sample 113: + time = 2712000 + flags = 1 + data = length 96, hash 792796BC + sample 114: + time = 2736000 + flags = 1 + data = length 120, hash 8172CD0E + sample 115: + time = 2760000 + flags = 1 + data = length 120, hash F562B52F + sample 116: + time = 2784000 + flags = 1 + data = length 96, hash FF8D5B98 +tracksEnded = true diff --git a/testdata/src/test/assets/mp3/bear-id3-enabled.1.dump b/testdata/src/test/assets/mp3/bear-id3-enabled.1.dump new file mode 100644 index 0000000000..76fcbc0f8e --- /dev/null +++ b/testdata/src/test/assets/mp3/bear-id3-enabled.1.dump @@ -0,0 +1,340 @@ +seekMap: + isSeekable = true + duration = 2808000 + getPosition(0) = [[timeUs=0, position=39740]] + getPosition(1) = [[timeUs=0, position=39740]] + getPosition(1404000) = [[timeUs=1404000, position=58820]] + getPosition(2808000) = [[timeUs=2808000, position=77900]] +numberOfTracks = 1 +track 0: + total output bytes = 25344 + sample count = 80 + format 0: + sampleMimeType = audio/mpeg + maxInputSize = 4096 + channelCount = 2 + sampleRate = 48000 + encoderDelay = 576 + encoderPadding = 576 + metadata = entries=[TIT2: description=null: value=Test title, TPE1: description=null: value=Test Artist, TALB: description=null: value=Test Album, TXXX: description=Test description: value=Test user info, COMM: language=eng, description=Test description, WXXX: url=Test URL, TSSE: description=null: value=Lavf58.29.100, MLLT, PRIV: owner=test@gmail.com, UNKN, GEOB: mimeType=test/mime, filename=Testfilename.txt, description=Test description, CHAP, CHAP, CTOC, APIC: mimeType=image/jpeg, description=Test description] + sample 0: + time = 943000 + flags = 1 + data = length 336, hash E917C122 + sample 1: + time = 967000 + flags = 1 + data = length 336, hash 10ED1470 + sample 2: + time = 991000 + flags = 1 + data = length 288, hash 706B8A7C + sample 3: + time = 1015000 + flags = 1 + data = length 336, hash 71FFE4A0 + sample 4: + time = 1039000 + flags = 1 + data = length 336, hash D4160463 + sample 5: + time = 1063000 + flags = 1 + data = length 336, hash EC557B14 + sample 6: + time = 1087000 + flags = 1 + data = length 288, hash 5598CF8B + sample 7: + time = 1111000 + flags = 1 + data = length 336, hash 7E0AB41 + sample 8: + time = 1135000 + flags = 1 + data = length 336, hash 1C585FEF + sample 9: + time = 1159000 + flags = 1 + data = length 336, hash A4A4855E + sample 10: + time = 1183000 + flags = 1 + data = length 336, hash CECA51D3 + sample 11: + time = 1207000 + flags = 1 + data = length 288, hash 2D362DC5 + sample 12: + time = 1231000 + flags = 1 + data = length 336, hash 9EB2609D + sample 13: + time = 1255000 + flags = 1 + data = length 336, hash 28FFB3FE + sample 14: + time = 1279000 + flags = 1 + data = length 288, hash 2AA2D216 + sample 15: + time = 1303000 + flags = 1 + data = length 336, hash CDBC7032 + sample 16: + time = 1327000 + flags = 1 + data = length 336, hash 25B13FE7 + sample 17: + time = 1351000 + flags = 1 + data = length 336, hash DB6BB1E + sample 18: + time = 1375000 + flags = 1 + data = length 336, hash EBE951F4 + sample 19: + time = 1399000 + flags = 1 + data = length 288, hash 9E2EBFF7 + sample 20: + time = 1423000 + flags = 1 + data = length 336, hash 36A7D455 + sample 21: + time = 1447000 + flags = 1 + data = length 336, hash 84545F8C + sample 22: + time = 1471000 + flags = 1 + data = length 336, hash F66F3045 + sample 23: + time = 1495000 + flags = 1 + data = length 576, hash 5AB089EA + sample 24: + time = 1519000 + flags = 1 + data = length 336, hash 8868086 + sample 25: + time = 1543000 + flags = 1 + data = length 336, hash D5EB6D63 + sample 26: + time = 1567000 + flags = 1 + data = length 288, hash 7A5374B7 + sample 27: + time = 1591000 + flags = 1 + data = length 336, hash BEB27A75 + sample 28: + time = 1615000 + flags = 1 + data = length 336, hash E251E0FD + sample 29: + time = 1639000 + flags = 1 + data = length 288, hash D54C970 + sample 30: + time = 1663000 + flags = 1 + data = length 336, hash 52C473B9 + sample 31: + time = 1687000 + flags = 1 + data = length 336, hash F5F13334 + sample 32: + time = 1711000 + flags = 1 + data = length 480, hash A5F1E987 + sample 33: + time = 1735000 + flags = 1 + data = length 288, hash 453A1267 + sample 34: + time = 1759000 + flags = 1 + data = length 288, hash 7C6C2EA9 + sample 35: + time = 1783000 + flags = 1 + data = length 336, hash F4BFECA4 + sample 36: + time = 1807000 + flags = 1 + data = length 336, hash 751A395A + sample 37: + time = 1831000 + flags = 1 + data = length 336, hash EE38DB02 + sample 38: + time = 1855000 + flags = 1 + data = length 336, hash F18837E2 + sample 39: + time = 1879000 + flags = 1 + data = length 336, hash ED36B78E + sample 40: + time = 1903000 + flags = 1 + data = length 336, hash B3D28289 + sample 41: + time = 1927000 + flags = 1 + data = length 288, hash 8BDE28E1 + sample 42: + time = 1951000 + flags = 1 + data = length 336, hash CFD5E966 + sample 43: + time = 1975000 + flags = 1 + data = length 288, hash DC08E267 + sample 44: + time = 1999000 + flags = 1 + data = length 336, hash 6530CB78 + sample 45: + time = 2023000 + flags = 1 + data = length 336, hash 6CC6636E + sample 46: + time = 2047000 + flags = 1 + data = length 336, hash 613047C1 + sample 47: + time = 2071000 + flags = 1 + data = length 288, hash CDC747BF + sample 48: + time = 2095000 + flags = 1 + data = length 336, hash AF22AA74 + sample 49: + time = 2119000 + flags = 1 + data = length 384, hash 82F326AA + sample 50: + time = 2143000 + flags = 1 + data = length 384, hash EDA26C4D + sample 51: + time = 2167000 + flags = 1 + data = length 336, hash 94C643DC + sample 52: + time = 2191000 + flags = 1 + data = length 288, hash CB5D9C40 + sample 53: + time = 2215000 + flags = 1 + data = length 336, hash 1E69DE3F + sample 54: + time = 2239000 + flags = 1 + data = length 336, hash 7E472219 + sample 55: + time = 2263000 + flags = 1 + data = length 336, hash DA47B9FA + sample 56: + time = 2287000 + flags = 1 + data = length 336, hash DD0ABB7C + sample 57: + time = 2311000 + flags = 1 + data = length 288, hash DBF93FAC + sample 58: + time = 2335000 + flags = 1 + data = length 336, hash 243F4B2 + sample 59: + time = 2359000 + flags = 1 + data = length 336, hash 2E881490 + sample 60: + time = 2383000 + flags = 1 + data = length 288, hash 1C28C8BE + sample 61: + time = 2407000 + flags = 1 + data = length 336, hash C73E5D30 + sample 62: + time = 2431000 + flags = 1 + data = length 288, hash 98B5BFF6 + sample 63: + time = 2455000 + flags = 1 + data = length 336, hash E0135533 + sample 64: + time = 2479000 + flags = 1 + data = length 336, hash D13C9DBC + sample 65: + time = 2503000 + flags = 1 + data = length 336, hash 63D524CA + sample 66: + time = 2527000 + flags = 1 + data = length 288, hash A28514C3 + sample 67: + time = 2551000 + flags = 1 + data = length 336, hash 72B647FF + sample 68: + time = 2575000 + flags = 1 + data = length 336, hash 8F740AB1 + sample 69: + time = 2599000 + flags = 1 + data = length 336, hash 5E3C7E93 + sample 70: + time = 2623000 + flags = 1 + data = length 336, hash 121B913B + sample 71: + time = 2647000 + flags = 1 + data = length 336, hash 578FCCF2 + sample 72: + time = 2671000 + flags = 1 + data = length 336, hash 5B5823DE + sample 73: + time = 2695000 + flags = 1 + data = length 384, hash D8B83F78 + sample 74: + time = 2719000 + flags = 1 + data = length 240, hash E649682F + sample 75: + time = 2743000 + flags = 1 + data = length 96, hash C559A6F4 + sample 76: + time = 2767000 + flags = 1 + data = length 96, hash 792796BC + sample 77: + time = 2791000 + flags = 1 + data = length 120, hash 8172CD0E + sample 78: + time = 2815000 + flags = 1 + data = length 120, hash F562B52F + sample 79: + time = 2839000 + flags = 1 + data = length 96, hash FF8D5B98 +tracksEnded = true diff --git a/testdata/src/test/assets/mp3/bear-id3-enabled.2.dump b/testdata/src/test/assets/mp3/bear-id3-enabled.2.dump new file mode 100644 index 0000000000..4f9b29dc55 --- /dev/null +++ b/testdata/src/test/assets/mp3/bear-id3-enabled.2.dump @@ -0,0 +1,188 @@ +seekMap: + isSeekable = true + duration = 2808000 + getPosition(0) = [[timeUs=0, position=39740]] + getPosition(1) = [[timeUs=0, position=39740]] + getPosition(1404000) = [[timeUs=1404000, position=58820]] + getPosition(2808000) = [[timeUs=2808000, position=77900]] +numberOfTracks = 1 +track 0: + total output bytes = 12624 + sample count = 42 + format 0: + sampleMimeType = audio/mpeg + maxInputSize = 4096 + channelCount = 2 + sampleRate = 48000 + encoderDelay = 576 + encoderPadding = 576 + metadata = entries=[TIT2: description=null: value=Test title, TPE1: description=null: value=Test Artist, TALB: description=null: value=Test Album, TXXX: description=Test description: value=Test user info, COMM: language=eng, description=Test description, WXXX: url=Test URL, TSSE: description=null: value=Lavf58.29.100, MLLT, PRIV: owner=test@gmail.com, UNKN, GEOB: mimeType=test/mime, filename=Testfilename.txt, description=Test description, CHAP, CHAP, CTOC, APIC: mimeType=image/jpeg, description=Test description] + sample 0: + time = 1879000 + flags = 1 + data = length 336, hash F18837E2 + sample 1: + time = 1903000 + flags = 1 + data = length 336, hash ED36B78E + sample 2: + time = 1927000 + flags = 1 + data = length 336, hash B3D28289 + sample 3: + time = 1951000 + flags = 1 + data = length 288, hash 8BDE28E1 + sample 4: + time = 1975000 + flags = 1 + data = length 336, hash CFD5E966 + sample 5: + time = 1999000 + flags = 1 + data = length 288, hash DC08E267 + sample 6: + time = 2023000 + flags = 1 + data = length 336, hash 6530CB78 + sample 7: + time = 2047000 + flags = 1 + data = length 336, hash 6CC6636E + sample 8: + time = 2071000 + flags = 1 + data = length 336, hash 613047C1 + sample 9: + time = 2095000 + flags = 1 + data = length 288, hash CDC747BF + sample 10: + time = 2119000 + flags = 1 + data = length 336, hash AF22AA74 + sample 11: + time = 2143000 + flags = 1 + data = length 384, hash 82F326AA + sample 12: + time = 2167000 + flags = 1 + data = length 384, hash EDA26C4D + sample 13: + time = 2191000 + flags = 1 + data = length 336, hash 94C643DC + sample 14: + time = 2215000 + flags = 1 + data = length 288, hash CB5D9C40 + sample 15: + time = 2239000 + flags = 1 + data = length 336, hash 1E69DE3F + sample 16: + time = 2263000 + flags = 1 + data = length 336, hash 7E472219 + sample 17: + time = 2287000 + flags = 1 + data = length 336, hash DA47B9FA + sample 18: + time = 2311000 + flags = 1 + data = length 336, hash DD0ABB7C + sample 19: + time = 2335000 + flags = 1 + data = length 288, hash DBF93FAC + sample 20: + time = 2359000 + flags = 1 + data = length 336, hash 243F4B2 + sample 21: + time = 2383000 + flags = 1 + data = length 336, hash 2E881490 + sample 22: + time = 2407000 + flags = 1 + data = length 288, hash 1C28C8BE + sample 23: + time = 2431000 + flags = 1 + data = length 336, hash C73E5D30 + sample 24: + time = 2455000 + flags = 1 + data = length 288, hash 98B5BFF6 + sample 25: + time = 2479000 + flags = 1 + data = length 336, hash E0135533 + sample 26: + time = 2503000 + flags = 1 + data = length 336, hash D13C9DBC + sample 27: + time = 2527000 + flags = 1 + data = length 336, hash 63D524CA + sample 28: + time = 2551000 + flags = 1 + data = length 288, hash A28514C3 + sample 29: + time = 2575000 + flags = 1 + data = length 336, hash 72B647FF + sample 30: + time = 2599000 + flags = 1 + data = length 336, hash 8F740AB1 + sample 31: + time = 2623000 + flags = 1 + data = length 336, hash 5E3C7E93 + sample 32: + time = 2647000 + flags = 1 + data = length 336, hash 121B913B + sample 33: + time = 2671000 + flags = 1 + data = length 336, hash 578FCCF2 + sample 34: + time = 2695000 + flags = 1 + data = length 336, hash 5B5823DE + sample 35: + time = 2719000 + flags = 1 + data = length 384, hash D8B83F78 + sample 36: + time = 2743000 + flags = 1 + data = length 240, hash E649682F + sample 37: + time = 2767000 + flags = 1 + data = length 96, hash C559A6F4 + sample 38: + time = 2791000 + flags = 1 + data = length 96, hash 792796BC + sample 39: + time = 2815000 + flags = 1 + data = length 120, hash 8172CD0E + sample 40: + time = 2839000 + flags = 1 + data = length 120, hash F562B52F + sample 41: + time = 2863000 + flags = 1 + data = length 96, hash FF8D5B98 +tracksEnded = true diff --git a/testdata/src/test/assets/mp3/bear-id3-enabled.3.dump b/testdata/src/test/assets/mp3/bear-id3-enabled.3.dump new file mode 100644 index 0000000000..220965634f --- /dev/null +++ b/testdata/src/test/assets/mp3/bear-id3-enabled.3.dump @@ -0,0 +1,20 @@ +seekMap: + isSeekable = true + duration = 2808000 + getPosition(0) = [[timeUs=0, position=39740]] + getPosition(1) = [[timeUs=0, position=39740]] + getPosition(1404000) = [[timeUs=1404000, position=58820]] + getPosition(2808000) = [[timeUs=2808000, position=77900]] +numberOfTracks = 1 +track 0: + total output bytes = 0 + sample count = 0 + format 0: + sampleMimeType = audio/mpeg + maxInputSize = 4096 + channelCount = 2 + sampleRate = 48000 + encoderDelay = 576 + encoderPadding = 576 + metadata = entries=[TIT2: description=null: value=Test title, TPE1: description=null: value=Test Artist, TALB: description=null: value=Test Album, TXXX: description=Test description: value=Test user info, COMM: language=eng, description=Test description, WXXX: url=Test URL, TSSE: description=null: value=Lavf58.29.100, MLLT, PRIV: owner=test@gmail.com, UNKN, GEOB: mimeType=test/mime, filename=Testfilename.txt, description=Test description, CHAP, CHAP, CTOC, APIC: mimeType=image/jpeg, description=Test description] +tracksEnded = true diff --git a/testdata/src/test/assets/mp3/bear-id3-enabled.unknown_length.dump b/testdata/src/test/assets/mp3/bear-id3-enabled.unknown_length.dump new file mode 100644 index 0000000000..c252057e47 --- /dev/null +++ b/testdata/src/test/assets/mp3/bear-id3-enabled.unknown_length.dump @@ -0,0 +1,488 @@ +seekMap: + isSeekable = true + duration = 2808000 + getPosition(0) = [[timeUs=0, position=39740]] + getPosition(1) = [[timeUs=0, position=39740]] + getPosition(1404000) = [[timeUs=1404000, position=58820]] + getPosition(2808000) = [[timeUs=2808000, position=77900]] +numberOfTracks = 1 +track 0: + total output bytes = 38160 + sample count = 117 + format 0: + sampleMimeType = audio/mpeg + maxInputSize = 4096 + channelCount = 2 + sampleRate = 48000 + encoderDelay = 576 + encoderPadding = 576 + metadata = entries=[TIT2: description=null: value=Test title, TPE1: description=null: value=Test Artist, TALB: description=null: value=Test Album, TXXX: description=Test description: value=Test user info, COMM: language=eng, description=Test description, WXXX: url=Test URL, TSSE: description=null: value=Lavf58.29.100, MLLT, PRIV: owner=test@gmail.com, UNKN, GEOB: mimeType=test/mime, filename=Testfilename.txt, description=Test description, CHAP, CHAP, CTOC, APIC: mimeType=image/jpeg, description=Test description] + sample 0: + time = 0 + flags = 1 + data = length 96, hash 1F161542 + sample 1: + time = 24000 + flags = 1 + data = length 768, hash CD1DC50F + sample 2: + time = 48000 + flags = 1 + data = length 336, hash 3F64124B + sample 3: + time = 72000 + flags = 1 + data = length 336, hash 8FFED94E + sample 4: + time = 96000 + flags = 1 + data = length 288, hash 9CD77D47 + sample 5: + time = 120000 + flags = 1 + data = length 384, hash 24607BB5 + sample 6: + time = 144000 + flags = 1 + data = length 480, hash 4937EBAB + sample 7: + time = 168000 + flags = 1 + data = length 336, hash 546342B1 + sample 8: + time = 192000 + flags = 1 + data = length 336, hash 79E0923F + sample 9: + time = 216000 + flags = 1 + data = length 336, hash AB1F3948 + sample 10: + time = 240000 + flags = 1 + data = length 336, hash C3A4D888 + sample 11: + time = 264000 + flags = 1 + data = length 288, hash 7867DA45 + sample 12: + time = 288000 + flags = 1 + data = length 336, hash B1240B73 + sample 13: + time = 312000 + flags = 1 + data = length 336, hash 94CFCD35 + sample 14: + time = 336000 + flags = 1 + data = length 288, hash 94F412C + sample 15: + time = 360000 + flags = 1 + data = length 336, hash A1D9FF41 + sample 16: + time = 384000 + flags = 1 + data = length 288, hash 2A8DA21B + sample 17: + time = 408000 + flags = 1 + data = length 336, hash 6A429CE + sample 18: + time = 432000 + flags = 1 + data = length 336, hash 68853982 + sample 19: + time = 456000 + flags = 1 + data = length 384, hash 1D6F779C + sample 20: + time = 480000 + flags = 1 + data = length 480, hash 6B31EBEE + sample 21: + time = 504000 + flags = 1 + data = length 336, hash 888335BE + sample 22: + time = 528000 + flags = 1 + data = length 336, hash 6072AC8B + sample 23: + time = 552000 + flags = 1 + data = length 336, hash C9D24234 + sample 24: + time = 576000 + flags = 1 + data = length 288, hash 52BF4D1E + sample 25: + time = 600000 + flags = 1 + data = length 336, hash F93F4F0 + sample 26: + time = 624000 + flags = 1 + data = length 336, hash 8617688A + sample 27: + time = 648000 + flags = 1 + data = length 480, hash FAB0D31B + sample 28: + time = 672000 + flags = 1 + data = length 384, hash FA4B53E2 + sample 29: + time = 696000 + flags = 1 + data = length 336, hash 8C435F6A + sample 30: + time = 720000 + flags = 1 + data = length 336, hash 60D3F80C + sample 31: + time = 744000 + flags = 1 + data = length 336, hash DC15B68B + sample 32: + time = 768000 + flags = 1 + data = length 288, hash FF3DF141 + sample 33: + time = 792000 + flags = 1 + data = length 336, hash A64B3042 + sample 34: + time = 816000 + flags = 1 + data = length 336, hash ACA622A1 + sample 35: + time = 840000 + flags = 1 + data = length 288, hash 3E34B8D4 + sample 36: + time = 864000 + flags = 1 + data = length 288, hash 9B96F72A + sample 37: + time = 888000 + flags = 1 + data = length 336, hash E917C122 + sample 38: + time = 912000 + flags = 1 + data = length 336, hash 10ED1470 + sample 39: + time = 936000 + flags = 1 + data = length 288, hash 706B8A7C + sample 40: + time = 960000 + flags = 1 + data = length 336, hash 71FFE4A0 + sample 41: + time = 984000 + flags = 1 + data = length 336, hash D4160463 + sample 42: + time = 1008000 + flags = 1 + data = length 336, hash EC557B14 + sample 43: + time = 1032000 + flags = 1 + data = length 288, hash 5598CF8B + sample 44: + time = 1056000 + flags = 1 + data = length 336, hash 7E0AB41 + sample 45: + time = 1080000 + flags = 1 + data = length 336, hash 1C585FEF + sample 46: + time = 1104000 + flags = 1 + data = length 336, hash A4A4855E + sample 47: + time = 1128000 + flags = 1 + data = length 336, hash CECA51D3 + sample 48: + time = 1152000 + flags = 1 + data = length 288, hash 2D362DC5 + sample 49: + time = 1176000 + flags = 1 + data = length 336, hash 9EB2609D + sample 50: + time = 1200000 + flags = 1 + data = length 336, hash 28FFB3FE + sample 51: + time = 1224000 + flags = 1 + data = length 288, hash 2AA2D216 + sample 52: + time = 1248000 + flags = 1 + data = length 336, hash CDBC7032 + sample 53: + time = 1272000 + flags = 1 + data = length 336, hash 25B13FE7 + sample 54: + time = 1296000 + flags = 1 + data = length 336, hash DB6BB1E + sample 55: + time = 1320000 + flags = 1 + data = length 336, hash EBE951F4 + sample 56: + time = 1344000 + flags = 1 + data = length 288, hash 9E2EBFF7 + sample 57: + time = 1368000 + flags = 1 + data = length 336, hash 36A7D455 + sample 58: + time = 1392000 + flags = 1 + data = length 336, hash 84545F8C + sample 59: + time = 1416000 + flags = 1 + data = length 336, hash F66F3045 + sample 60: + time = 1440000 + flags = 1 + data = length 576, hash 5AB089EA + sample 61: + time = 1464000 + flags = 1 + data = length 336, hash 8868086 + sample 62: + time = 1488000 + flags = 1 + data = length 336, hash D5EB6D63 + sample 63: + time = 1512000 + flags = 1 + data = length 288, hash 7A5374B7 + sample 64: + time = 1536000 + flags = 1 + data = length 336, hash BEB27A75 + sample 65: + time = 1560000 + flags = 1 + data = length 336, hash E251E0FD + sample 66: + time = 1584000 + flags = 1 + data = length 288, hash D54C970 + sample 67: + time = 1608000 + flags = 1 + data = length 336, hash 52C473B9 + sample 68: + time = 1632000 + flags = 1 + data = length 336, hash F5F13334 + sample 69: + time = 1656000 + flags = 1 + data = length 480, hash A5F1E987 + sample 70: + time = 1680000 + flags = 1 + data = length 288, hash 453A1267 + sample 71: + time = 1704000 + flags = 1 + data = length 288, hash 7C6C2EA9 + sample 72: + time = 1728000 + flags = 1 + data = length 336, hash F4BFECA4 + sample 73: + time = 1752000 + flags = 1 + data = length 336, hash 751A395A + sample 74: + time = 1776000 + flags = 1 + data = length 336, hash EE38DB02 + sample 75: + time = 1800000 + flags = 1 + data = length 336, hash F18837E2 + sample 76: + time = 1824000 + flags = 1 + data = length 336, hash ED36B78E + sample 77: + time = 1848000 + flags = 1 + data = length 336, hash B3D28289 + sample 78: + time = 1872000 + flags = 1 + data = length 288, hash 8BDE28E1 + sample 79: + time = 1896000 + flags = 1 + data = length 336, hash CFD5E966 + sample 80: + time = 1920000 + flags = 1 + data = length 288, hash DC08E267 + sample 81: + time = 1944000 + flags = 1 + data = length 336, hash 6530CB78 + sample 82: + time = 1968000 + flags = 1 + data = length 336, hash 6CC6636E + sample 83: + time = 1992000 + flags = 1 + data = length 336, hash 613047C1 + sample 84: + time = 2016000 + flags = 1 + data = length 288, hash CDC747BF + sample 85: + time = 2040000 + flags = 1 + data = length 336, hash AF22AA74 + sample 86: + time = 2064000 + flags = 1 + data = length 384, hash 82F326AA + sample 87: + time = 2088000 + flags = 1 + data = length 384, hash EDA26C4D + sample 88: + time = 2112000 + flags = 1 + data = length 336, hash 94C643DC + sample 89: + time = 2136000 + flags = 1 + data = length 288, hash CB5D9C40 + sample 90: + time = 2160000 + flags = 1 + data = length 336, hash 1E69DE3F + sample 91: + time = 2184000 + flags = 1 + data = length 336, hash 7E472219 + sample 92: + time = 2208000 + flags = 1 + data = length 336, hash DA47B9FA + sample 93: + time = 2232000 + flags = 1 + data = length 336, hash DD0ABB7C + sample 94: + time = 2256000 + flags = 1 + data = length 288, hash DBF93FAC + sample 95: + time = 2280000 + flags = 1 + data = length 336, hash 243F4B2 + sample 96: + time = 2304000 + flags = 1 + data = length 336, hash 2E881490 + sample 97: + time = 2328000 + flags = 1 + data = length 288, hash 1C28C8BE + sample 98: + time = 2352000 + flags = 1 + data = length 336, hash C73E5D30 + sample 99: + time = 2376000 + flags = 1 + data = length 288, hash 98B5BFF6 + sample 100: + time = 2400000 + flags = 1 + data = length 336, hash E0135533 + sample 101: + time = 2424000 + flags = 1 + data = length 336, hash D13C9DBC + sample 102: + time = 2448000 + flags = 1 + data = length 336, hash 63D524CA + sample 103: + time = 2472000 + flags = 1 + data = length 288, hash A28514C3 + sample 104: + time = 2496000 + flags = 1 + data = length 336, hash 72B647FF + sample 105: + time = 2520000 + flags = 1 + data = length 336, hash 8F740AB1 + sample 106: + time = 2544000 + flags = 1 + data = length 336, hash 5E3C7E93 + sample 107: + time = 2568000 + flags = 1 + data = length 336, hash 121B913B + sample 108: + time = 2592000 + flags = 1 + data = length 336, hash 578FCCF2 + sample 109: + time = 2616000 + flags = 1 + data = length 336, hash 5B5823DE + sample 110: + time = 2640000 + flags = 1 + data = length 384, hash D8B83F78 + sample 111: + time = 2664000 + flags = 1 + data = length 240, hash E649682F + sample 112: + time = 2688000 + flags = 1 + data = length 96, hash C559A6F4 + sample 113: + time = 2712000 + flags = 1 + data = length 96, hash 792796BC + sample 114: + time = 2736000 + flags = 1 + data = length 120, hash 8172CD0E + sample 115: + time = 2760000 + flags = 1 + data = length 120, hash F562B52F + sample 116: + time = 2784000 + flags = 1 + data = length 96, hash FF8D5B98 +tracksEnded = true diff --git a/testdata/src/test/assets/mp3/bear-id3.mp3 b/testdata/src/test/assets/mp3/bear-id3.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..9bd4f72be8470fccdaffcd1e381247e688198176 GIT binary patch literal 77901 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 literal 0 HcmV?d00001