diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2014-07-31 16:25:21 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2014-08-05 04:14:02 +0200 |
commit | cdaf9fb2a054519ecc56339d511863bd46c935b3 (patch) | |
tree | 46e050310b5dc71f0c7aa804b5c80d99f5773c84 /libavcodec | |
parent | cf41ff488978738f2718ab02e940925dd3576134 (diff) | |
download | ffmpeg-cdaf9fb2a054519ecc56339d511863bd46c935b3.tar.gz |
libavcodec/h264_parser: Increase parse_history, fix huge resolutions
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 0782fb6bcb32fe3ab956a99af4cc472ff81da0c2)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/h264.h | 2 | ||||
-rw-r--r-- | libavcodec/h264_parser.c | 4 |
2 files changed, 3 insertions, 3 deletions
diff --git a/libavcodec/h264.h b/libavcodec/h264.h index 4a41fffe66..188e749440 100644 --- a/libavcodec/h264.h +++ b/libavcodec/h264.h @@ -691,7 +691,7 @@ typedef struct H264Context { int16_t slice_row[MAX_SLICES]; ///< to detect when MAX_SLICES is too low - uint8_t parse_history[4]; + uint8_t parse_history[6]; int parse_history_count; int parse_last_mb; uint8_t *edge_emu_buffer; diff --git a/libavcodec/h264_parser.c b/libavcodec/h264_parser.c index 4432871763..416f464acf 100644 --- a/libavcodec/h264_parser.c +++ b/libavcodec/h264_parser.c @@ -91,7 +91,7 @@ static int h264_find_frame_end(H264Context *h, const uint8_t *buf, state = 7; } else { h->parse_history[h->parse_history_count++]= buf[i]; - if (h->parse_history_count>3) { + if (h->parse_history_count>5) { unsigned int mb, last_mb= h->parse_last_mb; GetBitContext gb; @@ -119,7 +119,7 @@ found: pc->frame_start_found = 0; if (h->is_avc) return next_avc; - return i - (state & 5) - 3 * (state > 7); + return i - (state & 5) - 5 * (state > 7); } static int scan_mmco_reset(AVCodecParserContext *s) |