mirror of https://git.ffmpeg.org/ffmpeg.git
Factorize code a little.
Originally committed as revision 12674 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
60080b0805
commit
7f8ef97534
|
@ -2234,16 +2234,16 @@ int ff_mpeg1_find_frame_end(ParseContext *pc, const uint8_t *buf, int buf_size)
|
||||||
return END_NOT_FOUND;
|
return END_NOT_FOUND;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int decode_chunks(AVCodecContext *avctx,
|
||||||
|
AVFrame *picture, int *data_size,
|
||||||
|
const uint8_t *buf, int buf_size);
|
||||||
|
|
||||||
/* handle buffering and image synchronisation */
|
/* handle buffering and image synchronisation */
|
||||||
static int mpeg_decode_frame(AVCodecContext *avctx,
|
static int mpeg_decode_frame(AVCodecContext *avctx,
|
||||||
void *data, int *data_size,
|
void *data, int *data_size,
|
||||||
const uint8_t *buf, int buf_size)
|
const uint8_t *buf, int buf_size)
|
||||||
{
|
{
|
||||||
Mpeg1Context *s = avctx->priv_data;
|
Mpeg1Context *s = avctx->priv_data;
|
||||||
const uint8_t *buf_end;
|
|
||||||
const uint8_t *buf_ptr;
|
|
||||||
uint32_t start_code;
|
|
||||||
int ret, input_size;
|
|
||||||
AVFrame *picture = data;
|
AVFrame *picture = data;
|
||||||
MpegEncContext *s2 = &s->mpeg_enc_ctx;
|
MpegEncContext *s2 = &s->mpeg_enc_ctx;
|
||||||
dprintf(avctx, "fill_buffer\n");
|
dprintf(avctx, "fill_buffer\n");
|
||||||
|
@ -2266,9 +2266,6 @@ static int mpeg_decode_frame(AVCodecContext *avctx,
|
||||||
return buf_size;
|
return buf_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
buf_ptr = buf;
|
|
||||||
buf_end = buf + buf_size;
|
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
if (s->repeat_field % 2 == 1) {
|
if (s->repeat_field % 2 == 1) {
|
||||||
s->repeat_field++;
|
s->repeat_field++;
|
||||||
|
@ -2286,9 +2283,22 @@ static int mpeg_decode_frame(AVCodecContext *avctx,
|
||||||
|
|
||||||
s->slice_count= 0;
|
s->slice_count= 0;
|
||||||
|
|
||||||
|
return decode_chunks(avctx, picture, data_size, buf, buf_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int decode_chunks(AVCodecContext *avctx,
|
||||||
|
AVFrame *picture, int *data_size,
|
||||||
|
const uint8_t *buf, int buf_size)
|
||||||
|
{
|
||||||
|
Mpeg1Context *s = avctx->priv_data;
|
||||||
|
MpegEncContext *s2 = &s->mpeg_enc_ctx;
|
||||||
|
const uint8_t *buf_ptr = buf;
|
||||||
|
const uint8_t *buf_end = buf + buf_size;
|
||||||
|
int ret, input_size;
|
||||||
|
|
||||||
for(;;) {
|
for(;;) {
|
||||||
/* find start next code */
|
/* find start next code */
|
||||||
start_code = -1;
|
uint32_t start_code = -1;
|
||||||
buf_ptr = ff_find_start_code(buf_ptr,buf_end, &start_code);
|
buf_ptr = ff_find_start_code(buf_ptr,buf_end, &start_code);
|
||||||
if (start_code > 0x1ff){
|
if (start_code > 0x1ff){
|
||||||
if(s2->pict_type != FF_B_TYPE || avctx->skip_frame <= AVDISCARD_DEFAULT){
|
if(s2->pict_type != FF_B_TYPE || avctx->skip_frame <= AVDISCARD_DEFAULT){
|
||||||
|
|
Loading…
Reference in New Issue