diff options
-rw-r--r-- | ext/hermes/gstcolorspace.c | 14 | ||||
-rw-r--r-- | ext/hermes/yuv2rgb.c | 7 | ||||
-rw-r--r-- | ext/hermes/yuv2rgb.h | 2 |
3 files changed, 15 insertions, 8 deletions
diff --git a/ext/hermes/gstcolorspace.c b/ext/hermes/gstcolorspace.c index fe21fc56..84c124b6 100644 --- a/ext/hermes/gstcolorspace.c +++ b/ext/hermes/gstcolorspace.c @@ -541,6 +541,13 @@ gst_colorspace_change_state (GstElement *element) case GST_STATE_PLAYING_TO_PAUSED: space->pool = NULL; break; + case GST_STATE_PAUSED_TO_READY: + gst_colorspace_converter_destroy (space->converter); + space->converter = NULL; + space->disabled = TRUE; + space->type = GST_COLORSPACE_NONE; + space->sinkcaps = NULL; + break; } parent_class->change_state (element); @@ -612,10 +619,3 @@ GstPluginDesc plugin_desc = { plugin_init }; - - - - - - - diff --git a/ext/hermes/yuv2rgb.c b/ext/hermes/yuv2rgb.c index 55765bf5..4e98642c 100644 --- a/ext/hermes/yuv2rgb.c +++ b/ext/hermes/yuv2rgb.c @@ -201,6 +201,13 @@ gst_colorspace_yuv2rgb_get_converter (GstCaps *from, GstCaps *to) return new; } +void +gst_colorspace_converter_destroy (GstColorSpaceConverter *conv) +{ + if (conv) + g_free (conv); +} + static void gst_colorspace_I420_to_rgb32(GstColorSpaceConverter *space, unsigned char *src, unsigned char *dest) { int size; diff --git a/ext/hermes/yuv2rgb.h b/ext/hermes/yuv2rgb.h index c77fd702..699234a3 100644 --- a/ext/hermes/yuv2rgb.h +++ b/ext/hermes/yuv2rgb.h @@ -62,7 +62,7 @@ struct _GstColorSpaceConverter { GstColorSpaceConverter* gst_colorspace_yuv2rgb_get_converter (GstCaps *from, GstCaps *to); #define gst_colorspace_convert(converter, src, dest) \ (converter)->convert((converter), (src), (dest)) -void gst_colorspace_destroy (GstColorSpaceConverter *space); +void gst_colorspace_converter_destroy (GstColorSpaceConverter *space); #endif |