mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
10l (fix reordering when B-frames are not present)
Originally committed as revision 4004 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
2f944356bf
commit
a18030bb62
@ -6310,7 +6310,8 @@ static int decode_nal_units(H264Context *h, uint8_t *buf, int buf_size){
|
|||||||
if(s->flags& CODEC_FLAG_LOW_DELAY)
|
if(s->flags& CODEC_FLAG_LOW_DELAY)
|
||||||
s->low_delay=1;
|
s->low_delay=1;
|
||||||
|
|
||||||
avctx->has_b_frames= !s->low_delay;
|
if(avctx->has_b_frames < 2)
|
||||||
|
avctx->has_b_frames= !s->low_delay;
|
||||||
break;
|
break;
|
||||||
case NAL_PPS:
|
case NAL_PPS:
|
||||||
init_get_bits(&s->gb, ptr, bit_length);
|
init_get_bits(&s->gb, ptr, bit_length);
|
||||||
@ -6470,6 +6471,9 @@ static int decode_frame(AVCodecContext *avctx,
|
|||||||
}
|
}
|
||||||
if(cur->reference == 0)
|
if(cur->reference == 0)
|
||||||
cur->reference = 1;
|
cur->reference = 1;
|
||||||
|
for(i=0; h->delayed_pic[i]; i++)
|
||||||
|
if(h->delayed_pic[i]->key_frame)
|
||||||
|
h->delayed_output_poc = -1;
|
||||||
if(pics > FFMAX(1, s->avctx->has_b_frames)){
|
if(pics > FFMAX(1, s->avctx->has_b_frames)){
|
||||||
if(out->reference == 1)
|
if(out->reference == 1)
|
||||||
out->reference = 0;
|
out->reference = 0;
|
||||||
@ -6477,10 +6481,6 @@ static int decode_frame(AVCodecContext *avctx,
|
|||||||
h->delayed_pic[i] = h->delayed_pic[i+1];
|
h->delayed_pic[i] = h->delayed_pic[i+1];
|
||||||
}
|
}
|
||||||
|
|
||||||
for(i=0; h->delayed_pic[i]; i++)
|
|
||||||
if(h->delayed_pic[i]->key_frame)
|
|
||||||
h->delayed_output_poc = -1;
|
|
||||||
|
|
||||||
if((h->delayed_output_poc >=0 && h->delayed_output_poc > cur->poc)
|
if((h->delayed_output_poc >=0 && h->delayed_output_poc > cur->poc)
|
||||||
|| (s->low_delay && (cur->pict_type == B_TYPE
|
|| (s->low_delay && (cur->pict_type == B_TYPE
|
||||||
|| (!h->sps.gaps_in_frame_num_allowed_flag
|
|| (!h->sps.gaps_in_frame_num_allowed_flag
|
||||||
|
Loading…
Reference in New Issue
Block a user