gstreamer 0.90.6
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/ChangeLog +1157 -0
- data/README +33 -0
- data/Rakefile +15 -0
- data/ext/gstreamer/Makefile +162 -0
- data/ext/gstreamer/depend +5 -0
- data/ext/gstreamer/extconf.rb +63 -0
- data/ext/gstreamer/gst.so +0 -0
- data/ext/gstreamer/misc.c +62 -0
- data/ext/gstreamer/misc.o +0 -0
- data/ext/gstreamer/rbgst-bin.c +466 -0
- data/ext/gstreamer/rbgst-bin.o +0 -0
- data/ext/gstreamer/rbgst-buffer.c +365 -0
- data/ext/gstreamer/rbgst-buffer.o +0 -0
- data/ext/gstreamer/rbgst-bus.c +92 -0
- data/ext/gstreamer/rbgst-bus.o +0 -0
- data/ext/gstreamer/rbgst-caps.c +441 -0
- data/ext/gstreamer/rbgst-caps.o +0 -0
- data/ext/gstreamer/rbgst-child-proxy.c +33 -0
- data/ext/gstreamer/rbgst-child-proxy.o +0 -0
- data/ext/gstreamer/rbgst-clock.c +108 -0
- data/ext/gstreamer/rbgst-clock.o +0 -0
- data/ext/gstreamer/rbgst-element-factory.c +255 -0
- data/ext/gstreamer/rbgst-element-factory.o +0 -0
- data/ext/gstreamer/rbgst-element.c +1053 -0
- data/ext/gstreamer/rbgst-element.o +0 -0
- data/ext/gstreamer/rbgst-event.c +351 -0
- data/ext/gstreamer/rbgst-event.o +0 -0
- data/ext/gstreamer/rbgst-ghost-pad.c +42 -0
- data/ext/gstreamer/rbgst-ghost-pad.o +0 -0
- data/ext/gstreamer/rbgst-index-factory.c +67 -0
- data/ext/gstreamer/rbgst-index-factory.o +0 -0
- data/ext/gstreamer/rbgst-message.c +784 -0
- data/ext/gstreamer/rbgst-message.o +0 -0
- data/ext/gstreamer/rbgst-mini-object.c +220 -0
- data/ext/gstreamer/rbgst-mini-object.o +0 -0
- data/ext/gstreamer/rbgst-object.c +81 -0
- data/ext/gstreamer/rbgst-object.o +0 -0
- data/ext/gstreamer/rbgst-pad-template.c +124 -0
- data/ext/gstreamer/rbgst-pad-template.o +0 -0
- data/ext/gstreamer/rbgst-pad.c +338 -0
- data/ext/gstreamer/rbgst-pad.o +0 -0
- data/ext/gstreamer/rbgst-pipeline.c +90 -0
- data/ext/gstreamer/rbgst-pipeline.o +0 -0
- data/ext/gstreamer/rbgst-plugin-feature.c +134 -0
- data/ext/gstreamer/rbgst-plugin-feature.o +0 -0
- data/ext/gstreamer/rbgst-plugin.c +164 -0
- data/ext/gstreamer/rbgst-plugin.o +0 -0
- data/ext/gstreamer/rbgst-private.c +89 -0
- data/ext/gstreamer/rbgst-private.h +37 -0
- data/ext/gstreamer/rbgst-private.o +0 -0
- data/ext/gstreamer/rbgst-query.c +289 -0
- data/ext/gstreamer/rbgst-query.o +0 -0
- data/ext/gstreamer/rbgst-seek.c +36 -0
- data/ext/gstreamer/rbgst-seek.o +0 -0
- data/ext/gstreamer/rbgst-static-caps.c +49 -0
- data/ext/gstreamer/rbgst-static-caps.o +0 -0
- data/ext/gstreamer/rbgst-static-pad-template.c +64 -0
- data/ext/gstreamer/rbgst-static-pad-template.o +0 -0
- data/ext/gstreamer/rbgst-structure.c +300 -0
- data/ext/gstreamer/rbgst-structure.o +0 -0
- data/ext/gstreamer/rbgst-system-clock.c +45 -0
- data/ext/gstreamer/rbgst-system-clock.o +0 -0
- data/ext/gstreamer/rbgst-type-find-factory.c +124 -0
- data/ext/gstreamer/rbgst-type-find-factory.o +0 -0
- data/ext/gstreamer/rbgst-value.c +517 -0
- data/ext/gstreamer/rbgst-value.o +0 -0
- data/ext/gstreamer/rbgst-x-overlay.c +132 -0
- data/ext/gstreamer/rbgst-x-overlay.o +0 -0
- data/ext/gstreamer/rbgst.c +279 -0
- data/ext/gstreamer/rbgst.h +197 -0
- data/ext/gstreamer/rbgst.o +0 -0
- data/ext/gstreamer/rbgstclockentry.c +268 -0
- data/ext/gstreamer/rbgstclockentry.o +0 -0
- data/ext/gstreamer/rbgstformat.c +159 -0
- data/ext/gstreamer/rbgstformat.o +0 -0
- data/ext/gstreamer/rbgstindex.c +314 -0
- data/ext/gstreamer/rbgstindex.o +0 -0
- data/ext/gstreamer/rbgstindexentry.c +96 -0
- data/ext/gstreamer/rbgstindexentry.o +0 -0
- data/ext/gstreamer/rbgstparse.c +66 -0
- data/ext/gstreamer/rbgstparse.o +0 -0
- data/ext/gstreamer/rbgstquerytype.c +159 -0
- data/ext/gstreamer/rbgstquerytype.o +0 -0
- data/ext/gstreamer/rbgstregistry.c +278 -0
- data/ext/gstreamer/rbgstregistry.o +0 -0
- data/ext/gstreamer/rbgsttag.c +111 -0
- data/ext/gstreamer/rbgsttag.o +0 -0
- data/ext/gstreamer/rbgsttagsetter.c +50 -0
- data/ext/gstreamer/rbgsttagsetter.o +0 -0
- data/ext/gstreamer/rbgstxml.c +189 -0
- data/ext/gstreamer/rbgstxml.o +0 -0
- data/ext/gstreamer/ruby-gstreamer.pc +3 -0
- data/extconf.rb +49 -0
- data/lib/gst.rb +19 -0
- data/sample/audio-player.rb +54 -0
- data/sample/gst-inspect.rb +417 -0
- data/sample/media-type.rb +55 -0
- data/sample/media-type2.rb +268 -0
- data/sample/ogg-audio-player.rb +54 -0
- data/sample/type-find.rb +46 -0
- data/sample/video-player.rb +57 -0
- data/sample/xml-player.rb +60 -0
- data/test/gst-test-utils.rb +18 -0
- data/test/run-test.rb +25 -0
- data/test/test_bin.rb +167 -0
- data/test/test_buffer.rb +174 -0
- data/test/test_caps.rb +24 -0
- data/test/test_clock.rb +7 -0
- data/test/test_element.rb +87 -0
- data/test/test_element_factory.rb +28 -0
- data/test/test_event.rb +10 -0
- data/test/test_index_factory.rb +7 -0
- data/test/test_message.rb +191 -0
- data/test/test_mini_object.rb +38 -0
- data/test/test_object.rb +10 -0
- data/test/test_pad.rb +68 -0
- data/test/test_plugin.rb +6 -0
- data/test/test_plugin_feature.rb +20 -0
- data/test/test_seek.rb +17 -0
- data/test/test_static_caps.rb +18 -0
- data/test/test_static_pad_template.rb +16 -0
- data/test/test_structure.rb +159 -0
- data/test/test_thread_handling.rb +58 -0
- data/test/test_type_find_factory.rb +8 -0
- data/test/test_value.rb +69 -0
- metadata +208 -0
|
Binary file
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (C) 2008 Sjoerd Simons <sjoerd@luon.net>
|
|
4
|
+
* Copyright (C) 2003, 2004 Laurent Sansonetti <lrz@gnome.org>
|
|
5
|
+
*
|
|
6
|
+
* This file is part of Ruby/GStreamer.
|
|
7
|
+
*
|
|
8
|
+
* Ruby/GStreamer is free software; you can redistribute it and/or
|
|
9
|
+
* modify it under the terms of the GNU Lesser General Public
|
|
10
|
+
* License as published by the Free Software Foundation; either
|
|
11
|
+
* version 2.1 of the License, or (at your option) any later version.
|
|
12
|
+
*
|
|
13
|
+
* Ruby/GStreamer is distributed in the hope that it will be useful,
|
|
14
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
16
|
+
* Lesser General Public License for more details.
|
|
17
|
+
*
|
|
18
|
+
* You should have received a copy of the GNU Lesser General Public
|
|
19
|
+
* License along with Ruby/GStreamer; if not, write to the Free Software
|
|
20
|
+
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
#include "rbgst.h"
|
|
24
|
+
|
|
25
|
+
#define SELF(obj) (RVAL2GST_PIPELINE(obj))
|
|
26
|
+
|
|
27
|
+
/* Class: Gst::Pipeline
|
|
28
|
+
* In almost all cases, you'll want to use a Gst::Pipeline when creating a
|
|
29
|
+
* filter graph. The Gst::Pipeline will manage all the scheduling issues,
|
|
30
|
+
* including threading, as well as provide simple interfaces to common
|
|
31
|
+
* functions, like 'Play'.
|
|
32
|
+
*/
|
|
33
|
+
|
|
34
|
+
/*
|
|
35
|
+
* Class method: new(name=nil)
|
|
36
|
+
* name: a name for the pipeline.
|
|
37
|
+
*
|
|
38
|
+
* Constructs a new Gst::Pipeline object.
|
|
39
|
+
*
|
|
40
|
+
* If element name is ommited (or nil), then the pipeline will receive a guaranteed
|
|
41
|
+
* unique name, consisting of the "pipeline" string and a number.
|
|
42
|
+
* If name is given, it will be given the name supplied.
|
|
43
|
+
*
|
|
44
|
+
* Returns: a newly constructed Gst::Pipeline.
|
|
45
|
+
*/
|
|
46
|
+
static VALUE
|
|
47
|
+
rb_gst_pipeline_new (int argc, VALUE *argv, VALUE self)
|
|
48
|
+
{
|
|
49
|
+
GstElement *bin;
|
|
50
|
+
VALUE name;
|
|
51
|
+
|
|
52
|
+
rb_scan_args (argc, argv, "01", &name);
|
|
53
|
+
|
|
54
|
+
bin = gst_pipeline_new (NIL_P (name) ? NULL : RVAL2CSTR(name));
|
|
55
|
+
if (bin != NULL)
|
|
56
|
+
RBGST_INITIALIZE (self, bin);
|
|
57
|
+
return Qnil;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
static VALUE
|
|
61
|
+
rb_gst_pipeline_get_bus(VALUE self)
|
|
62
|
+
{
|
|
63
|
+
GstBus *bus;
|
|
64
|
+
VALUE ret;
|
|
65
|
+
|
|
66
|
+
bus = gst_pipeline_get_bus(SELF(self));
|
|
67
|
+
if (bus == NULL)
|
|
68
|
+
return Qnil;
|
|
69
|
+
|
|
70
|
+
ret = GST_BUS2RVAL_UNREF(bus);
|
|
71
|
+
|
|
72
|
+
/* Make the bus a child of the pipeline as their (minimum) livetimes are
|
|
73
|
+
* bound together.. A pipeline can potentially change it's bus though, but
|
|
74
|
+
* we have no way to catch that case */
|
|
75
|
+
G_CHILD_ADD(self, ret);
|
|
76
|
+
|
|
77
|
+
return ret;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
void
|
|
81
|
+
Init_gst_pipeline(void)
|
|
82
|
+
{
|
|
83
|
+
VALUE cPipeline;
|
|
84
|
+
|
|
85
|
+
cPipeline = G_DEF_CLASS(GST_TYPE_PIPELINE, "Pipeline", mGst);
|
|
86
|
+
|
|
87
|
+
rb_define_method(cPipeline, "initialize", rb_gst_pipeline_new, -1);
|
|
88
|
+
|
|
89
|
+
rb_define_method(cPipeline, "bus", rb_gst_pipeline_get_bus, 0);
|
|
90
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (C) 2003, 2004 Laurent Sansonetti <lrz@gnome.org>
|
|
4
|
+
* Copyright (C) 2007 Ruby-GNOME2 Project Team
|
|
5
|
+
*
|
|
6
|
+
* This file is part of Ruby/GStreamer.
|
|
7
|
+
*
|
|
8
|
+
* Ruby/GStreamer is free software; you can redistribute it and/or
|
|
9
|
+
* modify it under the terms of the GNU Lesser General Public
|
|
10
|
+
* License as published by the Free Software Foundation; either
|
|
11
|
+
* version 2.1 of the License, or (at your option) any later version.
|
|
12
|
+
*
|
|
13
|
+
* Ruby/GStreamer is distributed in the hope that it will be useful,
|
|
14
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
16
|
+
* Lesser General Public License for more details.
|
|
17
|
+
*
|
|
18
|
+
* You should have received a copy of the GNU Lesser General Public
|
|
19
|
+
* License along with Ruby/GStreamer; if not, write to the Free Software
|
|
20
|
+
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
#include "rbgst.h"
|
|
24
|
+
|
|
25
|
+
#define SELF(self) RVAL2GST_PLUGIN_FEATURE(self)
|
|
26
|
+
|
|
27
|
+
#define RVAL2GST_RANK(rank) RVAL2GENUM(rank, GST_TYPE_RANK)
|
|
28
|
+
#define GST_RANK2RVAL(rank) GENUM2RVAL(rank, GST_TYPE_RANK)
|
|
29
|
+
|
|
30
|
+
/* Class: Gst::PluginFeature
|
|
31
|
+
* This is a base class for anything that can be added to a Gst::Plugin.
|
|
32
|
+
*/
|
|
33
|
+
|
|
34
|
+
/* Method: name
|
|
35
|
+
* Returns: the name of the feature.
|
|
36
|
+
*/
|
|
37
|
+
static VALUE
|
|
38
|
+
rb_gst_pluginfeature_get_name (VALUE self)
|
|
39
|
+
{
|
|
40
|
+
GstPluginFeature *feature = RGST_PLUGIN_FEATURE (self);
|
|
41
|
+
return CSTR2RVAL (GST_PLUGIN_FEATURE_NAME (feature));
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
gboolean
|
|
45
|
+
is_valid_pluginfeature_type (const GType type)
|
|
46
|
+
{
|
|
47
|
+
return type == GST_TYPE_ELEMENT_FACTORY ||
|
|
48
|
+
type == GST_TYPE_INDEX_FACTORY;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
VALUE
|
|
52
|
+
instanciate_pluginfeature (GstPluginFeature *feature)
|
|
53
|
+
{
|
|
54
|
+
|
|
55
|
+
if (GST_IS_ELEMENT_FACTORY (feature))
|
|
56
|
+
return RGST_ELEMENT_FACTORY_NEW (feature);
|
|
57
|
+
else if (GST_IS_INDEX_FACTORY (feature))
|
|
58
|
+
return RGST_INDEX_FACTORY_NEW (feature);
|
|
59
|
+
else if (GST_IS_TYPE_FIND_FACTORY (feature))
|
|
60
|
+
return RGST_TYPE_FIND_FACTORY_NEW (feature);
|
|
61
|
+
else
|
|
62
|
+
rb_raise(rb_eArgError,
|
|
63
|
+
"Invalid plugin feature of type ``%s''",
|
|
64
|
+
g_type_name (G_OBJECT_TYPE (feature)));
|
|
65
|
+
return Qnil;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
static VALUE
|
|
69
|
+
load_bang(VALUE self)
|
|
70
|
+
{
|
|
71
|
+
GstPluginFeature *original, *feature;
|
|
72
|
+
|
|
73
|
+
original = SELF(self);
|
|
74
|
+
feature = gst_plugin_feature_load(original);
|
|
75
|
+
if (feature) {
|
|
76
|
+
if (feature != original)
|
|
77
|
+
G_INITIALIZE(self, feature);
|
|
78
|
+
gst_object_unref(original);
|
|
79
|
+
return Qtrue;
|
|
80
|
+
} else {
|
|
81
|
+
return Qfalse;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
static VALUE
|
|
86
|
+
loaded_p(VALUE self)
|
|
87
|
+
{
|
|
88
|
+
return CBOOL2RVAL(SELF(self)->loaded);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
static VALUE
|
|
92
|
+
get_rank(VALUE self)
|
|
93
|
+
{
|
|
94
|
+
return GST_RANK2RVAL(gst_plugin_feature_get_rank(SELF(self)));
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
static VALUE
|
|
98
|
+
set_rank(VALUE self, VALUE rank)
|
|
99
|
+
{
|
|
100
|
+
gst_plugin_feature_set_rank(SELF(self), RVAL2GST_RANK(rank));
|
|
101
|
+
return Qnil;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
static VALUE
|
|
105
|
+
get_plugin_name(VALUE self)
|
|
106
|
+
{
|
|
107
|
+
return CSTR2RVAL(SELF(self)->plugin_name);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
void
|
|
112
|
+
Init_gst_plugin_feature (void)
|
|
113
|
+
{
|
|
114
|
+
VALUE rb_cGstPluginFeature;
|
|
115
|
+
|
|
116
|
+
rb_cGstPluginFeature = G_DEF_CLASS(GST_TYPE_PLUGIN_FEATURE,
|
|
117
|
+
"PluginFeature", mGst);
|
|
118
|
+
|
|
119
|
+
G_DEF_CLASS(GST_TYPE_RANK, "Rank", mGst);
|
|
120
|
+
G_DEF_CONSTANTS(mGst, GST_TYPE_RANK, "GST_");
|
|
121
|
+
|
|
122
|
+
rb_define_method(rb_cGstPluginFeature, "name",
|
|
123
|
+
rb_gst_pluginfeature_get_name, 0);
|
|
124
|
+
|
|
125
|
+
rb_define_method(rb_cGstPluginFeature, "load!", load_bang, 0);
|
|
126
|
+
rb_define_method(rb_cGstPluginFeature, "loaded?", loaded_p, 0);
|
|
127
|
+
|
|
128
|
+
rb_define_method(rb_cGstPluginFeature, "rank", get_rank, 0);
|
|
129
|
+
rb_define_method(rb_cGstPluginFeature, "set_rank", set_rank, 1);
|
|
130
|
+
|
|
131
|
+
rb_define_method(rb_cGstPluginFeature, "plugin_name", get_plugin_name, 0);
|
|
132
|
+
|
|
133
|
+
G_DEF_SETTERS(rb_cGstPluginFeature);
|
|
134
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (C) 2003, 2004 Laurent Sansonetti <lrz@gnome.org>
|
|
4
|
+
* Copyright (C) 2007 Ruby-GNOME2 Project Team
|
|
5
|
+
*
|
|
6
|
+
* This file is part of Ruby/GStreamer.
|
|
7
|
+
*
|
|
8
|
+
* Ruby/GStreamer is free software; you can redistribute it and/or
|
|
9
|
+
* modify it under the terms of the GNU Lesser General Public
|
|
10
|
+
* License as published by the Free Software Foundation; either
|
|
11
|
+
* version 2.1 of the License, or (at your option) any later version.
|
|
12
|
+
*
|
|
13
|
+
* Ruby/GStreamer is distributed in the hope that it will be useful,
|
|
14
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
16
|
+
* Lesser General Public License for more details.
|
|
17
|
+
*
|
|
18
|
+
* You should have received a copy of the GNU Lesser General Public
|
|
19
|
+
* License along with Ruby/GStreamer; if not, write to the Free Software
|
|
20
|
+
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
#include "rbgst.h"
|
|
24
|
+
|
|
25
|
+
#define SELF(self) RVAL2GST_PLUGIN(self)
|
|
26
|
+
|
|
27
|
+
/* Class: Gst::Plugin
|
|
28
|
+
* Dynamically loadable Elements
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
/* Method: loaded?
|
|
32
|
+
* Returns: true if the plugin is loaded into memory, false otherwise.
|
|
33
|
+
*/
|
|
34
|
+
static VALUE
|
|
35
|
+
rb_gst_plugin_is_loaded (VALUE self)
|
|
36
|
+
{
|
|
37
|
+
GstPlugin *plugin = RGST_PLUGIN (self);
|
|
38
|
+
return CBOOL2RVAL (gst_plugin_is_loaded (plugin));
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/* Method: filename
|
|
42
|
+
* Returns: the filename where this plugin comes from.
|
|
43
|
+
*/
|
|
44
|
+
static VALUE
|
|
45
|
+
rb_gst_plugin_get_filename (VALUE self)
|
|
46
|
+
{
|
|
47
|
+
return CSTR2RVAL (gst_plugin_get_filename (RGST_PLUGIN (self)));
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/* Method: description
|
|
51
|
+
* Returns: a long description of the plugin.
|
|
52
|
+
*/
|
|
53
|
+
static VALUE
|
|
54
|
+
rb_gst_plugin_get_description (VALUE self)
|
|
55
|
+
{
|
|
56
|
+
return CSTR2RVAL (gst_plugin_get_description (RGST_PLUGIN (self)));
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/* Method: package
|
|
60
|
+
* Returns: the name of the package this plugin belongs to.
|
|
61
|
+
*/
|
|
62
|
+
static VALUE
|
|
63
|
+
rb_gst_plugin_get_package (VALUE self)
|
|
64
|
+
{
|
|
65
|
+
return CSTR2RVAL (gst_plugin_get_package (RGST_PLUGIN (self)));
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/* Method: license
|
|
69
|
+
* Returns: the effective license of the plugin.
|
|
70
|
+
*/
|
|
71
|
+
static VALUE
|
|
72
|
+
rb_gst_plugin_get_license (VALUE self)
|
|
73
|
+
{
|
|
74
|
+
return CSTR2RVAL (gst_plugin_get_license (RGST_PLUGIN (self)));
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
static VALUE
|
|
78
|
+
get_source (VALUE self)
|
|
79
|
+
{
|
|
80
|
+
return CSTR2RVAL(gst_plugin_get_source(SELF(self)));
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/* Method: origin
|
|
84
|
+
* Returns: the URL to the provider of the plugin.
|
|
85
|
+
*/
|
|
86
|
+
static VALUE
|
|
87
|
+
rb_gst_plugin_get_origin (VALUE self)
|
|
88
|
+
{
|
|
89
|
+
return CSTR2RVAL (gst_plugin_get_origin ( RGST_PLUGIN (self)));
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/* Method: name
|
|
93
|
+
* Returns: the unique name of the plugin.
|
|
94
|
+
*/
|
|
95
|
+
static VALUE
|
|
96
|
+
rb_gst_plugin_get_name (VALUE self)
|
|
97
|
+
{
|
|
98
|
+
return CSTR2RVAL (gst_plugin_get_name (RGST_PLUGIN (self)));
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/* Method: minor_version
|
|
102
|
+
* Returns: the minor version of the core this plugin was compiled for.
|
|
103
|
+
*/
|
|
104
|
+
static VALUE
|
|
105
|
+
rb_gst_plugin_get_minor_version (VALUE self)
|
|
106
|
+
{
|
|
107
|
+
return INT2FIX (RGST_PLUGIN (self)->desc.minor_version);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/* Method: major_version
|
|
111
|
+
* Returns: the major version of the core this plugin was compiled for.
|
|
112
|
+
*/
|
|
113
|
+
static VALUE
|
|
114
|
+
rb_gst_plugin_get_major_version (VALUE self)
|
|
115
|
+
{
|
|
116
|
+
return INT2FIX (RGST_PLUGIN (self)->desc.major_version);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/* Method: version
|
|
120
|
+
* Returns: the version of the plugin (note: as a string).
|
|
121
|
+
*/
|
|
122
|
+
static VALUE
|
|
123
|
+
rb_gst_plugin_get_version (VALUE self)
|
|
124
|
+
{
|
|
125
|
+
return CSTR2RVAL (RGST_PLUGIN (self)->desc.version);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/* Method: ==(plugin)
|
|
129
|
+
* Returns: true if two Gst::Plugin objects are refered by the same file,
|
|
130
|
+
* false otherwise.
|
|
131
|
+
*/
|
|
132
|
+
static VALUE
|
|
133
|
+
rb_gst_plugin_is_equal (VALUE self, VALUE other_plugin)
|
|
134
|
+
{
|
|
135
|
+
return NIL_P (other_plugin)
|
|
136
|
+
? Qfalse
|
|
137
|
+
: rb_equal (rb_gst_plugin_get_filename (self),
|
|
138
|
+
rb_gst_plugin_get_filename (other_plugin));
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
void
|
|
142
|
+
Init_gst_plugin (void)
|
|
143
|
+
{
|
|
144
|
+
VALUE rb_cGstPlugin;
|
|
145
|
+
|
|
146
|
+
rb_cGstPlugin = G_DEF_CLASS(GST_TYPE_PLUGIN, "Plugin", mGst);
|
|
147
|
+
|
|
148
|
+
rb_define_method(rb_cGstPlugin, "loaded?", rb_gst_plugin_is_loaded, 0);
|
|
149
|
+
rb_define_method(rb_cGstPlugin, "==", rb_gst_plugin_is_equal, 1);
|
|
150
|
+
|
|
151
|
+
rb_define_method(rb_cGstPlugin, "filename", rb_gst_plugin_get_filename, 0);
|
|
152
|
+
rb_define_method(rb_cGstPlugin, "major_version",
|
|
153
|
+
rb_gst_plugin_get_major_version, 0);
|
|
154
|
+
rb_define_method(rb_cGstPlugin, "minor_version",
|
|
155
|
+
rb_gst_plugin_get_minor_version, 0);
|
|
156
|
+
rb_define_method(rb_cGstPlugin, "name", rb_gst_plugin_get_name, 0);
|
|
157
|
+
rb_define_method(rb_cGstPlugin, "description",
|
|
158
|
+
rb_gst_plugin_get_description, 0);
|
|
159
|
+
rb_define_method(rb_cGstPlugin, "version", rb_gst_plugin_get_version, 0);
|
|
160
|
+
rb_define_method(rb_cGstPlugin, "license", rb_gst_plugin_get_license, 0);
|
|
161
|
+
rb_define_method(rb_cGstPlugin, "source", get_source, 0);
|
|
162
|
+
rb_define_method(rb_cGstPlugin, "package", rb_gst_plugin_get_package, 0);
|
|
163
|
+
rb_define_method(rb_cGstPlugin, "origin", rb_gst_plugin_get_origin, 0);
|
|
164
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (C) 2008 Ruby-GNOME2 Project Team
|
|
4
|
+
*
|
|
5
|
+
* This file is part of Ruby/GStreamer.
|
|
6
|
+
*
|
|
7
|
+
* Ruby/GStreamer 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
|
+
* Ruby/GStreamer 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 Ruby/GStreamer; if not, write to the Free Software
|
|
19
|
+
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
#include "rbgst.h"
|
|
23
|
+
#include "rbgst-private.h"
|
|
24
|
+
|
|
25
|
+
char *
|
|
26
|
+
_rbgst_inspect(VALUE object)
|
|
27
|
+
{
|
|
28
|
+
VALUE inspected;
|
|
29
|
+
inspected = rb_funcall(object, rb_intern("inspect"), 0);
|
|
30
|
+
return StringValueCStr(inspected);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
void
|
|
34
|
+
_rbgst_define_class_if_need(VALUE klass, GType type, const gchar *prefix)
|
|
35
|
+
{
|
|
36
|
+
VALUE parent;
|
|
37
|
+
const gchar *type_name;
|
|
38
|
+
gchar *class_name = NULL;
|
|
39
|
+
static ID id_gtype = 0;
|
|
40
|
+
|
|
41
|
+
if (rb_class2name(klass)[0] != '#')
|
|
42
|
+
return;
|
|
43
|
+
|
|
44
|
+
type_name = g_type_name(type);
|
|
45
|
+
if (g_str_has_prefix(type_name, "Gst"))
|
|
46
|
+
type_name += 3;
|
|
47
|
+
|
|
48
|
+
if (prefix)
|
|
49
|
+
class_name = g_strconcat(prefix, type_name, NULL);
|
|
50
|
+
G_DEF_CLASS(type, class_name ? class_name : type_name, mGst);
|
|
51
|
+
g_free(class_name);
|
|
52
|
+
|
|
53
|
+
parent = rb_ary_entry(rb_mod_ancestors(klass), 1);
|
|
54
|
+
if (!id_gtype)
|
|
55
|
+
id_gtype = rb_intern("gtype");
|
|
56
|
+
if (rb_respond_to(parent, id_gtype))
|
|
57
|
+
_rbgst_define_class_if_need(parent, CLASS2GTYPE(parent), prefix);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
VALUE
|
|
61
|
+
_rbgst_collect_elements(GstIterator *iter)
|
|
62
|
+
{
|
|
63
|
+
VALUE elements;
|
|
64
|
+
gboolean done = FALSE;
|
|
65
|
+
|
|
66
|
+
elements = rb_ary_new();
|
|
67
|
+
while (!done) {
|
|
68
|
+
gpointer element;
|
|
69
|
+
switch (gst_iterator_next(iter, &element)) {
|
|
70
|
+
case GST_ITERATOR_OK:
|
|
71
|
+
rb_ary_push(elements, GST_ELEMENT2RVAL(element));
|
|
72
|
+
gst_object_unref(element);
|
|
73
|
+
break;
|
|
74
|
+
case GST_ITERATOR_RESYNC:
|
|
75
|
+
gst_iterator_resync(iter);
|
|
76
|
+
break;
|
|
77
|
+
case GST_ITERATOR_ERROR:
|
|
78
|
+
done = TRUE;
|
|
79
|
+
break;
|
|
80
|
+
case GST_ITERATOR_DONE:
|
|
81
|
+
done = TRUE;
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
gst_iterator_free(iter);
|
|
86
|
+
|
|
87
|
+
return elements;
|
|
88
|
+
}
|
|
89
|
+
|