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
53f50f7c
authored
Oct 06, 2020
by
kimvde
Committed by
kim-vde
Oct 06, 2020
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Ignore negative payload size in TS PesReader
Issue: #8005 PiperOrigin-RevId: 335625992
parent
39277ebe
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
15 additions
and
9 deletions
RELEASENOTES.md
library/extractor/src/main/java/com/google/android/exoplayer2/extractor/ts/PesReader.java
RELEASENOTES.md
View file @
53f50f7c
...
...
@@ -44,6 +44,8 @@
*
Add TS extractor parameter to configure the number of bytes in which
to search for a timestamp to determine the duration and to seek.
(
[
#7988
](
https://github.com/google/ExoPlayer/issues/7988
)
).
*
Ignore negative payload size in PES packets
(
[
#8005
](
https://github.com/google/ExoPlayer/issues/8005
)
).
*
IMA extension:
*
Fix position reporting after fetch errors
(
[
#7956
](
https://github.com/google/ExoPlayer/issues/7956
)
).
...
...
library/extractor/src/main/java/com/google/android/exoplayer2/extractor/ts/PesReader.java
View file @
53f50f7c
...
...
@@ -97,11 +97,11 @@ public final class PesReader implements TsPayloadReader {
Log
.
w
(
TAG
,
"Unexpected start indicator reading extended header"
);
break
;
case
STATE_READING_BODY:
// If payloadSize
== -1
then the length of the previous packet was unspecified, and so
// we only know that it's finished now that we've seen the start of the next one. This
//
is expected. If payloadSize != -1, then the length of the previous packet was known,
//
but
we didn't receive that amount of data. This is not expected.
if
(
payloadSize
!=
-
1
)
{
// If payloadSize
is unset
then the length of the previous packet was unspecified, and so
// we only know that it's finished now that we've seen the start of the next one. This
is
//
expected. If payloadSize is set, then the length of the previous packet was known, but
// we didn't receive that amount of data. This is not expected.
if
(
payloadSize
!=
C
.
LENGTH_UNSET
)
{
Log
.
w
(
TAG
,
"Unexpected start indicator: expected "
+
payloadSize
+
" more bytes"
);
}
// Either way, notify the reader that it has now finished.
...
...
@@ -136,13 +136,13 @@ public final class PesReader implements TsPayloadReader {
break
;
case
STATE_READING_BODY:
readLength
=
data
.
bytesLeft
();
int
padding
=
payloadSize
==
-
1
?
0
:
readLength
-
payloadSize
;
int
padding
=
payloadSize
==
C
.
LENGTH_UNSET
?
0
:
readLength
-
payloadSize
;
if
(
padding
>
0
)
{
readLength
-=
padding
;
data
.
setLimit
(
data
.
getPosition
()
+
readLength
);
}
reader
.
consume
(
data
);
if
(
payloadSize
!=
-
1
)
{
if
(
payloadSize
!=
C
.
LENGTH_UNSET
)
{
payloadSize
-=
readLength
;
if
(
payloadSize
==
0
)
{
reader
.
packetFinished
();
...
...
@@ -191,7 +191,7 @@ public final class PesReader implements TsPayloadReader {
int
startCodePrefix
=
pesScratch
.
readBits
(
24
);
if
(
startCodePrefix
!=
0x000001
)
{
Log
.
w
(
TAG
,
"Unexpected start code prefix: "
+
startCodePrefix
);
payloadSize
=
-
1
;
payloadSize
=
C
.
LENGTH_UNSET
;
return
false
;
}
...
...
@@ -208,10 +208,14 @@ public final class PesReader implements TsPayloadReader {
extendedHeaderLength
=
pesScratch
.
readBits
(
8
);
if
(
packetLength
==
0
)
{
payloadSize
=
-
1
;
payloadSize
=
C
.
LENGTH_UNSET
;
}
else
{
payloadSize
=
packetLength
+
6
/* packetLength does not include the first 6 bytes */
-
HEADER_SIZE
-
extendedHeaderLength
;
if
(
payloadSize
<
0
)
{
Log
.
w
(
TAG
,
"Found negative packet payload size: "
+
payloadSize
);
payloadSize
=
C
.
LENGTH_UNSET
;
}
}
return
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