1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-11-21 10:55:51 +02:00

lavc/h264: move history parsing variable to H264ParseContext

This makes h264_find_frame_end() not depend on H264Context anymore.
This commit is contained in:
Clément Bœsch 2016-06-19 12:38:28 +02:00
parent 48ea5433c8
commit 34ec084b84
2 changed files with 9 additions and 11 deletions

View File

@ -684,10 +684,6 @@ typedef struct H264Context {
int cur_bit_depth_luma; int cur_bit_depth_luma;
int16_t slice_row[MAX_SLICES]; ///< to detect when MAX_SLICES is too low int16_t slice_row[MAX_SLICES]; ///< to detect when MAX_SLICES is too low
uint8_t parse_history[6];
int parse_history_count;
int parse_last_mb;
int enable_er; int enable_er;
H264SEIContext sei; H264SEIContext sei;

View File

@ -55,13 +55,15 @@ typedef struct H264ParseContext {
int is_avc; int is_avc;
int nal_length_size; int nal_length_size;
int got_first; int got_first;
uint8_t parse_history[6];
int parse_history_count;
int parse_last_mb;
} H264ParseContext; } H264ParseContext;
static int h264_find_frame_end(H264ParseContext *p, const uint8_t *buf, static int h264_find_frame_end(H264ParseContext *p, const uint8_t *buf,
int buf_size, void *logctx) int buf_size, void *logctx)
{ {
H264Context *h = &p->h;
int i, j; int i, j;
uint32_t state; uint32_t state;
ParseContext *pc = &p->pc; ParseContext *pc = &p->pc;
@ -115,15 +117,15 @@ static int h264_find_frame_end(H264ParseContext *p, const uint8_t *buf,
} }
state = 7; state = 7;
} else { } else {
h->parse_history[h->parse_history_count++]= buf[i]; p->parse_history[p->parse_history_count++] = buf[i];
if (h->parse_history_count>5) { if (p->parse_history_count > 5) {
unsigned int mb, last_mb= h->parse_last_mb; unsigned int mb, last_mb = p->parse_last_mb;
GetBitContext gb; GetBitContext gb;
init_get_bits(&gb, h->parse_history, 8*h->parse_history_count); init_get_bits(&gb, p->parse_history, 8*p->parse_history_count);
h->parse_history_count=0; p->parse_history_count = 0;
mb= get_ue_golomb_long(&gb); mb= get_ue_golomb_long(&gb);
h->parse_last_mb= mb; p->parse_last_mb = mb;
if (pc->frame_start_found) { if (pc->frame_start_found) {
if (mb <= last_mb) if (mb <= last_mb)
goto found; goto found;