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/Rakefile
CHANGED
@@ -6,108 +6,152 @@ require 'gnome2-raketask'
|
|
6
6
|
package = GNOME2Package.new do |_package|
|
7
7
|
_package.summary = "Ruby/GStreamer is a Ruby binding for GStreamer."
|
8
8
|
_package.description = "Ruby/GStreamer is a Ruby binding for GStreamer."
|
9
|
-
_package.dependency.gem.runtime = ["glib2"]
|
9
|
+
_package.dependency.gem.runtime = ["glib2", "gobject-introspection"]
|
10
10
|
_package.win32.packages = ["libsoup"]
|
11
11
|
_package.win32.dependencies = ["jpeg", "libxml2"]
|
12
|
+
_package.win32.build_dependencies = [
|
13
|
+
"glib2", "atk", "pango", "gdk_pixbuf2", "gtk2", "gobject-introspection",
|
14
|
+
]
|
12
15
|
xiph_download_url_base = "http://downloads.xiph.org/releases"
|
13
16
|
freedesktop_download_url_base = "http://gstreamer.freedesktop.org/src"
|
14
17
|
sf_net_download_url_base = "http://downloads.sourceforge.net/project"
|
15
18
|
libmad_version = "0.15.1b"
|
16
|
-
_package.
|
19
|
+
_package.external_packages = [
|
17
20
|
{
|
18
21
|
:name => "libogg",
|
19
22
|
:download_base_url => "#{xiph_download_url_base}/ogg",
|
20
23
|
:label => "Ogg",
|
21
24
|
:version => "1.3.0",
|
22
|
-
:
|
25
|
+
:windows => {
|
26
|
+
:configure_args => [],
|
27
|
+
},
|
23
28
|
},
|
24
29
|
{
|
25
30
|
:name => "libvorbis",
|
26
31
|
:download_base_url => "#{xiph_download_url_base}/vorbis",
|
27
32
|
:label => "Vorbis",
|
28
33
|
:version => "1.3.2",
|
29
|
-
:
|
34
|
+
:windows => {
|
35
|
+
:configure_args => [],
|
36
|
+
},
|
30
37
|
},
|
31
38
|
{
|
32
39
|
:name => "libtheora",
|
33
40
|
:download_base_url => "#{xiph_download_url_base}/theora",
|
34
41
|
:label => "Theora",
|
35
42
|
:version => "1.1.1",
|
36
|
-
:
|
43
|
+
:windows => {
|
44
|
+
:configure_args => [],
|
45
|
+
:build_concurrently => false,
|
46
|
+
},
|
37
47
|
},
|
38
48
|
# {
|
39
49
|
# :name => "libmad",
|
40
50
|
# :download_base_url => "#{sf_net_download_url_base}/mad/libmad/#{libmad_version}",
|
41
51
|
# :label => "MAD",
|
42
52
|
# :version => libmad_version,
|
43
|
-
# :
|
44
|
-
#
|
45
|
-
#
|
53
|
+
# :windows => {
|
54
|
+
# :configure_args => ["CFLAGS=-O3 -march=i686"],
|
55
|
+
# :need_autoreconf => true,
|
56
|
+
# :patches => ["libmad-0.15.1b-fix-mingw-build.diff"],
|
57
|
+
# },
|
46
58
|
# },
|
47
59
|
{
|
48
60
|
:name => "flac",
|
49
61
|
:download_base_url => "#{xiph_download_url_base}/flac",
|
50
62
|
:label => "FLAC",
|
51
63
|
:version => "1.2.1",
|
52
|
-
:
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
64
|
+
:windows => {
|
65
|
+
:configure_args => ["--disable-cpplibs"],
|
66
|
+
:need_autogen => true,
|
67
|
+
:patches => [
|
68
|
+
"flac-1.2.1-fix-mingw-build.diff",
|
69
|
+
# "flac-1.2.1-fix-doc-install.diff",
|
70
|
+
],
|
71
|
+
},
|
58
72
|
},
|
59
73
|
{
|
60
74
|
:name => "speex",
|
61
75
|
:download_base_url => "#{xiph_download_url_base}/speex",
|
62
76
|
:label => "Speex",
|
63
77
|
:version => "1.2rc1",
|
64
|
-
:
|
78
|
+
:windows => {
|
79
|
+
:configure_args => [],
|
80
|
+
},
|
65
81
|
},
|
66
82
|
{
|
67
83
|
:name => "gstreamer",
|
68
84
|
:download_base_url => "#{freedesktop_download_url_base}/gstreamer",
|
69
85
|
:label => "GStreamer",
|
70
|
-
:version => "0.
|
71
|
-
:
|
86
|
+
:version => "1.0.6",
|
87
|
+
:compression_method => "xz",
|
88
|
+
:windows => {
|
89
|
+
:configure_args => [
|
90
|
+
"--enable-check",
|
91
|
+
"--enable-introspection",
|
92
|
+
],
|
93
|
+
:build_concurrently => false,
|
94
|
+
},
|
72
95
|
},
|
73
96
|
{
|
74
97
|
:name => "gst-plugins-base",
|
75
98
|
:download_base_url => "#{freedesktop_download_url_base}/gst-plugins-base",
|
76
99
|
:label => "GStreamer plugins (base)",
|
77
|
-
:version => "0.
|
78
|
-
:
|
100
|
+
:version => "1.0.6",
|
101
|
+
:compression_method => "xz",
|
102
|
+
:windows => {
|
103
|
+
:configure_args => [
|
104
|
+
"--enable-introspection",
|
105
|
+
],
|
106
|
+
:build_concurrently => false,
|
107
|
+
},
|
79
108
|
},
|
80
109
|
{
|
81
110
|
:name => "gst-plugins-good",
|
82
111
|
:download_base_url => "#{freedesktop_download_url_base}/gst-plugins-good",
|
83
112
|
:label => "GStreamer plugins (good)",
|
84
|
-
:version => "0.
|
85
|
-
:
|
113
|
+
:version => "1.0.6",
|
114
|
+
:compression_method => "xz",
|
115
|
+
:windows => {
|
116
|
+
:configure_args => [
|
117
|
+
"--disable-shout2",
|
118
|
+
],
|
119
|
+
},
|
86
120
|
},
|
87
121
|
{
|
88
122
|
:name => "gst-plugins-bad",
|
89
123
|
:download_base_url => "#{freedesktop_download_url_base}/gst-plugins-bad",
|
90
124
|
:label => "GStreamer plugins (bad)",
|
91
|
-
:version => "0.
|
92
|
-
:
|
125
|
+
:version => "1.0.6",
|
126
|
+
:compression_method => "xz",
|
127
|
+
:windows => {
|
128
|
+
:configure_args => ["--disable-librfb"],
|
129
|
+
},
|
93
130
|
},
|
94
131
|
# {
|
95
132
|
# :name => "gst-plugins-ugly",
|
96
133
|
# :download_base_url => "#{freedesktop_download_url_base}/gst-plugins-ugly",
|
97
134
|
# :label => "GStreamer plugins (ugly)",
|
98
|
-
# :version => "0.
|
99
|
-
# :
|
135
|
+
# :version => "1.0.6",
|
136
|
+
# :compression_method => "xz",
|
137
|
+
# :windows => {
|
138
|
+
# :configure_args => [],
|
139
|
+
# },
|
100
140
|
# },
|
101
141
|
{
|
102
|
-
:name => "gst-
|
103
|
-
:download_base_url => "#{freedesktop_download_url_base}/gst-
|
104
|
-
:label => "GStreamer
|
105
|
-
:version => "0.
|
106
|
-
:
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
142
|
+
:name => "gst-libav",
|
143
|
+
:download_base_url => "#{freedesktop_download_url_base}/gst-libav",
|
144
|
+
:label => "GStreamer libav",
|
145
|
+
:version => "1.0.6",
|
146
|
+
:compression_method => "xz",
|
147
|
+
:windows => {
|
148
|
+
:configure_args => ["--with-libav-extra-configure=" +
|
149
|
+
"--cross-prefix=#{_package.win32.build_host}- " +
|
150
|
+
"--target-os=mingw32 " +
|
151
|
+
"--arch=i686 " +
|
152
|
+
"--pkg-config=pkg-config " +
|
153
|
+
"--disable-gpl"],
|
154
|
+
},
|
111
155
|
:bundled_packages => [
|
112
156
|
{
|
113
157
|
:name => "libav",
|
@@ -119,11 +163,6 @@ package = GNOME2Package.new do |_package|
|
|
119
163
|
],
|
120
164
|
},
|
121
165
|
]
|
122
|
-
_package.win32.build_dependencies = [
|
123
|
-
"glib2", "atk", "pango", "gdk_pixbuf2", "gtk2",
|
124
|
-
]
|
125
|
-
_package.win32.support_concurrent_build = false
|
126
|
-
_package.post_install_message = "This library is experimental."
|
127
166
|
_package.cross_compiling do |spec|
|
128
167
|
if /mingw|mswin/ =~ spec.platform.to_s
|
129
168
|
spec.add_runtime_dependency("cairo", ">= 1.10.1")
|
data/ext/gstreamer/extconf.rb
CHANGED
@@ -20,7 +20,7 @@ end
|
|
20
20
|
$LOAD_PATH.unshift(mkmf_gnome2_dir.to_s)
|
21
21
|
|
22
22
|
module_name = "gstreamer"
|
23
|
-
package_id = "gstreamer-0
|
23
|
+
package_id = "gstreamer-1.0"
|
24
24
|
|
25
25
|
begin
|
26
26
|
require 'mkmf-gnome2'
|
@@ -30,9 +30,11 @@ rescue LoadError
|
|
30
30
|
require 'mkmf-gnome2'
|
31
31
|
end
|
32
32
|
|
33
|
-
["glib2"].each do |package|
|
33
|
+
["glib2", "gobject-introspection"].each do |package|
|
34
34
|
directory = "#{package}#{version_suffix}"
|
35
|
-
|
35
|
+
build_base_path = "#{directory}/tmp/#{RUBY_PLATFORM}"
|
36
|
+
package_library_name = package.gsub(/-/, "_")
|
37
|
+
build_dir = "#{build_base_path}/#{package_library_name}/#{RUBY_VERSION}"
|
36
38
|
add_depend_package(package, "#{directory}/ext/#{package}",
|
37
39
|
top_dir.to_s,
|
38
40
|
:top_build_dir => top_build_dir.to_s,
|
@@ -42,30 +44,15 @@ end
|
|
42
44
|
setup_win32(module_name, base_dir)
|
43
45
|
|
44
46
|
unless required_pkg_config_package(package_id,
|
45
|
-
:debian => "
|
47
|
+
:debian => "libgstreamer1.0-dev",
|
46
48
|
:redhat => "gstreamer-devel",
|
47
49
|
:homebrew => "gstreamer",
|
48
50
|
:macports => "gstreamer")
|
49
51
|
exit(false)
|
50
52
|
end
|
51
|
-
unless required_pkg_config_package("gstreamer-plugins-base-0.10",
|
52
|
-
:debian => "libgstreamer-plugins-base0.10-dev",
|
53
|
-
:redhat => "gstreamer-plugins-base-devel",
|
54
|
-
:homebrew => "gst-plugins-base",
|
55
|
-
:macports => "gst-plugins-base")
|
56
|
-
exit(false)
|
57
|
-
end
|
58
53
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
if have_library("gstinterfaces-0.10") and
|
63
|
-
have_header("gst/interfaces/xoverlay.h")
|
64
|
-
$CFLAGS += " -DHAVE_GST_OVERLAY"
|
65
|
-
end
|
66
|
-
|
67
|
-
if PKGConfig.have_package("gstreamer-pbutils-0.10")
|
68
|
-
$CFLAGS += " -DHAVE_GST_PBUTILS"
|
54
|
+
unless PKGConfig.have_package("gobject-introspection-1.0")
|
55
|
+
exit(false)
|
69
56
|
end
|
70
57
|
|
71
58
|
create_pkg_config_file("Ruby/GStreamer", package_id)
|
@@ -78,4 +65,3 @@ if pkg_config_dir.is_a?(String)
|
|
78
65
|
makefile.puts("pkgconfigdir=#{pkg_config_dir}")
|
79
66
|
end
|
80
67
|
end
|
81
|
-
|
data/ext/gstreamer/rbgst.c
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
2
|
/*
|
3
|
-
* Copyright (C)
|
4
|
-
* Copyright (C) 2007 Ruby-GNOME2 Project Team
|
5
|
-
* Copyright (C) 2003, 2004 Laurent Sansonetti <lrz@gnome.org>
|
3
|
+
* Copyright (C) 2013 Ruby-GNOME2 Project Team
|
6
4
|
*
|
7
5
|
* This library is free software; you can redistribute it and/or
|
8
6
|
* modify it under the terms of the GNU Lesser General Public
|
@@ -20,218 +18,108 @@
|
|
20
18
|
* MA 02110-1301 USA
|
21
19
|
*/
|
22
20
|
|
23
|
-
#include
|
21
|
+
#include <gst/gst.h>
|
24
22
|
|
25
|
-
#
|
23
|
+
#include <rb-gobject-introspection.h>
|
26
24
|
|
27
|
-
void Init_gstreamer (void);
|
25
|
+
extern void Init_gstreamer (void);
|
28
26
|
|
29
|
-
|
30
|
-
*
|
31
|
-
*/
|
32
|
-
VALUE RG_TARGET_NAMESPACE;
|
33
|
-
|
34
|
-
static void
|
35
|
-
Init_gst_classes (void)
|
27
|
+
static gboolean
|
28
|
+
rg_gst_bus_func_p(GIArgInfo *info)
|
36
29
|
{
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
Init_gst_object (RG_TARGET_NAMESPACE);
|
52
|
-
Init_gst_pad (RG_TARGET_NAMESPACE);
|
53
|
-
Init_gst_pad_template(RG_TARGET_NAMESPACE);
|
54
|
-
Init_gst_ghost_pad(RG_TARGET_NAMESPACE);
|
55
|
-
Init_gst_parse (RG_TARGET_NAMESPACE);
|
56
|
-
Init_gst_pipeline (RG_TARGET_NAMESPACE);
|
57
|
-
Init_gst_plugin (RG_TARGET_NAMESPACE);
|
58
|
-
Init_gst_plugin_feature(RG_TARGET_NAMESPACE);
|
59
|
-
Init_gst_querytype (RG_TARGET_NAMESPACE);
|
60
|
-
Init_gst_registry (RG_TARGET_NAMESPACE);
|
61
|
-
Init_gst_static_caps(RG_TARGET_NAMESPACE);
|
62
|
-
Init_gst_static_pad_template(RG_TARGET_NAMESPACE);
|
63
|
-
Init_gst_systemclock (RG_TARGET_NAMESPACE);
|
64
|
-
Init_gst_tag (RG_TARGET_NAMESPACE);
|
65
|
-
Init_gst_tag_setter (RG_TARGET_NAMESPACE);
|
66
|
-
Init_gst_typefindfactory (RG_TARGET_NAMESPACE);
|
67
|
-
Init_gst_value(RG_TARGET_NAMESPACE);
|
68
|
-
Init_gst_xml (RG_TARGET_NAMESPACE);
|
69
|
-
|
70
|
-
Init_gst_mini_object(RG_TARGET_NAMESPACE);
|
71
|
-
Init_gst_buffer(RG_TARGET_NAMESPACE);
|
72
|
-
Init_gst_message(RG_TARGET_NAMESPACE);
|
73
|
-
Init_gst_query(RG_TARGET_NAMESPACE);
|
74
|
-
Init_gst_event(RG_TARGET_NAMESPACE);
|
75
|
-
|
76
|
-
#if defined(HAVE_GST_OVERLAY)
|
77
|
-
Init_gst_x_overlay (RG_TARGET_NAMESPACE);
|
78
|
-
#endif
|
79
|
-
|
80
|
-
#ifdef HAVE_MEDIA_INFO
|
81
|
-
Init_gst_mediatype (RG_TARGET_NAMESPACE);
|
82
|
-
#endif
|
83
|
-
|
84
|
-
#ifdef HAVE_GST_PBUTILS
|
85
|
-
Init_gst_install_plugins_context (RG_TARGET_NAMESPACE);
|
86
|
-
Init_gst_install_plugins (RG_TARGET_NAMESPACE);
|
87
|
-
Init_gst_install_plugins_return (RG_TARGET_NAMESPACE);
|
88
|
-
#endif
|
89
|
-
}
|
30
|
+
GITypeInfo type_info;
|
31
|
+
GIBaseInfo *interface_info;
|
32
|
+
const gchar *namespace;
|
33
|
+
const gchar *name;
|
34
|
+
gboolean gst_bus_func_p = FALSE;
|
35
|
+
|
36
|
+
g_arg_info_load_type(info, &type_info);
|
37
|
+
interface_info = g_type_info_get_interface(&type_info);
|
38
|
+
namespace = g_base_info_get_namespace(interface_info);
|
39
|
+
name = g_base_info_get_name(interface_info);
|
40
|
+
if (strcmp(namespace, "Gst") == 0 && strcmp(name, "BusFunc") == 0) {
|
41
|
+
gst_bus_func_p = TRUE;
|
42
|
+
}
|
43
|
+
g_base_info_unref(interface_info);
|
90
44
|
|
91
|
-
|
92
|
-
|
93
|
-
*
|
94
|
-
* Initializes the GStreamer library (using *args), setting up internal path
|
95
|
-
* lists, registering built-in elements, and loading standard plugins.
|
96
|
-
*
|
97
|
-
* If *args are ommited, GStreamer will be initialized using arguments from the
|
98
|
-
* Ruby command line.
|
99
|
-
*
|
100
|
-
* A RuntimeError exception will be raised if GStreamer could not be initialized.
|
101
|
-
*
|
102
|
-
* Returns: always true, or an exception on failure.
|
103
|
-
*/
|
45
|
+
return gst_bus_func_p;
|
46
|
+
}
|
104
47
|
|
105
|
-
static
|
106
|
-
|
48
|
+
static gboolean
|
49
|
+
rg_gst_bus_func_callback(GstBus *bus, GstMessage *message, gpointer user_data)
|
107
50
|
{
|
108
|
-
|
109
|
-
VALUE
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
/*
|
119
|
-
* Convert arguments in a Ruby array.
|
120
|
-
* If no arguments are provided, we use the command line ones.
|
121
|
-
*/
|
122
|
-
rb_scan_args (argc, argv, "01", &argary);
|
123
|
-
|
124
|
-
if (NIL_P (argary)) {
|
125
|
-
argary = rb_const_get(rb_cObject, rb_intern("ARGV"));
|
126
|
-
gargc = RARRAY_LEN(argary);
|
127
|
-
} else {
|
128
|
-
Check_Type(argary, T_ARRAY);
|
129
|
-
gargc = RARRAY_LEN(argary);
|
51
|
+
RBGICallbackData *callback_data = user_data;
|
52
|
+
VALUE rb_keep;
|
53
|
+
ID id_call;
|
54
|
+
|
55
|
+
CONST_ID(id_call, "call");
|
56
|
+
rb_keep = rb_funcall(callback_data->rb_callback, id_call, 2,
|
57
|
+
GOBJ2RVAL(bus),
|
58
|
+
BOXED2RVAL(message, GST_MINI_OBJECT_TYPE(message)));
|
59
|
+
if (callback_data->metadata->scope_type == GI_SCOPE_TYPE_ASYNC) {
|
60
|
+
rb_gi_callback_data_free(callback_data);
|
130
61
|
}
|
62
|
+
return RVAL2CBOOL(rb_keep);
|
63
|
+
}
|
131
64
|
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
gargv[0] = RVAL2CSTR(rb_argv0);
|
138
|
-
|
139
|
-
for (i = 0; i < gargc; i++) {
|
140
|
-
if (TYPE (RARRAY_PTR(argary)[i]) == T_STRING) {
|
141
|
-
gargv[i + 1] = RVAL2CSTR(RARRAY_PTR(argary)[i]);
|
142
|
-
} else {
|
143
|
-
gargv[i + 1] = "";
|
144
|
-
}
|
65
|
+
static gpointer
|
66
|
+
rg_gst_bus_func_callback_finder(GIArgInfo *info)
|
67
|
+
{
|
68
|
+
if (!rg_gst_bus_func_p(info)) {
|
69
|
+
return NULL;
|
145
70
|
}
|
146
|
-
|
147
|
-
|
148
|
-
/*
|
149
|
-
* Now, we can initialize GStreamer.
|
150
|
-
*/
|
151
|
-
if (!gst_init_check(&gargc, &gargv, &error))
|
152
|
-
RAISE_GERROR(error);
|
153
|
-
|
154
|
-
/*
|
155
|
-
* Initialize all included classes
|
156
|
-
*/
|
157
|
-
Init_gst_classes ();
|
71
|
+
return rg_gst_bus_func_callback;
|
72
|
+
}
|
158
73
|
|
159
|
-
|
74
|
+
static gboolean
|
75
|
+
rg_gst_tag_foreach_func_p(GIArgInfo *info)
|
76
|
+
{
|
77
|
+
GITypeInfo type_info;
|
78
|
+
GIBaseInfo *interface_info;
|
79
|
+
const gchar *namespace;
|
80
|
+
const gchar *name;
|
81
|
+
gboolean gst_tag_foreach_func_p = FALSE;
|
82
|
+
|
83
|
+
g_arg_info_load_type(info, &type_info);
|
84
|
+
interface_info = g_type_info_get_interface(&type_info);
|
85
|
+
namespace = g_base_info_get_namespace(interface_info);
|
86
|
+
name = g_base_info_get_name(interface_info);
|
87
|
+
if (strcmp(namespace, "Gst") == 0 && strcmp(name, "TagForeachFunc") == 0) {
|
88
|
+
gst_tag_foreach_func_p = TRUE;
|
89
|
+
}
|
90
|
+
g_base_info_unref(interface_info);
|
160
91
|
|
161
|
-
return
|
92
|
+
return gst_tag_foreach_func_p;
|
162
93
|
}
|
163
94
|
|
164
|
-
|
165
|
-
*
|
166
|
-
|
167
|
-
* Gets the version number of the GStreamer library, in an array
|
168
|
-
* of 3 fixnums, which represent major, minor and macro numbers.
|
169
|
-
*
|
170
|
-
* # Prints GStreamer version in a String 'major.minor.macro.nano'
|
171
|
-
* p Gst.version.join('.')
|
172
|
-
*
|
173
|
-
* Returns: an Array of 4 fixnums (major, minor, macro and nano numbers).
|
174
|
-
*/
|
175
|
-
static VALUE
|
176
|
-
rg_s_version (G_GNUC_UNUSED VALUE self)
|
95
|
+
static void
|
96
|
+
rg_gst_tag_foreach_func_callback(const GstTagList *list, const gchar *tag,
|
97
|
+
gpointer user_data)
|
177
98
|
{
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
99
|
+
RBGICallbackData *callback_data = user_data;
|
100
|
+
ID id_call;
|
101
|
+
|
102
|
+
CONST_ID(id_call, "call");
|
103
|
+
rb_funcall(callback_data->rb_callback, id_call, 2,
|
104
|
+
BOXED2RVAL(list, GST_MINI_OBJECT_TYPE(list)),
|
105
|
+
CSTR2RVAL(tag));
|
106
|
+
if (callback_data->metadata->scope_type == GI_SCOPE_TYPE_ASYNC) {
|
107
|
+
rb_gi_callback_data_free(callback_data);
|
108
|
+
}
|
184
109
|
}
|
185
110
|
|
186
|
-
static
|
187
|
-
|
111
|
+
static gpointer
|
112
|
+
rg_gst_tag_foreach_func_callback_finder(GIArgInfo *info)
|
188
113
|
{
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
return
|
193
|
-
(major == NUM2UINT(rb_major) &&
|
194
|
-
minor > NUM2UINT(rb_minor)) ||
|
195
|
-
(major == NUM2UINT(rb_major) &&
|
196
|
-
minor == NUM2UINT(rb_minor) &&
|
197
|
-
micro >= NUM2UINT(rb_micro)));
|
114
|
+
if (!rg_gst_tag_foreach_func_p(info)) {
|
115
|
+
return NULL;
|
116
|
+
}
|
117
|
+
return rg_gst_tag_foreach_func_callback;
|
198
118
|
}
|
199
119
|
|
200
120
|
void
|
201
121
|
Init_gstreamer (void)
|
202
122
|
{
|
203
|
-
|
204
|
-
|
205
|
-
RG_DEF_SMETHOD(init, -1);
|
206
|
-
RG_DEF_SMETHOD(version, 0);
|
207
|
-
|
208
|
-
/*
|
209
|
-
* Constant: VERSION_MAJOR
|
210
|
-
* GStreamer's major version.
|
211
|
-
*/
|
212
|
-
rb_define_const(RG_TARGET_NAMESPACE, "VERSION_MAJOR", INT2FIX(GST_VERSION_MAJOR));
|
213
|
-
|
214
|
-
/*
|
215
|
-
* Constant: VERSION_MINOR
|
216
|
-
* GStreamer's minor version.
|
217
|
-
*/
|
218
|
-
rb_define_const(RG_TARGET_NAMESPACE, "VERSION_MINOR", INT2FIX(GST_VERSION_MINOR));
|
219
|
-
|
220
|
-
/*
|
221
|
-
* Constant: VERSION_MICRO
|
222
|
-
* GStreamer's micro version.
|
223
|
-
*/
|
224
|
-
rb_define_const(RG_TARGET_NAMESPACE, "VERSION_MICRO", INT2FIX(GST_VERSION_MICRO));
|
225
|
-
|
226
|
-
/*
|
227
|
-
* Constant: BUILD_VERSION
|
228
|
-
* GStreamer's build version.
|
229
|
-
*/
|
230
|
-
rb_define_const(RG_TARGET_NAMESPACE, "BUILD_VERSION",
|
231
|
-
rb_ary_new3(3,
|
232
|
-
INT2FIX(GST_VERSION_MAJOR),
|
233
|
-
INT2FIX(GST_VERSION_MINOR),
|
234
|
-
INT2FIX(GST_VERSION_MICRO)));
|
235
|
-
|
236
|
-
RG_DEF_SMETHOD_P(check_version, 3);
|
123
|
+
rb_gi_callback_register_finder(rg_gst_bus_func_callback_finder);
|
124
|
+
rb_gi_callback_register_finder(rg_gst_tag_foreach_func_callback_finder);
|
237
125
|
}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# Copyright (C) 2013 Ruby-GNOME2 Project Team
|
2
|
+
#
|
3
|
+
# This library is free software; you can redistribute it and/or
|
4
|
+
# modify it under the terms of the GNU Lesser General Public
|
5
|
+
# License as published by the Free Software Foundation; either
|
6
|
+
# version 2.1 of the License, or (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This library is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
11
|
+
# Lesser General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU Lesser General Public
|
14
|
+
# License along with this library; if not, write to the Free Software
|
15
|
+
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
16
|
+
|
17
|
+
module Gst
|
18
|
+
class BaseLoader < GObjectIntrospection::Loader
|
19
|
+
end
|
20
|
+
end
|
data/lib/gst/bin.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# Copyright (C) 2013 Ruby-GNOME2 Project Team
|
2
|
+
#
|
3
|
+
# This library is free software; you can redistribute it and/or
|
4
|
+
# modify it under the terms of the GNU Lesser General Public
|
5
|
+
# License as published by the Free Software Foundation; either
|
6
|
+
# version 2.1 of the License, or (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This library is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
11
|
+
# Lesser General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU Lesser General Public
|
14
|
+
# License along with this library; if not, write to the Free Software
|
15
|
+
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
16
|
+
|
17
|
+
module Gst
|
18
|
+
class Bin
|
19
|
+
alias_method :add_element, :add
|
20
|
+
def add_elements(*elements)
|
21
|
+
elements.each do |element|
|
22
|
+
add_element(element)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
alias_method :add, :add_elements
|
26
|
+
|
27
|
+
def <<(element)
|
28
|
+
add_element(element)
|
29
|
+
self
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data/lib/gst/bus.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# Copyright (C) 2013 Ruby-GNOME2 Project Team
|
2
|
+
#
|
3
|
+
# This library is free software; you can redistribute it and/or
|
4
|
+
# modify it under the terms of the GNU Lesser General Public
|
5
|
+
# License as published by the Free Software Foundation; either
|
6
|
+
# version 2.1 of the License, or (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This library is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
11
|
+
# Lesser General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU Lesser General Public
|
14
|
+
# License along with this library; if not, write to the Free Software
|
15
|
+
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
16
|
+
|
17
|
+
module Gst
|
18
|
+
class Bus
|
19
|
+
alias_method :add_watch_full, :add_watch
|
20
|
+
def add_watch(priority=GLib::PRIORITY_DEFAULT, &block)
|
21
|
+
add_watch_full(priority, &block)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|