diff options
Diffstat (limited to 'src/libvdpau/dpb.c')
-rw-r--r-- | src/libvdpau/dpb.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/libvdpau/dpb.c b/src/libvdpau/dpb.c index 5afc93fb6..00f5dca0e 100644 --- a/src/libvdpau/dpb.c +++ b/src/libvdpau/dpb.c @@ -10,6 +10,7 @@ #include <string.h> #include "dpb.h" +#include "nal.h" #include "video_out.h" struct decoded_picture* init_decoded_picture(struct nal_unit *src_nal, @@ -49,12 +50,11 @@ struct decoded_picture* dpb_get_next_out_picture(struct dpb *dpb) do { if (pic->delayed_output && (outpic == NULL || - pic->nal->top_field_order_cnt < outpic->nal->top_field_order_cnt)) + pic->nal->top_field_order_cnt < outpic->nal->top_field_order_cnt || + outpic->nal->nal_unit_type == NAL_SLICE_IDR)) outpic = pic; } while ((pic = pic->next) != NULL); - if(outpic) - printf("OUTPUT: %lld\n", outpic->img->pts); return outpic; } @@ -256,8 +256,9 @@ int dpb_add_picture(struct dpb *dpb, struct decoded_picture *pic, uint32_t num_r i++; if(i>num_ref_frames) { pic->used_for_reference = 0; - if(!pic->delayed_output) + if(!pic->delayed_output) { dpb_remove_picture(dpb, pic); + } pic = last_pic; } last_pic = pic; |