|
|
|
@@ -3567,20 +3567,20 @@ static int execute_ref_pic_marking(H264Context *h, MMCO *mmco, int mmco_count){ |
|
|
|
"in complementary field pair " |
|
|
|
"(first field is long term)\n"); |
|
|
|
} else { |
|
|
|
pic= remove_short(h, s->current_picture_ptr->frame_num); |
|
|
|
if(pic){ |
|
|
|
unreference_pic(h, pic, 0); |
|
|
|
av_log(h->s.avctx, AV_LOG_ERROR, "illegal short term buffer state detected\n"); |
|
|
|
} |
|
|
|
pic= remove_short(h, s->current_picture_ptr->frame_num); |
|
|
|
if(pic){ |
|
|
|
unreference_pic(h, pic, 0); |
|
|
|
av_log(h->s.avctx, AV_LOG_ERROR, "illegal short term buffer state detected\n"); |
|
|
|
} |
|
|
|
|
|
|
|
if(h->short_ref_count) |
|
|
|
memmove(&h->short_ref[1], &h->short_ref[0], h->short_ref_count*sizeof(Picture*)); |
|
|
|
if(h->short_ref_count) |
|
|
|
memmove(&h->short_ref[1], &h->short_ref[0], h->short_ref_count*sizeof(Picture*)); |
|
|
|
|
|
|
|
h->short_ref[0]= s->current_picture_ptr; |
|
|
|
h->short_ref[0]->long_ref=0; |
|
|
|
h->short_ref_count++; |
|
|
|
s->current_picture_ptr->reference |= s->picture_structure; |
|
|
|
} |
|
|
|
h->short_ref[0]= s->current_picture_ptr; |
|
|
|
h->short_ref[0]->long_ref=0; |
|
|
|
h->short_ref_count++; |
|
|
|
s->current_picture_ptr->reference |= s->picture_structure; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (h->long_ref_count + h->short_ref_count > h->sps.ref_frame_count){ |
|
|
|
|