mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-23 16:50:47 +00:00
Massive leak fixing, plus code cleanups.
Original commit message from CVS: * ext/audioresample/gstaudioresample.c: * ext/x264/gstx264enc.c: * gst/dvdspu/gstdvdspu.c: * gst/dvdspu/gstdvdspu.h: * gst/festival/gstfestival.c: * gst/h264parse/gsth264parse.c: * gst/mpegtsparse/mpegtspacketizer.c: * gst/mpegtsparse/mpegtsparse.c: * gst/multifile/gstmultifilesink.c: * gst/multifile/gstmultifilesrc.c: * gst/nuvdemux/gstnuvdemux.c: * sys/dshowsrcwrapper/gstdshowaudiosrc.c: * sys/dshowsrcwrapper/gstdshowvideosrc.c: * sys/vcd/vcdsrc.c: Massive leak fixing, plus code cleanups.
This commit is contained in:
parent
9525b8056f
commit
1af510f8d5
15 changed files with 154 additions and 77 deletions
18
ChangeLog
18
ChangeLog
|
@ -1,3 +1,21 @@
|
|||
2007-09-24 Stefan Kost <ensonic@users.sf.net>
|
||||
|
||||
* ext/audioresample/gstaudioresample.c:
|
||||
* ext/x264/gstx264enc.c:
|
||||
* gst/dvdspu/gstdvdspu.c:
|
||||
* gst/dvdspu/gstdvdspu.h:
|
||||
* gst/festival/gstfestival.c:
|
||||
* gst/h264parse/gsth264parse.c:
|
||||
* gst/mpegtsparse/mpegtspacketizer.c:
|
||||
* gst/mpegtsparse/mpegtsparse.c:
|
||||
* gst/multifile/gstmultifilesink.c:
|
||||
* gst/multifile/gstmultifilesrc.c:
|
||||
* gst/nuvdemux/gstnuvdemux.c:
|
||||
* sys/dshowsrcwrapper/gstdshowaudiosrc.c:
|
||||
* sys/dshowsrcwrapper/gstdshowvideosrc.c:
|
||||
* sys/vcd/vcdsrc.c:
|
||||
Massive leak fixing, plus code cleanups.
|
||||
|
||||
2007-09-22 Thomas Vander Stichele <thomas at apestaart dot org>
|
||||
|
||||
* po/LINGUAS:
|
||||
|
|
|
@ -61,15 +61,16 @@ enum
|
|||
"endianness = (int) BYTE_ORDER, " \
|
||||
"width = (int) 16, " \
|
||||
"depth = (int) 16, " \
|
||||
"signed = (boolean) true")
|
||||
|
||||
"signed = (boolean) true"
|
||||
#if 0
|
||||
/* disabled because it segfaults */
|
||||
"audio/x-raw-float, "
|
||||
"rate = (int) [ 1, MAX ], "
|
||||
"channels = (int) [ 1, MAX ], "
|
||||
"endianness = (int) BYTE_ORDER, " "width = (int) 32")
|
||||
"endianness = (int) BYTE_ORDER, " "width = (int) 32"
|
||||
#endif
|
||||
)
|
||||
|
||||
static GstStaticPadTemplate gst_audioresample_sink_template =
|
||||
GST_STATIC_PAD_TEMPLATE ("sink",
|
||||
GST_PAD_SINK, GST_PAD_ALWAYS, SUPPORTED_CAPS);
|
||||
|
|
|
@ -664,10 +664,9 @@ gst_x264_enc_dispose (GObject * object)
|
|||
encoder->buffer = NULL;
|
||||
|
||||
gst_x264_enc_timestamp_queue_free (encoder);
|
||||
gst_x264_enc_close_encoder (encoder);
|
||||
|
||||
G_OBJECT_CLASS (parent_class)->dispose (object);
|
||||
|
||||
gst_x264_enc_close_encoder (encoder);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
|
|
@ -16,6 +16,22 @@
|
|||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
/*
|
||||
* SECTION:element-dvdspu
|
||||
*
|
||||
* <refsect2>
|
||||
* <para>
|
||||
* DVD sub picture overlay element.
|
||||
* </para>
|
||||
* <title>Example launch line</title>
|
||||
* <para>
|
||||
* <programlisting>
|
||||
* FIXME: gst-launch ...
|
||||
* </programlisting>
|
||||
* FIXME: description for the sample launch pipeline
|
||||
* </para>
|
||||
* </refsect2>
|
||||
*/
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
@ -65,8 +81,8 @@ GST_STATIC_PAD_TEMPLATE ("subpicture",
|
|||
|
||||
GST_BOILERPLATE (GstDVDSpu, dvdspu, GstElement, GST_TYPE_ELEMENT);
|
||||
|
||||
static void dvdspu_dispose (GstDVDSpu * dvdspu);
|
||||
static void dvdspu_finalize (GstDVDSpu * dvdspu);
|
||||
static void dvdspu_dispose (GObject * object);
|
||||
static void dvdspu_finalize (GObject * object);
|
||||
static GstStateChangeReturn dvdspu_change_state (GstElement * element,
|
||||
GstStateChange transition);
|
||||
|
||||
|
@ -172,17 +188,22 @@ dvdspu_clear (GstDVDSpu * dvdspu)
|
|||
}
|
||||
|
||||
static void
|
||||
dvdspu_dispose (GstDVDSpu * dvdspu)
|
||||
dvdspu_dispose (GObject * object)
|
||||
{
|
||||
GstDVDSpu *dvdspu = DVD_SPU (object);
|
||||
|
||||
/* need to hold the SPU lock in case other stuff is still running... */
|
||||
GSTDVDSPU_LOCK (dvdspu);
|
||||
DVD_SPU_LOCK (dvdspu);
|
||||
dvdspu_clear (dvdspu);
|
||||
GSTDVDSPU_UNLOCK (dvdspu);
|
||||
DVD_SPU_UNLOCK (dvdspu);
|
||||
|
||||
G_OBJECT_CLASS (parent_class)->dispose (object);
|
||||
}
|
||||
|
||||
static void
|
||||
dvdspu_finalize (GstDVDSpu * dvdspu)
|
||||
dvdspu_finalize (GObject * object)
|
||||
{
|
||||
GstDVDSpu *dvdspu = DVD_SPU (object);
|
||||
gint i;
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
|
@ -193,6 +214,8 @@ dvdspu_finalize (GstDVDSpu * dvdspu)
|
|||
}
|
||||
g_queue_free (dvdspu->pending_spus);
|
||||
g_mutex_free (dvdspu->spu_lock);
|
||||
|
||||
G_OBJECT_CLASS (parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
/* With SPU lock held, clear the queue of SPU packets */
|
||||
|
@ -253,7 +276,7 @@ static GstFlowReturn
|
|||
dvdspu_buffer_alloc (GstPad * sinkpad, guint64 offset, guint size,
|
||||
GstCaps * caps, GstBuffer ** buf)
|
||||
{
|
||||
GstDVDSpu *dvdspu = GSTDVDSPU (gst_pad_get_parent (sinkpad));
|
||||
GstDVDSpu *dvdspu = DVD_SPU (gst_pad_get_parent (sinkpad));
|
||||
GstFlowReturn ret = GST_FLOW_OK;
|
||||
|
||||
ret = gst_pad_alloc_buffer (dvdspu->srcpad, offset, size, caps, buf);
|
||||
|
@ -266,7 +289,7 @@ dvdspu_buffer_alloc (GstPad * sinkpad, guint64 offset, guint size,
|
|||
static gboolean
|
||||
dvdspu_src_event (GstPad * pad, GstEvent * event)
|
||||
{
|
||||
GstDVDSpu *dvdspu = GSTDVDSPU (gst_pad_get_parent (pad));
|
||||
GstDVDSpu *dvdspu = DVD_SPU (gst_pad_get_parent (pad));
|
||||
GstPad *peer;
|
||||
gboolean res = TRUE;
|
||||
|
||||
|
@ -283,7 +306,7 @@ dvdspu_src_event (GstPad * pad, GstEvent * event)
|
|||
static gboolean
|
||||
dvdspu_video_set_caps (GstPad * pad, GstCaps * caps)
|
||||
{
|
||||
GstDVDSpu *dvdspu = GSTDVDSPU (gst_pad_get_parent (pad));
|
||||
GstDVDSpu *dvdspu = DVD_SPU (gst_pad_get_parent (pad));
|
||||
gboolean res = FALSE;
|
||||
GstStructure *s;
|
||||
gint w, h;
|
||||
|
@ -299,7 +322,7 @@ dvdspu_video_set_caps (GstPad * pad, GstCaps * caps)
|
|||
goto done;
|
||||
}
|
||||
|
||||
GSTDVDSPU_LOCK (dvdspu);
|
||||
DVD_SPU_LOCK (dvdspu);
|
||||
|
||||
state = &dvdspu->spu_state;
|
||||
|
||||
|
@ -319,7 +342,7 @@ dvdspu_video_set_caps (GstPad * pad, GstCaps * caps)
|
|||
sizeof (guint16) * state->UV_stride);
|
||||
}
|
||||
}
|
||||
GSTDVDSPU_UNLOCK (dvdspu);
|
||||
DVD_SPU_UNLOCK (dvdspu);
|
||||
|
||||
res = TRUE;
|
||||
done:
|
||||
|
@ -330,7 +353,7 @@ done:
|
|||
static GstCaps *
|
||||
dvdspu_video_proxy_getcaps (GstPad * pad)
|
||||
{
|
||||
GstDVDSpu *dvdspu = GSTDVDSPU (gst_pad_get_parent (pad));
|
||||
GstDVDSpu *dvdspu = DVD_SPU (gst_pad_get_parent (pad));
|
||||
GstCaps *caps;
|
||||
GstPad *otherpad;
|
||||
|
||||
|
@ -384,7 +407,7 @@ dvdspu_video_event (GstPad * pad, GstEvent * event)
|
|||
gboolean in_still;
|
||||
|
||||
if (gst_structure_get_boolean (structure, "still-state", &in_still)) {
|
||||
GSTDVDSPU_LOCK (dvdspu);
|
||||
DVD_SPU_LOCK (dvdspu);
|
||||
if (in_still) {
|
||||
state->flags |= SPU_STATE_STILL_FRAME;
|
||||
/* Entering still. Advance the SPU to make sure the state is
|
||||
|
@ -396,7 +419,7 @@ dvdspu_video_event (GstPad * pad, GstEvent * event)
|
|||
dvdspu_redraw_still (dvdspu);
|
||||
} else
|
||||
state->flags &= ~(SPU_STATE_STILL_FRAME);
|
||||
GSTDVDSPU_UNLOCK (dvdspu);
|
||||
DVD_SPU_UNLOCK (dvdspu);
|
||||
}
|
||||
gst_event_unref (event);
|
||||
res = TRUE;
|
||||
|
@ -425,7 +448,7 @@ dvdspu_video_event (GstPad * pad, GstEvent * event)
|
|||
update, rate, arate, format, GST_TIME_ARGS (start),
|
||||
GST_TIME_ARGS (stop), GST_TIME_ARGS (time));
|
||||
|
||||
GSTDVDSPU_LOCK (dvdspu);
|
||||
DVD_SPU_LOCK (dvdspu);
|
||||
|
||||
if (update && start > dvdspu->video_seg.last_stop) {
|
||||
#if 0
|
||||
|
@ -435,19 +458,19 @@ dvdspu_video_event (GstPad * pad, GstEvent * event)
|
|||
#endif
|
||||
while (dvdspu->video_seg.last_stop < start &&
|
||||
!(state->flags & SPU_STATE_STILL_FRAME)) {
|
||||
GSTDVDSPU_UNLOCK (dvdspu);
|
||||
DVD_SPU_UNLOCK (dvdspu);
|
||||
if (dvspu_handle_vid_buffer (dvdspu, NULL) != GST_FLOW_OK) {
|
||||
GSTDVDSPU_LOCK (dvdspu);
|
||||
DVD_SPU_LOCK (dvdspu);
|
||||
break;
|
||||
}
|
||||
GSTDVDSPU_LOCK (dvdspu);
|
||||
DVD_SPU_LOCK (dvdspu);
|
||||
}
|
||||
}
|
||||
|
||||
gst_segment_set_newsegment_full (&dvdspu->video_seg, update, rate, arate,
|
||||
format, start, stop, time);
|
||||
|
||||
GSTDVDSPU_UNLOCK (dvdspu);
|
||||
DVD_SPU_UNLOCK (dvdspu);
|
||||
|
||||
res = gst_pad_event_default (pad, event);
|
||||
break;
|
||||
|
@ -458,12 +481,12 @@ dvdspu_video_event (GstPad * pad, GstEvent * event)
|
|||
case GST_EVENT_FLUSH_STOP:
|
||||
res = gst_pad_event_default (pad, event);
|
||||
|
||||
GSTDVDSPU_LOCK (dvdspu);
|
||||
DVD_SPU_LOCK (dvdspu);
|
||||
gst_segment_init (&dvdspu->video_seg, GST_FORMAT_UNDEFINED);
|
||||
gst_buffer_replace (&dvdspu->ref_frame, NULL);
|
||||
gst_buffer_replace (&dvdspu->pending_frame, NULL);
|
||||
|
||||
GSTDVDSPU_UNLOCK (dvdspu);
|
||||
DVD_SPU_UNLOCK (dvdspu);
|
||||
goto done;
|
||||
default:
|
||||
res = gst_pad_event_default (pad, event);
|
||||
|
@ -505,7 +528,7 @@ dvspu_handle_vid_buffer (GstDVDSpu * dvdspu, GstBuffer * buf)
|
|||
GstFlowReturn ret;
|
||||
gboolean using_ref = FALSE;
|
||||
|
||||
GSTDVDSPU_LOCK (dvdspu);
|
||||
DVD_SPU_LOCK (dvdspu);
|
||||
|
||||
if (buf == NULL) {
|
||||
GstClockTime next_ts = dvdspu->video_seg.last_stop;
|
||||
|
@ -581,7 +604,7 @@ dvspu_handle_vid_buffer (GstDVDSpu * dvdspu, GstBuffer * buf)
|
|||
GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)));
|
||||
}
|
||||
|
||||
GSTDVDSPU_UNLOCK (dvdspu);
|
||||
DVD_SPU_UNLOCK (dvdspu);
|
||||
|
||||
/* just push out the incoming buffer without touching it */
|
||||
ret = gst_pad_push (dvdspu->srcpad, buf);
|
||||
|
@ -590,7 +613,7 @@ dvspu_handle_vid_buffer (GstDVDSpu * dvdspu, GstBuffer * buf)
|
|||
|
||||
no_ref_frame:
|
||||
|
||||
GSTDVDSPU_UNLOCK (dvdspu);
|
||||
DVD_SPU_UNLOCK (dvdspu);
|
||||
|
||||
return GST_FLOW_OK;
|
||||
}
|
||||
|
@ -1122,7 +1145,7 @@ dvdspu_subpic_chain (GstPad * pad, GstBuffer * buf)
|
|||
GST_TIME_FORMAT " and size %u",
|
||||
GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)), GST_BUFFER_SIZE (buf));
|
||||
|
||||
GSTDVDSPU_LOCK (dvdspu);
|
||||
DVD_SPU_LOCK (dvdspu);
|
||||
|
||||
if (GST_BUFFER_TIMESTAMP_IS_VALID (buf)) {
|
||||
gst_segment_set_last_stop (&dvdspu->subp_seg, GST_FORMAT_TIME,
|
||||
|
@ -1215,7 +1238,7 @@ dvdspu_subpic_chain (GstPad * pad, GstBuffer * buf)
|
|||
}
|
||||
}
|
||||
|
||||
GSTDVDSPU_UNLOCK (dvdspu);
|
||||
DVD_SPU_UNLOCK (dvdspu);
|
||||
|
||||
gst_object_unref (dvdspu);
|
||||
return GST_FLOW_OK;
|
||||
|
@ -1243,7 +1266,7 @@ dvdspu_subpic_event (GstPad * pad, GstEvent * event)
|
|||
break;
|
||||
}
|
||||
|
||||
GSTDVDSPU_LOCK (dvdspu);
|
||||
DVD_SPU_LOCK (dvdspu);
|
||||
if (GST_EVENT_IS_SERIALIZED (event)) {
|
||||
SpuPacket *spu_packet = g_new0 (SpuPacket, 1);
|
||||
|
||||
|
@ -1258,7 +1281,7 @@ dvdspu_subpic_event (GstPad * pad, GstEvent * event)
|
|||
* This requires some dancing to preserve locking order and handle
|
||||
* flushes correctly */
|
||||
need_push = (dvdspu->pending_frame != NULL);
|
||||
GSTDVDSPU_UNLOCK (dvdspu);
|
||||
DVD_SPU_UNLOCK (dvdspu);
|
||||
if (need_push) {
|
||||
GstBuffer *to_push = NULL;
|
||||
gboolean flushing;
|
||||
|
@ -1270,15 +1293,15 @@ dvdspu_subpic_event (GstPad * pad, GstEvent * event)
|
|||
flushing = GST_PAD_IS_FLUSHING (dvdspu->videosinkpad);
|
||||
GST_OBJECT_UNLOCK (dvdspu->videosinkpad);
|
||||
|
||||
GSTDVDSPU_LOCK (dvdspu);
|
||||
DVD_SPU_LOCK (dvdspu);
|
||||
if (dvdspu->pending_frame == NULL || flushing) {
|
||||
/* Got flushed while waiting for the stream lock */
|
||||
GSTDVDSPU_UNLOCK (dvdspu);
|
||||
DVD_SPU_UNLOCK (dvdspu);
|
||||
} else {
|
||||
to_push = dvdspu->pending_frame;
|
||||
dvdspu->pending_frame = NULL;
|
||||
|
||||
GSTDVDSPU_UNLOCK (dvdspu);
|
||||
DVD_SPU_UNLOCK (dvdspu);
|
||||
gst_pad_push (dvdspu->srcpad, to_push);
|
||||
}
|
||||
GST_LOG_OBJECT (dvdspu, "Dropping stream lock");
|
||||
|
@ -1306,10 +1329,10 @@ dvdspu_subpic_event (GstPad * pad, GstEvent * event)
|
|||
update, rate, arate, format, GST_TIME_ARGS (start),
|
||||
GST_TIME_ARGS (stop), GST_TIME_ARGS (time));
|
||||
|
||||
GSTDVDSPU_LOCK (dvdspu);
|
||||
DVD_SPU_LOCK (dvdspu);
|
||||
gst_segment_set_newsegment_full (&dvdspu->subp_seg, update, rate, arate,
|
||||
format, start, stop, time);
|
||||
GSTDVDSPU_UNLOCK (dvdspu);
|
||||
DVD_SPU_UNLOCK (dvdspu);
|
||||
|
||||
gst_event_unref (event);
|
||||
break;
|
||||
|
@ -1318,9 +1341,9 @@ dvdspu_subpic_event (GstPad * pad, GstEvent * event)
|
|||
gst_event_unref (event);
|
||||
goto done;
|
||||
case GST_EVENT_FLUSH_STOP:
|
||||
GSTDVDSPU_LOCK (dvdspu);
|
||||
DVD_SPU_LOCK (dvdspu);
|
||||
dvdspu_flush_spu_info (dvdspu);
|
||||
GSTDVDSPU_UNLOCK (dvdspu);
|
||||
DVD_SPU_UNLOCK (dvdspu);
|
||||
|
||||
/* We don't forward flushes on the spu pad */
|
||||
gst_event_unref (event);
|
||||
|
@ -1346,9 +1369,9 @@ dvdspu_change_state (GstElement * element, GstStateChange transition)
|
|||
|
||||
switch (transition) {
|
||||
case GST_STATE_CHANGE_PAUSED_TO_READY:
|
||||
GSTDVDSPU_LOCK (dvdspu);
|
||||
DVD_SPU_LOCK (dvdspu);
|
||||
dvdspu_clear (dvdspu);
|
||||
GSTDVDSPU_UNLOCK (dvdspu);
|
||||
DVD_SPU_UNLOCK (dvdspu);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -1364,7 +1387,7 @@ gstdvdspu_plugin_init (GstPlugin * plugin)
|
|||
0, "DVD Sub-picture Overlay decoder/renderer");
|
||||
|
||||
return gst_element_register (plugin, "dvdspu",
|
||||
GST_RANK_NONE, GST_TYPE_GSTDVDSPU);
|
||||
GST_RANK_NONE, GST_TYPE_DVD_SPU);
|
||||
}
|
||||
|
||||
GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
|
||||
|
|
|
@ -16,26 +16,26 @@
|
|||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
#ifndef __GSTDVDSPU_H__
|
||||
#define __GSTDVDSPU_H__
|
||||
#ifndef __DVD_SPU_H__
|
||||
#define __DVD_SPU_H__
|
||||
|
||||
#include <gst/gst.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define GST_TYPE_GSTDVDSPU \
|
||||
#define GST_TYPE_DVD_SPU \
|
||||
(dvdspu_get_type())
|
||||
#define GSTDVDSPU(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_GSTDVDSPU,GstDVDSpu))
|
||||
#define GSTDVDSPU_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_GSTDVDSPU,GstDVDSpuClass))
|
||||
#define GST_IS_PLUGIN_TEMPLATE(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_GSTDVDSPU))
|
||||
#define GST_IS_PLUGIN_TEMPLATE_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_GSTDVDSPU))
|
||||
#define DVD_SPU(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_DVD_SPU,GstDVDSpu))
|
||||
#define DVD_SPU_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_DVD_SPU,GstDVDSpuClass))
|
||||
#define GST_IS_DVD_SPU(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_DVD_SPU))
|
||||
#define GST_IS_DVD_SPU_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_DVD_SPU))
|
||||
|
||||
#define GSTDVDSPU_LOCK(s) g_mutex_lock ((s)->spu_lock);
|
||||
#define GSTDVDSPU_UNLOCK(s) g_mutex_unlock ((s)->spu_lock);
|
||||
#define DVD_SPU_LOCK(s) g_mutex_lock ((s)->spu_lock);
|
||||
#define DVD_SPU_UNLOCK(s) g_mutex_unlock ((s)->spu_lock);
|
||||
|
||||
typedef struct GstDVDSpu GstDVDSpu;
|
||||
typedef struct GstDVDSpuClass GstDVDSpuClass;
|
||||
|
@ -223,4 +223,4 @@ void gstdvdspu_render_spu (GstDVDSpu *dvdspu, GstBuffer *buf);
|
|||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __GSTDVDSPU_H__ */
|
||||
#endif /* __DVD_SPU_H__ */
|
||||
|
|
|
@ -97,6 +97,8 @@
|
|||
GST_DEBUG_CATEGORY_STATIC (festival_debug);
|
||||
#define GST_CAT_DEFAULT festival_debug
|
||||
|
||||
static void gst_festival_finalize (GObject * object);
|
||||
|
||||
static void gst_festival_base_init (gpointer g_class);
|
||||
static void gst_festival_class_init (GstFestivalClass * klass);
|
||||
static void gst_festival_init (GstFestival * festival);
|
||||
|
@ -189,13 +191,17 @@ gst_festival_base_init (gpointer g_class)
|
|||
static void
|
||||
gst_festival_class_init (GstFestivalClass * klass)
|
||||
{
|
||||
GObjectClass *gobject_class;
|
||||
GstElementClass *gstelement_class;
|
||||
|
||||
gstelement_class = (GstElementClass *) klass;
|
||||
gobject_class = G_OBJECT_CLASS (klass);
|
||||
gstelement_class = GST_ELEMENT_CLASS (klass);
|
||||
|
||||
parent_class = g_type_class_peek_parent (klass);
|
||||
|
||||
gstelement_class->change_state = gst_festival_change_state;
|
||||
gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_festival_finalize);
|
||||
gstelement_class->change_state =
|
||||
GST_DEBUG_FUNCPTR (gst_festival_change_state);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -213,6 +219,16 @@ gst_festival_init (GstFestival * festival)
|
|||
festival->info = festival_default_info ();
|
||||
}
|
||||
|
||||
static void
|
||||
gst_festival_finalize (GObject * object)
|
||||
{
|
||||
GstFestival *festival = GST_FESTIVAL (object);
|
||||
|
||||
g_free (festival->info);
|
||||
|
||||
G_OBJECT_CLASS (parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
read_response (GstFestival * festival)
|
||||
{
|
||||
|
|
|
@ -75,6 +75,8 @@ gst_h264_parse_finalize (GObject * object)
|
|||
|
||||
h264parse = GST_H264PARSE (object);
|
||||
|
||||
g_object_unref (h264parse->adapter);
|
||||
|
||||
G_OBJECT_CLASS (parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
|
|
|
@ -103,7 +103,6 @@ mpegts_packetizer_dispose (GObject * object)
|
|||
packetizer->disposed = TRUE;
|
||||
}
|
||||
|
||||
if (G_OBJECT_CLASS (mpegts_packetizer_parent_class)->dispose)
|
||||
G_OBJECT_CLASS (mpegts_packetizer_parent_class)->dispose (object);
|
||||
}
|
||||
|
||||
|
@ -127,7 +126,6 @@ mpegts_packetizer_finalize (GObject * object)
|
|||
stream_foreach_remove, packetizer);
|
||||
g_hash_table_destroy (packetizer->streams);
|
||||
|
||||
if (G_OBJECT_CLASS (mpegts_packetizer_parent_class)->finalize)
|
||||
G_OBJECT_CLASS (mpegts_packetizer_parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
|
|
|
@ -241,7 +241,6 @@ mpegts_parse_dispose (GObject * object)
|
|||
parse->disposed = TRUE;
|
||||
}
|
||||
|
||||
if (G_OBJECT_CLASS (parent_class)->dispose)
|
||||
G_OBJECT_CLASS (parent_class)->dispose (object);
|
||||
}
|
||||
|
||||
|
@ -256,7 +255,6 @@ mpegts_parse_finalize (GObject * object)
|
|||
g_hash_table_destroy (parse->programs);
|
||||
g_hash_table_destroy (parse->psi_pids);
|
||||
|
||||
if (G_OBJECT_CLASS (parent_class)->finalize)
|
||||
G_OBJECT_CLASS (parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
|
|
|
@ -142,10 +142,10 @@ gst_multi_file_sink_dispose (GObject * object)
|
|||
{
|
||||
GstMultiFileSink *sink = GST_MULTI_FILE_SINK (object);
|
||||
|
||||
G_OBJECT_CLASS (parent_class)->dispose (object);
|
||||
|
||||
g_free (sink->filename);
|
||||
sink->filename = NULL;
|
||||
|
||||
G_OBJECT_CLASS (parent_class)->dispose (object);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
|
|
@ -147,12 +147,12 @@ gst_multi_file_src_dispose (GObject * object)
|
|||
{
|
||||
GstMultiFileSrc *src = GST_MULTI_FILE_SRC (object);
|
||||
|
||||
G_OBJECT_CLASS (parent_class)->dispose (object);
|
||||
|
||||
g_free (src->filename);
|
||||
src->filename = NULL;
|
||||
if (src->caps)
|
||||
gst_caps_unref (src->caps);
|
||||
|
||||
G_OBJECT_CLASS (parent_class)->dispose (object);
|
||||
}
|
||||
|
||||
static GstCaps *
|
||||
|
|
|
@ -802,11 +802,16 @@ gst_nuv_demux_sink_activate (GstPad * sinkpad)
|
|||
|
||||
if (gst_pad_check_pull_range (sinkpad)) {
|
||||
nuv->mode = 0;
|
||||
if (nuv->adapter != NULL) {
|
||||
gst_object_unref (nuv->adapter);
|
||||
nuv->adapter = NULL;
|
||||
}
|
||||
res = gst_pad_activate_pull (sinkpad, TRUE);
|
||||
} else {
|
||||
nuv->mode = 1;
|
||||
if (!nuv->adapter) {
|
||||
nuv->adapter = gst_adapter_new ();
|
||||
}
|
||||
res = gst_pad_activate_push (sinkpad, TRUE);
|
||||
}
|
||||
|
||||
|
|
|
@ -239,6 +239,8 @@ gst_dshowaudiosrc_dispose (GObject * gobject)
|
|||
}
|
||||
|
||||
CoUninitialize ();
|
||||
|
||||
G_OBJECT_CLASS (parent_class)->dispose (object);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -35,9 +35,9 @@ GST_DEBUG_CATEGORY_STATIC (dshowvideosrc_debug);
|
|||
#define GST_CAT_DEFAULT dshowvideosrc_debug
|
||||
|
||||
const GUID MEDIASUBTYPE_I420
|
||||
=
|
||||
{ 0x30323449, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B,
|
||||
0x71} };
|
||||
= { 0x30323449, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B,
|
||||
0x71}
|
||||
};
|
||||
|
||||
static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src",
|
||||
GST_PAD_SRC,
|
||||
|
@ -245,6 +245,8 @@ gst_dshowvideosrc_dispose (GObject * gobject)
|
|||
}
|
||||
|
||||
CoUninitialize ();
|
||||
|
||||
G_OBJECT_CLASS (parent_class)->dispose (object);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
|
|
@ -83,6 +83,8 @@ gst_vcdsrc_setup_interfaces (GType type)
|
|||
GST_BOILERPLATE_FULL (GstVCDSrc, gst_vcdsrc, GstPushSrc, GST_TYPE_PUSH_SRC,
|
||||
gst_vcdsrc_setup_interfaces);
|
||||
|
||||
static void gst_vcdsrc_finalize (GObject * object);
|
||||
|
||||
static void gst_vcdsrc_set_property (GObject * object, guint prop_id,
|
||||
const GValue * value, GParamSpec * pspec);
|
||||
static void gst_vcdsrc_get_property (GObject * object, guint prop_id,
|
||||
|
@ -116,6 +118,7 @@ gst_vcdsrc_class_init (GstVCDSrcClass * klass)
|
|||
|
||||
gobject_class->set_property = gst_vcdsrc_set_property;
|
||||
gobject_class->get_property = gst_vcdsrc_get_property;
|
||||
gobject_class->finalize = gst_vcdsrc_finalize;
|
||||
|
||||
g_object_class_install_property (gobject_class, PROP_DEVICE,
|
||||
g_param_spec_string ("device", "Device",
|
||||
|
@ -149,6 +152,16 @@ gst_vcdsrc_init (GstVCDSrc * vcdsrc, GstVCDSrcClass * klass)
|
|||
vcdsrc->max_errors = 16;
|
||||
}
|
||||
|
||||
static void
|
||||
gst_vcdsrc_finalize (GObject * object)
|
||||
{
|
||||
GstVCDSrc *vcdsrc = GST_VCDSRC (object);
|
||||
|
||||
g_free (vcdsrc->device);
|
||||
|
||||
G_OBJECT_CLASS (parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
|
||||
static inline guint64
|
||||
gst_vcdsrc_msf (GstVCDSrc * vcdsrc, gint track)
|
||||
|
|
Loading…
Reference in a new issue