gst/: Sync _handle_src_event() with oggdemux. In avidemux also ref the element when we should, but not when we its no...

Original commit message from CVS:
* gst/avi/gstavidemux.c:
* gst/qtdemux/qtdemux.c:
Sync _handle_src_event() with oggdemux. In avidemux also ref the
element when we should, but not when we its not needed.
This commit is contained in:
Stefan Kost 2007-11-12 17:06:32 +00:00
parent 546ec34716
commit 8ae866e5c6
3 changed files with 18 additions and 15 deletions

View file

@ -1,3 +1,10 @@
2007-11-12 Stefan Kost <ensonic@users.sf.net>
* gst/avi/gstavidemux.c:
* gst/qtdemux/qtdemux.c:
Sync _handle_src_event() with oggdemux. In avidemux also ref the
element when we should, but not when we its not needed.
2007-11-08 Stefan Kost <ensonic@users.sf.net> 2007-11-08 Stefan Kost <ensonic@users.sf.net>
* gst/wavparse/gstwavparse.c: * gst/wavparse/gstwavparse.c:

View file

@ -374,7 +374,7 @@ gst_avi_demux_src_convert (GstPad * pad,
gint64 src_value, GstFormat * dest_format, gint64 * dest_value) gint64 src_value, GstFormat * dest_format, gint64 * dest_value)
{ {
gboolean res = TRUE; gboolean res = TRUE;
GstAviDemux *avidemux = GST_AVI_DEMUX (gst_pad_get_parent (pad)); GstAviDemux *avidemux = GST_AVI_DEMUX (GST_PAD_PARENT (pad));
avi_stream_context *stream = gst_pad_get_element_private (pad); avi_stream_context *stream = gst_pad_get_element_private (pad);
@ -446,7 +446,6 @@ done:
GST_LOG_OBJECT (avidemux, GST_LOG_OBJECT (avidemux,
"Returning res:%d dest_format:%s dest_value:%" G_GUINT64_FORMAT, res, "Returning res:%d dest_format:%s dest_value:%" G_GUINT64_FORMAT, res,
gst_format_get_name (*dest_format), *dest_value); gst_format_get_name (*dest_format), *dest_value);
gst_object_unref (avidemux);
return res; return res;
} }
@ -467,7 +466,7 @@ static gboolean
gst_avi_demux_handle_src_query (GstPad * pad, GstQuery * query) gst_avi_demux_handle_src_query (GstPad * pad, GstQuery * query)
{ {
gboolean res = TRUE; gboolean res = TRUE;
GstAviDemux *avi = GST_AVI_DEMUX (GST_PAD_PARENT (pad)); GstAviDemux *avi = GST_AVI_DEMUX (gst_pad_get_parent (pad));
avi_stream_context *stream = gst_pad_get_element_private (pad); avi_stream_context *stream = gst_pad_get_element_private (pad);
@ -571,6 +570,7 @@ gst_avi_demux_handle_src_query (GstPad * pad, GstQuery * query)
break; break;
} }
gst_object_unref (avi);
return res; return res;
} }
@ -591,7 +591,7 @@ static gboolean
gst_avi_demux_handle_src_event (GstPad * pad, GstEvent * event) gst_avi_demux_handle_src_event (GstPad * pad, GstEvent * event)
{ {
gboolean res = TRUE; gboolean res = TRUE;
GstAviDemux *avi = GST_AVI_DEMUX (GST_PAD_PARENT (pad)); GstAviDemux *avi = GST_AVI_DEMUX (gst_pad_get_parent (pad));
GST_DEBUG_OBJECT (avi, GST_DEBUG_OBJECT (avi,
"have event type %s: %p on src pad", GST_EVENT_TYPE_NAME (event), event); "have event type %s: %p on src pad", GST_EVENT_TYPE_NAME (event), event);
@ -600,18 +600,15 @@ gst_avi_demux_handle_src_event (GstPad * pad, GstEvent * event)
case GST_EVENT_SEEK: case GST_EVENT_SEEK:
/* handle seeking */ /* handle seeking */
res = gst_avi_demux_handle_seek (avi, pad, event); res = gst_avi_demux_handle_seek (avi, pad, event);
break; gst_event_unref (event);
case GST_EVENT_QOS:
/* FIXME, we can do something clever here like skip to the next keyframe
* based on the QoS values. */
res = FALSE;
break; break;
default: default:
/* most other events are not very usefull */ res = gst_pad_event_default (pad, event);
res = FALSE;
break; break;
} }
gst_event_unref (event);
gst_object_unref (avi);
return res; return res;
} }

View file

@ -842,14 +842,13 @@ gst_qtdemux_handle_src_event (GstPad * pad, GstEvent * event)
GST_DEBUG_OBJECT (qtdemux, "cannot seek in streaming mode"); GST_DEBUG_OBJECT (qtdemux, "cannot seek in streaming mode");
res = FALSE; res = FALSE;
} }
gst_object_unref (qtdemux);
break; break;
default: default:
res = FALSE; res = gst_pad_event_default (pad, event);
break; break;
} }
gst_object_unref (qtdemux);
gst_event_unref (event); gst_event_unref (event);
return res; return res;