gstreamer 1.2.6 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Rakefile +78 -39
- data/ext/gstreamer/extconf.rb +8 -22
- data/ext/gstreamer/rbgst.c +82 -194
- data/lib/gst/base_loader.rb +20 -0
- data/lib/gst/bin.rb +32 -0
- data/lib/gst/bus.rb +24 -0
- data/lib/gst/element.rb +48 -0
- data/lib/gst.rb +87 -22
- data/sample/helloworld.rb +75 -0
- data/sample/mp3parselaunch.rb +74 -0
- data/sample/queue.rb +92 -0
- data/sample/typefind.rb +101 -0
- metadata +29 -84
- data/README +0 -33
- data/ext/gstreamer/misc.c +0 -63
- data/ext/gstreamer/rbgst-bin.c +0 -456
- data/ext/gstreamer/rbgst-buffer.c +0 -363
- data/ext/gstreamer/rbgst-bus.c +0 -92
- data/ext/gstreamer/rbgst-caps.c +0 -446
- data/ext/gstreamer/rbgst-child-proxy.c +0 -34
- data/ext/gstreamer/rbgst-clock.c +0 -108
- data/ext/gstreamer/rbgst-element-factory.c +0 -249
- data/ext/gstreamer/rbgst-element.c +0 -1106
- data/ext/gstreamer/rbgst-event.c +0 -352
- data/ext/gstreamer/rbgst-ghost-pad.c +0 -45
- data/ext/gstreamer/rbgst-index-factory.c +0 -69
- data/ext/gstreamer/rbgst-install-plugins-context.c +0 -87
- data/ext/gstreamer/rbgst-install-plugins-return.c +0 -45
- data/ext/gstreamer/rbgst-install-plugins.c +0 -125
- data/ext/gstreamer/rbgst-message.c +0 -785
- data/ext/gstreamer/rbgst-mini-object.c +0 -221
- data/ext/gstreamer/rbgst-object.c +0 -81
- data/ext/gstreamer/rbgst-pad-template.c +0 -125
- data/ext/gstreamer/rbgst-pad.c +0 -336
- data/ext/gstreamer/rbgst-pipeline.c +0 -91
- data/ext/gstreamer/rbgst-plugin-feature.c +0 -131
- data/ext/gstreamer/rbgst-plugin.c +0 -162
- data/ext/gstreamer/rbgst-private.c +0 -88
- data/ext/gstreamer/rbgst-private.h +0 -97
- data/ext/gstreamer/rbgst-query.c +0 -291
- data/ext/gstreamer/rbgst-seek.c +0 -39
- data/ext/gstreamer/rbgst-static-caps.c +0 -49
- data/ext/gstreamer/rbgst-static-pad-template.c +0 -65
- data/ext/gstreamer/rbgst-structure.c +0 -300
- data/ext/gstreamer/rbgst-system-clock.c +0 -48
- data/ext/gstreamer/rbgst-type-find-factory.c +0 -125
- data/ext/gstreamer/rbgst-value.c +0 -527
- data/ext/gstreamer/rbgst-x-overlay.c +0 -131
- data/ext/gstreamer/rbgst.h +0 -197
- data/ext/gstreamer/rbgstclockentry.c +0 -271
- data/ext/gstreamer/rbgstformat.c +0 -162
- data/ext/gstreamer/rbgstindex.c +0 -315
- data/ext/gstreamer/rbgstindexentry.c +0 -99
- data/ext/gstreamer/rbgstparse.c +0 -69
- data/ext/gstreamer/rbgstquerytype.c +0 -162
- data/ext/gstreamer/rbgstregistry.c +0 -288
- data/ext/gstreamer/rbgsttag.c +0 -113
- data/ext/gstreamer/rbgsttagsetter.c +0 -53
- data/ext/gstreamer/rbgstxml.c +0 -192
- data/sample/audio-player.rb +0 -54
- data/sample/gst-gi.rb +0 -55
- data/sample/gst-inspect.rb +0 -417
- data/sample/install-plugins.rb +0 -40
- data/sample/media-type.rb +0 -55
- data/sample/media-type2.rb +0 -268
- data/sample/ogg-audio-player.rb +0 -54
- data/sample/type-find.rb +0 -46
- data/sample/video-player.rb +0 -57
- data/sample/xml-player.rb +0 -60
- data/test/gst-test-utils.rb +0 -18
- data/test/run-test.rb +0 -25
- data/test/test_bin.rb +0 -167
- data/test/test_buffer.rb +0 -185
- data/test/test_caps.rb +0 -24
- data/test/test_element.rb +0 -85
- data/test/test_element_factory.rb +0 -28
- data/test/test_event.rb +0 -10
- data/test/test_index_factory.rb +0 -7
- data/test/test_install-plugins.rb +0 -18
- data/test/test_message.rb +0 -191
- data/test/test_mini_object.rb +0 -38
- data/test/test_object.rb +0 -10
- data/test/test_pad.rb +0 -68
- data/test/test_plugin.rb +0 -6
- data/test/test_plugin_feature.rb +0 -20
- data/test/test_seek.rb +0 -17
- data/test/test_static_caps.rb +0 -18
- data/test/test_static_pad_template.rb +0 -16
- data/test/test_structure.rb +0 -159
- data/test/test_thread_handling.rb +0 -58
- data/test/test_type_find_factory.rb +0 -8
- data/test/test_value.rb +0 -69
data/ext/gstreamer/misc.c
DELETED
@@ -1,63 +0,0 @@
|
|
1
|
-
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
|
-
/*
|
3
|
-
* Copyright (C) 2011 Ruby-GNOME2 Project Team
|
4
|
-
* Copyright (C) 2003, 2004 Laurent Sansonetti <lrz@gnome.org>
|
5
|
-
*
|
6
|
-
* This library is free software; you can redistribute it and/or
|
7
|
-
* modify it under the terms of the GNU Lesser General Public
|
8
|
-
* License as published by the Free Software Foundation; either
|
9
|
-
* version 2.1 of the License, or (at your option) any later version.
|
10
|
-
*
|
11
|
-
* This library is distributed in the hope that it will be useful,
|
12
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
14
|
-
* Lesser General Public License for more details.
|
15
|
-
*
|
16
|
-
* You should have received a copy of the GNU Lesser General Public
|
17
|
-
* License along with this library; if not, write to the Free Software
|
18
|
-
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
19
|
-
* MA 02110-1301 USA
|
20
|
-
*/
|
21
|
-
|
22
|
-
#include "rbgst-private.h"
|
23
|
-
|
24
|
-
VALUE
|
25
|
-
rb_str_new_with_format (char *fmt, ...)
|
26
|
-
{
|
27
|
-
char buf[1000];
|
28
|
-
va_list ap;
|
29
|
-
|
30
|
-
va_start (ap, fmt);
|
31
|
-
vsnprintf (buf, sizeof buf, fmt, ap);
|
32
|
-
va_end (ap);
|
33
|
-
return CSTR2RVAL (buf);
|
34
|
-
}
|
35
|
-
|
36
|
-
VALUE
|
37
|
-
rb_ary_yield (VALUE arr)
|
38
|
-
{
|
39
|
-
if (rb_block_given_p () == Qfalse)
|
40
|
-
rb_raise (rb_eArgError, "No block given");
|
41
|
-
rb_ary_each (arr);
|
42
|
-
return Qnil;
|
43
|
-
}
|
44
|
-
|
45
|
-
VALUE
|
46
|
-
rbgst_new_gstobject (void *o)
|
47
|
-
{
|
48
|
-
GType gtype = G_OBJECT_TYPE (o);
|
49
|
-
const gchar *gtypename = g_type_name (gtype);
|
50
|
-
if (strncmp (gtypename, "Gst", 3) == 0)
|
51
|
-
gtypename += 3;
|
52
|
-
if (!rb_const_defined_at (mGst, rb_intern (gtypename)))
|
53
|
-
G_DEF_CLASS (gtype, gtypename, mGst);
|
54
|
-
return GOBJ2RVAL (o);
|
55
|
-
}
|
56
|
-
|
57
|
-
void
|
58
|
-
rbgst_initialize_gstobject(VALUE obj, GstObject *gstobj)
|
59
|
-
{
|
60
|
-
gstobj = gst_object_ref (gstobj);
|
61
|
-
gst_object_sink (gstobj);
|
62
|
-
G_INITIALIZE (obj, gstobj);
|
63
|
-
}
|
data/ext/gstreamer/rbgst-bin.c
DELETED
@@ -1,456 +0,0 @@
|
|
1
|
-
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
|
-
/*
|
3
|
-
* Copyright (C) 2011 Ruby-GNOME2 Project Team
|
4
|
-
* Copyright (C) 2003, 2004 Laurent Sansonetti <lrz@gnome.org>
|
5
|
-
* 2004 Erwan Loisant <erwan@loisant.org>
|
6
|
-
*
|
7
|
-
* This library is free software; you can redistribute it and/or
|
8
|
-
* modify it under the terms of the GNU Lesser General Public
|
9
|
-
* License as published by the Free Software Foundation; either
|
10
|
-
* version 2.1 of the License, or (at your option) any later version.
|
11
|
-
*
|
12
|
-
* This library is distributed in the hope that it will be useful,
|
13
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
15
|
-
* Lesser General Public License for more details.
|
16
|
-
*
|
17
|
-
* You should have received a copy of the GNU Lesser General Public
|
18
|
-
* License along with this library; if not, write to the Free Software
|
19
|
-
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
20
|
-
* MA 02110-1301 USA
|
21
|
-
*/
|
22
|
-
|
23
|
-
#include "rbgst-private.h"
|
24
|
-
|
25
|
-
#define RG_TARGET_NAMESPACE cBin
|
26
|
-
#define SELF(self) RVAL2GST_BIN(self)
|
27
|
-
|
28
|
-
/* Class: Gst::Bin
|
29
|
-
* Base container element.
|
30
|
-
*/
|
31
|
-
|
32
|
-
/*
|
33
|
-
* Class method: new(name=nil)
|
34
|
-
* name: a name for the bin.
|
35
|
-
*
|
36
|
-
* Constructs a new Gst::Bin object.
|
37
|
-
*
|
38
|
-
* If element name is ommited (or nil), then the bin will receive a guaranteed
|
39
|
-
* unique name, consisting of the "bin" string and a number.
|
40
|
-
* If name is given, it will be given the name supplied.
|
41
|
-
*
|
42
|
-
* Returns: a newly allocated Gst::Bin object.
|
43
|
-
*/
|
44
|
-
static VALUE
|
45
|
-
rg_initialize(int argc, VALUE *argv, VALUE self)
|
46
|
-
{
|
47
|
-
GstElement *bin;
|
48
|
-
VALUE name;
|
49
|
-
|
50
|
-
rb_scan_args(argc, argv, "01", &name);
|
51
|
-
|
52
|
-
bin = gst_bin_new(RVAL2CSTR_ACCEPT_NIL(name));
|
53
|
-
if (bin)
|
54
|
-
RBGST_INITIALIZE(self, bin);
|
55
|
-
return Qnil;
|
56
|
-
}
|
57
|
-
|
58
|
-
/*
|
59
|
-
* Method: size
|
60
|
-
*
|
61
|
-
* Returns: the number of elements in the container.
|
62
|
-
*/
|
63
|
-
static VALUE
|
64
|
-
rg_size(VALUE self)
|
65
|
-
{
|
66
|
-
return INT2NUM(GST_BIN_NUMCHILDREN(SELF(self)));
|
67
|
-
}
|
68
|
-
|
69
|
-
/*
|
70
|
-
* Method: children(interface=nil)
|
71
|
-
* interface: an interface (Ruby class).
|
72
|
-
*
|
73
|
-
* Returns: If interface is nil, an array of all
|
74
|
-
* Gst::Element objects in the container. Otherwise, an
|
75
|
-
* array of Gst::Element objects in the container that
|
76
|
-
* implements the interface.
|
77
|
-
*/
|
78
|
-
static VALUE
|
79
|
-
rg_children(int argc, VALUE *argv, VALUE self)
|
80
|
-
{
|
81
|
-
VALUE children, iface;
|
82
|
-
|
83
|
-
rb_scan_args(argc, argv, "01", &iface);
|
84
|
-
|
85
|
-
if (NIL_P(iface)) {
|
86
|
-
const GList *node;
|
87
|
-
children = rb_ary_new();
|
88
|
-
for (node = GST_BIN_CHILDREN(SELF(self));
|
89
|
-
node;
|
90
|
-
node = g_list_next(node)) {
|
91
|
-
rb_ary_push(children, GST_ELEMENT2RVAL(node->data));
|
92
|
-
}
|
93
|
-
} else {
|
94
|
-
GstIterator *iter;
|
95
|
-
iter = gst_bin_iterate_all_by_interface(SELF(self),
|
96
|
-
CLASS2GTYPE(iface));
|
97
|
-
children = _rbgst_collect_elements(iter);
|
98
|
-
}
|
99
|
-
|
100
|
-
return children;
|
101
|
-
}
|
102
|
-
|
103
|
-
/*
|
104
|
-
* Method: children_recurse()
|
105
|
-
*
|
106
|
-
* Returns: an array of all Gst::Element objects in the container and child
|
107
|
-
* bins.
|
108
|
-
*/
|
109
|
-
static VALUE
|
110
|
-
rg_children_recurse(VALUE self)
|
111
|
-
{
|
112
|
-
GstIterator *iter;
|
113
|
-
VALUE children;
|
114
|
-
|
115
|
-
iter = gst_bin_iterate_recurse(SELF(self));
|
116
|
-
children = _rbgst_collect_elements(iter);
|
117
|
-
|
118
|
-
return children;
|
119
|
-
}
|
120
|
-
|
121
|
-
static VALUE
|
122
|
-
rg_children_cookie(VALUE self)
|
123
|
-
{
|
124
|
-
return UINT2NUM(GST_BIN_CHILDREN_COOKIE(SELF(self)));
|
125
|
-
}
|
126
|
-
|
127
|
-
static VALUE
|
128
|
-
rg_child_bus(VALUE self)
|
129
|
-
{
|
130
|
-
return GST_BUS2RVAL(SELF(self)->child_bus);
|
131
|
-
}
|
132
|
-
|
133
|
-
static VALUE
|
134
|
-
rg_messages(VALUE self)
|
135
|
-
{
|
136
|
-
GList *node;
|
137
|
-
VALUE messages;
|
138
|
-
|
139
|
-
messages = rb_ary_new();
|
140
|
-
for (node = SELF(self)->messages; node; node = g_list_next(node)) {
|
141
|
-
rb_ary_push(messages, GST_MSG2RVAL(node->data));
|
142
|
-
}
|
143
|
-
|
144
|
-
return messages;
|
145
|
-
}
|
146
|
-
|
147
|
-
static VALUE
|
148
|
-
rg_polling_p(VALUE self)
|
149
|
-
{
|
150
|
-
return CBOOL2RVAL(SELF(self)->polling);
|
151
|
-
}
|
152
|
-
|
153
|
-
static VALUE
|
154
|
-
rg_clock_dirty_p(VALUE self)
|
155
|
-
{
|
156
|
-
return CBOOL2RVAL(SELF(self)->clock_dirty);
|
157
|
-
}
|
158
|
-
|
159
|
-
/*
|
160
|
-
* Method: provided_clock
|
161
|
-
*
|
162
|
-
* Gets the current clock of the (scheduler of the) bin,
|
163
|
-
* as a Gst::Clock object.
|
164
|
-
*
|
165
|
-
* Returns: a Gst::Clock object, or nil.
|
166
|
-
*/
|
167
|
-
static VALUE
|
168
|
-
rg_provided_clock(VALUE self)
|
169
|
-
{
|
170
|
-
return GST_CLOCK2RVAL(SELF(self)->provided_clock);
|
171
|
-
}
|
172
|
-
|
173
|
-
/*
|
174
|
-
* Method: provided_clock=(clock)
|
175
|
-
* clock: a Gst::Clock.
|
176
|
-
*
|
177
|
-
* Forces the bin to use the given clock. Use nil to force it
|
178
|
-
* to use no clock at all.
|
179
|
-
*
|
180
|
-
* Returns: self.
|
181
|
-
*/
|
182
|
-
static VALUE
|
183
|
-
rg_set_provided_clock(VALUE self, VALUE clock)
|
184
|
-
{
|
185
|
-
GstBin *bin;
|
186
|
-
|
187
|
-
bin = SELF(self);
|
188
|
-
if (bin->provided_clock)
|
189
|
-
g_object_unref(bin->provided_clock);
|
190
|
-
|
191
|
-
bin->provided_clock = RVAL2GST_CLOCK(clock);
|
192
|
-
if (bin->provided_clock)
|
193
|
-
g_object_ref(bin->provided_clock);
|
194
|
-
|
195
|
-
return self;
|
196
|
-
}
|
197
|
-
|
198
|
-
static VALUE
|
199
|
-
rg_clock_provider(VALUE self)
|
200
|
-
{
|
201
|
-
return GST_ELEMENT2RVAL(SELF(self)->clock_provider);
|
202
|
-
}
|
203
|
-
|
204
|
-
/*
|
205
|
-
* Method: <<(element)
|
206
|
-
* element: a Gst::Element object.
|
207
|
-
*
|
208
|
-
* Adds a Gst::Element object to the bin.
|
209
|
-
*
|
210
|
-
* Returns: self.
|
211
|
-
*/
|
212
|
-
static VALUE
|
213
|
-
rg_operator_add(VALUE self, VALUE element)
|
214
|
-
{
|
215
|
-
VALUE klass = GTYPE2CLASS(GST_TYPE_ELEMENT);
|
216
|
-
|
217
|
-
if (!RVAL2CBOOL(rb_obj_is_kind_of(element, klass))) {
|
218
|
-
rb_raise(rb_eTypeError, "Gst::Element expected");
|
219
|
-
}
|
220
|
-
gst_bin_add(SELF(self), RVAL2GST_ELEMENT(element));
|
221
|
-
G_CHILD_ADD(self, element);
|
222
|
-
return self;
|
223
|
-
}
|
224
|
-
|
225
|
-
/*
|
226
|
-
* Method: add(*elements)
|
227
|
-
* elements: a list of Gst::Element objects.
|
228
|
-
*
|
229
|
-
* Adds one or more Gst::Element objects to the bin.
|
230
|
-
*
|
231
|
-
* Returns: nil.
|
232
|
-
*/
|
233
|
-
static VALUE
|
234
|
-
rg_add(int argc, VALUE *argv, VALUE self)
|
235
|
-
{
|
236
|
-
int i;
|
237
|
-
|
238
|
-
for (i = 0; i < argc; i++) {
|
239
|
-
rg_operator_add(self, argv[i]);
|
240
|
-
}
|
241
|
-
return Qnil;
|
242
|
-
}
|
243
|
-
|
244
|
-
/*
|
245
|
-
* Method: remove(*elements)
|
246
|
-
* elements: a list of Gst::Element objects.
|
247
|
-
*
|
248
|
-
* Removes one or more Gst::Element objects from the bin, unparenting
|
249
|
-
* as well.
|
250
|
-
*
|
251
|
-
* Returns: nil.
|
252
|
-
*/
|
253
|
-
static VALUE
|
254
|
-
rg_remove(int argc, VALUE *argv, VALUE self)
|
255
|
-
{
|
256
|
-
int i;
|
257
|
-
GstBin *bin;
|
258
|
-
|
259
|
-
bin = SELF(self);
|
260
|
-
for (i = 0; i < argc; i++) {
|
261
|
-
G_CHILD_REMOVE(self, argv[i]);
|
262
|
-
gst_bin_remove(bin, RVAL2GST_ELEMENT(argv[i]));
|
263
|
-
}
|
264
|
-
return Qnil;
|
265
|
-
}
|
266
|
-
|
267
|
-
/*
|
268
|
-
* Method: clear
|
269
|
-
*
|
270
|
-
* Removes all Gst::Element objects in the bin.
|
271
|
-
*
|
272
|
-
* Returns: nil.
|
273
|
-
*/
|
274
|
-
static VALUE
|
275
|
-
rg_clear(VALUE self)
|
276
|
-
{
|
277
|
-
GstBin *bin;
|
278
|
-
GList *node, *children;
|
279
|
-
|
280
|
-
bin = SELF(self);
|
281
|
-
children = g_list_copy(GST_BIN_CHILDREN(bin));
|
282
|
-
for (node = children; node; node = g_list_next(node)) {
|
283
|
-
gst_bin_remove(bin, node->data);
|
284
|
-
}
|
285
|
-
g_list_free(children);
|
286
|
-
return Qnil;
|
287
|
-
}
|
288
|
-
|
289
|
-
/*
|
290
|
-
* Method: each(interface=nil) {|element| ...}
|
291
|
-
*
|
292
|
-
* Calls the block for each element in the bin, passing a reference to
|
293
|
-
* the Gst::Element as parameter. If the interface isn't nil,
|
294
|
-
* iterated elements should implement the interface.
|
295
|
-
*
|
296
|
-
* Returns: always nil.
|
297
|
-
*/
|
298
|
-
static VALUE
|
299
|
-
rg_each(int argc, VALUE *argv, VALUE self)
|
300
|
-
{
|
301
|
-
return rb_ary_yield(rg_children(argc, argv, self));
|
302
|
-
}
|
303
|
-
|
304
|
-
/*
|
305
|
-
* Method: each_recurse() {|element| ...}
|
306
|
-
*
|
307
|
-
* Calls the block for each element in the bin and its child bins, passing a
|
308
|
-
* reference to the Gst::Element as parameter.
|
309
|
-
*
|
310
|
-
* Returns: always nil.
|
311
|
-
*/
|
312
|
-
static VALUE
|
313
|
-
rg_each_recurse(VALUE self)
|
314
|
-
{
|
315
|
-
return rb_ary_yield(rg_children_recurse(self));
|
316
|
-
}
|
317
|
-
|
318
|
-
/*
|
319
|
-
* Method: get_child(index)
|
320
|
-
* Method: get_child(name, recurse=false)
|
321
|
-
* Method: get_child(interface)
|
322
|
-
* index: an index.
|
323
|
-
* name: a name.
|
324
|
-
* recurse: search recursively.
|
325
|
-
* interface: an interface (Ruby class).
|
326
|
-
*
|
327
|
-
* 1st: Gets the index-th element.
|
328
|
-
*
|
329
|
-
* 2nd: Gets the element with the given name from the
|
330
|
-
* bin, as a reference to a Gst::Element object. If the
|
331
|
-
* element is not found and recurse is true, a recursion is
|
332
|
-
* performed on the parent bin.
|
333
|
-
*
|
334
|
-
* 3nd: Looks for the first element inside the bin that implements the
|
335
|
-
* given interface. If such an element is found, it returns the element.
|
336
|
-
* If you want all elements that implement the interface, use
|
337
|
-
* Gst::Bin#get_all_by_interface. The method recurses bins inside bins.
|
338
|
-
*
|
339
|
-
* Returns: a Gst::Element reference, or nil if the bin does not contain
|
340
|
-
* an element with the given name nor implementing the interface.
|
341
|
-
*/
|
342
|
-
static VALUE
|
343
|
-
rg_get_child(int argc, VALUE *argv, VALUE self)
|
344
|
-
{
|
345
|
-
VALUE index_or_name_or_interface, recurse;
|
346
|
-
GstElement *element = NULL;
|
347
|
-
|
348
|
-
rb_scan_args(argc, argv, "11", &index_or_name_or_interface, &recurse);
|
349
|
-
|
350
|
-
if (RVAL2CBOOL(rb_obj_is_kind_of(index_or_name_or_interface, rb_cInteger))) {
|
351
|
-
int index;
|
352
|
-
GList *node;
|
353
|
-
index = NUM2INT(index_or_name_or_interface);
|
354
|
-
node = g_list_nth(GST_BIN_CHILDREN(SELF(self)), index);
|
355
|
-
if (node)
|
356
|
-
element = node->data;
|
357
|
-
} else if (RVAL2CBOOL(rb_obj_is_kind_of(index_or_name_or_interface,
|
358
|
-
rb_cString))) {
|
359
|
-
char *name;
|
360
|
-
name = RVAL2CSTR(index_or_name_or_interface);
|
361
|
-
|
362
|
-
if (RVAL2CBOOL(recurse)) {
|
363
|
-
element = gst_bin_get_by_name_recurse_up(SELF(self), name);
|
364
|
-
} else {
|
365
|
-
element = gst_bin_get_by_name(SELF(self), name);
|
366
|
-
}
|
367
|
-
} else {
|
368
|
-
GType iface;
|
369
|
-
iface = CLASS2GTYPE(index_or_name_or_interface);
|
370
|
-
element = gst_bin_get_by_interface(SELF(self), iface);
|
371
|
-
}
|
372
|
-
|
373
|
-
return GST_ELEMENT2RVAL(element);
|
374
|
-
}
|
375
|
-
|
376
|
-
static VALUE
|
377
|
-
rg_sinks(VALUE self)
|
378
|
-
{
|
379
|
-
return _rbgst_collect_elements(gst_bin_iterate_sinks(SELF(self)));
|
380
|
-
}
|
381
|
-
|
382
|
-
static VALUE
|
383
|
-
rg_sources(VALUE self)
|
384
|
-
{
|
385
|
-
return _rbgst_collect_elements(gst_bin_iterate_sources(SELF(self)));
|
386
|
-
}
|
387
|
-
|
388
|
-
#ifdef GST_DEBUG_BIN_TO_DOT_FILE
|
389
|
-
static VALUE
|
390
|
-
rg_to_dot_file(VALUE self, VALUE details, VALUE filename)
|
391
|
-
{
|
392
|
-
GST_DEBUG_BIN_TO_DOT_FILE(SELF(self), NUM2INT(details), RVAL2CSTR(filename));
|
393
|
-
return Qnil;
|
394
|
-
}
|
395
|
-
|
396
|
-
static VALUE
|
397
|
-
rg_to_dot_file_with_ts(VALUE self, VALUE details, VALUE filename)
|
398
|
-
{
|
399
|
-
GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS(SELF(self),
|
400
|
-
NUM2INT(details),
|
401
|
-
RVAL2CSTR(filename));
|
402
|
-
return Qnil;
|
403
|
-
}
|
404
|
-
#endif
|
405
|
-
|
406
|
-
void
|
407
|
-
Init_gst_bin (VALUE mGst)
|
408
|
-
{
|
409
|
-
VALUE RG_TARGET_NAMESPACE;
|
410
|
-
|
411
|
-
RG_TARGET_NAMESPACE = G_DEF_CLASS(GST_TYPE_BIN, "Bin", mGst);
|
412
|
-
|
413
|
-
rb_include_module(RG_TARGET_NAMESPACE, rb_mEnumerable);
|
414
|
-
|
415
|
-
RG_DEF_METHOD(initialize, -1);
|
416
|
-
|
417
|
-
RG_DEF_METHOD(size, 0);
|
418
|
-
RG_DEF_ALIAS("length", "size");
|
419
|
-
|
420
|
-
RG_DEF_METHOD(children, -1);
|
421
|
-
RG_DEF_METHOD(each, -1);
|
422
|
-
|
423
|
-
RG_DEF_METHOD(children_recurse, 0);
|
424
|
-
RG_DEF_METHOD(each_recurse, 0);
|
425
|
-
|
426
|
-
RG_DEF_METHOD(children_cookie, 0);
|
427
|
-
RG_DEF_METHOD(child_bus, 0);
|
428
|
-
RG_DEF_METHOD(messages, 0);
|
429
|
-
RG_DEF_METHOD_P(polling, 0);
|
430
|
-
RG_DEF_METHOD_P(clock_dirty, 0);
|
431
|
-
RG_DEF_METHOD(provided_clock, 0);
|
432
|
-
RG_DEF_METHOD(set_provided_clock, 1);
|
433
|
-
RG_DEF_METHOD(clock_provider, 0);
|
434
|
-
|
435
|
-
RG_DEF_METHOD_OPERATOR("<<", add, 1);
|
436
|
-
RG_DEF_METHOD(add, -1);
|
437
|
-
RG_DEF_METHOD(remove, -1);
|
438
|
-
RG_DEF_METHOD(clear, 0);
|
439
|
-
|
440
|
-
RG_DEF_METHOD(get_child, -1);
|
441
|
-
|
442
|
-
RG_DEF_METHOD(sinks, 0);
|
443
|
-
RG_DEF_METHOD(sources, 0);
|
444
|
-
|
445
|
-
#ifdef GST_DEBUG_BIN_TO_DOT_FILE
|
446
|
-
RG_DEF_METHOD(to_dot_file, 2);
|
447
|
-
RG_DEF_METHOD(to_dot_file_with_ts, 2);
|
448
|
-
#endif
|
449
|
-
|
450
|
-
G_DEF_CLASS(GST_TYPE_BIN_FLAGS, "Flags", RG_TARGET_NAMESPACE);
|
451
|
-
G_DEF_CONSTANTS(RG_TARGET_NAMESPACE, GST_TYPE_BIN_FLAGS, "GST_BIN_");
|
452
|
-
#ifdef GST_DEBUG_BIN_TO_DOT_FILE
|
453
|
-
G_DEF_CONSTANTS(RG_TARGET_NAMESPACE, GST_TYPE_DEBUG_GRAPH_DETAILS,
|
454
|
-
"GST_DEBUG_GRAPH_");
|
455
|
-
#endif
|
456
|
-
}
|