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:
parent
48ea5433c8
commit
34ec084b84
@ -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;
|
||||||
|
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user