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
d006f3f4
authored
Jan 31, 2022
by
Dustin
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Beef up readIdx1 tests
parent
9bd93ad9
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
45 additions
and
1 deletions
library/extractor/src/main/java/com/google/android/exoplayer2/extractor/avi/AviExtractor.java
library/extractor/src/test/java/com/google/android/exoplayer2/extractor/avi/AviExtractorTest.java
library/extractor/src/test/java/com/google/android/exoplayer2/extractor/avi/DataHelper.java
library/extractor/src/main/java/com/google/android/exoplayer2/extractor/avi/AviExtractor.java
View file @
d006f3f4
...
@@ -629,6 +629,11 @@ public class AviExtractor implements Extractor {
...
@@ -629,6 +629,11 @@ public class AviExtractor implements Extractor {
chunkHandler
=
aviTrack
;
chunkHandler
=
aviTrack
;
}
}
@VisibleForTesting
(
otherwise
=
VisibleForTesting
.
NONE
)
long
getMoviOffset
()
{
return
moviOffset
;
}
private
static
void
w
(
String
message
)
{
private
static
void
w
(
String
message
)
{
try
{
try
{
Log
.
w
(
TAG
,
message
);
Log
.
w
(
TAG
,
message
);
...
...
library/extractor/src/test/java/com/google/android/exoplayer2/extractor/avi/AviExtractorTest.java
View file @
d006f3f4
...
@@ -266,6 +266,29 @@ public class AviExtractorTest {
...
@@ -266,6 +266,29 @@ public class AviExtractorTest {
}
}
@Test
@Test
public
void
readIdx1_givenBufferToShort
()
throws
IOException
{
final
AviExtractor
aviExtractor
=
setupVideoAviExtractor
();
final
FakeExtractorInput
fakeExtractorInput
=
new
FakeExtractorInput
.
Builder
().
setData
(
new
byte
[
12
]).
build
();
aviExtractor
.
readIdx1
(
fakeExtractorInput
,
12
);
final
FakeExtractorOutput
fakeExtractorOutput
=
(
FakeExtractorOutput
)
aviExtractor
.
output
;
Assert
.
assertTrue
(
fakeExtractorOutput
.
seekMap
instanceof
SeekMap
.
Unseekable
);
}
@Test
public
void
readIdx1_givenBadOffset
()
throws
IOException
{
final
AviExtractor
aviExtractor
=
setupVideoAviExtractor
();
final
int
secs
=
4
;
final
ByteBuffer
idx1
=
DataHelper
.
getIndex
(
secs
,
1
,
(
int
)
aviExtractor
.
getMoviOffset
()
+
4
);
final
FakeExtractorInput
fakeExtractorInput
=
new
FakeExtractorInput
.
Builder
().
setData
(
idx1
.
array
()).
build
();
aviExtractor
.
readIdx1
(
fakeExtractorInput
,
(
int
)
fakeExtractorInput
.
getLength
());
Assert
.
assertEquals
(
0
,
aviExtractor
.
aviSeekMap
.
seekOffset
);
}
@Test
public
void
alignPositionHolder_givenOddPosition
()
{
public
void
alignPositionHolder_givenOddPosition
()
{
final
FakeExtractorInput
fakeExtractorInput
=
new
FakeExtractorInput
.
Builder
().
final
FakeExtractorInput
fakeExtractorInput
=
new
FakeExtractorInput
.
Builder
().
setData
(
new
byte
[
4
]).
build
();
setData
(
new
byte
[
4
]).
build
();
...
@@ -471,4 +494,12 @@ public class AviExtractorTest {
...
@@ -471,4 +494,12 @@ public class AviExtractorTest {
aviExtractor
.
setAviTracks
(
new
AviTrack
[]{
null
,
aviTrack
});
aviExtractor
.
setAviTracks
(
new
AviTrack
[]{
null
,
aviTrack
});
Assert
.
assertSame
(
aviTrack
,
aviExtractor
.
getAviTrack
(
aviTrack
.
chunkId
));
Assert
.
assertSame
(
aviTrack
,
aviExtractor
.
getAviTrack
(
aviTrack
.
chunkId
));
}
}
@Test
public
void
release
()
{
//Shameless way to get 100% method coverage
final
AviExtractor
aviExtractor
=
new
AviExtractor
();
aviExtractor
.
release
();
//Nothing to assert on a method that does nothing
}
}
}
\ No newline at end of file
library/extractor/src/test/java/com/google/android/exoplayer2/extractor/avi/DataHelper.java
View file @
d006f3f4
...
@@ -129,10 +129,17 @@ public class DataHelper {
...
@@ -129,10 +129,17 @@ public class DataHelper {
* @param keyFrameRate Key frame rate 1= every frame, 2=every other, ...
* @param keyFrameRate Key frame rate 1= every frame, 2=every other, ...
*/
*/
public
static
ByteBuffer
getIndex
(
final
int
secs
,
final
int
keyFrameRate
)
{
public
static
ByteBuffer
getIndex
(
final
int
secs
,
final
int
keyFrameRate
)
{
return
getIndex
(
secs
,
keyFrameRate
,
4
);
}
/**
*
* @param secs Number of seconds
* @param keyFrameRate Key frame rate 1= every frame, 2=every other, ...
*/
public
static
ByteBuffer
getIndex
(
final
int
secs
,
final
int
keyFrameRate
,
int
offset
)
{
final
int
videoFrames
=
secs
*
FPS
;
final
int
videoFrames
=
secs
*
FPS
;
final
int
videoChunkId
=
AviTrack
.
getVideoChunkId
(
0
);
final
int
videoChunkId
=
AviTrack
.
getVideoChunkId
(
0
);
final
int
audioChunkId
=
AviTrack
.
getAudioChunkId
(
1
);
final
int
audioChunkId
=
AviTrack
.
getAudioChunkId
(
1
);
int
offset
=
4
;
final
ByteBuffer
byteBuffer
=
AviExtractor
.
allocate
((
videoFrames
+
videoFrames
*
AUDIO_PER_VIDEO
)
*
16
);
final
ByteBuffer
byteBuffer
=
AviExtractor
.
allocate
((
videoFrames
+
videoFrames
*
AUDIO_PER_VIDEO
)
*
16
);
for
(
int
v
=
0
;
v
<
videoFrames
;
v
++)
{
for
(
int
v
=
0
;
v
<
videoFrames
;
v
++)
{
...
...
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