mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-01-05 14:50:25 +00:00
avcodec/h264_refs: remove lost frames instead of disfavoring them
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
33a2b45c2e
commit
649686d89b
@ -75,7 +75,7 @@ static int build_def_list(Picture *def, int def_len,
|
|||||||
int index = 0;
|
int index = 0;
|
||||||
|
|
||||||
while (i[0] < len || i[1] < len) {
|
while (i[0] < len || i[1] < len) {
|
||||||
while (i[0] < len && !(in[i[0]] && (in[i[0]]->reference & sel) && (!in[i[0]]->invalid_gap || sel==3)))
|
while (i[0] < len && !(in[i[0]] && (in[i[0]]->reference & sel)))
|
||||||
i[0]++;
|
i[0]++;
|
||||||
while (i[1] < len && !(in[i[1]] && (in[i[1]]->reference & (sel ^ 3))))
|
while (i[1] < len && !(in[i[1]] && (in[i[1]]->reference & (sel ^ 3))))
|
||||||
i[1]++;
|
i[1]++;
|
||||||
@ -752,6 +752,15 @@ int ff_h264_execute_ref_pic_marking(H264Context *h, MMCO *mmco, int mmco_count)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (i = 0; i<h->short_ref_count; i++) {
|
||||||
|
pic = h->short_ref[i];
|
||||||
|
if (pic->invalid_gap) {
|
||||||
|
int d = (h->cur_pic_ptr->frame_num - pic->frame_num) & ((1 << h->sps.log2_max_frame_num)-1);
|
||||||
|
if (d > h->sps.ref_frame_count)
|
||||||
|
remove_short(h, pic->frame_num, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
print_short_term(h);
|
print_short_term(h);
|
||||||
print_long_term(h);
|
print_long_term(h);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user