diff options
-rw-r--r-- | src/video_dec/libvdpau/h264_parser.c | 5 | ||||
-rw-r--r-- | src/video_dec/libvdpau/vdpau_h264.c | 1 |
2 files changed, 6 insertions, 0 deletions
diff --git a/src/video_dec/libvdpau/h264_parser.c b/src/video_dec/libvdpau/h264_parser.c index d26d53f0c..30c793975 100644 --- a/src/video_dec/libvdpau/h264_parser.c +++ b/src/video_dec/libvdpau/h264_parser.c @@ -1562,6 +1562,11 @@ void reset_parser(struct h264_parser *parser) parser->prev_top_field_order_cnt = 0; parser->curr_pic_num = 0; parser->flag_mask = 0; + + if(parser->pic != NULL) { + free_coded_picture(parser->pic); + parser->pic = create_coded_picture(); + } } void free_parser(struct h264_parser *parser) diff --git a/src/video_dec/libvdpau/vdpau_h264.c b/src/video_dec/libvdpau/vdpau_h264.c index e20ac2ac9..28d455f39 100644 --- a/src/video_dec/libvdpau/vdpau_h264.c +++ b/src/video_dec/libvdpau/vdpau_h264.c @@ -702,6 +702,7 @@ static void vdpau_h264_flush (video_decoder_t *this_gen) { "h264 flush, draw pts: %lld\n", decoded_pic->img->pts); decoded_pic->img->draw(decoded_pic->img, this->stream); dpb_set_output_picture(&(this->nal_parser->dpb), decoded_pic); + this->last_img = NULL; } dpb_free_all(&this->nal_parser->dpb); this->reset = VO_NEW_SEQUENCE_FLAG; |