gstreamer 1.0.3 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +201 -3
- data/ext/gstreamer/extconf.rb +10 -10
- data/ext/gstreamer/misc.c +16 -15
- data/ext/gstreamer/rbgst-bin.c +75 -83
- data/ext/gstreamer/rbgst-buffer.c +91 -91
- data/ext/gstreamer/rbgst-bus.c +21 -21
- data/ext/gstreamer/rbgst-caps.c +98 -91
- data/ext/gstreamer/rbgst-child-proxy.c +19 -18
- data/ext/gstreamer/rbgst-clock.c +34 -32
- data/ext/gstreamer/rbgst-element-factory.c +79 -85
- data/ext/gstreamer/rbgst-element.c +245 -210
- data/ext/gstreamer/rbgst-event.c +18 -18
- data/ext/gstreamer/rbgst-ghost-pad.c +24 -21
- data/ext/gstreamer/rbgst-index-factory.c +31 -29
- data/ext/gstreamer/rbgst-install-plugins-context.c +86 -0
- data/ext/gstreamer/rbgst-install-plugins-return.c +45 -0
- data/ext/gstreamer/rbgst-install-plugins.c +45 -111
- data/ext/gstreamer/rbgst-message.c +15 -16
- data/ext/gstreamer/rbgst-mini-object.c +37 -37
- data/ext/gstreamer/rbgst-object.c +29 -26
- data/ext/gstreamer/rbgst-pad-template.c +36 -35
- data/ext/gstreamer/rbgst-pad.c +96 -96
- data/ext/gstreamer/rbgst-pipeline.c +32 -31
- data/ext/gstreamer/rbgst-plugin-feature.c +47 -48
- data/ext/gstreamer/rbgst-plugin.c +62 -64
- data/ext/gstreamer/rbgst-private.c +14 -15
- data/ext/gstreamer/rbgst-private.h +76 -16
- data/ext/gstreamer/rbgst-query.c +22 -20
- data/ext/gstreamer/rbgst-seek.c +22 -19
- data/ext/gstreamer/rbgst-static-caps.c +26 -24
- data/ext/gstreamer/rbgst-static-pad-template.c +27 -26
- data/ext/gstreamer/rbgst-structure.c +61 -59
- data/ext/gstreamer/rbgst-system-clock.c +23 -20
- data/ext/gstreamer/rbgst-type-find-factory.c +44 -43
- data/ext/gstreamer/rbgst-value.c +40 -28
- data/ext/gstreamer/rbgst-x-overlay.c +32 -31
- data/ext/gstreamer/rbgst.c +78 -128
- data/ext/gstreamer/rbgst.h +16 -16
- data/ext/gstreamer/rbgstclockentry.c +46 -43
- data/ext/gstreamer/rbgstformat.c +64 -61
- data/ext/gstreamer/rbgstindex.c +67 -64
- data/ext/gstreamer/rbgstindexentry.c +31 -28
- data/ext/gstreamer/rbgstparse.c +32 -29
- data/ext/gstreamer/rbgstquerytype.c +64 -61
- data/ext/gstreamer/rbgstregistry.c +79 -76
- data/ext/gstreamer/rbgsttag.c +34 -32
- data/ext/gstreamer/rbgsttagsetter.c +22 -19
- data/ext/gstreamer/rbgstxml.c +78 -75
- data/lib/gst.rb +15 -1
- data/test/test_buffer.rb +5 -2
- data/test/test_element.rb +7 -9
- data/test/test_value.rb +2 -2
- metadata +11 -11
- data/ChangeLog +0 -1202
- data/test/test_clock.rb +0 -7
data/Rakefile
CHANGED
@@ -1,15 +1,213 @@
|
|
1
1
|
# -*- ruby -*-
|
2
2
|
|
3
3
|
require './../glib2/lib/gnome2-raketask'
|
4
|
+
require 'open-uri'
|
4
5
|
|
5
6
|
package = GNOME2Package.new do |_package|
|
6
7
|
_package.summary = "Ruby/GStreamer is a Ruby binding for GStreamer."
|
7
8
|
_package.description = "Ruby/GStreamer is a Ruby binding for GStreamer."
|
8
9
|
_package.dependency.gem.runtime = ["glib2"]
|
9
|
-
|
10
|
-
_package.win32.
|
11
|
-
_package.win32.dependencies = []
|
10
|
+
_package.win32.packages = ["libsoup"]
|
11
|
+
_package.win32.dependencies = ["jpeg", "libxml2"]
|
12
12
|
_package.post_install_message = "This library is experimental."
|
13
|
+
_package.cross_compiling do |spec|
|
14
|
+
if /mingw|mswin/ =~ spec.platform.to_s
|
15
|
+
spec.add_runtime_dependency("cairo", ">= 1.10.1")
|
16
|
+
spec.add_runtime_dependency("pango", ">= #{_package.version}")
|
17
|
+
spec.add_runtime_dependency("gdk_pixbuf2", ">= #{_package.version}")
|
18
|
+
end
|
19
|
+
end
|
13
20
|
end
|
14
21
|
package.define_tasks
|
15
22
|
|
23
|
+
namespace :win32 do
|
24
|
+
host = "i686-w64-mingw32"
|
25
|
+
|
26
|
+
dist_dir = Pathname.new("vendor/local").expand_path
|
27
|
+
license_dir = dist_dir + "share" + "license"
|
28
|
+
tmp_dir = Pathname.new("tmp").expand_path
|
29
|
+
download_dir = tmp_dir + "download"
|
30
|
+
|
31
|
+
rcairo_win32_path = ENV["RCAIRO_WIN32_PATH"] || "../../rcairo.win32"
|
32
|
+
rcairo_win32_path = File.expand_path(rcairo_win32_path)
|
33
|
+
rcairo_win32_include_path = "#{rcairo_win32_path}/vendor/local/include"
|
34
|
+
rcairo_win32_lib_path = "#{rcairo_win32_path}/vendor/local/lib"
|
35
|
+
|
36
|
+
xiph_download_url_base = "http://downloads.xiph.org/releases"
|
37
|
+
freedesktop_download_url_base = "http://gstreamer.freedesktop.org/src"
|
38
|
+
packages = [
|
39
|
+
{
|
40
|
+
:name => "libogg",
|
41
|
+
:download_base_url => "#{xiph_download_url_base}/ogg",
|
42
|
+
:label => "Ogg",
|
43
|
+
:version => "1.3.0",
|
44
|
+
:configure_args => [],
|
45
|
+
},
|
46
|
+
{
|
47
|
+
:name => "libvorbis",
|
48
|
+
:download_base_url => "#{xiph_download_url_base}/vorbis",
|
49
|
+
:label => "Vorbis",
|
50
|
+
:version => "1.3.2",
|
51
|
+
:configure_args => [],
|
52
|
+
},
|
53
|
+
{
|
54
|
+
:name => "libtheora",
|
55
|
+
:download_base_url => "#{xiph_download_url_base}/theora",
|
56
|
+
:label => "Theora",
|
57
|
+
:version => "1.1.1",
|
58
|
+
:configure_args => [],
|
59
|
+
},
|
60
|
+
# {
|
61
|
+
# :name => "flac",
|
62
|
+
# :download_base_url => "#{xiph_download_url_base}/flac",
|
63
|
+
# :label => "FLAC",
|
64
|
+
# :version => "1.2.1",
|
65
|
+
# :configure_args => ["--disable-cpplibs"],
|
66
|
+
# },
|
67
|
+
{
|
68
|
+
:name => "speex",
|
69
|
+
:download_base_url => "#{xiph_download_url_base}/speex",
|
70
|
+
:label => "Speex",
|
71
|
+
:version => "1.2rc1",
|
72
|
+
:configure_args => [],
|
73
|
+
},
|
74
|
+
{
|
75
|
+
:name => "gstreamer",
|
76
|
+
:download_base_url => "#{freedesktop_download_url_base}/gstreamer",
|
77
|
+
:label => "GStreamer",
|
78
|
+
:version => "0.10.35",
|
79
|
+
:configure_args => ["--enable-check"],
|
80
|
+
},
|
81
|
+
{
|
82
|
+
:name => "gst-plugins-base",
|
83
|
+
:download_base_url => "#{freedesktop_download_url_base}/gst-plugins-base",
|
84
|
+
:label => "GStreamer plugins (base)",
|
85
|
+
:version => "0.10.35",
|
86
|
+
:configure_args => ["--disable-gnome_vfs"],
|
87
|
+
},
|
88
|
+
{
|
89
|
+
:name => "gst-plugins-good",
|
90
|
+
:download_base_url => "#{freedesktop_download_url_base}/gst-plugins-good",
|
91
|
+
:label => "GStreamer plugins (good)",
|
92
|
+
:version => "0.10.30",
|
93
|
+
:configure_args => ["--disable-gconf"],
|
94
|
+
},
|
95
|
+
{
|
96
|
+
:name => "gst-plugins-bad",
|
97
|
+
:download_base_url => "#{freedesktop_download_url_base}/gst-plugins-bad",
|
98
|
+
:label => "GStreamer plugins (bad)",
|
99
|
+
:version => "0.10.22",
|
100
|
+
:configure_args => ["--disable-librfb"],
|
101
|
+
},
|
102
|
+
{
|
103
|
+
:name => "gst-ffmpeg",
|
104
|
+
:download_base_url => "#{freedesktop_download_url_base}/gst-ffmpeg",
|
105
|
+
:label => "GStreamer ffmpeg",
|
106
|
+
:version => "0.10.12",
|
107
|
+
:configure_args => ["--with-ffmpeg-extra-configure=" +
|
108
|
+
"--cross-prefix=#{host}- " +
|
109
|
+
"--target-os=mingw32 " +
|
110
|
+
"--arch=i686 " +
|
111
|
+
"--pkg-config=pkg-config"],
|
112
|
+
:bundled_packages => [
|
113
|
+
{
|
114
|
+
:name => "libav",
|
115
|
+
:path => "gst-libs/ext/libav",
|
116
|
+
:license_files => ["LICENSE", "CREDITS",
|
117
|
+
"COPYING.GPLv2", "COPYING.GPLv3",
|
118
|
+
"COPYING.LGPLv2.1", "COPYING.LGPLv3"],
|
119
|
+
}
|
120
|
+
],
|
121
|
+
},
|
122
|
+
]
|
123
|
+
|
124
|
+
namespace :download do
|
125
|
+
packages.each do |_package|
|
126
|
+
base = "#{_package[:name]}-#{_package[:version]}"
|
127
|
+
tar_gz = "#{base}.tar.gz"
|
128
|
+
tar_gz_url = "#{_package[:download_base_url]}/#{tar_gz}"
|
129
|
+
tar_gz_full_path = download_dir + tar_gz
|
130
|
+
|
131
|
+
desc "Download #{_package[:label]} into #{download_dir}."
|
132
|
+
task _package[:name] => tar_gz_full_path.to_s
|
133
|
+
|
134
|
+
directory_path = tar_gz_full_path.dirname
|
135
|
+
directory directory_path.to_s
|
136
|
+
file tar_gz_full_path.to_s => directory_path.to_s do
|
137
|
+
rake_output_message "downloading... #{tar_gz_url}"
|
138
|
+
open(tar_gz_url) do |downloaded_tar_gz|
|
139
|
+
tar_gz_full_path.open("wb") do |tar_gz_file|
|
140
|
+
tar_gz_file.print(downloaded_tar_gz.read)
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
namespace :build do
|
148
|
+
task :prepare do
|
149
|
+
depended_packages = ["glib2", "atk", "pango", "gdk_pixbuf2", "gtk2"]
|
150
|
+
pkg_config_path = (["gstreamer"] + depended_packages).collect do |_package|
|
151
|
+
"../#{_package}/vendor/local/lib/pkgconfig"
|
152
|
+
end
|
153
|
+
ENV["PKG_CONFIG_PATH"] = pkg_config_path.collect do |path|
|
154
|
+
File.expand_path(path)
|
155
|
+
end.join(":")
|
156
|
+
ENV["PKG_CONFIG_LIBDIR"] = "#{rcairo_win32_path}/vendor/local/lib/pkgconfig"
|
157
|
+
end
|
158
|
+
|
159
|
+
packages.each do |_package|
|
160
|
+
desc "Build #{_package[:label]} and install it into #{dist_dir}."
|
161
|
+
task _package[:name] => [:prepare, "win32:download:#{_package[:name]}"] do
|
162
|
+
package_tmp_dir = tmp_dir + _package[:name]
|
163
|
+
rm_rf(package_tmp_dir)
|
164
|
+
mkdir_p(package_tmp_dir)
|
165
|
+
|
166
|
+
base = "#{_package[:name]}-#{_package[:version]}"
|
167
|
+
tar_gz = "#{base}.tar.gz"
|
168
|
+
tar_gz_full_path = download_dir + tar_gz
|
169
|
+
Dir.chdir(package_tmp_dir.to_s) do
|
170
|
+
sh("tar", "xzf", tar_gz_full_path.to_s) or exit(false)
|
171
|
+
end
|
172
|
+
|
173
|
+
Dir.chdir((package_tmp_dir + base).to_s) do
|
174
|
+
sh("./configure",
|
175
|
+
"CPPFLAGS=-I#{rcairo_win32_include_path} -I#{dist_dir + 'include'}",
|
176
|
+
"LDFLAGS=-L#{rcairo_win32_lib_path} -L#{dist_dir + 'lib'}",
|
177
|
+
"--prefix=#{dist_dir}",
|
178
|
+
"--host=#{host}",
|
179
|
+
*_package[:configure_args]) or exit(false)
|
180
|
+
common_make_args = []
|
181
|
+
common_make_args << "GLIB_COMPILE_SCHEMAS=glib-compile-schemas"
|
182
|
+
build_make_args = common_make_args.dup
|
183
|
+
install_make_args = common_make_args.dup
|
184
|
+
make_n_jobs = ENV["MAKE_N_JOBS"]
|
185
|
+
build_make_args << "-j#{make_n_jobs}" if make_n_jobs
|
186
|
+
ENV["GREP_OPTIONS"] = "--text"
|
187
|
+
sh("nice", "make", *build_make_args) or exit(false)
|
188
|
+
sh("make", "install", *install_make_args) or exit(false)
|
189
|
+
|
190
|
+
package_license_dir = license_dir + _package[:name]
|
191
|
+
mkdir_p(package_license_dir)
|
192
|
+
package_license_files = ["AUTHORS", "COPYING", "COPYING.LIB"]
|
193
|
+
package_license_files = package_license_files.reject do |file|
|
194
|
+
not File.exist?(file)
|
195
|
+
end
|
196
|
+
cp(package_license_files, package_license_dir)
|
197
|
+
bundled_packages = _package[:bundled_packages] || []
|
198
|
+
bundled_packages.each do |bundled_package|
|
199
|
+
bundled_package_license_dir = license_dir + bundled_package[:name]
|
200
|
+
mkdir_p(bundled_package_license_dir)
|
201
|
+
license_files = bundled_package[:license_files].collect do |file|
|
202
|
+
File.join(bundled_package[:path], file)
|
203
|
+
end
|
204
|
+
cp(license_files, bundled_package_license_dir)
|
205
|
+
end
|
206
|
+
end
|
207
|
+
end
|
208
|
+
end
|
209
|
+
end
|
210
|
+
|
211
|
+
desc "Build GStreamer binaries"
|
212
|
+
task :build => packages.collect {|_package| "win32:build:#{_package[:name]}"}
|
213
|
+
end
|
data/ext/gstreamer/extconf.rb
CHANGED
@@ -19,7 +19,7 @@ end
|
|
19
19
|
|
20
20
|
$LOAD_PATH.unshift(mkmf_gnome2_dir.to_s)
|
21
21
|
|
22
|
-
module_name = "
|
22
|
+
module_name = "gstreamer"
|
23
23
|
package_id = "gstreamer-0.10"
|
24
24
|
|
25
25
|
begin
|
@@ -30,6 +30,15 @@ rescue LoadError
|
|
30
30
|
require 'mkmf-gnome2'
|
31
31
|
end
|
32
32
|
|
33
|
+
["glib2"].each do |package|
|
34
|
+
directory = "#{package}#{version_suffix}"
|
35
|
+
build_dir = "#{directory}/tmp/#{RUBY_PLATFORM}/#{package}/#{RUBY_VERSION}"
|
36
|
+
add_depend_package(package, "#{directory}/ext/#{package}",
|
37
|
+
top_dir.to_s,
|
38
|
+
:top_build_dir => top_build_dir.to_s,
|
39
|
+
:target_build_dir => build_dir)
|
40
|
+
end
|
41
|
+
|
33
42
|
setup_win32(module_name, base_dir)
|
34
43
|
|
35
44
|
PKGConfig.have_package(package_id) or exit 1
|
@@ -47,15 +56,6 @@ if PKGConfig.have_package("gstreamer-pbutils-0.10")
|
|
47
56
|
$CFLAGS += " -DHAVE_GST_PBUTILS"
|
48
57
|
end
|
49
58
|
|
50
|
-
["glib2"].each do |package|
|
51
|
-
directory = "#{package}#{version_suffix}"
|
52
|
-
build_dir = "#{directory}/tmp/#{RUBY_PLATFORM}/#{package}/#{RUBY_VERSION}"
|
53
|
-
add_depend_package(package, "#{directory}/ext/#{package}",
|
54
|
-
top_dir.to_s,
|
55
|
-
:top_build_dir => top_build_dir.to_s,
|
56
|
-
:target_build_dir => build_dir)
|
57
|
-
end
|
58
|
-
|
59
59
|
create_pkg_config_file("Ruby/GStreamer", package_id)
|
60
60
|
$defs << "-DRUBY_GST_COMPILATION"
|
61
61
|
create_makefile(module_name)
|
data/ext/gstreamer/misc.c
CHANGED
@@ -1,24 +1,25 @@
|
|
1
|
+
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
1
2
|
/*
|
2
|
-
*
|
3
|
+
* Copyright (C) 2011 Ruby-GNOME2 Project Team
|
4
|
+
* Copyright (C) 2003, 2004 Laurent Sansonetti <lrz@gnome.org>
|
3
5
|
*
|
4
|
-
*
|
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.
|
5
10
|
*
|
6
|
-
*
|
7
|
-
*
|
8
|
-
*
|
9
|
-
*
|
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.
|
10
15
|
*
|
11
|
-
*
|
12
|
-
*
|
13
|
-
*
|
14
|
-
*
|
15
|
-
*
|
16
|
-
* You should have received a copy of the GNU Lesser General Public
|
17
|
-
* License along with Ruby/GStreamer; if not, write to the Free Software
|
18
|
-
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
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
|
19
20
|
*/
|
20
21
|
|
21
|
-
#include "rbgst.h"
|
22
|
+
#include "rbgst-private.h"
|
22
23
|
|
23
24
|
VALUE
|
24
25
|
rb_str_new_with_format (char *fmt, ...)
|
data/ext/gstreamer/rbgst-bin.c
CHANGED
@@ -1,27 +1,28 @@
|
|
1
|
+
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
1
2
|
/*
|
2
|
-
*
|
3
|
-
*
|
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>
|
4
6
|
*
|
5
|
-
*
|
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.
|
6
11
|
*
|
7
|
-
*
|
8
|
-
*
|
9
|
-
*
|
10
|
-
*
|
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.
|
11
16
|
*
|
12
|
-
*
|
13
|
-
*
|
14
|
-
*
|
15
|
-
*
|
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
|
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
|
20
21
|
*/
|
21
22
|
|
22
|
-
#include "rbgst.h"
|
23
23
|
#include "rbgst-private.h"
|
24
24
|
|
25
|
+
#define RG_TARGET_NAMESPACE cBin
|
25
26
|
#define SELF(self) RVAL2GST_BIN(self)
|
26
27
|
|
27
28
|
/* Class: Gst::Bin
|
@@ -41,7 +42,7 @@
|
|
41
42
|
* Returns: a newly allocated Gst::Bin object.
|
42
43
|
*/
|
43
44
|
static VALUE
|
44
|
-
|
45
|
+
rg_initialize(int argc, VALUE *argv, VALUE self)
|
45
46
|
{
|
46
47
|
GstElement *bin;
|
47
48
|
VALUE name;
|
@@ -60,7 +61,7 @@ rb_gst_bin_initialize(int argc, VALUE *argv, VALUE self)
|
|
60
61
|
* Returns: the number of elements in the container.
|
61
62
|
*/
|
62
63
|
static VALUE
|
63
|
-
|
64
|
+
rg_size(VALUE self)
|
64
65
|
{
|
65
66
|
return INT2NUM(GST_BIN_NUMCHILDREN(SELF(self)));
|
66
67
|
}
|
@@ -75,7 +76,7 @@ rb_gst_bin_size(VALUE self)
|
|
75
76
|
* implements the interface.
|
76
77
|
*/
|
77
78
|
static VALUE
|
78
|
-
|
79
|
+
rg_children(int argc, VALUE *argv, VALUE self)
|
79
80
|
{
|
80
81
|
VALUE children, iface;
|
81
82
|
|
@@ -106,7 +107,7 @@ rb_gst_bin_get_children(int argc, VALUE *argv, VALUE self)
|
|
106
107
|
* bins.
|
107
108
|
*/
|
108
109
|
static VALUE
|
109
|
-
|
110
|
+
rg_children_recurse(VALUE self)
|
110
111
|
{
|
111
112
|
GstIterator *iter;
|
112
113
|
VALUE children;
|
@@ -118,19 +119,19 @@ rb_gst_bin_get_children_recurse(VALUE self)
|
|
118
119
|
}
|
119
120
|
|
120
121
|
static VALUE
|
121
|
-
|
122
|
+
rg_children_cookie(VALUE self)
|
122
123
|
{
|
123
124
|
return UINT2NUM(GST_BIN_CHILDREN_COOKIE(SELF(self)));
|
124
125
|
}
|
125
126
|
|
126
127
|
static VALUE
|
127
|
-
|
128
|
+
rg_child_bus(VALUE self)
|
128
129
|
{
|
129
130
|
return GST_BUS2RVAL(SELF(self)->child_bus);
|
130
131
|
}
|
131
132
|
|
132
133
|
static VALUE
|
133
|
-
|
134
|
+
rg_messages(VALUE self)
|
134
135
|
{
|
135
136
|
GList *node;
|
136
137
|
VALUE messages;
|
@@ -144,13 +145,13 @@ rb_gst_bin_get_messages(VALUE self)
|
|
144
145
|
}
|
145
146
|
|
146
147
|
static VALUE
|
147
|
-
|
148
|
+
rg_polling_p(VALUE self)
|
148
149
|
{
|
149
150
|
return CBOOL2RVAL(SELF(self)->polling);
|
150
151
|
}
|
151
152
|
|
152
153
|
static VALUE
|
153
|
-
|
154
|
+
rg_clock_dirty_p(VALUE self)
|
154
155
|
{
|
155
156
|
return CBOOL2RVAL(SELF(self)->clock_dirty);
|
156
157
|
}
|
@@ -164,7 +165,7 @@ rb_gst_bin_clock_dirty_p(VALUE self)
|
|
164
165
|
* Returns: a Gst::Clock object, or nil.
|
165
166
|
*/
|
166
167
|
static VALUE
|
167
|
-
|
168
|
+
rg_provided_clock(VALUE self)
|
168
169
|
{
|
169
170
|
return GST_CLOCK2RVAL(SELF(self)->provided_clock);
|
170
171
|
}
|
@@ -179,7 +180,7 @@ rb_gst_bin_get_provided_clock(VALUE self)
|
|
179
180
|
* Returns: self.
|
180
181
|
*/
|
181
182
|
static VALUE
|
182
|
-
|
183
|
+
rg_set_provided_clock(VALUE self, VALUE clock)
|
183
184
|
{
|
184
185
|
GstBin *bin;
|
185
186
|
|
@@ -195,7 +196,7 @@ rb_gst_bin_set_provided_clock(VALUE self, VALUE clock)
|
|
195
196
|
}
|
196
197
|
|
197
198
|
static VALUE
|
198
|
-
|
199
|
+
rg_clock_provider(VALUE self)
|
199
200
|
{
|
200
201
|
return GST_ELEMENT2RVAL(SELF(self)->clock_provider);
|
201
202
|
}
|
@@ -209,7 +210,7 @@ rb_gst_bin_get_clock_provider(VALUE self)
|
|
209
210
|
* Returns: self.
|
210
211
|
*/
|
211
212
|
static VALUE
|
212
|
-
|
213
|
+
rg_operator_add(VALUE self, VALUE element)
|
213
214
|
{
|
214
215
|
VALUE klass = GTYPE2CLASS(GST_TYPE_ELEMENT);
|
215
216
|
|
@@ -230,17 +231,16 @@ rb_gst_bin_add(VALUE self, VALUE element)
|
|
230
231
|
* Returns: nil.
|
231
232
|
*/
|
232
233
|
static VALUE
|
233
|
-
|
234
|
+
rg_add(int argc, VALUE *argv, VALUE self)
|
234
235
|
{
|
235
236
|
int i;
|
236
237
|
|
237
238
|
for (i = 0; i < argc; i++) {
|
238
|
-
|
239
|
+
rg_operator_add(self, argv[i]);
|
239
240
|
}
|
240
241
|
return Qnil;
|
241
242
|
}
|
242
243
|
|
243
|
-
|
244
244
|
/*
|
245
245
|
* Method: remove(*elements)
|
246
246
|
* elements: a list of Gst::Element objects.
|
@@ -251,7 +251,7 @@ rb_gst_bin_add_multi(int argc, VALUE *argv, VALUE self)
|
|
251
251
|
* Returns: nil.
|
252
252
|
*/
|
253
253
|
static VALUE
|
254
|
-
|
254
|
+
rg_remove(int argc, VALUE *argv, VALUE self)
|
255
255
|
{
|
256
256
|
int i;
|
257
257
|
GstBin *bin;
|
@@ -272,7 +272,7 @@ rb_gst_bin_remove(int argc, VALUE *argv, VALUE self)
|
|
272
272
|
* Returns: nil.
|
273
273
|
*/
|
274
274
|
static VALUE
|
275
|
-
|
275
|
+
rg_clear(VALUE self)
|
276
276
|
{
|
277
277
|
GstBin *bin;
|
278
278
|
GList *node, *children;
|
@@ -296,9 +296,9 @@ rb_gst_bin_clear(VALUE self)
|
|
296
296
|
* Returns: always nil.
|
297
297
|
*/
|
298
298
|
static VALUE
|
299
|
-
|
299
|
+
rg_each(int argc, VALUE *argv, VALUE self)
|
300
300
|
{
|
301
|
-
return rb_ary_yield(
|
301
|
+
return rb_ary_yield(rg_children(argc, argv, self));
|
302
302
|
}
|
303
303
|
|
304
304
|
/*
|
@@ -310,9 +310,9 @@ rb_gst_bin_each_element(int argc, VALUE *argv, VALUE self)
|
|
310
310
|
* Returns: always nil.
|
311
311
|
*/
|
312
312
|
static VALUE
|
313
|
-
|
313
|
+
rg_each_recurse(VALUE self)
|
314
314
|
{
|
315
|
-
return rb_ary_yield(
|
315
|
+
return rb_ary_yield(rg_children_recurse(self));
|
316
316
|
}
|
317
317
|
|
318
318
|
/*
|
@@ -340,7 +340,7 @@ rb_gst_bin_each_recurse_element(VALUE self)
|
|
340
340
|
* an element with the given name nor implementing the interface.
|
341
341
|
*/
|
342
342
|
static VALUE
|
343
|
-
|
343
|
+
rg_get_child(int argc, VALUE *argv, VALUE self)
|
344
344
|
{
|
345
345
|
VALUE index_or_name_or_interface, recurse;
|
346
346
|
GstElement *element = NULL;
|
@@ -374,27 +374,27 @@ rb_gst_bin_get(int argc, VALUE *argv, VALUE self)
|
|
374
374
|
}
|
375
375
|
|
376
376
|
static VALUE
|
377
|
-
|
377
|
+
rg_sinks(VALUE self)
|
378
378
|
{
|
379
379
|
return _rbgst_collect_elements(gst_bin_iterate_sinks(SELF(self)));
|
380
380
|
}
|
381
381
|
|
382
382
|
static VALUE
|
383
|
-
|
383
|
+
rg_sources(VALUE self)
|
384
384
|
{
|
385
385
|
return _rbgst_collect_elements(gst_bin_iterate_sources(SELF(self)));
|
386
386
|
}
|
387
387
|
|
388
388
|
#ifdef GST_DEBUG_BIN_TO_DOT_FILE
|
389
389
|
static VALUE
|
390
|
-
|
390
|
+
rg_to_dot_file(VALUE self, VALUE details, VALUE filename)
|
391
391
|
{
|
392
392
|
GST_DEBUG_BIN_TO_DOT_FILE(SELF(self), NUM2INT(details), RVAL2CSTR(filename));
|
393
393
|
return Qnil;
|
394
394
|
}
|
395
395
|
|
396
396
|
static VALUE
|
397
|
-
|
397
|
+
rg_to_dot_file_with_ts(VALUE self, VALUE details, VALUE filename)
|
398
398
|
{
|
399
399
|
GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS(SELF(self),
|
400
400
|
NUM2INT(details),
|
@@ -404,63 +404,55 @@ rb_gst_bin_to_dot_file_with_ts(VALUE self, VALUE details, VALUE filename)
|
|
404
404
|
#endif
|
405
405
|
|
406
406
|
void
|
407
|
-
Init_gst_bin (
|
407
|
+
Init_gst_bin (VALUE mGst)
|
408
408
|
{
|
409
|
-
VALUE
|
410
|
-
|
411
|
-
rb_cGstBin = G_DEF_CLASS(GST_TYPE_BIN, "Bin", mGst);
|
409
|
+
VALUE RG_TARGET_NAMESPACE;
|
412
410
|
|
413
|
-
|
411
|
+
RG_TARGET_NAMESPACE = G_DEF_CLASS(GST_TYPE_BIN, "Bin", mGst);
|
414
412
|
|
415
|
-
|
413
|
+
rb_include_module(RG_TARGET_NAMESPACE, rb_mEnumerable);
|
416
414
|
|
417
|
-
|
418
|
-
rb_define_alias(rb_cGstBin, "length", "size");
|
415
|
+
RG_DEF_METHOD(initialize, -1);
|
419
416
|
|
420
|
-
|
421
|
-
|
417
|
+
RG_DEF_METHOD(size, 0);
|
418
|
+
RG_DEF_ALIAS("length", "size");
|
422
419
|
|
423
|
-
|
424
|
-
|
425
|
-
rb_define_method(rb_cGstBin, "each_recurse",
|
426
|
-
rb_gst_bin_each_recurse_element, 0);
|
420
|
+
RG_DEF_METHOD(children, -1);
|
421
|
+
RG_DEF_METHOD(each, -1);
|
427
422
|
|
428
|
-
|
429
|
-
|
430
|
-
rb_define_method(rb_cGstBin, "child_bus", rb_gst_bin_get_child_bus, 0);
|
431
|
-
rb_define_method(rb_cGstBin, "messages", rb_gst_bin_get_messages, 0);
|
432
|
-
rb_define_method(rb_cGstBin, "polling?", rb_gst_bin_polling_p, 0);
|
433
|
-
rb_define_method(rb_cGstBin, "clock_dirty?", rb_gst_bin_clock_dirty_p, 0);
|
434
|
-
rb_define_method(rb_cGstBin, "provided_clock",
|
435
|
-
rb_gst_bin_get_provided_clock, 0);
|
436
|
-
rb_define_method(rb_cGstBin, "set_provided_clock",
|
437
|
-
rb_gst_bin_set_provided_clock, 1);
|
438
|
-
rb_define_method(rb_cGstBin, "clock_provider",
|
439
|
-
rb_gst_bin_get_clock_provider, 0);
|
423
|
+
RG_DEF_METHOD(children_recurse, 0);
|
424
|
+
RG_DEF_METHOD(each_recurse, 0);
|
440
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);
|
441
434
|
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
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);
|
446
439
|
|
447
|
-
|
440
|
+
RG_DEF_METHOD(get_child, -1);
|
448
441
|
|
449
|
-
|
450
|
-
|
442
|
+
RG_DEF_METHOD(sinks, 0);
|
443
|
+
RG_DEF_METHOD(sources, 0);
|
451
444
|
|
452
445
|
#ifdef GST_DEBUG_BIN_TO_DOT_FILE
|
453
|
-
|
454
|
-
|
455
|
-
rb_gst_bin_to_dot_file_with_ts, 2);
|
446
|
+
RG_DEF_METHOD(to_dot_file, 2);
|
447
|
+
RG_DEF_METHOD(to_dot_file_with_ts, 2);
|
456
448
|
#endif
|
457
449
|
|
458
|
-
G_DEF_SETTERS(
|
450
|
+
G_DEF_SETTERS(RG_TARGET_NAMESPACE);
|
459
451
|
|
460
|
-
G_DEF_CLASS(GST_TYPE_BIN_FLAGS, "Flags",
|
461
|
-
G_DEF_CONSTANTS(
|
452
|
+
G_DEF_CLASS(GST_TYPE_BIN_FLAGS, "Flags", RG_TARGET_NAMESPACE);
|
453
|
+
G_DEF_CONSTANTS(RG_TARGET_NAMESPACE, GST_TYPE_BIN_FLAGS, "GST_BIN_");
|
462
454
|
#ifdef GST_DEBUG_BIN_TO_DOT_FILE
|
463
|
-
G_DEF_CONSTANTS(
|
455
|
+
G_DEF_CONSTANTS(RG_TARGET_NAMESPACE, GST_TYPE_DEBUG_GRAPH_DETAILS,
|
464
456
|
"GST_DEBUG_GRAPH_");
|
465
457
|
#endif
|
466
458
|
}
|