summaryrefslogtreecommitdiffstats
path: root/libavcodec/h2645_parse.c
diff options
context:
space:
mode:
authorHendrik Leppkes <h.leppkes@gmail.com>2016-07-07 20:18:26 +0200
committerHendrik Leppkes <h.leppkes@gmail.com>2016-07-08 15:20:16 +0200
commitc3e9b098e12b8932693361625d4a69bc30583d9a (patch)
treeb316c3c862c40149fddb71b13470263aed2acc59 /libavcodec/h2645_parse.c
parentb450b82514e9eaf5bc59759e814bfc2b8e2d864d (diff)
downloadffmpeg-streaming-c3e9b098e12b8932693361625d4a69bc30583d9a.zip
ffmpeg-streaming-c3e9b098e12b8932693361625d4a69bc30583d9a.tar.gz
h2645_parse: only read avc length code at the correct position
Reading it from any other position would result in a wrong size being read, instead fallback to the re-sync mechanic in the else clause.
Diffstat (limited to 'libavcodec/h2645_parse.c')
-rw-r--r--libavcodec/h2645_parse.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/libavcodec/h2645_parse.c b/libavcodec/h2645_parse.c
index 9979b63..26f2e85 100644
--- a/libavcodec/h2645_parse.c
+++ b/libavcodec/h2645_parse.c
@@ -258,7 +258,7 @@ int ff_h2645_packet_split(H2645Packet *pkt, const uint8_t *buf, int length,
int extract_length = 0;
int skip_trailing_zeros = 1;
- if (buf >= next_avc) {
+ if (buf == next_avc) {
int i;
for (i = 0; i < nal_length_size; i++)
extract_length = (extract_length << 8) | buf[i];
@@ -271,6 +271,9 @@ int ff_h2645_packet_split(H2645Packet *pkt, const uint8_t *buf, int length,
}
next_avc = buf + extract_length;
} else {
+ if (buf > next_avc)
+ av_log(logctx, AV_LOG_WARNING, "Exceeded next NALFF position, re-syncing.\n");
+
/* search start code */
while (buf[0] != 0 || buf[1] != 0 || buf[2] != 1) {
++buf;
OpenPOWER on IntegriCloud