summaryrefslogtreecommitdiffstats
path: root/gst/avi/gstavimux.c
diff options
context:
space:
mode:
authorRonald S. Bultje <rbultje@ronald.bitfreak.net>2005-01-11 16:52:47 +0000
committerRonald S. Bultje <rbultje@ronald.bitfreak.net>2005-01-11 16:52:47 +0000
commit3b12894436aaeaafd061caba3e1f222355107b1b (patch)
treee01268d752dc291384870eec3898a57abbe362f6 /gst/avi/gstavimux.c
parent1f66f305742af5bacc2e2e80c0da8d9a14288feb (diff)
gst/avi/gstavimux.c: Reusability fixes.
Original commit message from CVS: * gst/avi/gstavimux.c: (gst_avimux_class_init), (gst_avimux_pad_unlink), (gst_avimux_release_pad): Reusability fixes.
Diffstat (limited to 'gst/avi/gstavimux.c')
-rw-r--r--gst/avi/gstavimux.c22
1 files changed, 20 insertions, 2 deletions
diff --git a/gst/avi/gstavimux.c b/gst/avi/gstavimux.c
index c558c6ad..7550baeb 100644
--- a/gst/avi/gstavimux.c
+++ b/gst/avi/gstavimux.c
@@ -150,6 +150,7 @@ static void gst_avimux_loop (GstElement * element);
static gboolean gst_avimux_handle_event (GstPad * pad, GstEvent * event);
static GstPad *gst_avimux_request_new_pad (GstElement * element,
GstPadTemplate * templ, const gchar * name);
+static void gst_avimux_release_pad (GstElement * element, GstPad * pad);
static void gst_avimux_set_property (GObject * object,
guint prop_id, const GValue * value, GParamSpec * pspec);
static void gst_avimux_get_property (GObject * object,
@@ -220,6 +221,7 @@ gst_avimux_class_init (GstAviMuxClass * klass)
"Support for openDML-2.0 (big) AVI files", 0, G_PARAM_READWRITE));
gstelement_class->request_new_pad = gst_avimux_request_new_pad;
+ gstelement_class->release_pad = gst_avimux_release_pad;
gstelement_class->change_state = gst_avimux_change_state;
@@ -487,10 +489,8 @@ gst_avimux_pad_unlink (GstPad * pad, GstPad * peer, gpointer data)
if (pad == avimux->audiosinkpad) {
avimux->audio_pad_connected = FALSE;
- avimux->audiosinkpad = NULL;
} else if (pad == avimux->videosinkpad) {
avimux->video_pad_connected = FALSE;
- avimux->videosinkpad = NULL;
} else {
g_warning ("Unknown padname '%s'", padname);
return;
@@ -543,6 +543,24 @@ gst_avimux_request_new_pad (GstElement * element,
return newpad;
}
+static void
+gst_avimux_release_pad (GstElement * element, GstPad * pad)
+{
+ GstAviMux *avimux = GST_AVIMUX (element);
+
+ if (pad == avimux->videosinkpad) {
+ avimux->videosinkpad = NULL;
+ } else if (pad == avimux->audiosinkpad) {
+ avimux->audiosinkpad = NULL;
+ } else {
+ g_warning ("Unknown pad %s", gst_pad_get_name (pad));
+ return;
+ }
+
+ GST_DEBUG ("Removed pad '%s'", gst_pad_get_name (pad));
+ gst_element_remove_pad (element, pad);
+}
+
/* maybe some of these functions should be moved to riff.h? */
/* DISCLAIMER: this function is ugly. So be it (i.e. it makes the rest easier) */