gstreamer 3.3.8 → 3.3.9
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.
- checksums.yaml +4 -4
- data/ext/gstreamer/extconf.rb +19 -11
- data/ext/gstreamer/rbgst.c +1 -114
- data/lib/gst.rb +1 -0
- data/lib/gst/tag-list.rb +32 -0
- data/sample/stream-status.rb +1 -1
- data/test/test-bus.rb +41 -0
- data/test/test-tag-list.rb +33 -0
- metadata +9 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8044cab276a50e82aa764d63f254b22a53b55006858dce0aaea544747d69411b
|
4
|
+
data.tar.gz: febe2a0c9a1651062c1740bcf3e5c009968f9cfd6454ee17a77abc9221c3af56
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ae2ca3799d8e37060f1cd135535f3dc85d8481892be2797895e98e7b43246f98444d37669f5cdb854ec933fa81afdcd23418d1cf1243e0d6748dc7d89391e307
|
7
|
+
data.tar.gz: 11e14fbd2805de35e3d9413a9f65dd2606563bd251ed5d19f7a51a49430b1de09753955439836021b9003730c4462846c81b8fa3ac14ab0af5322ff4db7fcc17
|
data/ext/gstreamer/extconf.rb
CHANGED
@@ -1,6 +1,20 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Copyright (C) 2003-2019 Ruby-GNOME Project Team
|
4
|
+
#
|
5
|
+
# This library is free software; you can redistribute it and/or
|
6
|
+
# modify it under the terms of the GNU Lesser General Public
|
7
|
+
# License as published by the Free Software Foundation; either
|
8
|
+
# version 2.1 of the License, or (at your option) any later version.
|
9
|
+
#
|
10
|
+
# This library is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
13
|
+
# Lesser General Public License for more details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU Lesser General Public
|
16
|
+
# License along with this library; if not, write to the Free Software
|
17
|
+
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
4
18
|
|
5
19
|
require 'pathname'
|
6
20
|
|
@@ -22,13 +36,7 @@ $LOAD_PATH.unshift(mkmf_gnome2_dir.to_s)
|
|
22
36
|
module_name = "gstreamer"
|
23
37
|
package_id = "gstreamer-1.0"
|
24
38
|
|
25
|
-
|
26
|
-
require 'mkmf-gnome2'
|
27
|
-
rescue LoadError
|
28
|
-
require 'rubygems'
|
29
|
-
gem 'glib2'
|
30
|
-
require 'mkmf-gnome2'
|
31
|
-
end
|
39
|
+
require "mkmf-gnome"
|
32
40
|
|
33
41
|
["glib2", "gobject-introspection"].each do |package|
|
34
42
|
directory = "#{package}#{version_suffix}"
|
@@ -44,7 +52,7 @@ end
|
|
44
52
|
unless required_pkg_config_package(package_id,
|
45
53
|
:alt_linux => "gstreamer1.0-devel",
|
46
54
|
:debian => "libgstreamer1.0-dev",
|
47
|
-
:redhat => "
|
55
|
+
:redhat => "pkgconfig(#{package_id})",
|
48
56
|
:arch_linux => "gstreamer",
|
49
57
|
:homebrew => "gstreamer",
|
50
58
|
:macports => "gstreamer",
|
data/ext/gstreamer/rbgst.c
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
2
|
/*
|
3
|
-
* Copyright (C) 2013-
|
3
|
+
* Copyright (C) 2013-2019 Ruby-GNOME Project Team
|
4
4
|
*
|
5
5
|
* This library is free software; you can redistribute it and/or
|
6
6
|
* modify it under the terms of the GNU Lesser General Public
|
@@ -20,115 +20,6 @@
|
|
20
20
|
|
21
21
|
#include "rbgst.h"
|
22
22
|
|
23
|
-
static gboolean
|
24
|
-
name_equal(GIArgInfo *info, const gchar *target_name)
|
25
|
-
{
|
26
|
-
GITypeInfo type_info;
|
27
|
-
GIBaseInfo *interface_info;
|
28
|
-
const gchar *namespace;
|
29
|
-
const gchar *name;
|
30
|
-
gboolean equal_name_p = FALSE;
|
31
|
-
|
32
|
-
g_arg_info_load_type(info, &type_info);
|
33
|
-
interface_info = g_type_info_get_interface(&type_info);
|
34
|
-
namespace = g_base_info_get_namespace(interface_info);
|
35
|
-
name = g_base_info_get_name(interface_info);
|
36
|
-
if (strcmp(namespace, "Gst") == 0 && strcmp(name, target_name) == 0) {
|
37
|
-
equal_name_p = TRUE;
|
38
|
-
}
|
39
|
-
g_base_info_unref(interface_info);
|
40
|
-
|
41
|
-
return equal_name_p;
|
42
|
-
}
|
43
|
-
|
44
|
-
static gboolean
|
45
|
-
rg_gst_bus_func_callback(GstBus *bus, GstMessage *message, gpointer user_data)
|
46
|
-
{
|
47
|
-
RBGICallbackData *callback_data = user_data;
|
48
|
-
VALUE rb_keep;
|
49
|
-
ID id_call;
|
50
|
-
|
51
|
-
CONST_ID(id_call, "call");
|
52
|
-
rb_keep = rb_funcall(rb_gi_callback_data_get_rb_callback(callback_data),
|
53
|
-
id_call, 2,
|
54
|
-
GOBJ2RVAL(bus),
|
55
|
-
BOXED2RVAL(message, GST_MINI_OBJECT_TYPE(message)));
|
56
|
-
if (rb_gi_callback_data_get_metadata(callback_data)->scope_type == GI_SCOPE_TYPE_ASYNC) {
|
57
|
-
rb_gi_callback_data_free(callback_data);
|
58
|
-
}
|
59
|
-
return RVAL2CBOOL(rb_keep);
|
60
|
-
}
|
61
|
-
|
62
|
-
static gpointer
|
63
|
-
rg_gst_bus_func_callback_finder(GIArgInfo *info)
|
64
|
-
{
|
65
|
-
if (!name_equal(info, "BusFunc")) {
|
66
|
-
return NULL;
|
67
|
-
}
|
68
|
-
return rg_gst_bus_func_callback;
|
69
|
-
}
|
70
|
-
|
71
|
-
static gboolean
|
72
|
-
rg_gst_bus_sync_handler_callback(GstBus *bus, GstMessage *message,
|
73
|
-
gpointer user_data)
|
74
|
-
{
|
75
|
-
RBGICallbackData *callback_data = user_data;
|
76
|
-
VALUE rb_bus_sync_reply;
|
77
|
-
ID id_call;
|
78
|
-
|
79
|
-
CONST_ID(id_call, "call");
|
80
|
-
rb_bus_sync_reply =
|
81
|
-
rb_funcall(rb_gi_callback_data_get_rb_callback(callback_data),
|
82
|
-
id_call, 2,
|
83
|
-
GOBJ2RVAL(bus),
|
84
|
-
BOXED2RVAL(message, GST_MINI_OBJECT_TYPE(message)));
|
85
|
-
if (rb_gi_callback_data_get_metadata(callback_data)->scope_type == GI_SCOPE_TYPE_ASYNC) {
|
86
|
-
rb_gi_callback_data_free(callback_data);
|
87
|
-
}
|
88
|
-
return RVAL2GENUM(rb_bus_sync_reply, GST_TYPE_BUS_SYNC_REPLY);
|
89
|
-
}
|
90
|
-
|
91
|
-
static gpointer
|
92
|
-
rg_gst_bus_sync_handler_callback_finder(GIArgInfo *info)
|
93
|
-
{
|
94
|
-
if (!name_equal(info, "BusSyncHandler")) {
|
95
|
-
return NULL;
|
96
|
-
}
|
97
|
-
return rg_gst_bus_sync_handler_callback;
|
98
|
-
}
|
99
|
-
|
100
|
-
static void
|
101
|
-
rg_gst_tag_foreach_func_callback(const GstTagList *list, const gchar *tag,
|
102
|
-
gpointer user_data)
|
103
|
-
{
|
104
|
-
RBGICallbackData *callback_data = user_data;
|
105
|
-
ID id_call;
|
106
|
-
|
107
|
-
CONST_ID(id_call, "call");
|
108
|
-
rb_funcall(rb_gi_callback_data_get_rb_callback(callback_data),
|
109
|
-
id_call, 2,
|
110
|
-
/*
|
111
|
-
* XXX: Use gst_tag_list_copy() instead if we don't trust
|
112
|
-
* users. Users should not use destructive methods such as
|
113
|
-
* #insert. If many users use these methods, we shuold use
|
114
|
-
* gst_tag_list_copy().
|
115
|
-
*/
|
116
|
-
BOXED2RVAL((GstTagList *)list, GST_MINI_OBJECT_TYPE(list)),
|
117
|
-
CSTR2RVAL(tag));
|
118
|
-
if (rb_gi_callback_data_get_metadata(callback_data)->scope_type == GI_SCOPE_TYPE_ASYNC) {
|
119
|
-
rb_gi_callback_data_free(callback_data);
|
120
|
-
}
|
121
|
-
}
|
122
|
-
|
123
|
-
static gpointer
|
124
|
-
rg_gst_tag_foreach_func_callback_finder(GIArgInfo *info)
|
125
|
-
{
|
126
|
-
if (!name_equal(info, "TagForeachFunc")) {
|
127
|
-
return NULL;
|
128
|
-
}
|
129
|
-
return rg_gst_tag_foreach_func_callback;
|
130
|
-
}
|
131
|
-
|
132
23
|
static void
|
133
24
|
rg_gst_value_list_r2g(VALUE from, GValue *to)
|
134
25
|
{
|
@@ -176,10 +67,6 @@ rg_gst_value_list_g2r(const GValue *from)
|
|
176
67
|
void
|
177
68
|
Init_gstreamer (void)
|
178
69
|
{
|
179
|
-
rb_gi_callback_register_finder(rg_gst_bus_func_callback_finder);
|
180
|
-
rb_gi_callback_register_finder(rg_gst_bus_sync_handler_callback_finder);
|
181
|
-
rb_gi_callback_register_finder(rg_gst_tag_foreach_func_callback_finder);
|
182
|
-
|
183
70
|
rbgobj_register_r2g_func(GST_TYPE_LIST, rg_gst_value_list_r2g);
|
184
71
|
rbgobj_register_g2r_func(GST_TYPE_LIST, rg_gst_value_list_g2r);
|
185
72
|
|
data/lib/gst.rb
CHANGED
data/lib/gst/tag-list.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# Copyright (C) 2019 Ruby-GNOME 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 TagList
|
19
|
+
include Enumerable
|
20
|
+
|
21
|
+
alias_method :each_raw, :each
|
22
|
+
def each
|
23
|
+
each_raw do |_tag_list, tag|
|
24
|
+
n_values = get_tag_size(tag)
|
25
|
+
values = n_values.times.collect do |i|
|
26
|
+
get_value_index(tag, i).value
|
27
|
+
end
|
28
|
+
yield(tag, values)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data/sample/stream-status.rb
CHANGED
data/test/test-bus.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
# Copyright (C) 2019 Ruby-GNOME 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
|
+
class TestBus < Test::Unit::TestCase
|
18
|
+
def setup
|
19
|
+
@pipeline = Gst::Pipeline.new("my-pipeline")
|
20
|
+
@source = Gst::ElementFactory.make("fakesrc", "source")
|
21
|
+
@filter = Gst::ElementFactory.make("identity", "filter")
|
22
|
+
@sink = Gst::ElementFactory.make("fakesink", "sink")
|
23
|
+
@pipeline.add_elements(@source, @filter, @sink)
|
24
|
+
@source.link(@filter, @sink)
|
25
|
+
@bus = @pipeline.bus
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_add_watch
|
29
|
+
message_types = []
|
30
|
+
loop = GLib::MainLoop.new
|
31
|
+
@bus.add_watch do |_bus, message|
|
32
|
+
message_types << message.type
|
33
|
+
loop.quit
|
34
|
+
GLib::Source::REMOVE
|
35
|
+
end
|
36
|
+
@pipeline.play
|
37
|
+
loop.run
|
38
|
+
assert_equal([Gst::MessageType::STATE_CHANGED],
|
39
|
+
message_types)
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# Copyright (C) 2019 Ruby-GNOME 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
|
+
class TestTagList < Test::Unit::TestCase
|
18
|
+
def setup
|
19
|
+
@tag_list = Gst::TagList.new
|
20
|
+
@tag_list.add_value(:append, "title", "Hello")
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_each
|
24
|
+
tags = []
|
25
|
+
@tag_list.each do |name, values|
|
26
|
+
tags << [name, values]
|
27
|
+
end
|
28
|
+
assert_equal([
|
29
|
+
["title", ["Hello"]],
|
30
|
+
],
|
31
|
+
tags)
|
32
|
+
end
|
33
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gstreamer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.3.
|
4
|
+
version: 3.3.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- The Ruby-GNOME Project Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-10-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gobject-introspection
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 3.3.
|
19
|
+
version: 3.3.9
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 3.3.
|
26
|
+
version: 3.3.9
|
27
27
|
description: Ruby/GStreamer is a Ruby binding for GStreamer.
|
28
28
|
email: ruby-gnome2-devel-en@lists.sourceforge.net
|
29
29
|
executables: []
|
@@ -53,6 +53,7 @@ files:
|
|
53
53
|
- lib/gst/plugin-feature.rb
|
54
54
|
- lib/gst/registry.rb
|
55
55
|
- lib/gst/structure.rb
|
56
|
+
- lib/gst/tag-list.rb
|
56
57
|
- lib/gst/type-find-factory.rb
|
57
58
|
- lib/gst/version.rb
|
58
59
|
- lib/gstreamer.rb
|
@@ -69,9 +70,11 @@ files:
|
|
69
70
|
- test/gstreamer-test-utils.rb
|
70
71
|
- test/run-test.rb
|
71
72
|
- test/test-bin.rb
|
73
|
+
- test/test-bus.rb
|
72
74
|
- test/test-caps.rb
|
73
75
|
- test/test-child-proxy.rb
|
74
76
|
- test/test-element-factory.rb
|
77
|
+
- test/test-tag-list.rb
|
75
78
|
- test/test-version.rb
|
76
79
|
homepage: https://ruby-gnome2.osdn.jp/
|
77
80
|
licenses:
|
@@ -93,7 +96,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
93
96
|
- !ruby/object:Gem::Version
|
94
97
|
version: '0'
|
95
98
|
requirements: []
|
96
|
-
|
99
|
+
rubyforge_project:
|
100
|
+
rubygems_version: 2.7.6.2
|
97
101
|
signing_key:
|
98
102
|
specification_version: 4
|
99
103
|
summary: Ruby/GStreamer is a Ruby binding for GStreamer.
|