summaryrefslogtreecommitdiff
path: root/src/video_dec/libvdpau/h264_parser.c
diff options
context:
space:
mode:
authorJulian Scheel <julian@jusst.de>2010-02-05 12:30:00 +0100
committerJulian Scheel <julian@jusst.de>2010-02-05 12:30:00 +0100
commitb261d83b69692cfa13aada3266f3c832861a48a8 (patch)
tree30e01a3ea0b86e25062e162d37cb28b27d8b4e0c /src/video_dec/libvdpau/h264_parser.c
parent3c039d3b4c3bc24d26cb33c532c587c737564441 (diff)
downloadxine-lib-b261d83b69692cfa13aada3266f3c832861a48a8.tar.gz
xine-lib-b261d83b69692cfa13aada3266f3c832861a48a8.tar.bz2
Fix freeze/crash on seeking
When the parser was reset it did not forget about the last pts, which might cause metronom to freeze. On flush the cached vo_frame_t was kept in case the previously decode produced a 1st field and the decoder was waiting for 2nd field now. As on flush all images are released after drawing this could point to a invalid vo_frame_t
Diffstat (limited to 'src/video_dec/libvdpau/h264_parser.c')
-rw-r--r--src/video_dec/libvdpau/h264_parser.c5
1 files changed, 5 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)