aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2014-07-31 16:25:21 +0200
committerMichael Niedermayer <michaelni@gmx.at>2014-07-31 16:50:32 +0200
commit594b1fa9615f9226722956ef0b49ba697241befb (patch)
treeeebd5b133f4e92f31ec184ffc5bd5ca9f52370a8 /libavcodec
parent7a1262fca37d16b0de5dfc34937b193a2ede8872 (diff)
downloadffmpeg-594b1fa9615f9226722956ef0b49ba697241befb.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.h2
-rw-r--r--libavcodec/h264_parser.c4
2 files changed, 3 insertions, 3 deletions
diff --git a/libavcodec/h264.h b/libavcodec/h264.h
index 228558b6f4..7a6a652d07 100644
--- a/libavcodec/h264.h
+++ b/libavcodec/h264.h
@@ -749,7 +749,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 ea0ab98034..a075bfa987 100644
--- a/libavcodec/h264_parser.c
+++ b/libavcodec/h264_parser.c
@@ -92,7 +92,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;
@@ -120,7 +120,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)