gst_object_sync_values (G_OBJECT (pad), stream_time);
/* put buffer into array */
- g_array_insert_val (mix->array_buffers, array_index, mixcol->buffer);
+ mix->array_buffers->pdata[array_index] = mixcol->buffer;
if (pad == mix->master) {
gint64 running_time;
case GST_STATE_CHANGE_READY_TO_PAUSED:
{
GSList *walk = mix->sinkpads;
+ gint i = 0;
GstElement *parent = GST_ELEMENT (gst_element_get_parent (mix));
GstStructure *structure =
walk = g_slist_next (walk);
sink_pad->display = gst_gl_display_new ();
}
- mix->array_buffers =
- g_array_sized_new (FALSE, TRUE, sizeof (GstBuffer *),
- mix->next_sinkpad);
+ mix->array_buffers = g_ptr_array_sized_new (mix->next_sinkpad);
+ for (i = 0; i < mix->next_sinkpad; ++i) {
+ g_ptr_array_add (mix->array_buffers, NULL);
+ }
GST_LOG_OBJECT (mix, "starting collectpads");
gst_collect_pads_start (mix->collect);
break;
GSList *walk = mix->sinkpads;
GST_LOG_OBJECT (mix, "stopping collectpads");
gst_collect_pads_stop (mix->collect);
- g_array_free (mix->array_buffers, TRUE);
+ g_ptr_array_free (mix->array_buffers, TRUE);
while (walk) {
GstGLMixerPad *sink_pad = GST_GL_MIXER_PAD (walk->data);
walk = g_slist_next (walk);
-/*
+/*
* GStreamer
* Copyright (C) 2009 Julien Isorce <julien.isorce@gmail.com>
*
typedef struct _GstGLMixer GstGLMixer;
typedef struct _GstGLMixerClass GstGLMixerClass;
-typedef gboolean (*GstGLMixerSetCaps) (GstGLMixer* mixer,
+typedef gboolean (*GstGLMixerSetCaps) (GstGLMixer* mixer,
GstCaps* outcaps);
typedef void (*GstGLMixerReset) (GstGLMixer *mixer);
typedef gboolean (*GstGLMixerProcessFunc) (GstGLMixer *mix,
- GArray *buffers, GstBuffer *outbuf);
+ GPtrArray *buffers, GstBuffer *outbuf);
struct _GstGLMixer
{
/* sinkpads, a GSList of GstGLMixerPads */
GSList *sinkpads;
- GArray *array_buffers;
+ GPtrArray *array_buffers;
gint numpads;
gint fps_n;
gint fps_d;
-
+
/* Next available sinkpad index */
gint next_sinkpad;