mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-02 06:31:08 +00:00
GESTimelinePipeline: Handle some trivial error cases
Avoids ending up calling potentially NULL variables
This commit is contained in:
parent
cd82ce8123
commit
e02cf20326
1 changed files with 23 additions and 3 deletions
|
@ -139,9 +139,9 @@ ges_timeline_pipeline_init (GESTimelinePipeline * self)
|
||||||
"avoid-reencoding", TRUE, NULL);
|
"avoid-reencoding", TRUE, NULL);
|
||||||
|
|
||||||
if (G_UNLIKELY (self->priv->playsink == NULL))
|
if (G_UNLIKELY (self->priv->playsink == NULL))
|
||||||
GST_ERROR_OBJECT (self, "Can't create playsink instance !");
|
goto no_playsink;
|
||||||
if (G_UNLIKELY (self->priv->encodebin == NULL))
|
if (G_UNLIKELY (self->priv->encodebin == NULL))
|
||||||
GST_ERROR_OBJECT (self, "Can't create encodebin instance !");
|
goto no_encodebin;
|
||||||
|
|
||||||
/* HACK : Intercept events going through playsink */
|
/* HACK : Intercept events going through playsink */
|
||||||
playsinkclass = GST_ELEMENT_GET_CLASS (self->priv->playsink);
|
playsinkclass = GST_ELEMENT_GET_CLASS (self->priv->playsink);
|
||||||
|
@ -149,6 +149,17 @@ ges_timeline_pipeline_init (GESTimelinePipeline * self)
|
||||||
playsinkclass->send_event = play_sink_multiple_seeks_send_event;
|
playsinkclass->send_event = play_sink_multiple_seeks_send_event;
|
||||||
|
|
||||||
ges_timeline_pipeline_set_mode (self, DEFAULT_TIMELINE_MODE);
|
ges_timeline_pipeline_set_mode (self, DEFAULT_TIMELINE_MODE);
|
||||||
|
|
||||||
|
no_playsink:
|
||||||
|
{
|
||||||
|
GST_ERROR_OBJECT (self, "Can't create playsink instance !");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
no_encodebin:
|
||||||
|
{
|
||||||
|
GST_ERROR_OBJECT (self, "Can't create encodebin instance !");
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -300,7 +311,7 @@ get_output_chain_for_track (GESTimelinePipeline * self, GESTrack * track)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Fetches a ocmpatible pad on the target element which isn't already
|
/* Fetches a compatible pad on the target element which isn't already
|
||||||
* linked */
|
* linked */
|
||||||
static GstPad *
|
static GstPad *
|
||||||
get_compatible_unlinked_pad (GstElement * element, GstPad * pad)
|
get_compatible_unlinked_pad (GstElement * element, GstPad * pad)
|
||||||
|
@ -310,6 +321,9 @@ get_compatible_unlinked_pad (GstElement * element, GstPad * pad)
|
||||||
gboolean done = FALSE;
|
gboolean done = FALSE;
|
||||||
GstCaps *srccaps;
|
GstCaps *srccaps;
|
||||||
|
|
||||||
|
if (G_UNLIKELY (pad == NULL))
|
||||||
|
goto no_pad;
|
||||||
|
|
||||||
GST_DEBUG ("element : %s, pad %s:%s",
|
GST_DEBUG ("element : %s, pad %s:%s",
|
||||||
GST_ELEMENT_NAME (element), GST_DEBUG_PAD_NAME (pad));
|
GST_ELEMENT_NAME (element), GST_DEBUG_PAD_NAME (pad));
|
||||||
|
|
||||||
|
@ -358,6 +372,12 @@ get_compatible_unlinked_pad (GstElement * element, GstPad * pad)
|
||||||
gst_caps_unref (srccaps);
|
gst_caps_unref (srccaps);
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
|
|
||||||
|
no_pad:
|
||||||
|
{
|
||||||
|
GST_ERROR ("No pad to check against");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
Loading…
Reference in a new issue