@ -1123,10 +1123,10 @@ static int load_input_picture(MpegEncContext *s, const AVFrame *pic_arg)
Picture * pic = NULL ;
Picture * pic = NULL ;
int64_t pts ;
int64_t pts ;
int i , display_picture_number = 0 , ret ;
int i , display_picture_number = 0 , ret ;
int encoding_delay = s - > max_b_frames ? s - > max_b_frames :
int encoding_delay = s - > max_b_frames ? s - > max_b_frames
( s - > low_delay ? 0 : 1 ) ;
: ( s - > low_delay ? 0 : 1 ) ;
int flush_offset = 1 ;
int direct = 1 ;
int direct = 1 ;
int shift = 1 ;
if ( pic_arg ) {
if ( pic_arg ) {
pts = pic_arg - > pts ;
pts = pic_arg - > pts ;
@ -1249,15 +1249,19 @@ static int load_input_picture(MpegEncContext *s, const AVFrame *pic_arg)
} else {
} else {
/* Flushing: When we have not received enough input frames,
/* Flushing: When we have not received enough input frames,
* ensure s - > input_picture [ 0 ] contains the first picture */
* ensure s - > input_picture [ 0 ] contains the first picture */
for ( shift = 0 ; shift < encoding_delay + 1 ; shift + + )
for ( flush_offset = 0 ; flush_offset < encoding_delay + 1 ; flush_offset + + )
if ( s - > input_picture [ shift ] ) break ;
if ( s - > input_picture [ flush_offset ] )
if ( shift < = 1 ) shift = 1 ;
break ;
else encoding_delay = encoding_delay - shift + 1 ;
if ( flush_offset < = 1 )
flush_offset = 1 ;
else
encoding_delay = encoding_delay - flush_offset + 1 ;
}
}
/* shift buffer entries */
/* shift buffer entries */
for ( i = shift ; i < MAX_PICTURE_COUNT /*s->encoding_delay + 1*/ ; i + + )
for ( i = flush_offse t; i < MAX_PICTURE_COUNT /*s->encoding_delay + 1*/ ; i + + )
s - > input_picture [ i - shif t] = s - > input_picture [ i ] ;
s - > input_picture [ i - flush_offse t] = s - > input_picture [ i ] ;
s - > input_picture [ encoding_delay ] = ( Picture * ) pic ;
s - > input_picture [ encoding_delay ] = ( Picture * ) pic ;