[FFmpeg-cvslog] h2645_parse: only read avc length code at the correct position
Hendrik Leppkes
git at videolan.org
Thu Aug 25 05:21:44 EEST 2016
ffmpeg | branch: release/3.1 | Hendrik Leppkes <h.leppkes at gmail.com> | Thu Jul 7 20:18:26 2016 +0200| [fabc1c9e567df696c87b557bc156e92420b26fa0] | committer: Michael Niedermayer
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.
(cherry picked from commit c3e9b098e12b8932693361625d4a69bc30583d9a)
Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=fabc1c9e567df696c87b557bc156e92420b26fa0
---
libavcodec/h2645_parse.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/libavcodec/h2645_parse.c b/libavcodec/h2645_parse.c
index 4d18de8..e92e38a 100644
--- a/libavcodec/h2645_parse.c
+++ b/libavcodec/h2645_parse.c
@@ -259,7 +259,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];
@@ -272,6 +272,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;
More information about the ffmpeg-cvslog
mailing list