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
@@ -1,288 +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
|
-
#define RG_TARGET_NAMESPACE cRegistry
|
25
|
-
|
26
|
-
/* Class: Gst::Registry
|
27
|
-
* Abstract class for managing plugins.
|
28
|
-
*/
|
29
|
-
|
30
|
-
static VALUE
|
31
|
-
rg_s_default(G_GNUC_UNUSED VALUE self)
|
32
|
-
{
|
33
|
-
return RGST_REGISTRY_NEW(gst_registry_get_default());
|
34
|
-
}
|
35
|
-
|
36
|
-
static VALUE
|
37
|
-
rg_s_update(G_GNUC_UNUSED VALUE self)
|
38
|
-
{
|
39
|
-
return CBOOL2RVAL(gst_update_registry());
|
40
|
-
}
|
41
|
-
|
42
|
-
/*
|
43
|
-
* Method: plugins
|
44
|
-
*
|
45
|
-
* Gets a list of all plugins in the pool.
|
46
|
-
*
|
47
|
-
* Returns: an array of Gst::Plugin objects.
|
48
|
-
*/
|
49
|
-
static VALUE
|
50
|
-
rg_plugins(VALUE self)
|
51
|
-
{
|
52
|
-
GList *list, *node;
|
53
|
-
VALUE arr;
|
54
|
-
|
55
|
-
arr = rb_ary_new();
|
56
|
-
list = gst_registry_get_plugin_list(RGST_REGISTRY(self));
|
57
|
-
for (node = list;
|
58
|
-
node != NULL;
|
59
|
-
node = g_list_next(node)) {
|
60
|
-
GstPlugin *plugin = (GstPlugin *)node->data;
|
61
|
-
rb_ary_push(arr, RGST_PLUGIN_NEW(plugin));
|
62
|
-
}
|
63
|
-
g_list_free(list);
|
64
|
-
return arr;
|
65
|
-
}
|
66
|
-
|
67
|
-
/*
|
68
|
-
* Method: each_plugin { |plugin| ... }
|
69
|
-
*
|
70
|
-
* Calls the block for each plugin in the pool, passing a reference to
|
71
|
-
* the Gst::Plugin as parameter.
|
72
|
-
*
|
73
|
-
* Returns: always nil.
|
74
|
-
*/
|
75
|
-
static VALUE
|
76
|
-
rg_each_plugin (VALUE self)
|
77
|
-
{
|
78
|
-
return rb_ary_yield (rg_plugins (self));
|
79
|
-
}
|
80
|
-
|
81
|
-
/*
|
82
|
-
* Method: get_features(feature_type_or_plugin_name)
|
83
|
-
* feature_type_or_plugin_name: a feature type or plugin name.
|
84
|
-
*
|
85
|
-
* Gets a list of all plugin features of the given type in the pool.
|
86
|
-
*
|
87
|
-
* Valid features types are Gst::AutoplugFactory, Gst::ElementFactory,
|
88
|
-
* Gst::IndexFactory, Gst::SchedulerFactory and Gst::TypeFactory.
|
89
|
-
*
|
90
|
-
* Returns: an array of Gst::PluginFeature objects.
|
91
|
-
*/
|
92
|
-
static VALUE
|
93
|
-
rg_get_features(VALUE self, VALUE type_or_plugin_name)
|
94
|
-
{
|
95
|
-
GList *list, *node;
|
96
|
-
GType gtype;
|
97
|
-
VALUE arr;
|
98
|
-
|
99
|
-
if (RVAL2CBOOL(rb_obj_is_kind_of(type_or_plugin_name, rb_cString))) {
|
100
|
-
list = gst_registry_get_feature_list_by_plugin(RGST_REGISTRY(self),
|
101
|
-
RVAL2CSTR(type_or_plugin_name));
|
102
|
-
} else {
|
103
|
-
gtype = CLASS2GTYPE(type_or_plugin_name);
|
104
|
-
if (!is_valid_pluginfeature_type(gtype))
|
105
|
-
rb_raise (rb_eArgError, "Invalid feature type.");
|
106
|
-
|
107
|
-
list = gst_registry_get_feature_list(RGST_REGISTRY(self), gtype);
|
108
|
-
}
|
109
|
-
|
110
|
-
arr = rb_ary_new();
|
111
|
-
for (node = list; node != NULL; node = g_list_next(node)) {
|
112
|
-
rb_ary_push(arr, instanciate_pluginfeature(GST_PLUGIN_FEATURE(node->data)));
|
113
|
-
}
|
114
|
-
g_list_free (list);
|
115
|
-
|
116
|
-
return arr;
|
117
|
-
}
|
118
|
-
|
119
|
-
/*
|
120
|
-
* Method: each_feature(feature_type) { |plugin_feature| ... }
|
121
|
-
*
|
122
|
-
* Calls the block for each plugin features of the given type in the pool,
|
123
|
-
* passing a reference to the Gst::PluginFeature as parameter.
|
124
|
-
*
|
125
|
-
* Valid features types are Gst::AutoplugFactory, Gst::ElementFactory,
|
126
|
-
* Gst::IndexFactory, Gst::SchedulerFactory and Gst::TypeFactory.
|
127
|
-
*
|
128
|
-
* Returns: always nil.
|
129
|
-
*/
|
130
|
-
static VALUE
|
131
|
-
rg_each_feature (VALUE self, VALUE type)
|
132
|
-
{
|
133
|
-
return rb_ary_yield (rg_get_features (self, type));
|
134
|
-
}
|
135
|
-
|
136
|
-
/*
|
137
|
-
* Method: paths
|
138
|
-
*
|
139
|
-
* Gets a list of paths of the registry.
|
140
|
-
*
|
141
|
-
* Returns: an array of strings.
|
142
|
-
*/
|
143
|
-
static VALUE
|
144
|
-
rg_paths (VALUE self)
|
145
|
-
{
|
146
|
-
GList *list;
|
147
|
-
VALUE arr;
|
148
|
-
|
149
|
-
arr = rb_ary_new ();
|
150
|
-
for (list = gst_registry_get_path_list (RGST_REGISTRY (self));
|
151
|
-
list != NULL;
|
152
|
-
list = g_list_next (list))
|
153
|
-
rb_ary_push (arr, CSTR2RVAL ((gchar *) list->data));
|
154
|
-
g_list_free (list);
|
155
|
-
return arr;
|
156
|
-
}
|
157
|
-
|
158
|
-
/*
|
159
|
-
* Method: each_path { |path| ... }
|
160
|
-
*
|
161
|
-
* Calls the block for each path of the registry, passing a reference to
|
162
|
-
* the path (a String object) as parameter.
|
163
|
-
*
|
164
|
-
* Returns: always nil.
|
165
|
-
*/
|
166
|
-
static VALUE
|
167
|
-
rg_each_path (VALUE self)
|
168
|
-
{
|
169
|
-
return rb_ary_yield (rg_paths (self));
|
170
|
-
}
|
171
|
-
|
172
|
-
/*
|
173
|
-
* Method: add_path(path)
|
174
|
-
* path: a path (a String object).
|
175
|
-
*
|
176
|
-
* Add the given path to the registry.
|
177
|
-
* The syntax of the path is specific to the registry.
|
178
|
-
* If the path has already been added, do nothing.
|
179
|
-
*
|
180
|
-
* Returns: nil.
|
181
|
-
*/
|
182
|
-
static VALUE
|
183
|
-
rg_add_path(VALUE self, VALUE path)
|
184
|
-
{
|
185
|
-
gst_registry_add_path(RGST_REGISTRY(self), RVAL2CSTR(path));
|
186
|
-
return Qnil;
|
187
|
-
}
|
188
|
-
|
189
|
-
/*
|
190
|
-
* Method: add_plugin(plugin)
|
191
|
-
* plugin: a Gst::Plugin.
|
192
|
-
*
|
193
|
-
* Adds a plugin to the registry. The 'plugin-added' signal will be emitted.
|
194
|
-
*
|
195
|
-
* Returns: true on success, false otherwise.
|
196
|
-
*/
|
197
|
-
static VALUE
|
198
|
-
rg_add_plugin(VALUE self, VALUE plugin)
|
199
|
-
{
|
200
|
-
return CBOOL2RVAL(gst_registry_add_plugin(RGST_REGISTRY (self),
|
201
|
-
RGST_PLUGIN (plugin)));
|
202
|
-
}
|
203
|
-
|
204
|
-
/*
|
205
|
-
* Method: remove_plugin(plugin)
|
206
|
-
* plugin: a Gst::Plugin.
|
207
|
-
*
|
208
|
-
* Removes a plugin from the registry.
|
209
|
-
*
|
210
|
-
* Returns: self.
|
211
|
-
*/
|
212
|
-
static VALUE
|
213
|
-
rg_remove_plugin (VALUE self, VALUE plugin)
|
214
|
-
{
|
215
|
-
gst_registry_remove_plugin (RGST_REGISTRY (self),
|
216
|
-
RGST_PLUGIN (plugin));
|
217
|
-
return self;
|
218
|
-
}
|
219
|
-
|
220
|
-
/*
|
221
|
-
* Method: find_plugin(name)
|
222
|
-
* name: a plugin name.
|
223
|
-
*
|
224
|
-
* Finds the plugin with the given name in the registry.
|
225
|
-
*
|
226
|
-
* Returns: a reference to a Gst::Plugin object if found,
|
227
|
-
* otherwise returns nil.
|
228
|
-
*/
|
229
|
-
static VALUE
|
230
|
-
rg_find_plugin (VALUE self, VALUE name)
|
231
|
-
{
|
232
|
-
GstPlugin *plugin = gst_registry_find_plugin (RGST_REGISTRY (self),
|
233
|
-
RVAL2CSTR (name));
|
234
|
-
return plugin != NULL
|
235
|
-
? RGST_PLUGIN_NEW (plugin)
|
236
|
-
: Qnil;
|
237
|
-
}
|
238
|
-
|
239
|
-
/*
|
240
|
-
* Method: find_feature(feature_name, feature_type)
|
241
|
-
* feature_name: a feature name.
|
242
|
-
* feature_type: a feature type.
|
243
|
-
*
|
244
|
-
* Finds the plugin feature with the given name and type in the registry.
|
245
|
-
*
|
246
|
-
* Valid features types are Gst::AutoplugFactory, Gst::ElementFactory,
|
247
|
-
* Gst::IndexFactory, Gst::SchedulerFactory and Gst::TypeFactory.
|
248
|
-
*
|
249
|
-
* Returns: a reference to a Gst::PluginFeature on success, or nil if the
|
250
|
-
* named plugin feature is not found.
|
251
|
-
*/
|
252
|
-
static VALUE
|
253
|
-
rg_find_feature(VALUE self, VALUE name, VALUE type)
|
254
|
-
{
|
255
|
-
GstPluginFeature *feature;
|
256
|
-
GType gtype;
|
257
|
-
|
258
|
-
gtype = CLASS2GTYPE (type);
|
259
|
-
if (!is_valid_pluginfeature_type (gtype))
|
260
|
-
rb_raise (rb_eArgError, "Invalid feature type.");
|
261
|
-
feature = gst_registry_find_feature (RGST_REGISTRY (self),
|
262
|
-
RVAL2CSTR (name),
|
263
|
-
gtype);
|
264
|
-
return feature != NULL
|
265
|
-
? instanciate_pluginfeature (feature)
|
266
|
-
: Qnil;
|
267
|
-
}
|
268
|
-
|
269
|
-
void
|
270
|
-
Init_gst_registry (VALUE mGst)
|
271
|
-
{
|
272
|
-
VALUE RG_TARGET_NAMESPACE = G_DEF_CLASS (GST_TYPE_REGISTRY, "Registry", mGst);
|
273
|
-
|
274
|
-
RG_DEF_SMETHOD(default, 0);
|
275
|
-
RG_DEF_SMETHOD(update, 0);
|
276
|
-
|
277
|
-
RG_DEF_METHOD(plugins, 0);
|
278
|
-
RG_DEF_METHOD(each_plugin, 0);
|
279
|
-
RG_DEF_METHOD(get_features, 1);
|
280
|
-
RG_DEF_METHOD(each_feature, 1);
|
281
|
-
RG_DEF_METHOD(paths, 0);
|
282
|
-
RG_DEF_METHOD(each_path, 0);
|
283
|
-
RG_DEF_METHOD(add_path, 1);
|
284
|
-
RG_DEF_METHOD(add_plugin, 1);
|
285
|
-
RG_DEF_METHOD(remove_plugin, 1);
|
286
|
-
RG_DEF_METHOD(find_plugin, 1);
|
287
|
-
RG_DEF_METHOD(find_feature, 2);
|
288
|
-
}
|
data/ext/gstreamer/rbgsttag.c
DELETED
@@ -1,113 +0,0 @@
|
|
1
|
-
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
|
-
/*
|
3
|
-
* Copyright (C) 2011-2012 Ruby-GNOME2 Project Team
|
4
|
-
* Copyright (C) 2003-2005 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
|
-
#define RG_TARGET_NAMESPACE mTag
|
25
|
-
|
26
|
-
/* Module: Gst::Tag
|
27
|
-
* Helper module to the tagging interface.
|
28
|
-
*/
|
29
|
-
|
30
|
-
/*
|
31
|
-
* Class method: exists?(tag)
|
32
|
-
* tag: the name of the tag.
|
33
|
-
*
|
34
|
-
* Checks if the given tag is already registered.
|
35
|
-
*
|
36
|
-
* Returns: true if the tag is registered, false otherwise.
|
37
|
-
*/
|
38
|
-
static VALUE
|
39
|
-
rg_s_exists_p (G_GNUC_UNUSED VALUE self, VALUE tag)
|
40
|
-
{
|
41
|
-
return CBOOL2RVAL (gst_tag_exists (RVAL2CSTR (tag)));
|
42
|
-
}
|
43
|
-
|
44
|
-
/*
|
45
|
-
* Class method: fixed?(tag)
|
46
|
-
* tag: the name of the tag.
|
47
|
-
*
|
48
|
-
* Checks if the given tag is fixed. A fixed tag can only contain one value.
|
49
|
-
* Unfixed tags can contain lists of values.
|
50
|
-
*
|
51
|
-
* Returns: true if the tag is fixed, false otherwise.
|
52
|
-
*/
|
53
|
-
static VALUE
|
54
|
-
rg_s_fixed_p (G_GNUC_UNUSED VALUE self, VALUE tag)
|
55
|
-
{
|
56
|
-
return CBOOL2RVAL (gst_tag_is_fixed (RVAL2CSTR (tag)));
|
57
|
-
}
|
58
|
-
|
59
|
-
/*
|
60
|
-
* Class method: get_nick(tag)
|
61
|
-
* tag: the name of the tag.
|
62
|
-
*
|
63
|
-
* Returns: the human-readable name of this tag.
|
64
|
-
*/
|
65
|
-
static VALUE
|
66
|
-
rg_s_get_nick (G_GNUC_UNUSED VALUE self, VALUE tag)
|
67
|
-
{
|
68
|
-
return CSTR2RVAL (gst_tag_get_nick (RVAL2CSTR (tag)));
|
69
|
-
}
|
70
|
-
|
71
|
-
/*
|
72
|
-
* Class method: get_description(tag)
|
73
|
-
* tag: the name of the tag.
|
74
|
-
*
|
75
|
-
* Returns: the human-readable description of this tag.
|
76
|
-
*/
|
77
|
-
static VALUE
|
78
|
-
rg_s_get_description (G_GNUC_UNUSED VALUE self, VALUE tag)
|
79
|
-
{
|
80
|
-
return CSTR2RVAL (gst_tag_get_description (RVAL2CSTR (tag)));
|
81
|
-
}
|
82
|
-
|
83
|
-
/*
|
84
|
-
* Class method: get_flag(tag)
|
85
|
-
* tag: the name of the tag.
|
86
|
-
*
|
87
|
-
* Gets the flag of the given tag.
|
88
|
-
*
|
89
|
-
* Returns: the flag of this tag (see Gst::Tag::Flag).
|
90
|
-
*/
|
91
|
-
static VALUE
|
92
|
-
rg_s_get_flag (G_GNUC_UNUSED VALUE self, VALUE tag)
|
93
|
-
{
|
94
|
-
return GFLAGS2RVAL (gst_tag_get_flag (RVAL2CSTR (tag)),
|
95
|
-
GST_TYPE_TAG_FLAG);
|
96
|
-
}
|
97
|
-
|
98
|
-
void
|
99
|
-
Init_gst_tag (VALUE mGst)
|
100
|
-
{
|
101
|
-
VALUE RG_TARGET_NAMESPACE = rb_define_module_under (mGst, "Tag");
|
102
|
-
|
103
|
-
RG_DEF_SMETHOD_P(exists, 1);
|
104
|
-
RG_DEF_SMETHOD(get_nick, 1);
|
105
|
-
RG_DEF_SMETHOD(get_description, 1);
|
106
|
-
RG_DEF_SMETHOD(get_flag, 1);
|
107
|
-
RG_DEF_SMETHOD_P(fixed, 1);
|
108
|
-
|
109
|
-
G_DEF_CLASS (GST_TYPE_TAG_FLAG, "Flag", RG_TARGET_NAMESPACE);
|
110
|
-
G_DEF_CONSTANTS (RG_TARGET_NAMESPACE, GST_TYPE_TAG_FLAG, "GST_TAG_");
|
111
|
-
G_DEF_CLASS (GST_TYPE_TAG_MERGE_MODE, "MergeMode", RG_TARGET_NAMESPACE);
|
112
|
-
G_DEF_CONSTANTS (RG_TARGET_NAMESPACE, GST_TYPE_TAG_MERGE_MODE, "GST_TAG_");
|
113
|
-
}
|
@@ -1,53 +0,0 @@
|
|
1
|
-
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
|
-
/*
|
3
|
-
* Copyright (C) 2011 Ruby-GNOME2 Project Team
|
4
|
-
* Copyright (C) 2003-2005 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
|
-
#define RG_TARGET_NAMESPACE mTagSetter
|
25
|
-
|
26
|
-
/* Class: Gst::TagSetter
|
27
|
-
* Element interface that allows the setting and retrieval of media metadata.
|
28
|
-
*/
|
29
|
-
|
30
|
-
/*
|
31
|
-
* Method: merge(structure, merge_mode)
|
32
|
-
* structure: a Ruby hash representing the tag list of merge from.
|
33
|
-
* merge_mode: the mode to merge with (see Gst::Tag::MergeMode).
|
34
|
-
*
|
35
|
-
* Merges the given tag list in the setter's list using the given mode.
|
36
|
-
*
|
37
|
-
* Returns: self.
|
38
|
-
*/
|
39
|
-
static VALUE
|
40
|
-
rg_merge (VALUE self, VALUE structure, VALUE merge_mode)
|
41
|
-
{
|
42
|
-
gst_tag_setter_merge_tags(RGST_TAG_SETTER(self),
|
43
|
-
RVAL2GST_STRUCT(structure),
|
44
|
-
RVAL2GENUM(merge_mode, GST_TYPE_TAG_MERGE_MODE));
|
45
|
-
return self;
|
46
|
-
}
|
47
|
-
|
48
|
-
void
|
49
|
-
Init_gst_tag_setter (VALUE mGst)
|
50
|
-
{
|
51
|
-
VALUE RG_TARGET_NAMESPACE = G_DEF_INTERFACE (GST_TYPE_TAG_SETTER, "TagSetter", mGst);
|
52
|
-
RG_DEF_METHOD(merge, 2);
|
53
|
-
}
|
data/ext/gstreamer/rbgstxml.c
DELETED
@@ -1,192 +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
|
-
#define RG_TARGET_NAMESPACE cXML
|
25
|
-
|
26
|
-
/* Class: Gst::XML
|
27
|
-
* Convert Gst::Element objects into an XML presentation.
|
28
|
-
*/
|
29
|
-
|
30
|
-
/*
|
31
|
-
* Class method: new
|
32
|
-
*
|
33
|
-
* Creates a new Gst::XML parser object.
|
34
|
-
*
|
35
|
-
* Returns: a newly created Gst::XML object.
|
36
|
-
*/
|
37
|
-
static VALUE
|
38
|
-
rg_initialize (VALUE self)
|
39
|
-
{
|
40
|
-
GstXML *xml = gst_xml_new ();
|
41
|
-
if (xml != NULL)
|
42
|
-
G_INITIALIZE (self, xml);
|
43
|
-
return Qnil;
|
44
|
-
}
|
45
|
-
|
46
|
-
/*
|
47
|
-
* Class method: write_file(element, filename)
|
48
|
-
* element: a Gst::Element.
|
49
|
-
* filename: a file name.
|
50
|
-
*
|
51
|
-
* Converts the given element into XML and writes the formatted XML
|
52
|
-
* to the specified file name.
|
53
|
-
*
|
54
|
-
* Returns: true on success, false on failure.
|
55
|
-
*/
|
56
|
-
static VALUE
|
57
|
-
rg_s_write_file (G_GNUC_UNUSED VALUE self, VALUE element, VALUE filename)
|
58
|
-
{
|
59
|
-
FILE *file = fopen (RVAL2CSTR (filename), "w");
|
60
|
-
gboolean ret = FALSE;
|
61
|
-
if (file != NULL) {
|
62
|
-
ret = gst_xml_write_file (RGST_ELEMENT (element), file) != -1;
|
63
|
-
fclose (file);
|
64
|
-
}
|
65
|
-
return CBOOL2RVAL (ret);
|
66
|
-
}
|
67
|
-
|
68
|
-
/*
|
69
|
-
* Method: parse_file(filename, rootname=nil)
|
70
|
-
* filename: a file name.
|
71
|
-
* rootname: a root name (optional).
|
72
|
-
*
|
73
|
-
* Fills the Gst::XML object with the corresponding elements from
|
74
|
-
* the XML file name. Optionally it will only build the element
|
75
|
-
* from the element node root (if it is not nil).
|
76
|
-
*
|
77
|
-
* This feature is useful if you only want to build a specific
|
78
|
-
* element from an XML file but not the pipeline it is embedded in.
|
79
|
-
*
|
80
|
-
* Pass "-" as file name to read from stdin. You can also pass a
|
81
|
-
* URI of any format that libxml supports, including http.
|
82
|
-
*
|
83
|
-
* Returns: true on success, false on failure.
|
84
|
-
*/
|
85
|
-
static VALUE
|
86
|
-
rg_parse_file (int argc, VALUE *argv, VALUE self)
|
87
|
-
{
|
88
|
-
VALUE fname, rootname;
|
89
|
-
rb_scan_args (argc, argv, "11", &fname, &rootname);
|
90
|
-
return CBOOL2RVAL (gst_xml_parse_file (RGST_XML (self),
|
91
|
-
(const guchar*) RVAL2CSTR (fname),
|
92
|
-
(const guchar*)(NIL_P (rootname)
|
93
|
-
? NULL
|
94
|
-
: RVAL2CSTR (rootname))));
|
95
|
-
}
|
96
|
-
|
97
|
-
/*
|
98
|
-
* Method: parse_memory(string, rootname=nil)
|
99
|
-
* string: an XML description inside a string.
|
100
|
-
* rootname: a root name (optional).
|
101
|
-
*
|
102
|
-
* Basically the same as Gst::XML#parse_file except that this method will
|
103
|
-
* take the XML directly from the memory.
|
104
|
-
*
|
105
|
-
* Returns: true on success, false on failure.
|
106
|
-
*/
|
107
|
-
static VALUE
|
108
|
-
rg_parse_memory (int argc, VALUE *argv, VALUE self)
|
109
|
-
{
|
110
|
-
VALUE memory, rootname;
|
111
|
-
gchar *cstr;
|
112
|
-
|
113
|
-
rb_scan_args (argc, argv, "11", &memory, &rootname);
|
114
|
-
cstr = RVAL2CSTR (memory);
|
115
|
-
return CBOOL2RVAL (gst_xml_parse_memory (RGST_XML (self),
|
116
|
-
(guchar*)cstr,
|
117
|
-
strlen (cstr),
|
118
|
-
(const gchar*)(NIL_P (rootname)
|
119
|
-
? NULL
|
120
|
-
: RVAL2CSTR (rootname))));
|
121
|
-
}
|
122
|
-
|
123
|
-
/*
|
124
|
-
* Method: get_element(element_name)
|
125
|
-
* element_name: the name of an element.
|
126
|
-
*
|
127
|
-
* This method is used to get a reference to the Gst::Element
|
128
|
-
* corresponding to name in the pipeline description. You would use
|
129
|
-
* this if you have to do anything to the element after loading.
|
130
|
-
*
|
131
|
-
* Returns: a reference to a Gst::Element object if found, otherwise
|
132
|
-
* returns nil.
|
133
|
-
*/
|
134
|
-
static VALUE
|
135
|
-
rg_get_element (VALUE self, VALUE element_name)
|
136
|
-
{
|
137
|
-
GstElement *element = gst_xml_get_element (RGST_XML (self),
|
138
|
-
(const guchar*)RVAL2CSTR (element_name));
|
139
|
-
return element != NULL
|
140
|
-
? RGST_ELEMENT_NEW (element)
|
141
|
-
: Qnil;
|
142
|
-
}
|
143
|
-
|
144
|
-
/*
|
145
|
-
* Method: topelements
|
146
|
-
*
|
147
|
-
* Retrieves a list of all toplevel elements.
|
148
|
-
*
|
149
|
-
* Returns: an array of Gst::Element objects.
|
150
|
-
*/
|
151
|
-
static VALUE
|
152
|
-
rg_topelements (VALUE self)
|
153
|
-
{
|
154
|
-
GList *list;
|
155
|
-
VALUE arr;
|
156
|
-
|
157
|
-
arr = rb_ary_new ();
|
158
|
-
for (list = gst_xml_get_topelements (RGST_XML (self));
|
159
|
-
list != NULL;
|
160
|
-
list = g_list_next (list))
|
161
|
-
rb_ary_push (arr, RGST_ELEMENT_NEW (list->data));
|
162
|
-
return arr;
|
163
|
-
}
|
164
|
-
|
165
|
-
/*
|
166
|
-
* Method: each_topelement { |element| ... }
|
167
|
-
*
|
168
|
-
* Calls the block for each topelement, passing a reference to
|
169
|
-
* a Gst::Element object as parameter.
|
170
|
-
*
|
171
|
-
* Returns: always nil.
|
172
|
-
*/
|
173
|
-
static VALUE
|
174
|
-
rg_each_topelement (VALUE self)
|
175
|
-
{
|
176
|
-
return rb_ary_yield (rg_topelements (self));
|
177
|
-
}
|
178
|
-
|
179
|
-
void
|
180
|
-
Init_gst_xml (VALUE mGst)
|
181
|
-
{
|
182
|
-
VALUE RG_TARGET_NAMESPACE = G_DEF_CLASS (GST_TYPE_XML, "XML", mGst);
|
183
|
-
|
184
|
-
RG_DEF_SMETHOD(write_file, 2);
|
185
|
-
|
186
|
-
RG_DEF_METHOD(initialize, 0);
|
187
|
-
RG_DEF_METHOD(parse_file, -1);
|
188
|
-
RG_DEF_METHOD(parse_memory, -1);
|
189
|
-
RG_DEF_METHOD(get_element, 1);
|
190
|
-
RG_DEF_METHOD(topelements, 0);
|
191
|
-
RG_DEF_METHOD(each_topelement, 0);
|
192
|
-
}
|
data/sample/audio-player.rb
DELETED
@@ -1,54 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'gst'
|
4
|
-
|
5
|
-
if ARGV.size != 1
|
6
|
-
puts "Usage: #{$0} audio-file"
|
7
|
-
exit
|
8
|
-
end
|
9
|
-
|
10
|
-
file = ARGV.first
|
11
|
-
|
12
|
-
pipeline = Gst::Pipeline.new
|
13
|
-
|
14
|
-
file_src = Gst::ElementFactory.make("filesrc")
|
15
|
-
file_src.location = file
|
16
|
-
|
17
|
-
decoder = Gst::ElementFactory.make("decodebin")
|
18
|
-
|
19
|
-
audio_convert = Gst::ElementFactory.make("audioconvert")
|
20
|
-
|
21
|
-
audio_resample = Gst::ElementFactory.make("audioresample")
|
22
|
-
|
23
|
-
audio_sink = Gst::ElementFactory.make("autoaudiosink")
|
24
|
-
|
25
|
-
pipeline.add(file_src, decoder, audio_convert, audio_resample, audio_sink)
|
26
|
-
file_src >> decoder
|
27
|
-
audio_convert >> audio_resample >> audio_sink
|
28
|
-
|
29
|
-
decoder.signal_connect("new-decoded-pad") do |element, pad|
|
30
|
-
sink_pad = audio_convert["sink"]
|
31
|
-
pad.link(sink_pad)
|
32
|
-
end
|
33
|
-
|
34
|
-
loop = GLib::MainLoop.new(nil, false)
|
35
|
-
|
36
|
-
bus = pipeline.bus
|
37
|
-
bus.add_watch do |bus, message|
|
38
|
-
case message.type
|
39
|
-
when Gst::Message::EOS
|
40
|
-
loop.quit
|
41
|
-
when Gst::Message::ERROR
|
42
|
-
p message.parse
|
43
|
-
loop.quit
|
44
|
-
end
|
45
|
-
true
|
46
|
-
end
|
47
|
-
|
48
|
-
pipeline.play
|
49
|
-
begin
|
50
|
-
loop.run
|
51
|
-
rescue Interrupt
|
52
|
-
ensure
|
53
|
-
pipeline.stop
|
54
|
-
end
|