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
05fb2111
authored
Mar 24, 2020
by
olly
Committed by
Oliver Woodman
Mar 25, 2020
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
WAV: Don't read past data end position
Issue: #7129 PiperOrigin-RevId: 302660343
parent
134df9fb
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
17 additions
and
5 deletions
RELEASENOTES.md
library/extractor/src/main/java/com/google/android/exoplayer2/extractor/wav/WavExtractor.java
library/extractor/src/test/java/com/google/android/exoplayer2/extractor/wav/WavExtractorTest.java
testdata/src/test/assets/wav/sample_with_trailing_bytes.wav
RELEASENOTES.md
View file @
05fb2111
...
@@ -99,6 +99,8 @@
...
@@ -99,6 +99,8 @@
costly on large files.
costly on large files.
*
MP4: Store the Android capture frame rate only in
`Format.metadata`
.
*
MP4: Store the Android capture frame rate only in
`Format.metadata`
.
`Format.frameRate`
now stores the calculated frame rate.
`Format.frameRate`
now stores the calculated frame rate.
*
WAV: Fix failure to play WAV files that contain trailing non-media bytes
(
[
#7129
](
https://github.com/google/ExoPlayer/issues/7129
)
)
*
Testing
*
Testing
*
Upgrade Truth dependency from 0.44 to 1.0.
*
Upgrade Truth dependency from 0.44 to 1.0.
*
Upgrade to JUnit 4.13-rc-2.
*
Upgrade to JUnit 4.13-rc-2.
...
...
library/extractor/src/main/java/com/google/android/exoplayer2/extractor/wav/WavExtractor.java
View file @
05fb2111
...
@@ -252,14 +252,14 @@ public final class WavExtractor implements Extractor {
...
@@ -252,14 +252,14 @@ public final class WavExtractor implements Extractor {
@Override
@Override
public
boolean
sampleData
(
ExtractorInput
input
,
long
bytesLeft
)
throws
IOException
{
public
boolean
sampleData
(
ExtractorInput
input
,
long
bytesLeft
)
throws
IOException
{
// Write sample data until we've reached the target sample size, or the end of the data.
// Write sample data until we've reached the target sample size, or the end of the data.
boolean
endOfSampleData
=
bytesLeft
==
0
;
while
(
bytesLeft
>
0
&&
pendingOutputBytes
<
targetSampleSizeBytes
)
{
while
(!
endOfSampleData
&&
pendingOutputBytes
<
targetSampleSizeBytes
)
{
int
bytesToRead
=
(
int
)
Math
.
min
(
targetSampleSizeBytes
-
pendingOutputBytes
,
bytesLeft
);
int
bytesToRead
=
(
int
)
Math
.
min
(
targetSampleSizeBytes
-
pendingOutputBytes
,
bytesLeft
);
int
bytesAppended
=
trackOutput
.
sampleData
(
input
,
bytesToRead
,
true
);
int
bytesAppended
=
trackOutput
.
sampleData
(
input
,
bytesToRead
,
true
);
if
(
bytesAppended
==
RESULT_END_OF_INPUT
)
{
if
(
bytesAppended
==
RESULT_END_OF_INPUT
)
{
endOfSampleData
=
true
;
bytesLeft
=
0
;
}
else
{
}
else
{
pendingOutputBytes
+=
bytesAppended
;
pendingOutputBytes
+=
bytesAppended
;
bytesLeft
-=
bytesAppended
;
}
}
}
}
...
@@ -281,7 +281,7 @@ public final class WavExtractor implements Extractor {
...
@@ -281,7 +281,7 @@ public final class WavExtractor implements Extractor {
pendingOutputBytes
=
offset
;
pendingOutputBytes
=
offset
;
}
}
return
endOfSampleData
;
return
bytesLeft
<=
0
;
}
}
}
}
...
...
library/extractor/src/test/java/com/google/android/exoplayer2/extractor/wav/WavExtractorTest.java
View file @
05fb2111
...
@@ -15,6 +15,7 @@
...
@@ -15,6 +15,7 @@
*/
*/
package
com
.
google
.
android
.
exoplayer2
.
extractor
.
wav
;
package
com
.
google
.
android
.
exoplayer2
.
extractor
.
wav
;
import
androidx.test.core.app.ApplicationProvider
;
import
androidx.test.ext.junit.runners.AndroidJUnit4
;
import
androidx.test.ext.junit.runners.AndroidJUnit4
;
import
com.google.android.exoplayer2.testutil.ExtractorAsserts
;
import
com.google.android.exoplayer2.testutil.ExtractorAsserts
;
import
org.junit.Test
;
import
org.junit.Test
;
...
@@ -30,7 +31,16 @@ public final class WavExtractorTest {
...
@@ -30,7 +31,16 @@ public final class WavExtractorTest {
}
}
@Test
@Test
public
void
sampleImaAdpcm
()
throws
Exception
{
public
void
sample_withTrailingBytes_extractsSameData
()
throws
Exception
{
ExtractorAsserts
.
assertBehavior
(
WavExtractor:
:
new
,
"wav/sample_with_trailing_bytes.wav"
,
ApplicationProvider
.
getApplicationContext
(),
/* dumpFilesPrefix= */
"wav/sample.wav"
);
}
@Test
public
void
sample_imaAdpcm
()
throws
Exception
{
ExtractorAsserts
.
assertBehavior
(
WavExtractor:
:
new
,
"wav/sample_ima_adpcm.wav"
);
ExtractorAsserts
.
assertBehavior
(
WavExtractor:
:
new
,
"wav/sample_ima_adpcm.wav"
);
}
}
}
}
testdata/src/test/assets/wav/sample_with_trailing_bytes.wav
0 → 100644
View file @
05fb2111
No preview for this file type
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