gstreamer 0.90.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (126) hide show
  1. data/ChangeLog +1157 -0
  2. data/README +33 -0
  3. data/Rakefile +15 -0
  4. data/ext/gstreamer/Makefile +162 -0
  5. data/ext/gstreamer/depend +5 -0
  6. data/ext/gstreamer/extconf.rb +63 -0
  7. data/ext/gstreamer/gst.so +0 -0
  8. data/ext/gstreamer/misc.c +62 -0
  9. data/ext/gstreamer/misc.o +0 -0
  10. data/ext/gstreamer/rbgst-bin.c +466 -0
  11. data/ext/gstreamer/rbgst-bin.o +0 -0
  12. data/ext/gstreamer/rbgst-buffer.c +365 -0
  13. data/ext/gstreamer/rbgst-buffer.o +0 -0
  14. data/ext/gstreamer/rbgst-bus.c +92 -0
  15. data/ext/gstreamer/rbgst-bus.o +0 -0
  16. data/ext/gstreamer/rbgst-caps.c +441 -0
  17. data/ext/gstreamer/rbgst-caps.o +0 -0
  18. data/ext/gstreamer/rbgst-child-proxy.c +33 -0
  19. data/ext/gstreamer/rbgst-child-proxy.o +0 -0
  20. data/ext/gstreamer/rbgst-clock.c +108 -0
  21. data/ext/gstreamer/rbgst-clock.o +0 -0
  22. data/ext/gstreamer/rbgst-element-factory.c +255 -0
  23. data/ext/gstreamer/rbgst-element-factory.o +0 -0
  24. data/ext/gstreamer/rbgst-element.c +1053 -0
  25. data/ext/gstreamer/rbgst-element.o +0 -0
  26. data/ext/gstreamer/rbgst-event.c +351 -0
  27. data/ext/gstreamer/rbgst-event.o +0 -0
  28. data/ext/gstreamer/rbgst-ghost-pad.c +42 -0
  29. data/ext/gstreamer/rbgst-ghost-pad.o +0 -0
  30. data/ext/gstreamer/rbgst-index-factory.c +67 -0
  31. data/ext/gstreamer/rbgst-index-factory.o +0 -0
  32. data/ext/gstreamer/rbgst-message.c +784 -0
  33. data/ext/gstreamer/rbgst-message.o +0 -0
  34. data/ext/gstreamer/rbgst-mini-object.c +220 -0
  35. data/ext/gstreamer/rbgst-mini-object.o +0 -0
  36. data/ext/gstreamer/rbgst-object.c +81 -0
  37. data/ext/gstreamer/rbgst-object.o +0 -0
  38. data/ext/gstreamer/rbgst-pad-template.c +124 -0
  39. data/ext/gstreamer/rbgst-pad-template.o +0 -0
  40. data/ext/gstreamer/rbgst-pad.c +338 -0
  41. data/ext/gstreamer/rbgst-pad.o +0 -0
  42. data/ext/gstreamer/rbgst-pipeline.c +90 -0
  43. data/ext/gstreamer/rbgst-pipeline.o +0 -0
  44. data/ext/gstreamer/rbgst-plugin-feature.c +134 -0
  45. data/ext/gstreamer/rbgst-plugin-feature.o +0 -0
  46. data/ext/gstreamer/rbgst-plugin.c +164 -0
  47. data/ext/gstreamer/rbgst-plugin.o +0 -0
  48. data/ext/gstreamer/rbgst-private.c +89 -0
  49. data/ext/gstreamer/rbgst-private.h +37 -0
  50. data/ext/gstreamer/rbgst-private.o +0 -0
  51. data/ext/gstreamer/rbgst-query.c +289 -0
  52. data/ext/gstreamer/rbgst-query.o +0 -0
  53. data/ext/gstreamer/rbgst-seek.c +36 -0
  54. data/ext/gstreamer/rbgst-seek.o +0 -0
  55. data/ext/gstreamer/rbgst-static-caps.c +49 -0
  56. data/ext/gstreamer/rbgst-static-caps.o +0 -0
  57. data/ext/gstreamer/rbgst-static-pad-template.c +64 -0
  58. data/ext/gstreamer/rbgst-static-pad-template.o +0 -0
  59. data/ext/gstreamer/rbgst-structure.c +300 -0
  60. data/ext/gstreamer/rbgst-structure.o +0 -0
  61. data/ext/gstreamer/rbgst-system-clock.c +45 -0
  62. data/ext/gstreamer/rbgst-system-clock.o +0 -0
  63. data/ext/gstreamer/rbgst-type-find-factory.c +124 -0
  64. data/ext/gstreamer/rbgst-type-find-factory.o +0 -0
  65. data/ext/gstreamer/rbgst-value.c +517 -0
  66. data/ext/gstreamer/rbgst-value.o +0 -0
  67. data/ext/gstreamer/rbgst-x-overlay.c +132 -0
  68. data/ext/gstreamer/rbgst-x-overlay.o +0 -0
  69. data/ext/gstreamer/rbgst.c +279 -0
  70. data/ext/gstreamer/rbgst.h +197 -0
  71. data/ext/gstreamer/rbgst.o +0 -0
  72. data/ext/gstreamer/rbgstclockentry.c +268 -0
  73. data/ext/gstreamer/rbgstclockentry.o +0 -0
  74. data/ext/gstreamer/rbgstformat.c +159 -0
  75. data/ext/gstreamer/rbgstformat.o +0 -0
  76. data/ext/gstreamer/rbgstindex.c +314 -0
  77. data/ext/gstreamer/rbgstindex.o +0 -0
  78. data/ext/gstreamer/rbgstindexentry.c +96 -0
  79. data/ext/gstreamer/rbgstindexentry.o +0 -0
  80. data/ext/gstreamer/rbgstparse.c +66 -0
  81. data/ext/gstreamer/rbgstparse.o +0 -0
  82. data/ext/gstreamer/rbgstquerytype.c +159 -0
  83. data/ext/gstreamer/rbgstquerytype.o +0 -0
  84. data/ext/gstreamer/rbgstregistry.c +278 -0
  85. data/ext/gstreamer/rbgstregistry.o +0 -0
  86. data/ext/gstreamer/rbgsttag.c +111 -0
  87. data/ext/gstreamer/rbgsttag.o +0 -0
  88. data/ext/gstreamer/rbgsttagsetter.c +50 -0
  89. data/ext/gstreamer/rbgsttagsetter.o +0 -0
  90. data/ext/gstreamer/rbgstxml.c +189 -0
  91. data/ext/gstreamer/rbgstxml.o +0 -0
  92. data/ext/gstreamer/ruby-gstreamer.pc +3 -0
  93. data/extconf.rb +49 -0
  94. data/lib/gst.rb +19 -0
  95. data/sample/audio-player.rb +54 -0
  96. data/sample/gst-inspect.rb +417 -0
  97. data/sample/media-type.rb +55 -0
  98. data/sample/media-type2.rb +268 -0
  99. data/sample/ogg-audio-player.rb +54 -0
  100. data/sample/type-find.rb +46 -0
  101. data/sample/video-player.rb +57 -0
  102. data/sample/xml-player.rb +60 -0
  103. data/test/gst-test-utils.rb +18 -0
  104. data/test/run-test.rb +25 -0
  105. data/test/test_bin.rb +167 -0
  106. data/test/test_buffer.rb +174 -0
  107. data/test/test_caps.rb +24 -0
  108. data/test/test_clock.rb +7 -0
  109. data/test/test_element.rb +87 -0
  110. data/test/test_element_factory.rb +28 -0
  111. data/test/test_event.rb +10 -0
  112. data/test/test_index_factory.rb +7 -0
  113. data/test/test_message.rb +191 -0
  114. data/test/test_mini_object.rb +38 -0
  115. data/test/test_object.rb +10 -0
  116. data/test/test_pad.rb +68 -0
  117. data/test/test_plugin.rb +6 -0
  118. data/test/test_plugin_feature.rb +20 -0
  119. data/test/test_seek.rb +17 -0
  120. data/test/test_static_caps.rb +18 -0
  121. data/test/test_static_pad_template.rb +16 -0
  122. data/test/test_structure.rb +159 -0
  123. data/test/test_thread_handling.rb +58 -0
  124. data/test/test_type_find_factory.rb +8 -0
  125. data/test/test_value.rb +69 -0
  126. metadata +208 -0
@@ -0,0 +1,18 @@
1
+ module GstTestUtils
2
+ private
3
+ def only_gst_version(major, minor, micro)
4
+ unless Gst.check_version?(major, minor, micro)
5
+ omit("Require GStreamer >= #{major}.#{minor}.#{micro}")
6
+ end
7
+ end
8
+
9
+ def find_element_factory(name)
10
+ factory = Gst::ElementFactory.find(name)
11
+ assert_not_nil(factory, "#{name}'s factory should be found.")
12
+ factory
13
+ end
14
+
15
+ def create_element(element_name, name=nil)
16
+ find_element_factory(element_name).create(name)
17
+ end
18
+ end
data/test/run-test.rb ADDED
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # ENV["GST_DEBUG"] = "GST_BUFFER:5"
4
+
5
+ base_dir = File.expand_path(File.join(File.dirname(__FILE__), ".."))
6
+
7
+ if system("which make > /dev/null")
8
+ system("cd #{base_dir.dump} && make > /dev/null") or exit(1)
9
+ end
10
+
11
+ glib_dir = File.expand_path(File.join(base_dir, "..", "glib2"))
12
+ $LOAD_PATH.unshift(File.join(glib_dir, "test"))
13
+ require 'glib-test-init'
14
+
15
+ $LOAD_PATH.unshift(File.join(glib_dir, "ext", "glib2"))
16
+ $LOAD_PATH.unshift(File.join(glib_dir, "lib"))
17
+
18
+ $LOAD_PATH.unshift(File.join(base_dir, "src"))
19
+ $LOAD_PATH.unshift(File.join(base_dir, "src", "lib"))
20
+ require "gst"
21
+
22
+ $LOAD_PATH.unshift(File.join(base_dir, "test"))
23
+ require 'gst-test-utils'
24
+
25
+ exit Test::Unit::AutoRunner.run(true)
data/test/test_bin.rb ADDED
@@ -0,0 +1,167 @@
1
+ class TestBin < Test::Unit::TestCase
2
+ include GstTestUtils
3
+
4
+ def test_children
5
+ bin = Gst::Bin.new
6
+
7
+ element = create_element("filesink")
8
+ no_interface_element = create_element("fakesink")
9
+ bin << element << no_interface_element
10
+
11
+ assert_equal([no_interface_element, element], bin.children)
12
+ assert_equal([element], bin.children(Gst::ElementURIHandler))
13
+ end
14
+
15
+ def test_size
16
+ bin = Gst::Bin.new
17
+ assert_equal(0, bin.size)
18
+ bin << create_element("fakesink")
19
+ assert_equal(1, bin.size)
20
+ end
21
+
22
+ def test_children_cookie
23
+ bin = Gst::Bin.new
24
+ cookie = bin.children_cookie
25
+ assert_equal(cookie, bin.children_cookie)
26
+ bin << create_element("fakesink")
27
+ assert_not_equal(cookie, bin.children_cookie)
28
+ end
29
+
30
+ def test_child_bus
31
+ bin = Gst::Bin.new
32
+ assert_not_nil(bin.child_bus)
33
+ end
34
+
35
+ def test_messages
36
+ bin = Gst::Bin.new
37
+ assert_equal([], bin.messages)
38
+ end
39
+
40
+ def test_polling?
41
+ bin = Gst::Bin.new
42
+ assert(!bin.polling?)
43
+ end
44
+
45
+ def test_clock_dirty?
46
+ bin = Gst::Bin.new
47
+ assert(!bin.clock_dirty?)
48
+ end
49
+
50
+ def test_provided_clock
51
+ bin = Gst::Bin.new
52
+ assert_nil(bin.provided_clock)
53
+ bin.provided_clock = Gst::SystemClock.new
54
+ assert_not_nil(bin.provided_clock)
55
+ bin.provided_clock = nil
56
+ assert_nil(bin.provided_clock)
57
+ end
58
+
59
+ def test_clock_provider
60
+ bin = Gst::Bin.new
61
+ assert_nil(bin.clock_provider)
62
+ end
63
+
64
+ def test_add
65
+ bin = Gst::Bin.new
66
+ element = create_element("fakesink")
67
+ bin << element
68
+ assert_equal(element, bin.children[0])
69
+ assert_raise(TypeError) do
70
+ bin << "XXX"
71
+ end
72
+
73
+ element2 = create_element("fakesink")
74
+ element3 = create_element("fakesink")
75
+ bin.add(element2, element3)
76
+ assert_equal([element3, element2], bin.children[0, 2])
77
+ end
78
+
79
+ def test_remove
80
+ bin = Gst::Bin.new
81
+ element1 = create_element("fakesink")
82
+ element2 = create_element("fakesink")
83
+ bin << element1 << element2
84
+ assert_equal(2, bin.size)
85
+ bin.remove(element1, element2)
86
+ assert_equal(0, bin.size)
87
+ end
88
+
89
+ def test_clear
90
+ bin = Gst::Bin.new
91
+ element1 = create_element("fakesink")
92
+ element2 = create_element("fakesink")
93
+ bin << element1 << element2
94
+ assert_equal(2, bin.size)
95
+ bin.clear
96
+ assert_equal(0, bin.size)
97
+ end
98
+
99
+ def test_refer_by_name
100
+ bin = Gst::Bin.new
101
+ sub_bin = Gst::Bin.new
102
+ bin << sub_bin
103
+
104
+ element = create_element("fakesink")
105
+ assert_nil(bin.get_child(element.name))
106
+ assert_nil(sub_bin.get_child(element.name))
107
+ assert_nil(sub_bin.get_child(element.name, true))
108
+
109
+ bin << element
110
+ assert_equal(element, bin.get_child(element.name))
111
+ assert_equal(element, bin.get_child(element.name, true))
112
+ assert_nil(sub_bin.get_child(element.name))
113
+ assert_equal(element, sub_bin.get_child(element.name, true))
114
+ end
115
+
116
+ def test_refer_by_interface
117
+ bin = Gst::Bin.new
118
+ element = create_element("filesink")
119
+
120
+ assert_nil(bin.get_child(Gst::ElementURIHandler))
121
+
122
+ bin << create_element("fakesink")
123
+ assert_nil(bin.get_child(Gst::ElementURIHandler))
124
+
125
+ bin << element
126
+ assert_equal(element, bin.get_child(Gst::ElementURIHandler))
127
+ end
128
+
129
+ def test_refer_by_index
130
+ bin = Gst::Bin.new
131
+ element1 = create_element("filesink")
132
+ element2 = create_element("fakesink")
133
+
134
+ assert_nil(bin.get_child(0))
135
+ assert_nil(bin.get_child(1))
136
+ assert_nil(bin.get_child(2))
137
+
138
+ bin << element1 << element2
139
+ assert_equal(element2, bin.get_child(0))
140
+ assert_equal(element1, bin.get_child(1))
141
+ assert_nil(bin.get_child(2))
142
+ end
143
+
144
+ def test_sinks
145
+ bin = Gst::Bin.new
146
+ sink1 = create_element("filesink")
147
+ sink2 = create_element("fakesink")
148
+ src = create_element("fakesrc")
149
+
150
+ assert_equal([], bin.sinks)
151
+
152
+ bin << src << sink1 << sink2
153
+ assert_equal([sink2, sink1], bin.sinks)
154
+ end
155
+
156
+ def test_sources
157
+ bin = Gst::Bin.new
158
+ src1 = create_element("filesrc")
159
+ src2 = create_element("fakesrc")
160
+ sink = create_element("fakesink")
161
+
162
+ assert_equal([], bin.sources)
163
+
164
+ bin << src1 << src2 << sink
165
+ assert_equal([src2, src1], bin.sources)
166
+ end
167
+ end
@@ -0,0 +1,174 @@
1
+ class TestBuffer < Test::Unit::TestCase
2
+ def test_create_mini_object
3
+ assert_nothing_raised do
4
+ Gst::Buffer.new
5
+ end
6
+ end
7
+
8
+ def test_flag
9
+ buffer = Gst::Buffer.new
10
+
11
+ assert_nothing_raised do
12
+ buffer.raise_flag(:preroll)
13
+ end
14
+ assert(!buffer.flag_raised?(:discont))
15
+ assert_nothing_raised do
16
+ buffer.lower_flag(:in_caps)
17
+ end
18
+
19
+ buffer.flags = [:gap, :delta_unit]
20
+ assert_equal(Gst::Buffer::FLAG_GAP | Gst::Buffer::FLAG_DELTA_UNIT,
21
+ buffer.flags)
22
+ end
23
+
24
+ def test_size
25
+ assert_equal(0, Gst::Buffer.new.size)
26
+ buffer = Gst::Buffer.new(5)
27
+ assert_equal(5, buffer.size)
28
+ buffer.size = 3
29
+ assert_equal(3, buffer.size)
30
+ end
31
+
32
+ def test_data
33
+ buffer = Gst::Buffer.new
34
+ assert_equal([nil, 0], [buffer.data, buffer.size])
35
+ buffer.data = "XXX"
36
+ assert_equal(["XXX", 3], [buffer.data, buffer.size])
37
+ buffer.data = nil
38
+ assert_equal([nil, 0], [buffer.data, buffer.size])
39
+ end
40
+
41
+ def test_timestamp
42
+ buffer = Gst::Buffer.new
43
+ assert_equal(Gst::ClockTime::NONE, buffer.timestamp)
44
+ assert(!buffer.valid_timestamp?)
45
+
46
+ timestamp = Time.now.to_i * Gst::NSECOND
47
+ buffer.timestamp = timestamp
48
+ assert_equal(timestamp, buffer.timestamp)
49
+ assert(buffer.valid_timestamp?)
50
+ end
51
+
52
+ def test_duration
53
+ buffer = Gst::Buffer.new
54
+ assert_equal(Gst::ClockTime::NONE, buffer.duration)
55
+ assert(!buffer.valid_duration?)
56
+
57
+ duration = 10 * 60 * Gst::NSECOND
58
+ buffer.duration = duration
59
+ assert_equal(duration, buffer.duration)
60
+ assert(buffer.valid_duration?)
61
+ end
62
+
63
+ def test_caps
64
+ buffer = Gst::Buffer.new
65
+ assert_nil(buffer.caps)
66
+
67
+ caps = Gst::Caps.new
68
+ buffer.caps = caps
69
+ assert_equal(caps, buffer.caps)
70
+ end
71
+
72
+ def test_offset
73
+ buffer = Gst::Buffer.new
74
+ assert_equal(Gst::Buffer::OFFSET_NONE, buffer.offset)
75
+ assert(!buffer.valid_offset?)
76
+
77
+ offset = 10
78
+ buffer.offset = offset
79
+ assert_equal(offset, buffer.offset)
80
+ assert(buffer.valid_offset?)
81
+ end
82
+
83
+ def test_offset_end
84
+ buffer = Gst::Buffer.new
85
+ assert_equal(Gst::Buffer::OFFSET_NONE, buffer.offset_end)
86
+ assert(!buffer.valid_offset_end?)
87
+
88
+ offset_end = 10
89
+ buffer.offset_end = offset_end
90
+ assert_equal(offset_end, buffer.offset_end)
91
+ assert(buffer.valid_offset_end?)
92
+ end
93
+
94
+ def test_discontinuity
95
+ buffer = Gst::Buffer.new
96
+ assert(!buffer.discontinuity?)
97
+
98
+ buffer.raise_flag(:discont)
99
+ assert(buffer.discontinuity?)
100
+ end
101
+
102
+ def test_copy_flags
103
+ assert_equal(Gst::Buffer::CopyFlags::FLAGS |
104
+ Gst::Buffer::CopyFlags::TIMESTAMPS |
105
+ Gst::Buffer::CopyFlags::CAPS,
106
+ Gst::Buffer::CopyFlags::ALL)
107
+
108
+ assert_equal(Gst::Buffer::COPY_FLAGS |
109
+ Gst::Buffer::COPY_TIMESTAMPS |
110
+ Gst::Buffer::COPY_CAPS,
111
+ Gst::Buffer::COPY_ALL)
112
+ end
113
+
114
+ def test_copy_metadata
115
+ buffer = Gst::Buffer.new
116
+ buffer.flags = :discont
117
+
118
+ copied = buffer.copy_metadata(:all)
119
+ assert(copied.flag_raised?(:discont))
120
+ copied = buffer.copy_metadata(0)
121
+ assert(!copied.flag_raised?(:discont))
122
+
123
+ copied = Gst::Buffer.new
124
+ assert(!copied.flag_raised?(:discont))
125
+ buffer.copy_metadata(copied, :flags)
126
+ assert(copied.flag_raised?(:discont))
127
+ end
128
+
129
+ def test_copy_metadata_with_readonly
130
+ buffer = Gst::Buffer.new
131
+ buffer.flags = :readonly
132
+ assert(!buffer.writable?)
133
+
134
+ copied = buffer.copy_metadata(:all)
135
+ assert(!copied.flag_raised?(:readonly))
136
+ assert(copied.writable?)
137
+ end
138
+
139
+ def test_metadata_writable
140
+ buffer = Gst::Buffer.new
141
+ assert(buffer.metadata_writable?)
142
+ buffer.metadata_writable!
143
+ # assert(buffer.metadata_writable?) # FIXME
144
+
145
+ buffer = Gst::Buffer.new
146
+ buffer.create_sub(0, 0)
147
+ assert(!buffer.metadata_writable?)
148
+ buffer.metadata_writable!
149
+ # assert(buffer.metadata_writable?) # FIXME
150
+
151
+ buffer = Gst::Buffer.new
152
+ sub = buffer.create_sub(0, 0)
153
+ assert(!sub.metadata_writable?)
154
+ sub.metadata_writable!
155
+ # assert(sub.metadata_writable?) # FIXME
156
+ end
157
+
158
+ def test_span
159
+ buffer1 = Gst::Buffer.new(5)
160
+ buffer2 = Gst::Buffer.new(10)
161
+
162
+ length = 7
163
+ merged_buffer = buffer1.span(2, buffer2, length)
164
+ assert(length, merged_buffer.length)
165
+ end
166
+
167
+ def test_span?
168
+ buffer = Gst::Buffer.new
169
+ sub_buffer1 = buffer.create_sub(0, 0)
170
+ sub_buffer2 = buffer.create_sub(0, 0)
171
+ assert(sub_buffer1.span?(sub_buffer2))
172
+ assert(!buffer.span?(sub_buffer1))
173
+ end
174
+ end
data/test/test_caps.rb ADDED
@@ -0,0 +1,24 @@
1
+ class TestCaps < Test::Unit::TestCase
2
+ def test_size
3
+ assert_equal(1, smpte_caps.size)
4
+ end
5
+
6
+ def test_get_structure
7
+ assert_equal("video/x-raw-yuv", smpte_caps[0].name)
8
+ end
9
+
10
+ def test_each
11
+ assert_equal(["video/x-raw-yuv"],
12
+ smpte_caps.collect {|structure| structure.name})
13
+ end
14
+
15
+ private
16
+ def smpte_caps
17
+ smpte = Gst::ElementFactory.find("smpte")
18
+ assert_not_nil(smpte)
19
+ smpte.pad_templates.find do |template|
20
+ template.direction == Gst::Pad::SRC
21
+ end.caps.to_caps
22
+ end
23
+ end
24
+
@@ -0,0 +1,7 @@
1
+ class TestClock < Test::Unit::TestCase
2
+ def test_create_clock
3
+ assert_raise(TypeError) do
4
+ Gst::Clock.new
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,87 @@
1
+ class TestElement < Test::Unit::TestCase
2
+ include GstTestUtils
3
+
4
+ class TestBin < Gst::Bin
5
+ type_register
6
+ end
7
+
8
+
9
+ def test_clock
10
+ bin = create_element("playbin")
11
+ assert(bin.require_clock?)
12
+ assert(bin.provide_clock?)
13
+ assert_nil(bin.clock)
14
+ end
15
+
16
+ def test_each_pad
17
+ pads = []
18
+ create_element("filesrc").each_pad do |pad|
19
+ pads << pad.name
20
+ end
21
+ assert_equal(["src"], pads)
22
+ end
23
+
24
+ def test_state
25
+ pipeline = Gst::Pipeline.new
26
+ src = create_element("videotestsrc")
27
+ sink = create_element("fakesink")
28
+ pipeline.add(src, sink)
29
+
30
+ assert_equal([Gst::STATE_CHANGE_SUCCESS,
31
+ Gst::STATE_NULL,
32
+ Gst::STATE_VOID_PENDING],
33
+ pipeline.get_state)
34
+
35
+ pipeline.ready
36
+ assert_equal([Gst::STATE_CHANGE_SUCCESS,
37
+ Gst::STATE_READY,
38
+ Gst::STATE_VOID_PENDING],
39
+ pipeline.get_state)
40
+
41
+ pipeline.play
42
+ assert_equal([Gst::STATE_CHANGE_ASYNC,
43
+ Gst::STATE_READY,
44
+ Gst::STATE_PLAYING],
45
+ pipeline.get_state(10))
46
+
47
+ pipeline.pause
48
+ assert_equal([Gst::STATE_CHANGE_ASYNC,
49
+ Gst::STATE_READY,
50
+ Gst::STATE_PAUSED],
51
+ pipeline.get_state(10))
52
+
53
+ pipeline.stop
54
+ assert_equal([Gst::STATE_CHANGE_SUCCESS,
55
+ Gst::STATE_NULL,
56
+ Gst::STATE_VOID_PENDING],
57
+ pipeline.get_state(10))
58
+
59
+ pipeline.set_state(:playing)
60
+ pend("Async is correct behavior?") do
61
+ assert_equal([Gst::STATE_CHANGE_SUCCESS,
62
+ Gst::STATE_PLAYING,
63
+ Gst::STATE_VOID_PENDING],
64
+ pipeline.get_state(10))
65
+ end
66
+ end
67
+
68
+ def test_query
69
+ pipeline = Gst::Pipeline.new
70
+ assert_boolean(pipeline.query(Gst::QueryFormats.new))
71
+ end
72
+
73
+ def test_send_event
74
+ pipeline = Gst::Pipeline.new
75
+ assert_boolean(pipeline.send_event(Gst::EventEOS.new))
76
+ end
77
+
78
+ def test_reference_counting
79
+ pipeline = Gst::Pipeline.new
80
+ bin = TestBin.new
81
+
82
+ 10.times do
83
+ pipeline.add(bin)
84
+ pipeline.remove(bin)
85
+ end
86
+ end
87
+ end