Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
SDK
/
exoplayer
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
eb65f5e2
authored
Apr 01, 2020
by
olly
Committed by
Oliver Woodman
Apr 01, 2020
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Fix ADTS extraction with mid-stream ID3
PiperOrigin-RevId: 304184650
parent
8cb7907e
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
1275 additions
and
25 deletions
RELEASENOTES.md
library/extractor/src/main/java/com/google/android/exoplayer2/extractor/ts/AdtsReader.java
library/extractor/src/test/java/com/google/android/exoplayer2/extractor/ts/AdtsExtractorTest.java
testdata/src/test/assets/ts/sample_with_id3.adts
testdata/src/test/assets/ts/sample_with_id3.adts.0.dump
testdata/src/test/assets/ts/sample_with_id3.adts.unknown_length.dump
RELEASENOTES.md
View file @
eb65f5e2
...
...
@@ -132,6 +132,9 @@
*
Fix playback of Widevine protected content that only provides V1 PSSH atoms
on API levels 21 and 22.
*
Fix playback of PlayReady content on Fire TV Stick (Gen 2).
*
Fix playback of WAV files with trailing non-media bytes
(
[
#7129
](
https://github.com/google/ExoPlayer/issues/7129
)
).
*
Fix playback of ADTS files with mid-stream ID3 metadata.
*
DASH:
*
Update the manifest URI to avoid repeated HTTP redirects
(
[
#6907
](
https://github.com/google/ExoPlayer/issues/6907
)
).
...
...
library/extractor/src/main/java/com/google/android/exoplayer2/extractor/ts/AdtsReader.java
View file @
eb65f5e2
...
...
@@ -355,42 +355,44 @@ public final class AdtsReader implements ElementaryStreamReader {
}
/**
* Returns whether the given syncPositionCandidate is a real SYNC word.
*
* <p>SYNC word pattern can occur within AAC data, so we perform a few checks to make sure this is
* really a SYNC word. This includes:
* Checks whether a candidate SYNC word position is likely to be the position of a real SYNC word.
* The caller must check that the first byte of the SYNC word is 0xFF before calling this method.
* This method performs the following checks:
*
* <ul>
* <li>Checking if MPEG version of this frame matches the first detected version.
* <li>Checking if the sample rate index of this frame matches the first detected sample rate
* index.
* <li>Checking if the bytes immediately after the current package also match a SYNC-word.
* <li>The MPEG version of this frame must match the previously detected version.
* <li>The sample rate index of this frame must match the previously detected sample rate index.
* <li>The frame size must be at least 7 bytes
* <li>The bytes following the frame must be either another SYNC word with the same MPEG
* version, or the start of an ID3 header.
* </ul>
*
* If the buffer runs out of data for any check, optimistically skip that check, because
* AdtsReader consumes each buffer as a whole. We will still run a header validity check later.
* With the exception of the first check, if there is insufficient data in the buffer then checks
* are optimistically skipped and {@code true} is returned.
*
* @param pesBuffer The buffer containing at data to check.
* @param syncPositionCandidate The candidate SYNC word position. May be -1 if the first byte of
* the candidate was the last byte of the previously consumed buffer.
* @return True if all checks were passed or skipped, indicating the position is likely to be the
* position of a real SYNC word. False otherwise.
*/
private
boolean
checkSyncPositionValid
(
ParsableByteArray
pesBuffer
,
int
syncPositionCandidate
)
{
// The SYNC word contains 2 bytes, and the first byte may be in the previously consumed buffer.
// Hence the second byte of the SYNC word may be byte 0 of this buffer, and
// syncPositionCandidate (which indicates position of the first byte of the SYNC word) may be
// -1.
// Since the first byte of the SYNC word is always FF, which does not contain any informational
// bits, we set the byte position to be the second byte in the SYNC word to ensure it's always
// within this buffer.
pesBuffer
.
setPosition
(
syncPositionCandidate
+
1
);
if
(!
tryRead
(
pesBuffer
,
adtsScratch
.
data
,
1
))
{
return
false
;
}
// The MPEG version of this frame must match the previously detected version.
adtsScratch
.
setPosition
(
4
);
int
currentFrameVersion
=
adtsScratch
.
readBits
(
1
);
if
(
firstFrameVersion
!=
VERSION_UNSET
&&
currentFrameVersion
!=
firstFrameVersion
)
{
return
false
;
}
// The sample rate index of this frame must match the previously detected sample rate index.
if
(
firstFrameSampleRateIndex
!=
C
.
INDEX_UNSET
)
{
if
(!
tryRead
(
pesBuffer
,
adtsScratch
.
data
,
1
))
{
// Insufficient data for further checks.
return
true
;
}
adtsScratch
.
setPosition
(
2
);
...
...
@@ -401,24 +403,50 @@ public final class AdtsReader implements ElementaryStreamReader {
pesBuffer
.
setPosition
(
syncPositionCandidate
+
2
);
}
// Optionally check the byte after this frame matches SYNC word.
// The frame size must be at least 7 bytes.
if
(!
tryRead
(
pesBuffer
,
adtsScratch
.
data
,
4
))
{
// Insufficient data for further checks.
return
true
;
}
adtsScratch
.
setPosition
(
14
);
int
frameSize
=
adtsScratch
.
readBits
(
13
);
if
(
frameSize
<=
6
)
{
// Not a frame.
if
(
frameSize
<
7
)
{
return
false
;
}
// The bytes following the frame must be either another SYNC word with the same MPEG version, or
// the start of an ID3 header.
byte
[]
data
=
pesBuffer
.
data
;
int
dataLimit
=
pesBuffer
.
limit
();
int
nextSyncPosition
=
syncPositionCandidate
+
frameSize
;
if
(
nextSyncPosition
+
1
>=
pesBuffer
.
limit
())
{
if
(
nextSyncPosition
>=
dataLimit
)
{
// Insufficient data for further checks.
return
true
;
}
return
(
isAdtsSyncBytes
(
pesBuffer
.
data
[
nextSyncPosition
],
pesBuffer
.
data
[
nextSyncPosition
+
1
])
&&
(
firstFrameVersion
==
VERSION_UNSET
||
((
pesBuffer
.
data
[
nextSyncPosition
+
1
]
&
0x8
)
>>
3
)
==
currentFrameVersion
));
if
(
data
[
nextSyncPosition
]
==
(
byte
)
0xFF
)
{
if
(
nextSyncPosition
+
1
==
dataLimit
)
{
// Insufficient data for further checks.
return
true
;
}
return
isAdtsSyncBytes
((
byte
)
0xFF
,
data
[
nextSyncPosition
+
1
])
&&
((
data
[
nextSyncPosition
+
1
]
&
0x8
)
>>
3
)
==
currentFrameVersion
;
}
else
{
if
(
data
[
nextSyncPosition
]
!=
'I'
)
{
return
false
;
}
if
(
nextSyncPosition
+
1
==
dataLimit
)
{
// Insufficient data for further checks.
return
true
;
}
if
(
data
[
nextSyncPosition
+
1
]
!=
'D'
)
{
return
false
;
}
if
(
nextSyncPosition
+
2
==
dataLimit
)
{
// Insufficient data for further checks.
return
true
;
}
return
data
[
nextSyncPosition
+
2
]
==
'3'
;
}
}
private
boolean
isAdtsSyncBytes
(
byte
firstByte
,
byte
secondByte
)
{
...
...
library/extractor/src/test/java/com/google/android/exoplayer2/extractor/ts/AdtsExtractorTest.java
View file @
eb65f5e2
...
...
@@ -30,6 +30,11 @@ public final class AdtsExtractorTest {
}
@Test
public
void
sample_with_id3
()
throws
Exception
{
ExtractorAsserts
.
assertBehavior
(
AdtsExtractor:
:
new
,
"ts/sample_with_id3.adts"
);
}
@Test
public
void
sample_withSeeking
()
throws
Exception
{
ExtractorAsserts
.
assertBehavior
(
()
->
new
AdtsExtractor
(
/* flags= */
AdtsExtractor
.
FLAG_ENABLE_CONSTANT_BITRATE_SEEKING
),
...
...
testdata/src/test/assets/ts/sample_with_id3.adts
0 → 100644
View file @
eb65f5e2
No preview for this file type
testdata/src/test/assets/ts/sample_with_id3.adts.0.dump
0 → 100644
View file @
eb65f5e2
seekMap:
isSeekable = false
duration = UNSET TIME
getPosition(0) = [[timeUs=0, position=0]]
numberOfTracks = 2
track 0:
total output bytes = 30797
sample count = 144
format 0:
id = 0
sampleMimeType = audio/mp4a-latm
codecs = mp4a.40.2
channelCount = 1
sampleRate = 44100
initializationData:
data = length 2, hash 5F7
sample 0:
time = 0
flags = 1
data = length 23, hash 47DE9131
sample 1:
time = 23219
flags = 1
data = length 6, hash 31CF3A46
sample 2:
time = 46438
flags = 1
data = length 6, hash 31CF3A46
sample 3:
time = 69657
flags = 1
data = length 6, hash 31CF3A46
sample 4:
time = 92876
flags = 1
data = length 6, hash 31EC5206
sample 5:
time = 116095
flags = 1
data = length 171, hash 4F6478F6
sample 6:
time = 139314
flags = 1
data = length 202, hash AF4068A3
sample 7:
time = 162533
flags = 1
data = length 210, hash E4C10618
sample 8:
time = 185752
flags = 1
data = length 217, hash 9ECCD0D9
sample 9:
time = 208971
flags = 1
data = length 212, hash 6BAC2CD9
sample 10:
time = 232190
flags = 1
data = length 223, hash 188B6010
sample 11:
time = 255409
flags = 1
data = length 222, hash C1A04D0C
sample 12:
time = 278628
flags = 1
data = length 220, hash D65F9768
sample 13:
time = 301847
flags = 1
data = length 227, hash B96C9E14
sample 14:
time = 325066
flags = 1
data = length 229, hash 9FB09972
sample 15:
time = 348285
flags = 1
data = length 220, hash 2271F053
sample 16:
time = 371504
flags = 1
data = length 226, hash 5EDD2F4F
sample 17:
time = 394723
flags = 1
data = length 239, hash 957510E0
sample 18:
time = 417942
flags = 1
data = length 224, hash 718A8F47
sample 19:
time = 441161
flags = 1
data = length 225, hash 5E11E293
sample 20:
time = 464380
flags = 1
data = length 227, hash FCE50D27
sample 21:
time = 487599
flags = 1
data = length 212, hash 77908C40
sample 22:
time = 510818
flags = 1
data = length 227, hash 34C4EB32
sample 23:
time = 534037
flags = 1
data = length 231, hash 95488307
sample 24:
time = 557256
flags = 1
data = length 226, hash 97F12D6F
sample 25:
time = 580475
flags = 1
data = length 236, hash 91A9D9A2
sample 26:
time = 603694
flags = 1
data = length 227, hash 27A608F9
sample 27:
time = 626913
flags = 1
data = length 229, hash 57DAAE4
sample 28:
time = 650132
flags = 1
data = length 235, hash ED30AC34
sample 29:
time = 673351
flags = 1
data = length 227, hash BD3D6280
sample 30:
time = 696570
flags = 1
data = length 233, hash 694B1087
sample 31:
time = 719789
flags = 1
data = length 232, hash 1EDFE047
sample 32:
time = 743008
flags = 1
data = length 228, hash E2A831F4
sample 33:
time = 766227
flags = 1
data = length 231, hash 757E6012
sample 34:
time = 789446
flags = 1
data = length 223, hash 4003D791
sample 35:
time = 812665
flags = 1
data = length 232, hash 3CF9A07C
sample 36:
time = 835884
flags = 1
data = length 228, hash 25AC3FF7
sample 37:
time = 859103
flags = 1
data = length 220, hash 2C1824CE
sample 38:
time = 882322
flags = 1
data = length 229, hash 46FDD8FB
sample 39:
time = 905541
flags = 1
data = length 237, hash F6988018
sample 40:
time = 928760
flags = 1
data = length 242, hash 60436B6B
sample 41:
time = 951979
flags = 1
data = length 275, hash 90EDFA8E
sample 42:
time = 975198
flags = 1
data = length 242, hash 5C86EFCB
sample 43:
time = 998417
flags = 1
data = length 233, hash E0A51B82
sample 44:
time = 1021636
flags = 1
data = length 235, hash 590DF14F
sample 45:
time = 1044855
flags = 1
data = length 238, hash 69AF4E6E
sample 46:
time = 1068074
flags = 1
data = length 235, hash E745AE8D
sample 47:
time = 1091293
flags = 1
data = length 223, hash 295F2A13
sample 48:
time = 1114512
flags = 1
data = length 228, hash E2F47B21
sample 49:
time = 1137731
flags = 1
data = length 229, hash 262C3CFE
sample 50:
time = 1160950
flags = 1
data = length 232, hash 4B5BF5E8
sample 51:
time = 1184169
flags = 1
data = length 233, hash F3D80836
sample 52:
time = 1207388
flags = 1
data = length 237, hash 32E0A11E
sample 53:
time = 1230607
flags = 1
data = length 228, hash E1B89F13
sample 54:
time = 1253826
flags = 1
data = length 237, hash 8BDD9E38
sample 55:
time = 1277045
flags = 1
data = length 235, hash 3C84161F
sample 56:
time = 1300264
flags = 1
data = length 227, hash A47E1789
sample 57:
time = 1323483
flags = 1
data = length 228, hash 869FDFD3
sample 58:
time = 1346702
flags = 1
data = length 233, hash 272ECE2
sample 59:
time = 1369921
flags = 1
data = length 227, hash DB6B9618
sample 60:
time = 1393140
flags = 1
data = length 212, hash 63214325
sample 61:
time = 1416359
flags = 1
data = length 221, hash 9BA588A1
sample 62:
time = 1439578
flags = 1
data = length 225, hash 21EFD50C
sample 63:
time = 1462797
flags = 1
data = length 231, hash F3AD0BF
sample 64:
time = 1486016
flags = 1
data = length 224, hash 822C9210
sample 65:
time = 1509235
flags = 1
data = length 195, hash D4EF53EE
sample 66:
time = 1532454
flags = 1
data = length 195, hash A816647A
sample 67:
time = 1555673
flags = 1
data = length 184, hash 9A2B7E6
sample 68:
time = 1578892
flags = 1
data = length 210, hash 956E3600
sample 69:
time = 1602111
flags = 1
data = length 234, hash 35CFDA0A
sample 70:
time = 1625330
flags = 1
data = length 239, hash 9E15AC1E
sample 71:
time = 1648549
flags = 1
data = length 228, hash F3B70641
sample 72:
time = 1671768
flags = 1
data = length 237, hash 124E3194
sample 73:
time = 1694987
flags = 1
data = length 231, hash 950CD7C8
sample 74:
time = 1718206
flags = 1
data = length 236, hash A12E49AF
sample 75:
time = 1741425
flags = 1
data = length 242, hash 43BC9C24
sample 76:
time = 1764644
flags = 1
data = length 241, hash DCF0B17
sample 77:
time = 1787863
flags = 1
data = length 251, hash C0B99968
sample 78:
time = 1811082
flags = 1
data = length 245, hash 9B38ED1C
sample 79:
time = 1834301
flags = 1
data = length 238, hash 1BA69079
sample 80:
time = 1857520
flags = 1
data = length 233, hash 44C8C6BF
sample 81:
time = 1880739
flags = 1
data = length 231, hash EABBEE02
sample 82:
time = 1903958
flags = 1
data = length 226, hash D09C44FB
sample 83:
time = 1927177
flags = 1
data = length 235, hash BE6A6608
sample 84:
time = 1950396
flags = 1
data = length 235, hash 2735F454
sample 85:
time = 1973615
flags = 1
data = length 238, hash B160DFE7
sample 86:
time = 1996834
flags = 1
data = length 232, hash 1B217D2E
sample 87:
time = 2020053
flags = 1
data = length 251, hash D1C14CEA
sample 88:
time = 2043272
flags = 1
data = length 256, hash 97C87F08
sample 89:
time = 2066491
flags = 1
data = length 237, hash 6645DB3
sample 90:
time = 2089710
flags = 1
data = length 235, hash 727A1C82
sample 91:
time = 2112929
flags = 1
data = length 234, hash 5015F8B5
sample 92:
time = 2136148
flags = 1
data = length 241, hash 9102144B
sample 93:
time = 2159367
flags = 1
data = length 224, hash 64E0D807
sample 94:
time = 2182586
flags = 1
data = length 228, hash 1922B852
sample 95:
time = 2205805
flags = 1
data = length 224, hash 953502D8
sample 96:
time = 2229024
flags = 1
data = length 214, hash 92B87FE7
sample 97:
time = 2252243
flags = 1
data = length 213, hash BB0C8D86
sample 98:
time = 2275462
flags = 1
data = length 206, hash 9AD21017
sample 99:
time = 2298681
flags = 1
data = length 209, hash C479FE94
sample 100:
time = 2321900
flags = 1
data = length 220, hash 3033DCE1
sample 101:
time = 2345119
flags = 1
data = length 217, hash 7D589C94
sample 102:
time = 2368338
flags = 1
data = length 216, hash AAF6C183
sample 103:
time = 2391557
flags = 1
data = length 206, hash 1EE1207F
sample 104:
time = 2414776
flags = 1
data = length 204, hash 4BEB1210
sample 105:
time = 2437995
flags = 1
data = length 213, hash 21A841C9
sample 106:
time = 2461214
flags = 1
data = length 207, hash B80B0424
sample 107:
time = 2484433
flags = 1
data = length 212, hash 4785A1C3
sample 108:
time = 2507652
flags = 1
data = length 205, hash 59BF7229
sample 109:
time = 2530871
flags = 1
data = length 208, hash FA313DDE
sample 110:
time = 2554090
flags = 1
data = length 211, hash 190D85FD
sample 111:
time = 2577309
flags = 1
data = length 211, hash BA050052
sample 112:
time = 2600528
flags = 1
data = length 211, hash F3080F10
sample 113:
time = 2623747
flags = 1
data = length 210, hash F41B7BE7
sample 114:
time = 2646966
flags = 1
data = length 207, hash 2176C97E
sample 115:
time = 2670185
flags = 1
data = length 220, hash 32087455
sample 116:
time = 2693404
flags = 1
data = length 213, hash 4E5649A8
sample 117:
time = 2716623
flags = 1
data = length 213, hash 5F12FDCF
sample 118:
time = 2739842
flags = 1
data = length 204, hash 1E895C2A
sample 119:
time = 2763061
flags = 1
data = length 219, hash 45382270
sample 120:
time = 2786280
flags = 1
data = length 205, hash D66C6A1D
sample 121:
time = 2809499
flags = 1
data = length 204, hash 467AD01F
sample 122:
time = 2832718
flags = 1
data = length 211, hash F0435574
sample 123:
time = 2855937
flags = 1
data = length 206, hash 8C96B75F
sample 124:
time = 2879156
flags = 1
data = length 200, hash 82553248
sample 125:
time = 2902375
flags = 1
data = length 180, hash 1E51E6CE
sample 126:
time = 2925594
flags = 1
data = length 196, hash 33151DC4
sample 127:
time = 2948813
flags = 1
data = length 197, hash 1E62A7D6
sample 128:
time = 2972032
flags = 1
data = length 206, hash 6A6C4CC9
sample 129:
time = 2995251
flags = 1
data = length 209, hash A72FABAA
sample 130:
time = 3018470
flags = 1
data = length 217, hash BA33B985
sample 131:
time = 3041689
flags = 1
data = length 235, hash 9919CFD9
sample 132:
time = 3064908
flags = 1
data = length 236, hash A22C7267
sample 133:
time = 3088127
flags = 1
data = length 213, hash 3D57C901
sample 134:
time = 3111346
flags = 1
data = length 205, hash 47F68FDE
sample 135:
time = 3134565
flags = 1
data = length 210, hash 9A756E9C
sample 136:
time = 3157784
flags = 1
data = length 210, hash BD45C31F
sample 137:
time = 3181003
flags = 1
data = length 207, hash 8774FF7B
sample 138:
time = 3204222
flags = 1
data = length 149, hash 4678C0E5
sample 139:
time = 3227441
flags = 1
data = length 161, hash E991035D
sample 140:
time = 3250660
flags = 1
data = length 197, hash C3013689
sample 141:
time = 3273879
flags = 1
data = length 208, hash E6C0237
sample 142:
time = 3297098
flags = 1
data = length 232, hash A330F188
sample 143:
time = 3320317
flags = 1
data = length 174, hash 2B69C34E
track 1:
total output bytes = 141
sample count = 2
format 0:
id = 1
sampleMimeType = application/id3
sample 0:
time = 0
flags = 1
data = length 55, hash A7EB51A0
sample 1:
time = 23219
flags = 1
data = length 86, hash 3FA72D40
tracksEnded = true
testdata/src/test/assets/ts/sample_with_id3.adts.unknown_length.dump
0 → 100644
View file @
eb65f5e2
seekMap:
isSeekable = false
duration = UNSET TIME
getPosition(0) = [[timeUs=0, position=0]]
numberOfTracks = 2
track 0:
total output bytes = 30797
sample count = 144
format 0:
id = 0
sampleMimeType = audio/mp4a-latm
codecs = mp4a.40.2
channelCount = 1
sampleRate = 44100
initializationData:
data = length 2, hash 5F7
sample 0:
time = 0
flags = 1
data = length 23, hash 47DE9131
sample 1:
time = 23219
flags = 1
data = length 6, hash 31CF3A46
sample 2:
time = 46438
flags = 1
data = length 6, hash 31CF3A46
sample 3:
time = 69657
flags = 1
data = length 6, hash 31CF3A46
sample 4:
time = 92876
flags = 1
data = length 6, hash 31EC5206
sample 5:
time = 116095
flags = 1
data = length 171, hash 4F6478F6
sample 6:
time = 139314
flags = 1
data = length 202, hash AF4068A3
sample 7:
time = 162533
flags = 1
data = length 210, hash E4C10618
sample 8:
time = 185752
flags = 1
data = length 217, hash 9ECCD0D9
sample 9:
time = 208971
flags = 1
data = length 212, hash 6BAC2CD9
sample 10:
time = 232190
flags = 1
data = length 223, hash 188B6010
sample 11:
time = 255409
flags = 1
data = length 222, hash C1A04D0C
sample 12:
time = 278628
flags = 1
data = length 220, hash D65F9768
sample 13:
time = 301847
flags = 1
data = length 227, hash B96C9E14
sample 14:
time = 325066
flags = 1
data = length 229, hash 9FB09972
sample 15:
time = 348285
flags = 1
data = length 220, hash 2271F053
sample 16:
time = 371504
flags = 1
data = length 226, hash 5EDD2F4F
sample 17:
time = 394723
flags = 1
data = length 239, hash 957510E0
sample 18:
time = 417942
flags = 1
data = length 224, hash 718A8F47
sample 19:
time = 441161
flags = 1
data = length 225, hash 5E11E293
sample 20:
time = 464380
flags = 1
data = length 227, hash FCE50D27
sample 21:
time = 487599
flags = 1
data = length 212, hash 77908C40
sample 22:
time = 510818
flags = 1
data = length 227, hash 34C4EB32
sample 23:
time = 534037
flags = 1
data = length 231, hash 95488307
sample 24:
time = 557256
flags = 1
data = length 226, hash 97F12D6F
sample 25:
time = 580475
flags = 1
data = length 236, hash 91A9D9A2
sample 26:
time = 603694
flags = 1
data = length 227, hash 27A608F9
sample 27:
time = 626913
flags = 1
data = length 229, hash 57DAAE4
sample 28:
time = 650132
flags = 1
data = length 235, hash ED30AC34
sample 29:
time = 673351
flags = 1
data = length 227, hash BD3D6280
sample 30:
time = 696570
flags = 1
data = length 233, hash 694B1087
sample 31:
time = 719789
flags = 1
data = length 232, hash 1EDFE047
sample 32:
time = 743008
flags = 1
data = length 228, hash E2A831F4
sample 33:
time = 766227
flags = 1
data = length 231, hash 757E6012
sample 34:
time = 789446
flags = 1
data = length 223, hash 4003D791
sample 35:
time = 812665
flags = 1
data = length 232, hash 3CF9A07C
sample 36:
time = 835884
flags = 1
data = length 228, hash 25AC3FF7
sample 37:
time = 859103
flags = 1
data = length 220, hash 2C1824CE
sample 38:
time = 882322
flags = 1
data = length 229, hash 46FDD8FB
sample 39:
time = 905541
flags = 1
data = length 237, hash F6988018
sample 40:
time = 928760
flags = 1
data = length 242, hash 60436B6B
sample 41:
time = 951979
flags = 1
data = length 275, hash 90EDFA8E
sample 42:
time = 975198
flags = 1
data = length 242, hash 5C86EFCB
sample 43:
time = 998417
flags = 1
data = length 233, hash E0A51B82
sample 44:
time = 1021636
flags = 1
data = length 235, hash 590DF14F
sample 45:
time = 1044855
flags = 1
data = length 238, hash 69AF4E6E
sample 46:
time = 1068074
flags = 1
data = length 235, hash E745AE8D
sample 47:
time = 1091293
flags = 1
data = length 223, hash 295F2A13
sample 48:
time = 1114512
flags = 1
data = length 228, hash E2F47B21
sample 49:
time = 1137731
flags = 1
data = length 229, hash 262C3CFE
sample 50:
time = 1160950
flags = 1
data = length 232, hash 4B5BF5E8
sample 51:
time = 1184169
flags = 1
data = length 233, hash F3D80836
sample 52:
time = 1207388
flags = 1
data = length 237, hash 32E0A11E
sample 53:
time = 1230607
flags = 1
data = length 228, hash E1B89F13
sample 54:
time = 1253826
flags = 1
data = length 237, hash 8BDD9E38
sample 55:
time = 1277045
flags = 1
data = length 235, hash 3C84161F
sample 56:
time = 1300264
flags = 1
data = length 227, hash A47E1789
sample 57:
time = 1323483
flags = 1
data = length 228, hash 869FDFD3
sample 58:
time = 1346702
flags = 1
data = length 233, hash 272ECE2
sample 59:
time = 1369921
flags = 1
data = length 227, hash DB6B9618
sample 60:
time = 1393140
flags = 1
data = length 212, hash 63214325
sample 61:
time = 1416359
flags = 1
data = length 221, hash 9BA588A1
sample 62:
time = 1439578
flags = 1
data = length 225, hash 21EFD50C
sample 63:
time = 1462797
flags = 1
data = length 231, hash F3AD0BF
sample 64:
time = 1486016
flags = 1
data = length 224, hash 822C9210
sample 65:
time = 1509235
flags = 1
data = length 195, hash D4EF53EE
sample 66:
time = 1532454
flags = 1
data = length 195, hash A816647A
sample 67:
time = 1555673
flags = 1
data = length 184, hash 9A2B7E6
sample 68:
time = 1578892
flags = 1
data = length 210, hash 956E3600
sample 69:
time = 1602111
flags = 1
data = length 234, hash 35CFDA0A
sample 70:
time = 1625330
flags = 1
data = length 239, hash 9E15AC1E
sample 71:
time = 1648549
flags = 1
data = length 228, hash F3B70641
sample 72:
time = 1671768
flags = 1
data = length 237, hash 124E3194
sample 73:
time = 1694987
flags = 1
data = length 231, hash 950CD7C8
sample 74:
time = 1718206
flags = 1
data = length 236, hash A12E49AF
sample 75:
time = 1741425
flags = 1
data = length 242, hash 43BC9C24
sample 76:
time = 1764644
flags = 1
data = length 241, hash DCF0B17
sample 77:
time = 1787863
flags = 1
data = length 251, hash C0B99968
sample 78:
time = 1811082
flags = 1
data = length 245, hash 9B38ED1C
sample 79:
time = 1834301
flags = 1
data = length 238, hash 1BA69079
sample 80:
time = 1857520
flags = 1
data = length 233, hash 44C8C6BF
sample 81:
time = 1880739
flags = 1
data = length 231, hash EABBEE02
sample 82:
time = 1903958
flags = 1
data = length 226, hash D09C44FB
sample 83:
time = 1927177
flags = 1
data = length 235, hash BE6A6608
sample 84:
time = 1950396
flags = 1
data = length 235, hash 2735F454
sample 85:
time = 1973615
flags = 1
data = length 238, hash B160DFE7
sample 86:
time = 1996834
flags = 1
data = length 232, hash 1B217D2E
sample 87:
time = 2020053
flags = 1
data = length 251, hash D1C14CEA
sample 88:
time = 2043272
flags = 1
data = length 256, hash 97C87F08
sample 89:
time = 2066491
flags = 1
data = length 237, hash 6645DB3
sample 90:
time = 2089710
flags = 1
data = length 235, hash 727A1C82
sample 91:
time = 2112929
flags = 1
data = length 234, hash 5015F8B5
sample 92:
time = 2136148
flags = 1
data = length 241, hash 9102144B
sample 93:
time = 2159367
flags = 1
data = length 224, hash 64E0D807
sample 94:
time = 2182586
flags = 1
data = length 228, hash 1922B852
sample 95:
time = 2205805
flags = 1
data = length 224, hash 953502D8
sample 96:
time = 2229024
flags = 1
data = length 214, hash 92B87FE7
sample 97:
time = 2252243
flags = 1
data = length 213, hash BB0C8D86
sample 98:
time = 2275462
flags = 1
data = length 206, hash 9AD21017
sample 99:
time = 2298681
flags = 1
data = length 209, hash C479FE94
sample 100:
time = 2321900
flags = 1
data = length 220, hash 3033DCE1
sample 101:
time = 2345119
flags = 1
data = length 217, hash 7D589C94
sample 102:
time = 2368338
flags = 1
data = length 216, hash AAF6C183
sample 103:
time = 2391557
flags = 1
data = length 206, hash 1EE1207F
sample 104:
time = 2414776
flags = 1
data = length 204, hash 4BEB1210
sample 105:
time = 2437995
flags = 1
data = length 213, hash 21A841C9
sample 106:
time = 2461214
flags = 1
data = length 207, hash B80B0424
sample 107:
time = 2484433
flags = 1
data = length 212, hash 4785A1C3
sample 108:
time = 2507652
flags = 1
data = length 205, hash 59BF7229
sample 109:
time = 2530871
flags = 1
data = length 208, hash FA313DDE
sample 110:
time = 2554090
flags = 1
data = length 211, hash 190D85FD
sample 111:
time = 2577309
flags = 1
data = length 211, hash BA050052
sample 112:
time = 2600528
flags = 1
data = length 211, hash F3080F10
sample 113:
time = 2623747
flags = 1
data = length 210, hash F41B7BE7
sample 114:
time = 2646966
flags = 1
data = length 207, hash 2176C97E
sample 115:
time = 2670185
flags = 1
data = length 220, hash 32087455
sample 116:
time = 2693404
flags = 1
data = length 213, hash 4E5649A8
sample 117:
time = 2716623
flags = 1
data = length 213, hash 5F12FDCF
sample 118:
time = 2739842
flags = 1
data = length 204, hash 1E895C2A
sample 119:
time = 2763061
flags = 1
data = length 219, hash 45382270
sample 120:
time = 2786280
flags = 1
data = length 205, hash D66C6A1D
sample 121:
time = 2809499
flags = 1
data = length 204, hash 467AD01F
sample 122:
time = 2832718
flags = 1
data = length 211, hash F0435574
sample 123:
time = 2855937
flags = 1
data = length 206, hash 8C96B75F
sample 124:
time = 2879156
flags = 1
data = length 200, hash 82553248
sample 125:
time = 2902375
flags = 1
data = length 180, hash 1E51E6CE
sample 126:
time = 2925594
flags = 1
data = length 196, hash 33151DC4
sample 127:
time = 2948813
flags = 1
data = length 197, hash 1E62A7D6
sample 128:
time = 2972032
flags = 1
data = length 206, hash 6A6C4CC9
sample 129:
time = 2995251
flags = 1
data = length 209, hash A72FABAA
sample 130:
time = 3018470
flags = 1
data = length 217, hash BA33B985
sample 131:
time = 3041689
flags = 1
data = length 235, hash 9919CFD9
sample 132:
time = 3064908
flags = 1
data = length 236, hash A22C7267
sample 133:
time = 3088127
flags = 1
data = length 213, hash 3D57C901
sample 134:
time = 3111346
flags = 1
data = length 205, hash 47F68FDE
sample 135:
time = 3134565
flags = 1
data = length 210, hash 9A756E9C
sample 136:
time = 3157784
flags = 1
data = length 210, hash BD45C31F
sample 137:
time = 3181003
flags = 1
data = length 207, hash 8774FF7B
sample 138:
time = 3204222
flags = 1
data = length 149, hash 4678C0E5
sample 139:
time = 3227441
flags = 1
data = length 161, hash E991035D
sample 140:
time = 3250660
flags = 1
data = length 197, hash C3013689
sample 141:
time = 3273879
flags = 1
data = length 208, hash E6C0237
sample 142:
time = 3297098
flags = 1
data = length 232, hash A330F188
sample 143:
time = 3320317
flags = 1
data = length 174, hash 2B69C34E
track 1:
total output bytes = 141
sample count = 2
format 0:
id = 1
sampleMimeType = application/id3
sample 0:
time = 0
flags = 1
data = length 55, hash A7EB51A0
sample 1:
time = 23219
flags = 1
data = length 86, hash 3FA72D40
tracksEnded = true
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment