From: Sebastian Dröge Date: Mon, 12 Nov 2012 09:10:15 +0000 (+0100) Subject: pngdec: Keep the input state in reset() X-Git-Tag: 1.19.3~509^2~6358 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f37fca4e002683df7393354a0d51a96abe4c3d38;p=platform%2Fupstream%2Fgstreamer.git pngdec: Keep the input state in reset() It's still valid after a flush and we might not get a new one. --- diff --git a/ext/libpng/gstpngdec.c b/ext/libpng/gstpngdec.c index d6e53ed..b03ad83 100644 --- a/ext/libpng/gstpngdec.c +++ b/ext/libpng/gstpngdec.c @@ -417,17 +417,6 @@ gst_pngdec_decide_allocation (GstVideoDecoder * bdec, GstQuery * query) return TRUE; } - -/* Clean up the libpng structures */ -static gboolean -gst_pngdec_reset (GstVideoDecoder * decoder, gboolean hard) -{ - gst_pngdec_stop (decoder); - gst_pngdec_start (decoder); - - return TRUE; -} - static gboolean gst_pngdec_libpng_init (GstPngDec * pngdec) { @@ -476,20 +465,10 @@ endinfo_failed: } } -static gboolean -gst_pngdec_start (GstVideoDecoder * decoder) -{ - GstPngDec *pngdec = (GstPngDec *) decoder; - - gst_pngdec_libpng_init (pngdec); - - return TRUE; -} -static gboolean -gst_pngdec_stop (GstVideoDecoder * decoder) +static void +gst_pngdec_libpng_clear (GstPngDec * pngdec) { - GstPngDec *pngdec = (GstPngDec *) decoder; png_infopp info = NULL, endinfo = NULL; GST_LOG ("cleaning up libpng structures"); @@ -510,6 +489,24 @@ gst_pngdec_stop (GstVideoDecoder * decoder) } pngdec->color_type = -1; +} + +static gboolean +gst_pngdec_start (GstVideoDecoder * decoder) +{ + GstPngDec *pngdec = (GstPngDec *) decoder; + + gst_pngdec_libpng_init (pngdec); + + return TRUE; +} + +static gboolean +gst_pngdec_stop (GstVideoDecoder * decoder) +{ + GstPngDec *pngdec = (GstPngDec *) decoder; + + gst_pngdec_libpng_clear (pngdec); if (pngdec->input_state) { gst_video_codec_state_unref (pngdec->input_state); @@ -522,3 +519,13 @@ gst_pngdec_stop (GstVideoDecoder * decoder) return TRUE; } + +/* Clean up the libpng structures */ +static gboolean +gst_pngdec_reset (GstVideoDecoder * decoder, gboolean hard) +{ + gst_pngdec_libpng_clear (decoder); + gst_pngdec_libpng_init (decoder); + + return TRUE; +}