mirror of https://git.ffmpeg.org/ffmpeg.git
avcodec/mpegvideo_enc: Factor setting length of B frame chain out
It already avoids a goto and will be useful in the future to be able to specify each functions tasks and obligations. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
parent
17501b2267
commit
17b5fc2e51
|
@ -1472,13 +1472,15 @@ fail:
|
|||
return best_b_count;
|
||||
}
|
||||
|
||||
static int select_input_picture(MpegEncContext *s)
|
||||
/**
|
||||
* Determines whether an input picture is discarded or not
|
||||
* and if not determines the length of the next chain of B frames
|
||||
* and puts these pictures (including the P frame) into
|
||||
* reordered_input_picture.
|
||||
*/
|
||||
static int set_bframe_chain_length(MpegEncContext *s)
|
||||
{
|
||||
int i, ret;
|
||||
|
||||
for (int i = 1; i <= MAX_B_FRAMES; i++)
|
||||
s->reordered_input_picture[i - 1] = s->reordered_input_picture[i];
|
||||
s->reordered_input_picture[MAX_B_FRAMES] = NULL;
|
||||
int i;
|
||||
|
||||
/* set next picture type & ordering */
|
||||
if (!s->reordered_input_picture[0] && s->input_picture[0]) {
|
||||
|
@ -1491,7 +1493,7 @@ static int select_input_picture(MpegEncContext *s)
|
|||
|
||||
ff_vbv_update(s, 0);
|
||||
|
||||
goto no_output_pic;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1598,7 +1600,22 @@ static int select_input_picture(MpegEncContext *s)
|
|||
}
|
||||
}
|
||||
}
|
||||
no_output_pic:
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int select_input_picture(MpegEncContext *s)
|
||||
{
|
||||
int ret;
|
||||
|
||||
for (int i = 1; i <= MAX_B_FRAMES; i++)
|
||||
s->reordered_input_picture[i - 1] = s->reordered_input_picture[i];
|
||||
s->reordered_input_picture[MAX_B_FRAMES] = NULL;
|
||||
|
||||
ret = set_bframe_chain_length(s);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
av_frame_unref(s->new_pic);
|
||||
|
||||
if (s->reordered_input_picture[0]) {
|
||||
|
|
Loading…
Reference in New Issue