From: Vincent Penquerc'h Date: Mon, 18 Jun 2012 14:18:35 +0000 (+0000) Subject: ducatividdec: detect unsupported codecs when switching from NULL to READY X-Git-Tag: glsdk-6_00_00_07~120 X-Git-Url: https://git.ti.com/gitweb?p=glsdk%2Fgst-plugin-ducati.git;a=commitdiff_plain;h=f3f6c2afb1c43018d6a3510f78999651e509a970;hp=34565d84b3a313d6b5529ac353984b5a4d4abae9 ducatividdec: detect unsupported codecs when switching from NULL to READY This should allow playbin2 to try other codecs, if available. --- diff --git a/src/gstducatividdec.c b/src/gstducatividdec.c index d63eb92..a82e411 100644 --- a/src/gstducatividdec.c +++ b/src/gstducatividdec.c @@ -1151,6 +1151,7 @@ gst_ducati_viddec_change_state (GstElement * element, GstStateChange transition) { GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS; GstDucatiVidDec *self = GST_DUCATIVIDDEC (element); + gboolean supported; GST_DEBUG_OBJECT (self, "begin: changing state %s -> %s", gst_element_state_get_name (GST_STATE_TRANSITION_CURRENT (transition)), @@ -1162,6 +1163,16 @@ gst_ducati_viddec_change_state (GstElement * element, GstStateChange transition) GST_ERROR_OBJECT (self, "could not open"); return GST_STATE_CHANGE_FAILURE; } + /* try to create/destroy the codec here, it may not be supported */ + supported = codec_create (self); + codec_delete (self); + self->codec = NULL; + if (!supported) { + GST_ERROR_OBJECT (element, "Failed to create codec %s, not supported", + GST_DUCATIVIDDEC_GET_CLASS (self)->codec_name); + engine_close (self); + return GST_STATE_CHANGE_FAILURE; + } break; default: break;