summaryrefslogtreecommitdiffstats
path: root/gst/avi/gstavimux.c
diff options
context:
space:
mode:
Diffstat (limited to 'gst/avi/gstavimux.c')
-rw-r--r--gst/avi/gstavimux.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/gst/avi/gstavimux.c b/gst/avi/gstavimux.c
index a17f1066..253b7da7 100644
--- a/gst/avi/gstavimux.c
+++ b/gst/avi/gstavimux.c
@@ -317,8 +317,10 @@ gst_avimux_vidsinkconnect (GstPad * pad, const GstCaps * vscaps)
ret &= gst_structure_get_int (structure, "height", &avimux->vids.height);
fps = gst_structure_get_value (structure, "framerate");
ret &= (fps != NULL && GST_VALUE_HOLDS_FRACTION (fps));
- if (!ret)
+ if (!ret) {
+ gst_object_unref (avimux);
return GST_PAD_LINK_REFUSED;
+ }
avimux->vids_hdr.rate = gst_value_get_fraction_numerator (fps);
avimux->vids_hdr.scale = gst_value_get_fraction_denominator (fps);
@@ -388,6 +390,7 @@ gst_avimux_vidsinkconnect (GstPad * pad, const GstCaps * vscaps)
}
if (!avimux->vids.compression) {
+ gst_object_unref (avimux);
return GST_PAD_LINK_DELAYED;
}
}
@@ -397,6 +400,9 @@ gst_avimux_vidsinkconnect (GstPad * pad, const GstCaps * vscaps)
avimux->avi_hdr.width = avimux->vids.width;
avimux->avi_hdr.height = avimux->vids.height;
avimux->avi_hdr.us_frame = avimux->vids_hdr.scale;
+
+ gst_object_unref (avimux);
+
return GST_PAD_LINK_OK;
}
@@ -463,6 +469,7 @@ gst_avimux_audsinkconnect (GstPad * pad, const GstCaps * vscaps)
avimux->auds.size = 16;
if (!avimux->auds.format) {
+ gst_object_unref (avimux);
return GST_PAD_LINK_REFUSED;
}
}
@@ -470,6 +477,9 @@ gst_avimux_audsinkconnect (GstPad * pad, const GstCaps * vscaps)
avimux->auds_hdr.rate = avimux->auds.blockalign * avimux->auds.rate;
avimux->auds_hdr.samplesize = avimux->auds.blockalign;
avimux->auds_hdr.scale = 1;
+
+ gst_object_unref (avimux);
+
return GST_PAD_LINK_OK;
}
@@ -1089,6 +1099,7 @@ gst_avimux_handle_event (GstPad * pad, GstEvent * event)
}
gst_event_unref (event);
+ gst_object_unref (avimux);
return TRUE;
}