Codebase list gstreamer1.0 / upstream/1.15.90
New upstream version 1.15.90 Sebastian Dröge 5 years ago
125 changed file(s) with 1947 addition(s) and 365 deletion(s). Raw diff Collapse all Expand all
0 === release 1.15.90 ===
1
2 2019-04-11 00:19:11 +0100 Tim-Philipp Müller <tim@centricular.com>
3
4 * ChangeLog:
5 * NEWS:
6 * RELEASE:
7 * configure.ac:
8 * gstreamer.doap:
9 * meson.build:
10 Release 1.15.90
11
12 2019-04-11 00:19:11 +0100 Tim-Philipp Müller <tim@centricular.com>
13
14 * docs/plugins/inspect/plugin-coreelements.xml:
15 * docs/plugins/inspect/plugin-coretracers.xml:
16 Update docs
17
18 2019-04-10 09:17:01 -0400 Julian Bouzas <julian.bouzas@collabora.com>
19
20 * plugins/tracers/gstlatency.c:
21 tracer: latency: Fix typo bug
22
23 2019-04-10 09:13:53 -0400 Julian Bouzas <julian.bouzas@collabora.com>
24
25 * plugins/tracers/gstlatency.c:
26 tracer: latency: Fix bug when storing latency probe event
27 The pad name sotred in the latency event has no longer the name of the element,
28 so we have to get the element Id, element name and pad name values from the data
29 structure and compare all 3 values.
30
31 2019-04-10 10:18:54 +0300 Sebastian Dröge <sebastian@centricular.com>
32
33 * gst/gstcontrolbinding.c:
34 controlbinding: Check if the weak pointer was cleared before explicitly removing it
35 Otherwise we'll get an assertion if the object behind the weak pointer
36 was already destroyed in the meantime as we would pass NULL as first
37 argument to g_object_remove_weak_pointer().
38
39 2019-04-09 08:05:09 -0400 Julian Bouzas <julian.bouzas@collabora.com>
40
41 * plugins/tracers/gstlatency.c:
42 * tools/gst-stats.c:
43 tracer: latency: Show element id, element name and pad name
44
45 2019-03-25 15:36:08 +0100 Julian Bouzas <julian.bouzas@collabora.com>
46
47 * tools/gst-stats.c:
48 gst-stats: Add element latency support
49 This will output latency information when parsing a log file with gst-stats that
50 has latency trace information. It will show the min, max and mean latency for
51 the pipeline and all its elements. It will also show the reported latency for
52 each element of the pipeline. Output example:
53 Latency Statistics:
54 pulsesrc0_src|fakesink0_sink: mean=190000043 min=190000043 max=190000043
55 Element Latency Statistics:
56 flacparse0_src: mean=45561281 min=654988 max=90467575
57 flacenc0_src: mean=89938883 min=81913512 max=97964254
58 flacdec0_src: mean=45804881 min=228962 max=91380801
59 Element Reported Latency:
60 pulsesrc0: min=10000000 max=200000000 ts=0:00:00.262846528
61 flacenc0: min=104489795 max=104489795 ts=0:00:00.262898616
62 flacparse0: min=0 max=0 ts=0:00:00.262927962
63
64 2019-03-21 10:37:34 +0100 Julian Bouzas <julian.bouzas@collabora.com>
65
66 * plugins/tracers/gstlatency.c:
67 * plugins/tracers/gstlatency.h:
68 tracer: latency: Show per-element reported latency
69
70 2019-03-20 12:20:48 +0100 Julian Bouzas <julian.bouzas@collabora.com>
71
72 * plugins/tracers/gstlatency.c:
73 tracer: latency: Show element's source pad name instead of element's name
74 The full pad name gives more information than the element's name, which is very
75 useful when elements have multiple source pads.
76
77 2019-03-18 21:55:50 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
78
79 * plugins/tracers/gstlatency.c:
80 latency: Dot not override already stored events
81 First, the event would be leaved, but also when an element takes
82 several buffers before producing one, we want the reported latency to be
83 the aggregation, so the distance from the oldest buffer.
84
85 2018-10-31 16:50:48 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
86
87 * plugins/tracers/gstlatency.c:
88 * plugins/tracers/gstlatency.h:
89 tracer: latency: Add parameter to select latency type
90 This sets back the default to trace only pipeline latency, and add flags
91 to enabled element tracing. It is now possible to only trace element
92 latency, only trace pipeline latency, trace both or none.
93
94 2018-07-06 17:08:24 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
95
96 * plugins/tracers/gstlatency.c:
97 tracer: latency: Add per element latency tracer
98 This adds per element latency tracing.
99
100 2018-07-04 14:18:42 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
101
102 * plugins/tracers/gstlatency.c:
103 tracer: Don't pass pads inside GstEvent
104 This removes the passing of pad inside of a GstEvent. While this is not
105 a bug, it may affect the live time of the pad, hense change the pipeline
106 behaviour.
107
108 2018-11-13 21:19:22 +0100 Mathieu Duponchelle <mathieu@centricular.com>
109
110 * libs/gst/base/gstbasesrc.c:
111 * tests/check/libs/basesrc.c:
112 basesrc: do not send EOS when automatic_eos is FALSE
113
114 2019-04-01 12:22:49 +0200 Mathieu Duponchelle <mathieu@centricular.com>
115
116 * libs/gst/base/gstaggregator.c:
117 aggregator: add buffer-consumed pad signal
118 The signal will be emitted when a buffer was consumed on
119 a pad, if the newly-added "emit-signals" property has been
120 set to TRUE.
121 Handlers connected to the signal will receive a valid reference on
122 the consumed buffer, allowing for example the retrieval of metas in
123 order to forward them once an output buffer is pushed out.
124
125 2019-04-05 11:43:53 +0200 Antonio Ospite <antonio.ospite@collabora.com>
126
127 * tools/gst-inspect.c:
128 gst-inspect: fix printing the first field of a GstStructure
129 When printing a GstStructure property (e.g. the "stats" property in
130 rtpsession) the first field is printed on the same line of the type
131 description, and this is both inconsistent compared to how Enum values
132 are printed and confusing as the reader might miss the first field.
133 To fix this, add a newline before printing GstStructure fields in
134 properties.
135 NOTE: this does not change the existing inconsistent behavior of an
136 extra newline *after* a GstStructure property, but the latter is not as
137 annoying and it would take more effort to fix because GstStructure
138 fields are printed in CAPS descriptions too.
139
140 2019-04-01 18:34:07 +0200 Mathieu Duponchelle <mathieu@centricular.com>
141
142 * docs/gst/gstreamer-sections.txt:
143 * gst/gstevent.c:
144 * gst/gstevent.h:
145 * gst/gstquark.c:
146 * gst/gstquark.h:
147 * tests/check/gst/gstevent.c:
148 event: add new seek parameter, "trickmode-interval"
149 When performing a key unit trickmode seek, it may be useful to
150 specify a minimum interval between the output frames, either
151 in very high rate cases, or as a protection against streams
152 that may contain an overly large amount of key frames.
153 One use case is ONVIF Section 6.5.3:
154 <https://www.onvif.org/specs/stream/ONVIF-Streaming-Spec.pdf>
155
156 2019-03-22 17:46:03 +0100 Antonio Ospite <antonio.ospite@collabora.com>
157
158 * tests/check/gstreamer.supp:
159 tests: add the valgrind suppression file from the "common" module
160 Other gstreamer repositories have their own valgrind suppression file
161 directly in the repository.
162 Add a suppression file to the core gstreamer repository too, this makes
163 it easier to use it with gst-build which does not check out the common
164 module.
165 This is also a little step towards the removal of the common submodule.
166 NOTE: the added file is the latest version from the "common" repository
167 but it has been renamed from gst.supp to gstreamer.supp for symmetry
168 with the suppression files in the other repositories.
169
170 2019-03-23 18:31:42 +0000 Tim-Philipp Müller <tim@centricular.com>
171
172 * meson.build:
173 g-i: pass --quiet to g-ir-scanner
174 This suppresses the annoying 'g-ir-scanner: link: cc ..' output
175 that we get even if everything works just fine.
176 We still get g-ir-scanner warnings and compiler warnings if
177 we pass this option.
178
179 2019-03-23 18:17:43 +0000 Tim-Philipp Müller <tim@centricular.com>
180
181 * libs/gst/check/gstcheck.c:
182 check: suppress some g-i warnings
183 gstcheck.c:142: Warning: GstCheck: gst_check_add_log_filter: return value: Invalid non-constant return of bare structure or union; register as boxed type or (skip)
184 gstcheck.h:178: Warning: GstCheck: gst_check_run_suite: argument suite: Unresolved type: 'Suite*'
185
186 2019-03-23 17:53:54 +0000 Tim-Philipp Müller <tim@centricular.com>
187
188 * meson.build:
189 g-i: silence 'nested extern' compiler warnings when building scanner binary
190 We need a nested extern in our init section for the scanner binary
191 so we can call gst_init to make sure GStreamer types are initialised
192 (they are not all lazy init via get_type functions, but some are in
193 exported variables). There doesn't seem to be any other mechanism to
194 achieve this, so just remove that warning, it's not important at all.
195
196 2019-03-23 17:53:07 +0000 Tim-Philipp Müller <tim@centricular.com>
197
198 * libs/gst/base/gstbitwriter.c:
199 bitwriter: mark as 'skip' for gobject-introspection
200 Silences g-ir-scanner warnings. We do the same for ByteWriter.
201
202 2019-03-21 18:55:16 +1100 Matthew Waters <matthew@centricular.com>
203
204 * libs/gst/base/gstaggregator.c:
205 aggregator: don't leak gap buffer when out of segment
206
207 2019-03-21 18:47:04 +1100 Matthew Waters <matthew@centricular.com>
208
209 * libs/gst/base/gstaggregator.c:
210 aggregator: take the pad lock around queue gap event removal
211 As is done for every other queue interaction
212
213 2019-03-20 17:43:02 +1100 Matthew Waters <matthew@centricular.com>
214
215 * libs/gst/base/gstbaseparse.c:
216 baseparse: don't reset the disable-passthrough property value
217 Resetting as a result of _reset() on PAUSED->READY is unexpected.
218
219 2019-03-14 11:59:43 +0100 Stephane Cerveau <scerveau@fluendo.com>
220
221 * gst/gstelement.c:
222 gst_element_get_factory: update documentation
223 Inform about a potential NULL result.
224
225 2019-03-13 18:46:14 +0100 Stephane Cerveau <scerveau@fluendo.com>
226
227 * gst/gstelementfactory.c:
228 gst_element_factory_get_metadata: protect from null factory
229
230 2019-03-12 21:19:23 +0000 Damian Vicino <sdavtaker@gmail.com>
231
232 * README:
233 Update README
234
235 2019-03-12 20:12:37 +0000 Damian Vicino <sdavtaker@gmail.com>
236
237 * README:
238 Update README to have correct name of the license file documented (COPYING). There is no LICENSE file in the root directory, and COPYING file content is a license file.
239
240 2019-03-10 15:35:39 +0900 Seungha Yang <seungha.yang@navercorp.com>
241
242 * tests/check/meson.build:
243 tests: fdsrc: Exclude unit test on Windows
244 Since elements_fdsrc.test_num_buffers uses blocking pipe on Windows,
245 the test will never be finished. But emulating non-blocking fd without
246 win32 APIs on Windows is a little tricky.
247
248 2019-03-08 16:19:29 +0100 Santiago Carot-Nemesio <scarot@twilio.com>
249
250 * gst/gsttaskpool.c:
251 gsttaskpool: Do not block tasks while cleaning up the taskpool
252 There is a deadlock if any thread from the pool tries to push
253 a new task while other thread is waiting for the pool of threads
254 to finish. With this patch the thread will get an error when it
255 tries to add a new task while the taskpool is being cleaned up.
256
257 2019-03-06 19:46:46 +0100 Marco Trevisan (Treviño) <mail@3v1n0.net>
258
259 * gst/gsturi.c:
260 gsturi: Fix annotation on get_path to return a nullable
261 Use proper syntax or the (nullable): part will be part of the description
262
263 2019-03-06 19:34:12 +0100 Marco Trevisan (Treviño) <mail@3v1n0.net>
264
265 * gst/gstmessage.c:
266 gstmessage: Fix annotations on details
267 Details argument should be nullable, but the docstring uses a wrong syntax.
268
269 2019-03-06 09:04:54 +0000 Tim-Philipp Müller <tim@centricular.com>
270
271 * tests/check/gst/gstbuffer.c:
272 tests: fix leak in buffer test_wrapped_bytes test
273
274 2019-03-01 11:59:14 +0100 Mathieu Duponchelle <mathieu@centricular.com>
275
276 * gst/gstbuffer.c:
277 * tests/check/gst/gstmeta.c:
278 gstbuffer: store meta in add order
279 The previous implementation of add was implemented as a prepend,
280 switch to append as that seems like the expected order.
281
282 2019-03-04 09:01:07 +0000 Tim-Philipp Müller <tim@centricular.com>
283
284 * NEWS:
285 * RELEASE:
286 * configure.ac:
287 * docs/plugins/inspect/plugin-coreelements.xml:
288 * docs/plugins/inspect/plugin-coretracers.xml:
289 * meson.build:
290 Back to development
291
292 2019-02-28 16:48:57 +0100 Santiago Carot-Nemesio <sancane@gmail.com>
293
294 * gst/gsttaskpool.c:
295 taskpool: Set error in case something goes wrong in the default handlers
296
0297 === release 1.15.2 ===
1298
2299 2019-02-26 11:38:00 +0000 Tim-Philipp Müller <tim@centricular.com>
8305 * gstreamer.doap:
9306 * meson.build:
10307 Release 1.15.2
308
309 2019-02-26 13:23:47 +0000 Tim-Philipp Müller <tim@centricular.com>
310
311 * gst/parse/Makefile.am:
312 meson: dist get_flex_version.py
11313
12314 2019-02-26 11:38:00 +0000 Tim-Philipp Müller <tim@centricular.com>
13315
235235 $(top_srcdir)/common/release.mak \
236236 $(top_srcdir)/data/bash-completion/helpers/gst.in ABOUT-NLS \
237237 AUTHORS COPYING ChangeLog INSTALL NEWS README TODO compile \
238 config.guess config.rpath config.sub depcomp install-sh \
239 ltmain.sh missing
238 config.guess config.rpath config.sub install-sh ltmain.sh \
239 missing
240240 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
241241 distdir = $(PACKAGE)-$(VERSION)
242242 top_distdir = $(distdir)
+56
-42
NEWS less more
33
44
55 GStreamer 1.16 has not been released yet. It is scheduled for release in
6 January/February 2019.
6 April 2019.
77
88 1.15.x is the unstable development version that is being developed in
99 the git master branch and which will eventually result in 1.16.
1414 See https://gstreamer.freedesktop.org/releases/1.16/ for the latest
1515 version of this document.
1616
17 _Last updated: Monday 25 January 2019, 15:00 UTC (log)_
17 _Last updated: Wednesday 10 April 2019, 00:50 UTC (log)_
1818
1919
2020 Introduction
646646 To make use of this feature, we need an additional uploader that can
647647 import DMABUF FDs and also directly pass the pixel format, relying
648648 on the GPU to do the conversion.
649
650 - The OpenGL library no longer restores the OpenGL viewport. This is a
651 performance optimization to not require performing multiple
652 expensive glGet*() function calls per frame. This affects any
653 application or plugin use of the following functions and objects:
654 - glcolorconvert library object (not the element)
655 - glviewconvert library object (not the element)
656 - gst_gl_framebuffer_draw_to_texture()
657 - custom GstGLWindow implementations
649658
650659
651660 Tracing framework and debugging improvements
11631172
11641173 Contributors
11651174
1166 Aleix Conchillo Flaqué, Alessandro Decina, Alexandru Băluț, Alex Ashley,
1167 Alexey Chernov, Alicia Boya García, Amit Pandya, Andoni Morales
1168 Alastruey, Andreas Frisch, Andre McCurdy, Andy Green, Anthony Violo,
1169 Antoine Jacoutot, Antonio Ospite, Arun Raghavan, Aurelien Jarno,
1175 Aaron Boxer, Aleix Conchillo Flaqué, Alessandro Decina, Alexandru Băluț,
1176 Alex Ashley, Alexey Chernov, Alicia Boya García, Amit Pandya, Andoni
1177 Morales Alastruey, Andreas Frisch, Andre McCurdy, Andy Green, Anthony
1178 Violo, Antoine Jacoutot, Antonio Ospite, Arun Raghavan, Aurelien Jarno,
11701179 Aurélien Zanelli, ayaka, Bananahemic, Bastian Köcher, Branko Subasic,
1171 Brendan Shanks, Carlos Rafael Giani, Christoph Reiter, Corentin Noël,
1172 Daeseok Youn, Daniel Drake, Daniel Klamt, Dardo D Kleiner, David Ing,
1173 David Svensson Fors, Devarsh Thakkar, Dimitrios Katsaros, Edward Hervey,
1174 Emilio Pozuelo Monfort, Enrique Ocaña González, Ezequiel Garcia, Fabien
1175 Dessenne, Fabrizio Gennari, Florent Thiéry, Francisco Velazquez,
1176 Freyr666, Garima Gaur, Gary Bisson, George Kiagiadakis, Georg Lippitsch,
1177 Georg Ottinger, Geunsik Lim, Göran Jönsson, Guillaume Desmottes, H1Gdev,
1178 Haihao Xiang, Haihua Hu, Harshad Khedkar, Havard Graff, He Junyan,
1179 Hoonhee Lee, Hosang Lee, Hyunjun Ko, Ingo Randolf, Iñigo Huguet, James
1180 Stevenson, Jan Alexander Steffens, Jan Schmidt, Jerome Laheurte, Jimmy
1181 Ohn, Joakim Johansson, Jochen Henneberg, Johan Bjäreholt, John-Mark
1182 Bell, John Nikolaides, Jonathan Karlsson, Jonny Lamb, Jordan Petridis,
1183 Josep Torra, Joshua M. Doe, Jos van Egmond, Juan Navarro, Jun Xie,
1180 Brendan Shanks, Carlos Rafael Giani, Charlie Turner, Christoph Reiter,
1181 Corentin Noël, Daeseok Youn, Damian Vicino, Dan Kegel, Daniel Drake,
1182 Daniel Klamt, Danilo Spinella, Dardo D Kleiner, David Ing, David
1183 Svensson Fors, Devarsh Thakkar, Dimitrios Katsaros, Edward Hervey,
1184 Emilio Pozuelo Monfort, Enrique Ocaña González, Erlend Eriksen, Ezequiel
1185 Garcia, Fabien Dessenne, Fabrizio Gennari, Florent Thiéry, Francisco
1186 Velazquez, Freyr666, Garima Gaur, Gary Bisson, George Kiagiadakis, Georg
1187 Lippitsch, Georg Ottinger, Geunsik Lim, Göran Jönsson, Guillaume
1188 Desmottes, H1Gdev, Haihao Xiang, Haihua Hu, Harshad Khedkar, Havard
1189 Graff, He Junyan, Hoonhee Lee, Hosang Lee, Hyunjun Ko, Ilya Smelykh,
1190 Ingo Randolf, Iñigo Huguet, Jakub Adam, James Stevenson, Jan Alexander
1191 Steffens, Jan Schmidt, Jerome Laheurte, Jimmy Ohn, Joakim Johansson,
1192 Jochen Henneberg, Johan Bjäreholt, John-Mark Bell, John Bassett, John
1193 Nikolaides, Jonathan Karlsson, Jonny Lamb, Jordan Petridis, Josep Torra,
1194 Joshua M. Doe, Jos van Egmond, Juan Navarro, Julian Bouzas, Jun Xie,
11841195 Junyan He, Justin Kim, Kai Kang, Kim Tae Soo, Kirill Marinushkin, Kyrylo
11851196 Polezhaiev, Lars Petter Endresen, Linus Svensson, Louis-Francis
1186 Ratté-Boulianne, Luis de Bethencourt, Luz Paz, Lyon Wang, Maciej Wolny,
1187 Marc-André Lureau, Marc Leeman, Marcos Kintschner, Marian Mihailescu,
1188 Marinus Schraal, Mark Nauwelaerts, Marouen Ghodhbane, Martin Kelly,
1189 Matej Knopp, Mathieu Duponchelle, Matteo Valdina, Matthew Waters,
1190 Matthias Fend, memeka, Michael Drake, Michael Gruner, Michael Olbrich,
1191 Michael Tretter, Miguel Paris, Mike Wey, Mikhail Fludkov, Naveen
1192 Cherukuri, Nicola Murino, Nicolas Dufresne, Niels De Graef, Nirbheek
1193 Chauhan, Norbert Wesp, Ognyan Tonchev, Olivier Crête, Omar Akkila,
1194 Patricia Muscalu, Patrick Radizi, Patrik Nilsson, Paul Kocialkowski, Per
1195 Forlin, Peter Körner, Peter Seiderer, Petr Kulhavy, Philippe Normand,
1196 Philippe Renon, Philipp Zabel, Pierre Labastie, Roland Jon, Roman
1197 Sivriver, Rosen Penev, Russel Winder, Sam Gigliotti, Sean-Der, Sebastian
1198 Dröge, Seungha Yang, Sjoerd Simons, Snir Sheriber, Song Bing, Soon,
1199 Thean Siew, Sreerenj Balachandran, Stefan Ringel, Stephane Cerveau,
1200 Stian Selnes, Suhas Nayak, Takeshi Sato, Thiago Santos, Thibault
1201 Saunier, Thomas Bluemel, Tianhao Liu, Tim-Philipp Müller, Tomasz
1202 Andrzejak, Tomislav Tustonić, U. Artie Eoff, Ulf Olsson, Varunkumar
1203 Allagadapa, Víctor Guzmán, Víctor Manuel Jáquez Leal, Vincenzo Bono,
1204 Vineeth T M, Vivia Nikolaidou, Wang Fei, wangzq, Whoopie, Wim Taymans,
1205 Wind Yuan, Wonchul Lee, Xabier Rodriguez Calvar, Xavier Claessens,
1206 Haihao Xiang, Yacine Bandou, Yeongjin Jeong, Yuji Kuwabara, Zeeshan Ali,
1197 Ratté-Boulianne, Lucas Stach, Luis de Bethencourt, Luz Paz, Lyon Wang,
1198 Maciej Wolny, Marc-André Lureau, Marc Leeman, Marco Trevisan (Treviño),
1199 Marcos Kintschner, Marian Mihailescu, Marinus Schraal, Mark Nauwelaerts,
1200 Marouen Ghodhbane, Martin Kelly, Matej Knopp, Mathieu Duponchelle,
1201 Matteo Valdina, Matthew Waters, Matthias Fend, memeka, Michael Drake,
1202 Michael Gruner, Michael Olbrich, Michael Tretter, Miguel Paris, Mike
1203 Wey, Mikhail Fludkov, Naveen Cherukuri, Nicola Murino, Nicolas Dufresne,
1204 Niels De Graef, Nirbheek Chauhan, Norbert Wesp, Ognyan Tonchev, Olivier
1205 Crête, Omar Akkila, Pat DeSantis, Patricia Muscalu, Patrick Radizi,
1206 Patrik Nilsson, Paul Kocialkowski, Per Forlin, Peter Körner, Peter
1207 Seiderer, Petr Kulhavy, Philippe Normand, Philippe Renon, Philipp Zabel,
1208 Pierre Labastie, Piotr Drąg, Roland Jon, Roman Sivriver, Roman Shpuntov,
1209 Rosen Penev, Russel Winder, Sam Gigliotti, Santiago Carot-Nemesio,
1210 Sean-Der, Sebastian Dröge, Seungha Yang, Shi Yan, Sjoerd Simons, Snir
1211 Sheriber, Song Bing, Soon, Thean Siew, Sreerenj Balachandran, Stefan
1212 Ringel, Stephane Cerveau, Stian Selnes, Suhas Nayak, Takeshi Sato,
1213 Thiago Santos, Thibault Saunier, Thomas Bluemel, Tianhao Liu,
1214 Tim-Philipp Müller, Tobias Ronge, Tomasz Andrzejak, Tomislav Tustonić,
1215 U. Artie Eoff, Ulf Olsson, Varunkumar Allagadapa, Víctor Guzmán, Víctor
1216 Manuel Jáquez Leal, Vincenzo Bono, Vineeth T M, Vivia Nikolaidou, Wang
1217 Fei, wangzq, Whoopie, Wim Taymans, Wind Yuan, Wonchul Lee, Xabier
1218 Rodriguez Calvar, Xavier Claessens, Haihao Xiang, Yacine Bandou,
1219 Yeongjin Jeong, Yuji Kuwabara, Zeeshan Ali,
12071220
12081221 … and many others who have contributed bug reports, translations, sent
12091222 suggestions or helped testing.
12331246
12341247 1.16.0
12351248
1236 1.16.0 is scheduled to be released around January/February 2019.
1249 1.16.0 is scheduled to be released in April 2019.
12371250
12381251
12391252 Known Issues
12681281 ------------------------------------------------------------------------
12691282
12701283 _These release notes have been prepared by Tim-Philipp Müller with_
1271 _contributions from Sebastian Dröge._
1284 _contributions from Sebastian Dröge, Guillaume Desmottes and Matthew
1285 Waters._
12721286
12731287 _License: CC BY-SA 4.0_
233233 PLUG-IN DEPENDENCIES AND LICENSES
234234 ---------------------------------
235235
236 GStreamer is developed under the terms of the LGPL (see LICENSE file for
236 GStreamer is developed under the terms of the LGPL (see COPYING file for
237237 details). Some of our plug-ins however rely on libraries which are available
238238 under other licenses. This means that if you are distributing an application
239239 which has a non-GPL compatible license (for instance a closed-source
0 This is GStreamer core 1.15.2.
0 This is GStreamer core 1.15.90.
11
22 GStreamer 1.15 is the development branch leading up to the next major
33 stable version which will be 1.16.
00 #! /bin/sh
11 # Guess values for system-dependent variables and create Makefiles.
2 # Generated by GNU Autoconf 2.69 for GStreamer 1.15.2.
2 # Generated by GNU Autoconf 2.69 for GStreamer 1.15.90.
33 #
44 # Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer>.
55 #
590590 # Identity of this package.
591591 PACKAGE_NAME='GStreamer'
592592 PACKAGE_TARNAME='gstreamer'
593 PACKAGE_VERSION='1.15.2'
594 PACKAGE_STRING='GStreamer 1.15.2'
593 PACKAGE_VERSION='1.15.90'
594 PACKAGE_STRING='GStreamer 1.15.90'
595595 PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer'
596596 PACKAGE_URL=''
597597
16851685 # Omit some internal or obsolete options to make the list less imposing.
16861686 # This message is too long to be a string in the A/UX 3.1 sh.
16871687 cat <<_ACEOF
1688 \`configure' configures GStreamer 1.15.2 to adapt to many kinds of systems.
1688 \`configure' configures GStreamer 1.15.90 to adapt to many kinds of systems.
16891689
16901690 Usage: $0 [OPTION]... [VAR=VALUE]...
16911691
17571757
17581758 if test -n "$ac_init_help"; then
17591759 case $ac_init_help in
1760 short | recursive ) echo "Configuration of GStreamer 1.15.2:";;
1760 short | recursive ) echo "Configuration of GStreamer 1.15.90:";;
17611761 esac
17621762 cat <<\_ACEOF
17631763
19691969 test -n "$ac_init_help" && exit $ac_status
19701970 if $ac_init_version; then
19711971 cat <<\_ACEOF
1972 GStreamer configure 1.15.2
1972 GStreamer configure 1.15.90
19731973 generated by GNU Autoconf 2.69
19741974
19751975 Copyright (C) 2012 Free Software Foundation, Inc.
28282828 This file contains any messages produced by compilers while
28292829 running configure, to aid debugging if configure makes a mistake.
28302830
2831 It was created by GStreamer $as_me 1.15.2, which was
2831 It was created by GStreamer $as_me 1.15.90, which was
28322832 generated by GNU Autoconf 2.69. Invocation command line was
28332833
28342834 $ $0 $@
38063806
38073807 # Define the identity of the package.
38083808 PACKAGE='gstreamer'
3809 VERSION='1.15.2'
3809 VERSION='1.15.90'
38103810
38113811
38123812 cat >>confdefs.h <<_ACEOF
40174017
40184018
40194019
4020 PACKAGE_VERSION_MAJOR=$(echo 1.15.2 | cut -d'.' -f1)
4021 PACKAGE_VERSION_MINOR=$(echo 1.15.2 | cut -d'.' -f2)
4022 PACKAGE_VERSION_MICRO=$(echo 1.15.2 | cut -d'.' -f3)
4020 PACKAGE_VERSION_MAJOR=$(echo 1.15.90 | cut -d'.' -f1)
4021 PACKAGE_VERSION_MINOR=$(echo 1.15.90 | cut -d'.' -f2)
4022 PACKAGE_VERSION_MICRO=$(echo 1.15.90 | cut -d'.' -f3)
40234023
40244024
40254025
40304030 { $as_echo "$as_me:${as_lineno-$LINENO}: checking nano version" >&5
40314031 $as_echo_n "checking nano version... " >&6; }
40324032
4033 NANO=$(echo 1.15.2 | cut -d'.' -f4)
4033 NANO=$(echo 1.15.90 | cut -d'.' -f4)
40344034
40354035 if test x"$NANO" = x || test "x$NANO" = "x0" ; then
40364036 { $as_echo "$as_me:${as_lineno-$LINENO}: result: 0 (release)" >&5
88708870 done
88718871
88728872
8873 GST_CURRENT=1502
8873 GST_CURRENT=1590
88748874 GST_REVISION=0
8875 GST_AGE=1502
8876 GST_LIBVERSION=1502:0:1502
8875 GST_AGE=1590
8876 GST_LIBVERSION=1590:0:1590
88778877
88788878
88798879
99389938 ecc*)
99399939 lt_prog_compiler_wl='-Wl,'
99409940 lt_prog_compiler_pic='-KPIC'
9941 lt_prog_compiler_static='-static'
9942 ;;
9943 # flang / f18. f95 an alias for gfortran or flang on Debian
9944 flang* | f18* | f95*)
9945 lt_prog_compiler_wl='-Wl,'
9946 lt_prog_compiler_pic='-fPIC'
99419947 lt_prog_compiler_static='-static'
99429948 ;;
99439949 # icc used to be incompatible with GCC.
2910929115 # report actual input values of CONFIG_FILES etc. instead of their
2911029116 # values after options handling.
2911129117 ac_log="
29112 This file was extended by GStreamer $as_me 1.15.2, which was
29118 This file was extended by GStreamer $as_me 1.15.90, which was
2911329119 generated by GNU Autoconf 2.69. Invocation command line was
2911429120
2911529121 CONFIG_FILES = $CONFIG_FILES
2917529181 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
2917629182 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
2917729183 ac_cs_version="\\
29178 GStreamer config.status 1.15.2
29184 GStreamer config.status 1.15.90
2917929185 configured by $0, generated by GNU Autoconf 2.69,
2918029186 with options \\"\$ac_cs_config\\"
2918129187
33 dnl when going to/from release please set the nano (fourth number) right !
44 dnl releases only do Wall, git and prerelease does Werror too
55 dnl
6 AC_INIT([GStreamer],[1.15.2],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gstreamer])
6 AC_INIT([GStreamer],[1.15.90],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gstreamer])
77 AG_GST_INIT
88
99 dnl initialize automake (we require GNU make)
6161 dnl 1.10.9 (who knows) => 1009
6262 dnl
6363 dnl sets GST_LT_LDFLAGS
64 AS_LIBTOOL(GST, 1502, 0, 1502)
64 AS_LIBTOOL(GST, 1590, 0, 1590)
6565
6666 dnl *** autotools stuff ****
6767
12151215 GstSeekFlags
12161216 gst_event_new_seek
12171217 gst_event_parse_seek
1218 gst_event_set_seek_trickmode_interval
1219 gst_event_parse_seek_trickmode_interval
12181220
12191221 gst_event_new_navigation
12201222
37223722 <div class="refsect3">
37233723 <a name="gst-element-get-factory.returns"></a><h4>Returns</h4>
37243724 <p>the <a class="link" href="GstElementFactory.html" title="GstElementFactory"><span class="type">GstElementFactory</span></a> used for creating this
3725 element. no refcounting is needed. </p>
3726 <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
3725 element or <a href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if element has not been registered (static element). no refcounting is needed. </p>
3726 <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="NULL may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></p>
37273727 </div>
37283728 </div>
37293729 <hr>
438438 </td>
439439 <td class="function_name">
440440 <a class="link" href="GstEvent.html#gst-event-parse-seek" title="gst_event_parse_seek ()">gst_event_parse_seek</a> <span class="c_punctuation">()</span>
441 </td>
442 </tr>
443 <tr>
444 <td class="function_type">
445 <span class="returnvalue">void</span>
446 </td>
447 <td class="function_name">
448 <a class="link" href="GstEvent.html#gst-event-set-seek-trickmode-interval" title="gst_event_set_seek_trickmode_interval ()">gst_event_set_seek_trickmode_interval</a> <span class="c_punctuation">()</span>
449 </td>
450 </tr>
451 <tr>
452 <td class="function_type">
453 <span class="returnvalue">void</span>
454 </td>
455 <td class="function_name">
456 <a class="link" href="GstEvent.html#gst-event-parse-seek-trickmode-interval" title="gst_event_parse_seek_trickmode_interval ()">gst_event_parse_seek_trickmode_interval</a> <span class="c_punctuation">()</span>
441457 </td>
442458 </tr>
443459 <tr>
26572673 </div>
26582674 <hr>
26592675 <div class="refsect2">
2676 <a name="gst-event-set-seek-trickmode-interval"></a><h3>gst_event_set_seek_trickmode_interval ()</h3>
2677 <pre class="programlisting"><span class="returnvalue">void</span>
2678 gst_event_set_seek_trickmode_interval (<em class="parameter"><code><a class="link" href="GstEvent.html" title="GstEvent"><span class="type">GstEvent</span></a> *event</code></em>,
2679 <em class="parameter"><code><a class="link" href="GstClock.html#GstClockTime" title="GstClockTime"><span class="type">GstClockTime</span></a> interval</code></em>);</pre>
2680 <p>Sets a trickmode interval on a (writable) seek event. Elements
2681 that support TRICKMODE_KEY_UNITS seeks SHOULD use this as the minimal
2682 interval between each frame they may output.</p>
2683 <p class="since">Since: 1.16</p>
2684 </div>
2685 <hr>
2686 <div class="refsect2">
2687 <a name="gst-event-parse-seek-trickmode-interval"></a><h3>gst_event_parse_seek_trickmode_interval ()</h3>
2688 <pre class="programlisting"><span class="returnvalue">void</span>
2689 gst_event_parse_seek_trickmode_interval
2690 (<em class="parameter"><code><a class="link" href="GstEvent.html" title="GstEvent"><span class="type">GstEvent</span></a> *event</code></em>,
2691 <em class="parameter"><code><a class="link" href="GstClock.html#GstClockTime" title="GstClockTime"><span class="type">GstClockTime</span></a> *interval</code></em>);</pre>
2692 <p>Retrieve the trickmode interval that may have been set on a
2693 seek event with <a class="link" href="GstEvent.html#gst-event-set-seek-trickmode-interval" title="gst_event_set_seek_trickmode_interval ()"><code class="function">gst_event_set_seek_trickmode_interval()</code></a>.</p>
2694 <div class="refsect3">
2695 <a name="gst-event-parse-seek-trickmode-interval.parameters"></a><h4>Parameters</h4>
2696 <div class="informaltable"><table class="informaltable" width="100%" border="0">
2697 <colgroup>
2698 <col width="150px" class="parameters_name">
2699 <col class="parameters_description">
2700 <col width="200px" class="parameters_annotations">
2701 </colgroup>
2702 <tbody><tr>
2703 <td class="parameter_name"><p>interval</p></td>
2704 <td class="parameter_description"><p>. </p></td>
2705 <td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
2706 </tr></tbody>
2707 </table></div>
2708 </div>
2709 <p class="since">Since: 1.16</p>
2710 </div>
2711 <hr>
2712 <div class="refsect2">
26602713 <a name="gst-event-new-navigation"></a><h3>gst_event_new_navigation ()</h3>
26612714 <pre class="programlisting"><a class="link" href="GstEvent.html" title="GstEvent"><span class="returnvalue">GstEvent</span></a> *
26622715 gst_event_new_navigation (<em class="parameter"><code><a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> *structure</code></em>);</pre>
17351735 </tr>
17361736 <tr>
17371737 <td class="parameter_name"><p>details</p></td>
1738 <td class="parameter_description"><p>(allow-none): A GstStructure with details. </p></td>
1739 <td class="parameter_annotations"><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
1738 <td class="parameter_description"><p>A GstStructure with details. </p></td>
1739 <td class="parameter_annotations"><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
17401740 </tr>
17411741 </tbody>
17421742 </table></div>
19471947 </tr>
19481948 <tr>
19491949 <td class="parameter_name"><p>details</p></td>
1950 <td class="parameter_description"><p>(allow-none): A GstStructure with details. </p></td>
1951 <td class="parameter_annotations"><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
1950 <td class="parameter_description"><p>A GstStructure with details. </p></td>
1951 <td class="parameter_annotations"><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
19521952 </tr>
19531953 </tbody>
19541954 </table></div>
21142114 </tr>
21152115 <tr>
21162116 <td class="parameter_name"><p>details</p></td>
2117 <td class="parameter_description"><p>(allow-none): A GstStructure with details. </p></td>
2118 <td class="parameter_annotations"><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
2117 <td class="parameter_description"><p>A GstStructure with details. </p></td>
2118 <td class="parameter_annotations"><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
21192119 </tr>
21202120 </tbody>
21212121 </table></div>
834834 <keyword type="function" name="gst_event_parse_qos ()" link="GstEvent.html#gst-event-parse-qos"/>
835835 <keyword type="function" name="gst_event_new_seek ()" link="GstEvent.html#gst-event-new-seek"/>
836836 <keyword type="function" name="gst_event_parse_seek ()" link="GstEvent.html#gst-event-parse-seek"/>
837 <keyword type="function" name="gst_event_set_seek_trickmode_interval ()" link="GstEvent.html#gst-event-set-seek-trickmode-interval" since="1.16"/>
838 <keyword type="function" name="gst_event_parse_seek_trickmode_interval ()" link="GstEvent.html#gst-event-parse-seek-trickmode-interval" since="1.16"/>
837839 <keyword type="function" name="gst_event_new_navigation ()" link="GstEvent.html#gst-event-new-navigation"/>
838840 <keyword type="function" name="gst_event_new_latency ()" link="GstEvent.html#gst-event-new-latency"/>
839841 <keyword type="function" name="gst_event_parse_latency ()" link="GstEvent.html#gst-event-parse-latency"/>
12781278 </div>
12791279 <div class="refsect3">
12801280 <a name="gst-uri-get-path.returns"></a><h4>Returns</h4>
1281 <p>(nullable): The path from the URI. Once finished
1281 <p>The path from the URI. Once finished
12821282 with the string should be <a href="/usr/share/gtk-doc/html/glib/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a>'d. </p>
1283 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
1283 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="NULL may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></p>
12841284 </div>
12851285 <p class="since">Since: <a class="link" href="ix07.html#api-index-1.6">1.6</a></p>
12861286 </div>
142142 <hr>
143143 <div class="refsect2">
144144 <a name="GST-VERSION-MICRO:CAPS"></a><h3>GST_VERSION_MICRO</h3>
145 <pre class="programlisting">#define GST_VERSION_MICRO (2)
145 <pre class="programlisting">#define GST_VERSION_MICRO (90)
146146 </pre>
147147 <p>The micro version of GStreamer at compile time:</p>
148148 </div>
1414 <div>
1515 <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">GStreamer 1.0 Core Reference Manual</p></th></tr></table></div>
1616 <div><p class="releaseinfo">
17 for GStreamer Core 1.0 (1.15.2)
17 for GStreamer Core 1.0 (1.15.90)
1818 The latest version of this documentation can be found on-line at
1919 <a class="ulink" href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/" target="_top">http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/</a>.
2020 </p></div>
32733273 </dt>
32743274 <dd></dd>
32753275 <dt>
3276 <a class="link" href="GstEvent.html#gst-event-parse-seek-trickmode-interval" title="gst_event_parse_seek_trickmode_interval ()">gst_event_parse_seek_trickmode_interval</a>, function in <a class="link" href="GstEvent.html" title="GstEvent">GstEvent</a>
3277 </dt>
3278 <dd></dd>
3279 <dt>
32763280 <a class="link" href="GstEvent.html#gst-event-parse-segment" title="gst_event_parse_segment ()">gst_event_parse_segment</a>, function in <a class="link" href="GstEvent.html" title="GstEvent">GstEvent</a>
32773281 </dt>
32783282 <dd></dd>
33423346 <dd></dd>
33433347 <dt>
33443348 <a class="link" href="GstEvent.html#gst-event-set-running-time-offset" title="gst_event_set_running_time_offset ()">gst_event_set_running_time_offset</a>, function in <a class="link" href="GstEvent.html" title="GstEvent">GstEvent</a>
3349 </dt>
3350 <dd></dd>
3351 <dt>
3352 <a class="link" href="GstEvent.html#gst-event-set-seek-trickmode-interval" title="gst_event_set_seek_trickmode_interval ()">gst_event_set_seek_trickmode_interval</a>, function in <a class="link" href="GstEvent.html" title="GstEvent">GstEvent</a>
33453353 </dt>
33463354 <dd></dd>
33473355 <dt>
1515 <td width="100%" align="left" class="shortcuts">
1616 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
1717 <a href="#GstAggregatorPad.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
18 <a href="#GstAggregatorPad.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
18 <a href="#GstAggregatorPad.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties">  <span class="dim">|</span> 
19 <a href="#GstAggregatorPad.properties" class="shortcut">Properties</a></span><span id="nav_signals">  <span class="dim">|</span> 
20 <a href="#GstAggregatorPad.signals" class="shortcut">Signals</a></span>
1921 </td>
2022 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
2123 <td><a accesskey="u" href="gstreamer-base.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
8385 </table></div>
8486 </div>
8587 <div class="refsect1">
88 <a name="GstAggregatorPad.properties"></a><h2>Properties</h2>
89 <div class="informaltable"><table class="informaltable" border="0">
90 <colgroup>
91 <col width="150px" class="properties_type">
92 <col width="300px" class="properties_name">
93 <col width="200px" class="properties_flags">
94 </colgroup>
95 <tbody><tr>
96 <td class="property_type"><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
97 <td class="property_name"><a class="link" href="GstAggregatorPad.html#GstAggregatorPad--emit-signals" title="The “emit-signals” property">emit-signals</a></td>
98 <td class="property_flags">Read / Write</td>
99 </tr></tbody>
100 </table></div>
101 </div>
102 <div class="refsect1">
103 <a name="GstAggregatorPad.signals"></a><h2>Signals</h2>
104 <div class="informaltable"><table class="informaltable" border="0">
105 <colgroup>
106 <col width="150px" class="signals_return">
107 <col width="300px" class="signals_name">
108 <col width="200px" class="signals_flags">
109 </colgroup>
110 <tbody><tr>
111 <td class="signal_type"><span class="returnvalue">void</span></td>
112 <td class="signal_name"><a class="link" href="GstAggregatorPad.html#GstAggregatorPad-buffer-consumed" title="The “buffer-consumed” signal">buffer-consumed</a></td>
113 <td class="signal_flags"><a href="/usr/share/gtk-doc/html/gobject/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></td>
114 </tr></tbody>
115 </table></div>
116 </div>
117 <div class="refsect1">
86118 <a name="GstAggregatorPad.other"></a><h2>Types and Values</h2>
87119 <div class="informaltable"><table class="informaltable" width="100%" border="0">
88120 <colgroup>
329361 </div>
330362 </div>
331363 <div class="refsect1">
364 <a name="GstAggregatorPad.property-details"></a><h2>Property Details</h2>
365 <div class="refsect2">
366 <a name="GstAggregatorPad--emit-signals"></a><h3>The <code class="literal">“emit-signals”</code> property</h3>
367 <pre class="programlisting"> “emit-signals” <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
368 <p>Enables the emission of signals such as <a class="link" href="GstAggregatorPad.html#GstAggregatorPad-buffer-consumed" title="The “buffer-consumed” signal"><span class="type">“buffer-consumed”</span></a></p>
369 <p>Flags: Read / Write</p>
370 <p>Default value: FALSE</p>
371 <p class="since">Since: 1.16</p>
372 </div>
373 </div>
374 <div class="refsect1">
375 <a name="GstAggregatorPad.signal-details"></a><h2>Signal Details</h2>
376 <div class="refsect2">
377 <a name="GstAggregatorPad-buffer-consumed"></a><h3>The <code class="literal">“buffer-consumed”</code> signal</h3>
378 <pre class="programlisting"><span class="returnvalue">void</span>
379 user_function (<a class="link" href="GstAggregatorPad.html" title="GstAggregatorPad"><span class="type">GstAggregatorPad</span></a> *gstaggregatorpad,
380 <a href="../html/GstBuffer.html#GstBuffer-struct"><span class="type">GstBuffer</span></a> *arg1,
381 <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre>
382 <p>Signals that a buffer was consumed. As aggregator pads store buffers
383 in an internal queue, there is no direct match between input and output
384 buffers at any given time. This signal can be useful to forward metas
385 such as <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideometa.html#GstVideoTimeCodeMeta"><span class="type">GstVideoTimeCodeMeta</span></a> or <span class="type">GstVideoCaptionMeta</span> at the right time.</p>
386 <div class="refsect3">
387 <a name="GstAggregatorPad-buffer-consumed.parameters"></a><h4>Parameters</h4>
388 <div class="informaltable"><table class="informaltable" width="100%" border="0">
389 <colgroup>
390 <col width="150px" class="parameters_name">
391 <col class="parameters_description">
392 <col width="200px" class="parameters_annotations">
393 </colgroup>
394 <tbody><tr>
395 <td class="parameter_name"><p>user_data</p></td>
396 <td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
397 <td class="parameter_annotations"> </td>
398 </tr></tbody>
399 </table></div>
400 </div>
401 <p>Flags: <a href="/usr/share/gtk-doc/html/gobject/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></p>
402 <p class="since">Since: 1.16</p>
403 </div>
404 </div>
405 <div class="refsect1">
332406 <a name="GstAggregatorPad.see-also"></a><h2>See Also</h2>
333407 <p>gstcollectpads for historical reasons.</p>
334408 </div>
828828 after the total size is returned. By default this is <a href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> but sources
829829 that can't return an authoritative size and only know that they're EOS
830830 when trying to read more should set this to <a href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
831 <p>When <em class="parameter"><code>src</code></em>
832 operates in <a href="../html/gstreamer-GstFormat.html#GST-FORMAT-TIME:CAPS"><code class="literal">GST_FORMAT_TIME</code></a>, <a class="link" href="GstBaseSrc.html" title="GstBaseSrc"><span class="type">GstBaseSrc</span></a> will send an EOS
833 when a buffer outside of the currently configured segment is pushed if
834 <em class="parameter"><code>automatic_eos</code></em>
835 is <a href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>. Since 1.16, if <em class="parameter"><code>automatic_eos</code></em>
836 is <a href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> an
837 EOS will be pushed only when the <span class="type">GstBaseSrc.create</span> implementation
838 returns <a href="../html/GstPad.html#GST-FLOW-EOS:CAPS"><code class="literal">GST_FLOW_EOS</code></a>.</p>
831839 <div class="refsect3">
832840 <a name="gst-base-src-set-automatic-eos.parameters"></a><h4>Parameters</h4>
833841 <div class="informaltable"><table class="informaltable" width="100%" border="0">
8282 <keyword type="function" name="gst_aggregator_pad_has_buffer ()" link="GstAggregatorPad.html#gst-aggregator-pad-has-buffer" since="1.14.1"/>
8383 <keyword type="struct" name="struct GstAggregatorPad" link="GstAggregatorPad.html#GstAggregatorPad-struct"/>
8484 <keyword type="struct" name="struct GstAggregatorPadClass" link="GstAggregatorPad.html#GstAggregatorPadClass"/>
85 <keyword type="property" name="The “emit-signals” property" link="GstAggregatorPad.html#GstAggregatorPad--emit-signals"/>
86 <keyword type="signal" name="The “buffer-consumed” signal" link="GstAggregatorPad.html#GstAggregatorPad-buffer-consumed"/>
8587 <keyword type="function" name="gst_base_parse_merge_tags ()" link="GstBaseParse.html#gst-base-parse-merge-tags" since="1.6"/>
8688 <keyword type="function" name="gst_base_parse_set_duration ()" link="GstBaseParse.html#gst-base-parse-set-duration"/>
8789 <keyword type="function" name="gst_base_parse_set_average_bitrate ()" link="GstBaseParse.html#gst-base-parse-set-average-bitrate"/>
329329 gst_bit_writer_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
330330 <p>Creates a new, empty <a class="link" href="gstreamer-libs-GstBitWriter.html#GstBitWriter" title="struct GstBitWriter"><span class="type">GstBitWriter</span></a> instance.</p>
331331 <p>Free-function: gst_bit_writer_free</p>
332 <p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
332333 <div class="refsect3">
333334 <a name="gst-bit-writer-new.returns"></a><h4>Returns</h4>
334335 <p>a new, empty <a class="link" href="gstreamer-libs-GstByteWriter.html#GstByteWriter" title="GstByteWriter"><span class="type">GstByteWriter</span></a> instance. </p>
341342 <pre class="programlisting"><a class="link" href="gstreamer-libs-GstBitWriter.html#GstBitWriter" title="struct GstBitWriter"><span class="returnvalue">GstBitWriter</span></a> *
342343 gst_bit_writer_new_with_size (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint32"><span class="type">guint32</span></a> size</code></em>,
343344 <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> fixed</code></em>);</pre>
345 <p>Creates a <a class="link" href="gstreamer-libs-GstBitWriter.html#GstBitWriter" title="struct GstBitWriter"><span class="type">GstBitWriter</span></a> instance with the given initial data size.</p>
346 <p>Free-function: gst_bit_writer_free</p>
347 <p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
348 <div class="refsect3">
349 <a name="gst-bit-writer-new-with-size.parameters"></a><h4>Parameters</h4>
350 <div class="informaltable"><table class="informaltable" width="100%" border="0">
351 <colgroup>
352 <col width="150px" class="parameters_name">
353 <col class="parameters_description">
354 <col width="200px" class="parameters_annotations">
355 </colgroup>
356 <tbody>
357 <tr>
358 <td class="parameter_name"><p>size</p></td>
359 <td class="parameter_description"><p>Initial size of data in bytes</p></td>
360 <td class="parameter_annotations"> </td>
361 </tr>
362 <tr>
363 <td class="parameter_name"><p>fixed</p></td>
364 <td class="parameter_description"><p>If <a href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> the data can't be reallocated</p></td>
365 <td class="parameter_annotations"> </td>
366 </tr>
367 </tbody>
368 </table></div>
369 </div>
370 <div class="refsect3">
371 <a name="gst-bit-writer-new-with-size.returns"></a><h4>Returns</h4>
372 <p>a new <a class="link" href="gstreamer-libs-GstBitWriter.html#GstBitWriter" title="struct GstBitWriter"><span class="type">GstBitWriter</span></a> instance. </p>
373 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
374 </div>
344375 </div>
345376 <hr>
346377 <div class="refsect2">
355386 bits from the
356387 <a class="link" href="gstreamer-libs-GstBitWriter.html#GstBitWriter" title="struct GstBitWriter"><span class="type">GstBitWriter</span></a> from the beginnig.</p>
357388 <p>Free-function: gst_bit_writer_free</p>
389 <p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
358390 <div class="refsect3">
359391 <a name="gst-bit-writer-new-with-data.parameters"></a><h4>Parameters</h4>
360392 <div class="informaltable"><table class="informaltable" width="100%" border="0">
481513 gst_bit_writer_init (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstBitWriter.html#GstBitWriter" title="struct GstBitWriter"><span class="type">GstBitWriter</span></a> *bitwriter</code></em>);</pre>
482514 <p>Initializes <em class="parameter"><code>bitwriter</code></em>
483515 to an empty instance.</p>
516 <p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
484517 <div class="refsect3">
485518 <a name="gst-bit-writer-init.parameters"></a><h4>Parameters</h4>
486519 <div class="informaltable"><table class="informaltable" width="100%" border="0">
507540 <p>Initializes a <a class="link" href="gstreamer-libs-GstBitWriter.html#GstBitWriter" title="struct GstBitWriter"><span class="type">GstBitWriter</span></a> instance and allocates the given data
508541 <em class="parameter"><code>size</code></em>
509542 .</p>
543 <p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
510544 <div class="refsect3">
511545 <a name="gst-bit-writer-init-with-size.parameters"></a><h4>Parameters</h4>
512546 <div class="informaltable"><table class="informaltable" width="100%" border="0">
550584 is <a href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> it is possible to read <em class="parameter"><code>size</code></em>
551585 bits from the
552586 <a class="link" href="gstreamer-libs-GstBitWriter.html#GstBitWriter" title="struct GstBitWriter"><span class="type">GstBitWriter</span></a> from the beginning.</p>
587 <p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
553588 <div class="refsect3">
554589 <a name="gst-bit-writer-init-with-data.parameters"></a><h4>Parameters</h4>
555590 <div class="informaltable"><table class="informaltable" width="100%" border="0">
16491649 gst_check_run_suite (<em class="parameter"><code><span class="type">Suite</span> *suite</code></em>,
16501650 <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *name</code></em>,
16511651 <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *fname</code></em>);</pre>
1652 <p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
1653 <div class="refsect3">
1654 <a name="gst-check-run-suite.parameters"></a><h4>Parameters</h4>
1655 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1656 <colgroup>
1657 <col width="150px" class="parameters_name">
1658 <col class="parameters_description">
1659 <col width="200px" class="parameters_annotations">
1660 </colgroup>
1661 <tbody>
1662 <tr>
1663 <td class="parameter_name"><p>suite</p></td>
1664 <td class="parameter_description"><p>the check test suite</p></td>
1665 <td class="parameter_annotations"> </td>
1666 </tr>
1667 <tr>
1668 <td class="parameter_name"><p>name</p></td>
1669 <td class="parameter_description"><p>name</p></td>
1670 <td class="parameter_annotations"> </td>
1671 </tr>
1672 <tr>
1673 <td class="parameter_name"><p>fname</p></td>
1674 <td class="parameter_description"><p>file name</p></td>
1675 <td class="parameter_annotations"> </td>
1676 </tr>
1677 </tbody>
1678 </table></div>
1679 </div>
1680 <div class="refsect3">
1681 <a name="gst-check-run-suite.returns"></a><h4>Returns</h4>
1682 <p> number of failed tests</p>
1683 </div>
16521684 </div>
16531685 <hr>
16541686 <div class="refsect2">
20382070 is NULL the
20392071 matching logs will be silently discarded by GstCheck.</p>
20402072 <p>MT safe.</p>
2073 <p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
20412074 <div class="refsect3">
20422075 <a name="gst-check-add-log-filter.parameters"></a><h4>Parameters</h4>
20432076 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1414 <div>
1515 <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">GStreamer 1.0 Library Reference Manual</p></th></tr></table></div>
1616 <div><p class="releaseinfo">
17 for GStreamer Library 1.0 (1.15.2)
17 for GStreamer Library 1.0 (1.15.90)
1818 The latest version of this documentation can be found on-line at
1919 <a class="ulink" href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/" target="_top">http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/</a>.
2020 </p></div>
201201 </dt>
202202 <dd></dd>
203203 <dt>
204 <a class="link" href="GstAggregatorPad.html#GstAggregatorPad-buffer-consumed" title="The “buffer-consumed” signal">GstAggregatorPad::buffer-consumed</a>, object signal in <a class="link" href="GstAggregatorPad.html" title="GstAggregatorPad">GstAggregatorPad</a>
205 </dt>
206 <dd></dd>
207 <dt>
208 <a class="link" href="GstAggregatorPad.html#GstAggregatorPad--emit-signals" title="The “emit-signals” property">GstAggregatorPad:emit-signals</a>, object property in <a class="link" href="GstAggregatorPad.html" title="GstAggregatorPad">GstAggregatorPad</a>
209 </dt>
210 <dd></dd>
211 <dt>
204212 <a class="link" href="GstAggregatorPad.html#GstAggregatorPadClass" title="struct GstAggregatorPadClass">GstAggregatorPadClass</a>, struct in <a class="link" href="GstAggregatorPad.html" title="GstAggregatorPad">GstAggregatorPad</a>
205213 </dt>
206214 <dd></dd>
4343 <tbody>
4444 <tr>
4545 <td class="property_type">
46 <a href="../html/GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> *</td>
46 <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> *</td>
4747 <td class="property_name"><a class="link" href="gstreamer-plugins-capsfilter.html#GstCapsFilter--caps" title="The “caps” property">caps</a></td>
4848 <td class="property_flags">Read / Write</td>
4949 </tr>
7878 <a name="gstreamer-plugins-capsfilter.object-hierarchy"></a><h2>Object Hierarchy</h2>
7979 <pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
8080 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
81 <span class="lineart">╰──</span> <a href="../html/GstObject.html#GstObject-struct">GstObject</a>
82 <span class="lineart">╰──</span> <a href="../html/GstElement.html#GstElement-struct">GstElement</a>
83 <span class="lineart">╰──</span> <a href="../html/GstBaseTransform.html#GstBaseTransform-struct">GstBaseTransform</a>
81 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstObject.html#GstObject-struct">GstObject</a>
82 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstElement.html#GstElement-struct">GstElement</a>
83 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0/GstBaseTransform.html#GstBaseTransform-struct">GstBaseTransform</a>
8484 <span class="lineart">╰──</span> GstCapsFilter
8585 </pre>
8686 </div>
243243 <a name="gstreamer-plugins-capsfilter.property-details"></a><h2>Property Details</h2>
244244 <div class="refsect2">
245245 <a name="GstCapsFilter--caps"></a><h3>The <code class="literal">“caps”</code> property</h3>
246 <pre class="programlisting"> “caps” <a href="../html/GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> *</pre>
246 <pre class="programlisting"> “caps” <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> *</pre>
247247 <p>Restrict the possible allowed capabilities (NULL means ANY). Setting this property takes a reference to the supplied GstCaps object.</p>
248248 <p>Flags: Read / Write</p>
249249 </div>
4343 <tbody>
4444 <tr>
4545 <td class="property_type">
46 <a href="../html/GstPad.html#GstPad-struct"><span class="type">GstPad</span></a> *</td>
46 <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstPad.html#GstPad-struct"><span class="type">GstPad</span></a> *</td>
4747 <td class="property_name"><a class="link" href="gstreamer-plugins-concat.html#GstConcat--active-pad" title="The “active-pad” property">active-pad</a></td>
4848 <td class="property_flags">Read</td>
4949 </tr>
7272 <a name="gstreamer-plugins-concat.object-hierarchy"></a><h2>Object Hierarchy</h2>
7373 <pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
7474 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
75 <span class="lineart">╰──</span> <a href="../html/GstObject.html#GstObject-struct">GstObject</a>
76 <span class="lineart">╰──</span> <a href="../html/GstElement.html#GstElement-struct">GstElement</a>
75 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstObject.html#GstObject-struct">GstObject</a>
76 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstElement.html#GstElement-struct">GstElement</a>
7777 <span class="lineart">╰──</span> GstConcat
7878 </pre>
7979 </div>
8181 <a name="gstreamer-plugins-concat.description"></a><h2>Description</h2>
8282 <p>Concatenates streams together to one continuous stream.</p>
8383 <p>All streams but the current one are blocked until the current one
84 finished with <a href="../html/GstEvent.html#GST-EVENT-EOS:CAPS"><code class="literal">GST_EVENT_EOS</code></a>. Then the next stream is enabled, while
85 keeping the running time continuous for <a href="../html/gstreamer-GstFormat.html#GST-FORMAT-TIME:CAPS"><code class="literal">GST_FORMAT_TIME</code></a> segments or
86 keeping the segment continuous for <a href="../html/gstreamer-GstFormat.html#GST-FORMAT-BYTES:CAPS"><code class="literal">GST_FORMAT_BYTES</code></a> segments.</p>
84 finished with <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstEvent.html#GST-EVENT-EOS:CAPS"><code class="literal">GST_EVENT_EOS</code></a>. Then the next stream is enabled, while
85 keeping the running time continuous for <a href="/usr/share/gtk-doc/html/gstreamer-1.0/gstreamer-GstFormat.html#GST-FORMAT-TIME:CAPS"><code class="literal">GST_FORMAT_TIME</code></a> segments or
86 keeping the segment continuous for <a href="/usr/share/gtk-doc/html/gstreamer-1.0/gstreamer-GstFormat.html#GST-FORMAT-BYTES:CAPS"><code class="literal">GST_FORMAT_BYTES</code></a> segments.</p>
8787 <p>Streams are switched in the order in which the sinkpads were requested.</p>
8888 <p>By default, the stream segment's base values are adjusted to ensure
8989 the segment transitions between streams are continuous. In some cases,
202202 <a name="gstreamer-plugins-concat.property-details"></a><h2>Property Details</h2>
203203 <div class="refsect2">
204204 <a name="GstConcat--active-pad"></a><h3>The <code class="literal">“active-pad”</code> property</h3>
205 <pre class="programlisting"> “active-pad” <a href="../html/GstPad.html#GstPad-struct"><span class="type">GstPad</span></a> *</pre>
205 <pre class="programlisting"> “active-pad” <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstPad.html#GstPad-struct"><span class="type">GstPad</span></a> *</pre>
206206 <p>Currently active src pad.</p>
207207 <p>Flags: Read</p>
208208 </div>
6666 <a name="gstreamer-plugins-dataurisrc.object-hierarchy"></a><h2>Object Hierarchy</h2>
6767 <pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
6868 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
69 <span class="lineart">╰──</span> <a href="../html/GstObject.html#GstObject-struct">GstObject</a>
70 <span class="lineart">╰──</span> <a href="../html/GstElement.html#GstElement-struct">GstElement</a>
71 <span class="lineart">╰──</span> <a href="../html/GstBaseSrc.html#GstBaseSrc-struct">GstBaseSrc</a>
69 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstObject.html#GstObject-struct">GstObject</a>
70 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstElement.html#GstElement-struct">GstElement</a>
71 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0/GstBaseSrc.html#GstBaseSrc-struct">GstBaseSrc</a>
7272 <span class="lineart">╰──</span> GstDataURISrc
7373 </pre>
7474 </div>
7676 <a name="gstreamer-plugins-dataurisrc.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
7777 <p>
7878 GstDataURISrc implements
79 <a href="../html/gstreamer-GstUriHandler.html#GstURIHandler-struct">GstURIHandler</a>.</p>
79 <a href="/usr/share/gtk-doc/html/gstreamer-1.0/gstreamer-GstUriHandler.html#GstURIHandler-struct">GstURIHandler</a>.</p>
8080 </div>
8181 <div class="refsect1">
8282 <a name="gstreamer-plugins-dataurisrc.description"></a><h2>Description</h2>
9898 <a name="gstreamer-plugins-downloadbuffer.object-hierarchy"></a><h2>Object Hierarchy</h2>
9999 <pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
100100 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
101 <span class="lineart">╰──</span> <a href="../html/GstObject.html#GstObject-struct">GstObject</a>
102 <span class="lineart">╰──</span> <a href="../html/GstElement.html#GstElement-struct">GstElement</a>
101 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstObject.html#GstObject-struct">GstObject</a>
102 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstElement.html#GstElement-struct">GstElement</a>
103103 <span class="lineart">╰──</span> GstDownloadBuffer
104104 </pre>
105105 </div>
136136 <a name="gstreamer-plugins-fakesink.object-hierarchy"></a><h2>Object Hierarchy</h2>
137137 <pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
138138 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
139 <span class="lineart">╰──</span> <a href="../html/GstObject.html#GstObject-struct">GstObject</a>
140 <span class="lineart">╰──</span> <a href="../html/GstElement.html#GstElement-struct">GstElement</a>
141 <span class="lineart">╰──</span> <a href="../html/GstBaseSink.html#GstBaseSink-struct">GstBaseSink</a>
139 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstObject.html#GstObject-struct">GstObject</a>
140 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstElement.html#GstElement-struct">GstElement</a>
141 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0/GstBaseSink.html#GstBaseSink-struct">GstBaseSink</a>
142142 <span class="lineart">╰──</span> GstFakeSink
143143 </pre>
144144 </div>
376376 <a name="GstFakeSink-handoff"></a><h3>The <code class="literal">“handoff”</code> signal</h3>
377377 <pre class="programlisting"><span class="returnvalue">void</span>
378378 user_function (<a class="link" href="gstreamer-plugins-fakesink.html#GstFakeSink"><span class="type">GstFakeSink</span></a> *fakesink,
379 <a href="../html/GstBuffer.html#GstBuffer-struct"><span class="type">GstBuffer</span></a> *buffer,
380 <a href="../html/GstPad.html#GstPad-struct"><span class="type">GstPad</span></a> *pad,
379 <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstBuffer.html#GstBuffer-struct"><span class="type">GstBuffer</span></a> *buffer,
380 <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstPad.html#GstPad-struct"><span class="type">GstPad</span></a> *pad,
381381 <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre>
382382 <p>This signal gets emitted before unreffing the buffer.</p>
383383 <div class="refsect3">
419419 <a name="GstFakeSink-preroll-handoff"></a><h3>The <code class="literal">“preroll-handoff”</code> signal</h3>
420420 <pre class="programlisting"><span class="returnvalue">void</span>
421421 user_function (<a class="link" href="gstreamer-plugins-fakesink.html#GstFakeSink"><span class="type">GstFakeSink</span></a> *fakesink,
422 <a href="../html/GstBuffer.html#GstBuffer-struct"><span class="type">GstBuffer</span></a> *buffer,
423 <a href="../html/GstPad.html#GstPad-struct"><span class="type">GstPad</span></a> *pad,
422 <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstBuffer.html#GstBuffer-struct"><span class="type">GstBuffer</span></a> *buffer,
423 <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstPad.html#GstPad-struct"><span class="type">GstPad</span></a> *pad,
424424 <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre>
425425 <p>This signal gets emitted before unreffing the buffer.</p>
426426 <div class="refsect3">
7373 <td class="property_flags">Read / Write</td>
7474 </tr>
7575 <tr>
76 <td class="property_type"><a href="../html/gstreamer-GstFormat.html#GstFormat"><span class="type">GstFormat</span></a></td>
76 <td class="property_type"><a href="/usr/share/gtk-doc/html/gstreamer-1.0/gstreamer-GstFormat.html#GstFormat"><span class="type">GstFormat</span></a></td>
7777 <td class="property_name"><a class="link" href="gstreamer-plugins-fakesrc.html#GstFakeSrc--format" title="The “format” property">format</a></td>
7878 <td class="property_flags">Read / Write</td>
7979 </tr>
182182 <a name="gstreamer-plugins-fakesrc.object-hierarchy"></a><h2>Object Hierarchy</h2>
183183 <pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
184184 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
185 <span class="lineart">╰──</span> <a href="../html/GstObject.html#GstObject-struct">GstObject</a>
186 <span class="lineart">╰──</span> <a href="../html/GstElement.html#GstElement-struct">GstElement</a>
187 <span class="lineart">╰──</span> <a href="../html/GstBaseSrc.html#GstBaseSrc-struct">GstBaseSrc</a>
185 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstObject.html#GstObject-struct">GstObject</a>
186 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstElement.html#GstElement-struct">GstElement</a>
187 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0/GstBaseSrc.html#GstBaseSrc-struct">GstBaseSrc</a>
188188 <span class="lineart">╰──</span> GstFakeSrc
189189 </pre>
190190 </div>
526526 <hr>
527527 <div class="refsect2">
528528 <a name="GstFakeSrc--format"></a><h3>The <code class="literal">“format”</code> property</h3>
529 <pre class="programlisting"> “format” <a href="../html/gstreamer-GstFormat.html#GstFormat"><span class="type">GstFormat</span></a></pre>
529 <pre class="programlisting"> “format” <a href="/usr/share/gtk-doc/html/gstreamer-1.0/gstreamer-GstFormat.html#GstFormat"><span class="type">GstFormat</span></a></pre>
530530 <p>Set the format of the newsegment events to produce.</p>
531531 <p>Flags: Read / Write</p>
532532 <p>Default value: GST_FORMAT_BYTES</p>
621621 <a name="GstFakeSrc-handoff"></a><h3>The <code class="literal">“handoff”</code> signal</h3>
622622 <pre class="programlisting"><span class="returnvalue">void</span>
623623 user_function (<a class="link" href="gstreamer-plugins-fakesrc.html#GstFakeSrc"><span class="type">GstFakeSrc</span></a> *fakesrc,
624 <a href="../html/GstBuffer.html#GstBuffer-struct"><span class="type">GstBuffer</span></a> *buffer,
625 <a href="../html/GstPad.html#GstPad-struct"><span class="type">GstPad</span></a> *pad,
624 <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstBuffer.html#GstBuffer-struct"><span class="type">GstBuffer</span></a> *buffer,
625 <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstPad.html#GstPad-struct"><span class="type">GstPad</span></a> *pad,
626626 <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre>
627627 <p>This signal gets emitted before sending the buffer.</p>
628628 <div class="refsect3">
6565 <a name="gstreamer-plugins-fdsink.object-hierarchy"></a><h2>Object Hierarchy</h2>
6666 <pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
6767 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
68 <span class="lineart">╰──</span> <a href="../html/GstObject.html#GstObject-struct">GstObject</a>
69 <span class="lineart">╰──</span> <a href="../html/GstElement.html#GstElement-struct">GstElement</a>
70 <span class="lineart">╰──</span> <a href="../html/GstBaseSink.html#GstBaseSink-struct">GstBaseSink</a>
68 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstObject.html#GstObject-struct">GstObject</a>
69 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstElement.html#GstElement-struct">GstElement</a>
70 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0/GstBaseSink.html#GstBaseSink-struct">GstBaseSink</a>
7171 <span class="lineart">╰──</span> GstFdSink
7272 </pre>
7373 </div>
7575 <a name="gstreamer-plugins-fdsink.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
7676 <p>
7777 GstFdSink implements
78 <a href="../html/gstreamer-GstUriHandler.html#GstURIHandler-struct">GstURIHandler</a>.</p>
78 <a href="/usr/share/gtk-doc/html/gstreamer-1.0/gstreamer-GstUriHandler.html#GstURIHandler-struct">GstURIHandler</a>.</p>
7979 </div>
8080 <div class="refsect1">
8181 <a name="gstreamer-plugins-fdsink.description"></a><h2>Description</h2>
8282 <p>Write data to a unix file descriptor.</p>
8383 <p>This element will synchronize on the clock before writing the data on the
8484 socket. For file descriptors where this does not make sense (files, ...) the
85 <a href="../html/GstBaseSink.html#GstBaseSink--sync"><span class="type">“sync”</span></a> property can be used to disable synchronisation.</p>
85 <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0/GstBaseSink.html#GstBaseSink--sync"><span class="type">“sync”</span></a> property can be used to disable synchronisation.</p>
8686 <div class="refsynopsisdiv">
8787 <h2>Synopsis</h2>
8888 <div class="refsect2">
7272 <a name="gstreamer-plugins-fdsrc.object-hierarchy"></a><h2>Object Hierarchy</h2>
7373 <pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
7474 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
75 <span class="lineart">╰──</span> <a href="../html/GstObject.html#GstObject-struct">GstObject</a>
76 <span class="lineart">╰──</span> <a href="../html/GstElement.html#GstElement-struct">GstElement</a>
77 <span class="lineart">╰──</span> <a href="../html/GstBaseSrc.html#GstBaseSrc-struct">GstBaseSrc</a>
78 <span class="lineart">╰──</span> <a href="../html/GstPushSrc.html#GstPushSrc-struct">GstPushSrc</a>
75 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstObject.html#GstObject-struct">GstObject</a>
76 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstElement.html#GstElement-struct">GstElement</a>
77 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0/GstBaseSrc.html#GstBaseSrc-struct">GstBaseSrc</a>
78 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0/GstPushSrc.html#GstPushSrc-struct">GstPushSrc</a>
7979 <span class="lineart">╰──</span> GstFdSrc
8080 </pre>
8181 </div>
8383 <a name="gstreamer-plugins-fdsrc.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
8484 <p>
8585 GstFdSrc implements
86 <a href="../html/gstreamer-GstUriHandler.html#GstURIHandler-struct">GstURIHandler</a>.</p>
86 <a href="/usr/share/gtk-doc/html/gstreamer-1.0/gstreamer-GstUriHandler.html#GstURIHandler-struct">GstURIHandler</a>.</p>
8787 </div>
8888 <div class="refsect1">
8989 <a name="gstreamer-plugins-fdsrc.description"></a><h2>Description</h2>
8989 <a name="gstreamer-plugins-filesink.object-hierarchy"></a><h2>Object Hierarchy</h2>
9090 <pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
9191 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
92 <span class="lineart">╰──</span> <a href="../html/GstObject.html#GstObject-struct">GstObject</a>
93 <span class="lineart">╰──</span> <a href="../html/GstElement.html#GstElement-struct">GstElement</a>
94 <span class="lineart">╰──</span> <a href="../html/GstBaseSink.html#GstBaseSink-struct">GstBaseSink</a>
92 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstObject.html#GstObject-struct">GstObject</a>
93 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstElement.html#GstElement-struct">GstElement</a>
94 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0/GstBaseSink.html#GstBaseSink-struct">GstBaseSink</a>
9595 <span class="lineart">╰──</span> GstFileSink
9696 </pre>
9797 </div>
9999 <a name="gstreamer-plugins-filesink.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
100100 <p>
101101 GstFileSink implements
102 <a href="../html/gstreamer-GstUriHandler.html#GstURIHandler-struct">GstURIHandler</a>.</p>
102 <a href="/usr/share/gtk-doc/html/gstreamer-1.0/gstreamer-GstUriHandler.html#GstURIHandler-struct">GstURIHandler</a>.</p>
103103 </div>
104104 <div class="refsect1">
105105 <a name="gstreamer-plugins-filesink.description"></a><h2>Description</h2>
6666 <a name="gstreamer-plugins-filesrc.object-hierarchy"></a><h2>Object Hierarchy</h2>
6767 <pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
6868 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
69 <span class="lineart">╰──</span> <a href="../html/GstObject.html#GstObject-struct">GstObject</a>
70 <span class="lineart">╰──</span> <a href="../html/GstElement.html#GstElement-struct">GstElement</a>
71 <span class="lineart">╰──</span> <a href="../html/GstBaseSrc.html#GstBaseSrc-struct">GstBaseSrc</a>
69 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstObject.html#GstObject-struct">GstObject</a>
70 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstElement.html#GstElement-struct">GstElement</a>
71 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0/GstBaseSrc.html#GstBaseSrc-struct">GstBaseSrc</a>
7272 <span class="lineart">╰──</span> GstFileSrc
7373 </pre>
7474 </div>
7676 <a name="gstreamer-plugins-filesrc.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
7777 <p>
7878 GstFileSrc implements
79 <a href="../html/gstreamer-GstUriHandler.html#GstURIHandler-struct">GstURIHandler</a>.</p>
79 <a href="/usr/share/gtk-doc/html/gstreamer-1.0/gstreamer-GstUriHandler.html#GstURIHandler-struct">GstURIHandler</a>.</p>
8080 </div>
8181 <div class="refsect1">
8282 <a name="gstreamer-plugins-filesrc.description"></a><h2>Description</h2>
6464 <a name="gstreamer-plugins-funnel.object-hierarchy"></a><h2>Object Hierarchy</h2>
6565 <pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
6666 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
67 <span class="lineart">╰──</span> <a href="../html/GstObject.html#GstObject-struct">GstObject</a>
68 <span class="lineart">╰──</span> <a href="../html/GstElement.html#GstElement-struct">GstElement</a>
67 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstObject.html#GstObject-struct">GstObject</a>
68 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstElement.html#GstElement-struct">GstElement</a>
6969 <span class="lineart">╰──</span> GstFunnel
7070 </pre>
7171 </div>
7373 <a name="gstreamer-plugins-funnel.description"></a><h2>Description</h2>
7474 <p>Takes packets from various input sinks into one output source.</p>
7575 <p>funnel always outputs a single, open ended segment from
76 0 with in <a href="../html/gstreamer-GstFormat.html#GST-FORMAT-TIME:CAPS"><code class="literal">GST_FORMAT_TIME</code></a> and outputs the buffers of the
76 0 with in <a href="/usr/share/gtk-doc/html/gstreamer-1.0/gstreamer-GstFormat.html#GST-FORMAT-TIME:CAPS"><code class="literal">GST_FORMAT_TIME</code></a> and outputs the buffers of the
7777 different sinkpads with timestamps that are set to the
7878 running time for that stream. funnel does not synchronize
7979 the different input streams but simply forwards all buffers
104104 <td class="property_flags">Read / Write</td>
105105 </tr>
106106 <tr>
107 <td class="property_type"><a href="../html/GstBuffer.html#GstBufferFlags"><span class="type">GstBufferFlags</span></a></td>
107 <td class="property_type"><a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstBuffer.html#GstBufferFlags"><span class="type">GstBufferFlags</span></a></td>
108108 <td class="property_name"><a class="link" href="gstreamer-plugins-identity.html#GstIdentity--drop-buffer-flags" title="The “drop-buffer-flags” property">drop-buffer-flags</a></td>
109109 <td class="property_flags">Read / Write</td>
110110 </tr>
158158 <a name="gstreamer-plugins-identity.object-hierarchy"></a><h2>Object Hierarchy</h2>
159159 <pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
160160 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
161 <span class="lineart">╰──</span> <a href="../html/GstObject.html#GstObject-struct">GstObject</a>
162 <span class="lineart">╰──</span> <a href="../html/GstElement.html#GstElement-struct">GstElement</a>
163 <span class="lineart">╰──</span> <a href="../html/GstBaseTransform.html#GstBaseTransform-struct">GstBaseTransform</a>
161 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstObject.html#GstObject-struct">GstObject</a>
162 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstElement.html#GstElement-struct">GstElement</a>
163 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0/GstBaseTransform.html#GstBaseTransform-struct">GstBaseTransform</a>
164164 <span class="lineart">╰──</span> GstIdentity
165165 </pre>
166166 </div>
365365 <hr>
366366 <div class="refsect2">
367367 <a name="GstIdentity--drop-buffer-flags"></a><h3>The <code class="literal">“drop-buffer-flags”</code> property</h3>
368 <pre class="programlisting"> “drop-buffer-flags” <a href="../html/GstBuffer.html#GstBufferFlags"><span class="type">GstBufferFlags</span></a></pre>
368 <pre class="programlisting"> “drop-buffer-flags” <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstBuffer.html#GstBufferFlags"><span class="type">GstBufferFlags</span></a></pre>
369369 <p>Drop buffers with the given flags.</p>
370370 <p>Flags: Read / Write</p>
371371 <p class="since">Since: 1.8</p>
403403 <a name="GstIdentity-handoff"></a><h3>The <code class="literal">“handoff”</code> signal</h3>
404404 <pre class="programlisting"><span class="returnvalue">void</span>
405405 user_function (<a class="link" href="gstreamer-plugins-identity.html#GstIdentity"><span class="type">GstIdentity</span></a> *identity,
406 <a href="../html/GstBuffer.html#GstBuffer-struct"><span class="type">GstBuffer</span></a> *buffer,
406 <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstBuffer.html#GstBuffer-struct"><span class="type">GstBuffer</span></a> *buffer,
407407 <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre>
408408 <p>This signal gets emitted before passing the buffer downstream.</p>
409409 <div class="refsect3">
4343 <tbody>
4444 <tr>
4545 <td class="property_type">
46 <a href="../html/GstPad.html#GstPad-struct"><span class="type">GstPad</span></a> *</td>
46 <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstPad.html#GstPad-struct"><span class="type">GstPad</span></a> *</td>
4747 <td class="property_name"><a class="link" href="gstreamer-plugins-input-selector.html#GstInputSelector--active-pad" title="The “active-pad” property">active-pad</a></td>
4848 <td class="property_flags">Read / Write</td>
4949 </tr>
9393 <a name="gstreamer-plugins-input-selector.object-hierarchy"></a><h2>Object Hierarchy</h2>
9494 <pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
9595 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
96 <span class="lineart">╰──</span> <a href="../html/GstObject.html#GstObject-struct">GstObject</a>
97 <span class="lineart">╰──</span> <a href="../html/GstElement.html#GstElement-struct">GstElement</a>
96 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstObject.html#GstObject-struct">GstObject</a>
97 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstElement.html#GstElement-struct">GstElement</a>
9898 <span class="lineart">╰──</span> GstInputSelector
9999 </pre>
100100 </div>
105105 properties, which users may find useful, namely:</p>
106106 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
107107 <li class="listitem"><p>"running-time": Running time of stream on pad (<a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint64"><span class="type">gint64</span></a>)</p></li>
108 <li class="listitem"><p>"tags": The currently active tags on the pad (<a href="../html/GstTagList.html#GstTagList-struct"><span class="type">GstTagList</span></a>, boxed type)</p></li>
108 <li class="listitem"><p>"tags": The currently active tags on the pad (<a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstTagList.html#GstTagList-struct"><span class="type">GstTagList</span></a>, boxed type)</p></li>
109109 <li class="listitem"><p>"active": If the pad is currently active (<a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>)</p></li>
110 <li class="listitem"><p>"always-ok" : Make an inactive pads return <a href="../html/GstPad.html#GST-FLOW-OK:CAPS"><span class="type">GST_FLOW_OK</span></a> instead of
111 <a href="../html/GstPad.html#GST-FLOW-NOT-LINKED:CAPS"><span class="type">GST_FLOW_NOT_LINKED</span></a></p></li>
110 <li class="listitem"><p>"always-ok" : Make an inactive pads return <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstPad.html#GST-FLOW-OK:CAPS"><span class="type">GST_FLOW_OK</span></a> instead of
111 <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstPad.html#GST-FLOW-NOT-LINKED:CAPS"><span class="type">GST_FLOW_NOT_LINKED</span></a></p></li>
112112 </ul></div>
113113 <div class="refsynopsisdiv">
114114 <h2>Synopsis</h2>
237237 <a name="gstreamer-plugins-input-selector.property-details"></a><h2>Property Details</h2>
238238 <div class="refsect2">
239239 <a name="GstInputSelector--active-pad"></a><h3>The <code class="literal">“active-pad”</code> property</h3>
240 <pre class="programlisting"> “active-pad” <a href="../html/GstPad.html#GstPad-struct"><span class="type">GstPad</span></a> *</pre>
240 <pre class="programlisting"> “active-pad” <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstPad.html#GstPad-struct"><span class="type">GstPad</span></a> *</pre>
241241 <p>The currently active sink pad.</p>
242242 <p>Flags: Read / Write</p>
243243 </div>
4848 <a name="gstreamer-plugins-latencytracer.object-hierarchy"></a><h2>Object Hierarchy</h2>
4949 <pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
5050 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
51 <span class="lineart">╰──</span> <a href="../html/GstObject.html#GstObject-struct">GstObject</a>
52 <span class="lineart">╰──</span> <a href="../html/GstTracer.html#GstTracer-struct">GstTracer</a>
51 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstObject.html#GstObject-struct">GstObject</a>
52 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstTracer.html#GstTracer-struct">GstTracer</a>
5353 <span class="lineart">╰──</span> GstLatencyTracer
5454 </pre>
5555 </div>
5656 <div class="refsect1">
5757 <a name="gstreamer-plugins-latencytracer.description"></a><h2>Description</h2>
5858 <p>A tracing module that determines src-to-sink latencies by injecting custom
59 events at sources and process them at sinks.</p>
59 events at sources and process them at sinks. This elements supports tracing
60 the entire pipeline latency and per element latency. By default, only
61 pipeline latency is traced. The 'flags' parameter can be used to enabled
62 element tracing.</p>
63 <p><code class="literal">
64 GST_TRACERS="latency(flags=pipeline+element)" GST_DEBUG=GST_TRACER:7 ./...
65 </code></p>
6066 </div>
6167 <div class="refsect1">
6268 <a name="gstreamer-plugins-latencytracer.functions_details"></a><h2>Functions</h2>
4848 <a name="gstreamer-plugins-leakstracer.object-hierarchy"></a><h2>Object Hierarchy</h2>
4949 <pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
5050 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
51 <span class="lineart">╰──</span> <a href="../html/GstObject.html#GstObject-struct">GstObject</a>
52 <span class="lineart">╰──</span> <a href="../html/GstTracer.html#GstTracer-struct">GstTracer</a>
51 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstObject.html#GstObject-struct">GstObject</a>
52 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstTracer.html#GstTracer-struct">GstTracer</a>
5353 <span class="lineart">╰──</span> GstLeaksTracer
5454 </pre>
5555 </div>
4848 <a name="gstreamer-plugins-logtracer.object-hierarchy"></a><h2>Object Hierarchy</h2>
4949 <pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
5050 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
51 <span class="lineart">╰──</span> <a href="../html/GstObject.html#GstObject-struct">GstObject</a>
52 <span class="lineart">╰──</span> <a href="../html/GstTracer.html#GstTracer-struct">GstTracer</a>
51 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstObject.html#GstObject-struct">GstObject</a>
52 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstTracer.html#GstTracer-struct">GstTracer</a>
5353 <span class="lineart">╰──</span> GstLogTracer
5454 </pre>
5555 </div>
159159 <a name="gstreamer-plugins-multiqueue.object-hierarchy"></a><h2>Object Hierarchy</h2>
160160 <pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
161161 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
162 <span class="lineart">╰──</span> <a href="../html/GstObject.html#GstObject-struct">GstObject</a>
163 <span class="lineart">╰──</span> <a href="../html/GstElement.html#GstElement-struct">GstElement</a>
162 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstObject.html#GstObject-struct">GstObject</a>
163 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstElement.html#GstElement-struct">GstElement</a>
164164 <span class="lineart">╰──</span> GstMultiQueue
165165 </pre>
166166 </div>
171171 <p>1) Multiple streamhandling</p>
172172 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>The element handles queueing data on more than one stream at once. To
173173 achieve such a feature it has request sink pads (sink<code class="literal">u</code>) and
174 'sometimes' src pads (src<code class="literal">u</code>). When requesting a given sinkpad with <a href="../html/GstElement.html#gst-element-request-pad"><code class="function">gst_element_request_pad()</code></a>,
174 'sometimes' src pads (src<code class="literal">u</code>). When requesting a given sinkpad with <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstElement.html#gst-element-request-pad"><code class="function">gst_element_request_pad()</code></a>,
175175 the associated srcpad for that stream will be created.
176176 Example: requesting sink1 will generate src1.</p></li></ul></div>
177177 <p>2) Non-starvation on multiple stream</p>
4343 <tbody>
4444 <tr>
4545 <td class="property_type">
46 <a href="../html/GstPad.html#GstPad-struct"><span class="type">GstPad</span></a> *</td>
46 <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstPad.html#GstPad-struct"><span class="type">GstPad</span></a> *</td>
4747 <td class="property_name"><a class="link" href="gstreamer-plugins-output-selector.html#GstOutputSelector--active-pad" title="The “active-pad” property">active-pad</a></td>
4848 <td class="property_flags">Read / Write</td>
4949 </tr>
8383 <a name="gstreamer-plugins-output-selector.object-hierarchy"></a><h2>Object Hierarchy</h2>
8484 <pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
8585 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
86 <span class="lineart">╰──</span> <a href="../html/GstObject.html#GstObject-struct">GstObject</a>
87 <span class="lineart">╰──</span> <a href="../html/GstElement.html#GstElement-struct">GstElement</a>
86 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstObject.html#GstObject-struct">GstObject</a>
87 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstElement.html#GstElement-struct">GstElement</a>
8888 <span class="lineart">╰──</span> GstOutputSelector
8989 </pre>
9090 </div>
229229 <a name="gstreamer-plugins-output-selector.property-details"></a><h2>Property Details</h2>
230230 <div class="refsect2">
231231 <a name="GstOutputSelector--active-pad"></a><h3>The <code class="literal">“active-pad”</code> property</h3>
232 <pre class="programlisting"> “active-pad” <a href="../html/GstPad.html#GstPad-struct"><span class="type">GstPad</span></a> *</pre>
232 <pre class="programlisting"> “active-pad” <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstPad.html#GstPad-struct"><span class="type">GstPad</span></a> *</pre>
233233 <p>Currently active src pad.</p>
234234 <p>Flags: Read / Write</p>
235235 </div>
4141 </tr>
4242 <tr>
4343 <td><p><span class="term">version</span></p></td>
44 <td>1.15.2</td>
44 <td>1.15.90</td>
4545 </tr>
4646 <tr>
4747 <td><p><span class="term">run-time license</span></p></td>
4949 </tr>
5050 <tr>
5151 <td><p><span class="term">package</span></p></td>
52 <td>GStreamer source release</td>
52 <td>GStreamer git</td>
5353 </tr>
5454 <tr>
5555 <td><p><span class="term">origin</span></p></td>
4040 </tr>
4141 <tr>
4242 <td><p><span class="term">version</span></p></td>
43 <td>1.15.2</td>
43 <td>1.15.90</td>
4444 </tr>
4545 <tr>
4646 <td><p><span class="term">run-time license</span></p></td>
4848 </tr>
4949 <tr>
5050 <td><p><span class="term">package</span></p></td>
51 <td>GStreamer source release</td>
51 <td>GStreamer git</td>
5252 </tr>
5353 <tr>
5454 <td><p><span class="term">origin</span></p></td>
160160 <a name="gstreamer-plugins-queue.object-hierarchy"></a><h2>Object Hierarchy</h2>
161161 <pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
162162 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
163 <span class="lineart">╰──</span> <a href="../html/GstObject.html#GstObject-struct">GstObject</a>
164 <span class="lineart">╰──</span> <a href="../html/GstElement.html#GstElement-struct">GstElement</a>
163 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstObject.html#GstObject-struct">GstObject</a>
164 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstElement.html#GstElement-struct">GstElement</a>
165165 <span class="lineart">╰──</span> GstQueue
166166 </pre>
167167 </div>
179179 <a name="gstreamer-plugins-queue2.object-hierarchy"></a><h2>Object Hierarchy</h2>
180180 <pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
181181 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
182 <span class="lineart">╰──</span> <a href="../html/GstObject.html#GstObject-struct">GstObject</a>
183 <span class="lineart">╰──</span> <a href="../html/GstElement.html#GstElement-struct">GstElement</a>
182 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstObject.html#GstObject-struct">GstObject</a>
183 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstElement.html#GstElement-struct">GstElement</a>
184184 <span class="lineart">╰──</span> GstQueue2
185185 </pre>
186186 </div>
4848 <a name="gstreamer-plugins-rusagetracer.object-hierarchy"></a><h2>Object Hierarchy</h2>
4949 <pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
5050 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
51 <span class="lineart">╰──</span> <a href="../html/GstObject.html#GstObject-struct">GstObject</a>
52 <span class="lineart">╰──</span> <a href="../html/GstTracer.html#GstTracer-struct">GstTracer</a>
51 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstObject.html#GstObject-struct">GstObject</a>
52 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstTracer.html#GstTracer-struct">GstTracer</a>
5353 <span class="lineart">╰──</span> GstRUsageTracer
5454 </pre>
5555 </div>
4848 <a name="gstreamer-plugins-statstracer.object-hierarchy"></a><h2>Object Hierarchy</h2>
4949 <pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
5050 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
51 <span class="lineart">╰──</span> <a href="../html/GstObject.html#GstObject-struct">GstObject</a>
52 <span class="lineart">╰──</span> <a href="../html/GstTracer.html#GstTracer-struct">GstTracer</a>
51 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstObject.html#GstObject-struct">GstObject</a>
52 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstTracer.html#GstTracer-struct">GstTracer</a>
5353 <span class="lineart">╰──</span> GstStatsTracer
5454 </pre>
5555 </div>
4242 </colgroup>
4343 <tbody><tr>
4444 <td class="property_type">
45 <a href="../html/GstPad.html#GstPad-struct"><span class="type">GstPad</span></a> *</td>
45 <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstPad.html#GstPad-struct"><span class="type">GstPad</span></a> *</td>
4646 <td class="property_name"><a class="link" href="gstreamer-plugins-streamiddemux.html#GstStreamidDemux--active-pad" title="The “active-pad” property">active-pad</a></td>
4747 <td class="property_flags">Read</td>
4848 </tr></tbody>
6565 <a name="gstreamer-plugins-streamiddemux.object-hierarchy"></a><h2>Object Hierarchy</h2>
6666 <pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
6767 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
68 <span class="lineart">╰──</span> <a href="../html/GstObject.html#GstObject-struct">GstObject</a>
69 <span class="lineart">╰──</span> <a href="../html/GstElement.html#GstElement-struct">GstElement</a>
68 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstObject.html#GstObject-struct">GstObject</a>
69 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstElement.html#GstElement-struct">GstElement</a>
7070 <span class="lineart">╰──</span> GstStreamidDemux
7171 </pre>
7272 </div>
8181 <p><a class="link" href="gstreamer-plugins-streamiddemux.html#GstStreamidDemux--active-pad" title="The “active-pad” property"><span class="type">“active-pad”</span></a> provides information about which output pad
8282 is activated at the moment.</p>
8383 <p><em class="parameter"><code>see_also</code></em>
84 : <a class="link" href="gstreamer-plugins-funnel.html#GstFunnel"><span class="type">GstFunnel</span></a>, <a href="../html/GstEvent.html#gst-event-new-stream-start"><span class="type">gst_event_new_stream_start</span></a></p>
84 : <a class="link" href="gstreamer-plugins-funnel.html#GstFunnel"><span class="type">GstFunnel</span></a>, <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstEvent.html#gst-event-new-stream-start"><span class="type">gst_event_new_stream_start</span></a></p>
8585 <div class="refsynopsisdiv">
8686 <h2>Synopsis</h2>
8787 <div class="refsect2">
179179 <a name="gstreamer-plugins-streamiddemux.property-details"></a><h2>Property Details</h2>
180180 <div class="refsect2">
181181 <a name="GstStreamidDemux--active-pad"></a><h3>The <code class="literal">“active-pad”</code> property</h3>
182 <pre class="programlisting"> “active-pad” <a href="../html/GstPad.html#GstPad-struct"><span class="type">GstPad</span></a> *</pre>
182 <pre class="programlisting"> “active-pad” <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstPad.html#GstPad-struct"><span class="type">GstPad</span></a> *</pre>
183183 <p>The currently active src pad.</p>
184184 <p>Flags: Read</p>
185185 </div>
4343 <tbody>
4444 <tr>
4545 <td class="property_type">
46 <a href="../html/GstPad.html#GstPad-struct"><span class="type">GstPad</span></a> *</td>
46 <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstPad.html#GstPad-struct"><span class="type">GstPad</span></a> *</td>
4747 <td class="property_name"><a class="link" href="gstreamer-plugins-tee.html#GstTee--alloc-pad" title="The “alloc-pad” property">alloc-pad</a></td>
4848 <td class="property_flags">Read / Write</td>
4949 </tr>
104104 <a name="gstreamer-plugins-tee.object-hierarchy"></a><h2>Object Hierarchy</h2>
105105 <pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
106106 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
107 <span class="lineart">╰──</span> <a href="../html/GstObject.html#GstObject-struct">GstObject</a>
108 <span class="lineart">╰──</span> <a href="../html/GstElement.html#GstElement-struct">GstElement</a>
107 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstObject.html#GstObject-struct">GstObject</a>
108 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstElement.html#GstElement-struct">GstElement</a>
109109 <span class="lineart">╰──</span> GstTee
110110 </pre>
111111 </div>
266266 <a name="gstreamer-plugins-tee.property-details"></a><h2>Property Details</h2>
267267 <div class="refsect2">
268268 <a name="GstTee--alloc-pad"></a><h3>The <code class="literal">“alloc-pad”</code> property</h3>
269 <pre class="programlisting"> “alloc-pad” <a href="../html/GstPad.html#GstPad-struct"><span class="type">GstPad</span></a> *</pre>
269 <pre class="programlisting"> “alloc-pad” <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstPad.html#GstPad-struct"><span class="type">GstPad</span></a> *</pre>
270270 <p>The pad ALLOCATION queries will be proxied to (DEPRECATED, has no effect).</p>
271271 <p>Flags: Read / Write</p>
272272 </div>
4444 <tbody>
4545 <tr>
4646 <td class="property_type">
47 <a href="../html/GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> *</td>
47 <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> *</td>
4848 <td class="property_name"><a class="link" href="gstreamer-plugins-typefind.html#GstTypeFindElement--caps" title="The “caps” property">caps</a></td>
4949 <td class="property_flags">Read</td>
5050 </tr>
5151 <tr>
5252 <td class="property_type">
53 <a href="../html/GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> *</td>
53 <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> *</td>
5454 <td class="property_name"><a class="link" href="gstreamer-plugins-typefind.html#GstTypeFindElement--force-caps" title="The “force-caps” property">force-caps</a></td>
5555 <td class="property_flags">Read / Write</td>
5656 </tr>
9494 <a name="gstreamer-plugins-typefind.object-hierarchy"></a><h2>Object Hierarchy</h2>
9595 <pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
9696 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
97 <span class="lineart">╰──</span> <a href="../html/GstObject.html#GstObject-struct">GstObject</a>
98 <span class="lineart">╰──</span> <a href="../html/GstElement.html#GstElement-struct">GstElement</a>
97 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstObject.html#GstObject-struct">GstObject</a>
98 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstElement.html#GstElement-struct">GstElement</a>
9999 <span class="lineart">╰──</span> GstTypeFindElement
100100 </pre>
101101 </div>
108108 emitted, either from the streaming thread or the application thread
109109 (the latter may happen when typefinding is done pull-based from the
110110 state change function).</p>
111 <p>Plugins can register custom typefinders by using <a href="../html/GstTypeFindFactory.html#GstTypeFindFactory-struct"><span class="type">GstTypeFindFactory</span></a>.</p>
111 <p>Plugins can register custom typefinders by using <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstTypeFindFactory.html#GstTypeFindFactory-struct"><span class="type">GstTypeFindFactory</span></a>.</p>
112112 <div class="refsynopsisdiv">
113113 <h2>Synopsis</h2>
114114 <div class="refsect2">
206206 <a name="gstreamer-plugins-typefind.property-details"></a><h2>Property Details</h2>
207207 <div class="refsect2">
208208 <a name="GstTypeFindElement--caps"></a><h3>The <code class="literal">“caps”</code> property</h3>
209 <pre class="programlisting"> “caps” <a href="../html/GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> *</pre>
209 <pre class="programlisting"> “caps” <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> *</pre>
210210 <p>detected capabilities in stream.</p>
211211 <p>Flags: Read</p>
212212 </div>
213213 <hr>
214214 <div class="refsect2">
215215 <a name="GstTypeFindElement--force-caps"></a><h3>The <code class="literal">“force-caps”</code> property</h3>
216 <pre class="programlisting"> “force-caps” <a href="../html/GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> *</pre>
216 <pre class="programlisting"> “force-caps” <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> *</pre>
217217 <p>force caps without doing a typefind.</p>
218218 <p>Flags: Read / Write</p>
219219 </div>
234234 <pre class="programlisting"><span class="returnvalue">void</span>
235235 user_function (<a class="link" href="gstreamer-plugins-typefind.html#GstTypeFindElement"><span class="type">GstTypeFindElement</span></a> *typefind,
236236 <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint"><span class="type">guint</span></a> probability,
237 <a href="../html/GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> *caps,
237 <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> *caps,
238238 <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre>
239239 <p>This signal gets emitted when the type and its probability has
240240 been found.</p>
6464 <a name="gstreamer-plugins-valve.object-hierarchy"></a><h2>Object Hierarchy</h2>
6565 <pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
6666 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
67 <span class="lineart">╰──</span> <a href="../html/GstObject.html#GstObject-struct">GstObject</a>
68 <span class="lineart">╰──</span> <a href="../html/GstElement.html#GstElement-struct">GstElement</a>
67 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstObject.html#GstObject-struct">GstObject</a>
68 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstElement.html#GstElement-struct">GstElement</a>
6969 <span class="lineart">╰──</span> GstValve
7070 </pre>
7171 </div>
7474 <p>The valve is a simple element that drops buffers when the <a class="link" href="gstreamer-plugins-valve.html#GstValve--drop" title="The “drop” property"><span class="type">“drop”</span></a>
7575 property is set to <a href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> and lets then through otherwise.</p>
7676 <p>Any downstream error received while the <a class="link" href="gstreamer-plugins-valve.html#GstValve--drop" title="The “drop” property"><span class="type">“drop”</span></a> property is <a href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>
77 is ignored. So downstream element can be set to <a href="../html/GstElement.html#GST-STATE-NULL:CAPS"><code class="literal">GST_STATE_NULL</code></a> and removed,
77 is ignored. So downstream element can be set to <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstElement.html#GST-STATE-NULL:CAPS"><code class="literal">GST_STATE_NULL</code></a> and removed,
7878 without using pad blocking.</p>
7979 <div class="refsynopsisdiv">
8080 <h2>Synopsis</h2>
1414 <div>
1515 <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">GStreamer Core Plugins 1.0 Plugins Reference Manual</p></th></tr></table></div>
1616 <div><p class="releaseinfo">
17 for GStreamer Core Plugins 1.0 (1.15.2)
17 for GStreamer Core Plugins 1.0 (1.15.90)
1818 The latest version of this documentation can be found on-line at
1919 <a class="ulink" href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-plugins/html/" target="_top">http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-plugins/html/</a>.
2020 </p></div>
22 <description>GStreamer core elements</description>
33 <filename>../../plugins/elements/.libs/libgstcoreelements.so</filename>
44 <basename>libgstcoreelements.so</basename>
5 <version>1.15.2</version>
5 <version>1.15.90</version>
66 <license>LGPL</license>
77 <source>gstreamer</source>
88 <package>GStreamer source release</package>
22 <description>GStreamer core tracers</description>
33 <filename>../../plugins/tracers/.libs/libgstcoretracers.so</filename>
44 <basename>libgstcoretracers.so</basename>
5 <version>1.15.2</version>
5 <version>1.15.90</version>
66 <license>LGPL</license>
77 <source>gstreamer</source>
88 <package>GStreamer source release</package>
144144 #define GST_BUFFER_MEM_PTR(b,i) (((GstBufferImpl *)(b))->mem[i])
145145 #define GST_BUFFER_BUFMEM(b) (((GstBufferImpl *)(b))->bufmem)
146146 #define GST_BUFFER_META(b) (((GstBufferImpl *)(b))->item)
147 #define GST_BUFFER_TAIL_META(b) (((GstBufferImpl *)(b))->tail_item)
147148
148149 typedef struct
149150 {
161162 /* FIXME, make metadata allocation more efficient by using part of the
162163 * GstBufferImpl */
163164 GstMetaItem *item;
165 GstMetaItem *tail_item;
164166 } GstBufferImpl;
165167
166168 static gint64 meta_seq; /* 0 *//* ATOMIC */
22832285 goto init_failed;
22842286
22852287 item->seq_num = gst_atomic_int64_inc (&meta_seq);
2286
2287 /* and add to the list of metadata */
2288 item->next = GST_BUFFER_META (buffer);
2289 GST_BUFFER_META (buffer) = item;
2288 item->next = NULL;
2289
2290 if (!GST_BUFFER_META (buffer)) {
2291 GST_BUFFER_META (buffer) = item;
2292 GST_BUFFER_TAIL_META (buffer) = item;
2293 } else {
2294 GST_BUFFER_TAIL_META (buffer)->next = item;
2295 GST_BUFFER_TAIL_META (buffer) = item;
2296 }
22902297
22912298 return result;
22922299
23262333 const GstMetaInfo *info = meta->info;
23272334
23282335 /* remove from list */
2336 if (GST_BUFFER_TAIL_META (buffer) == walk) {
2337 if (prev != walk)
2338 GST_BUFFER_TAIL_META (buffer) = prev;
2339 else
2340 GST_BUFFER_TAIL_META (buffer) = NULL;
2341 }
2342
23292343 if (GST_BUFFER_META (buffer) == walk)
23302344 GST_BUFFER_META (buffer) = walk->next;
23312345 else
23322346 prev->next = walk->next;
2347
23332348 /* call free_func if any */
23342349 if (info->free_func)
23352350 info->free_func (m, buffer);
24642479 g_return_val_if_fail (gst_buffer_is_writable (buffer), FALSE);
24652480 g_return_val_if_fail (!GST_META_FLAG_IS_SET (m, GST_META_FLAG_LOCKED),
24662481 FALSE);
2482
2483 if (GST_BUFFER_TAIL_META (buffer) == walk) {
2484 if (prev != walk)
2485 GST_BUFFER_TAIL_META (buffer) = prev;
2486 else
2487 GST_BUFFER_TAIL_META (buffer) = NULL;
2488 }
24672489
24682490 /* remove from list */
24692491 if (GST_BUFFER_META (buffer) == walk)
171171 GstControlBinding *self = GST_CONTROL_BINDING (object);
172172
173173 /* we did not took a reference */
174 g_object_remove_weak_pointer ((GObject *) self->__object,
175 (gpointer *) & self->__object);
174 if (self->__object)
175 g_object_remove_weak_pointer ((GObject *) self->__object,
176 (gpointer *) & self->__object);
176177 self->__object = NULL;
177178 g_weak_ref_clear (&self->ABI.abi.priv->object);
178179
32253225 *
32263226 * Retrieves the factory that was used to create this element.
32273227 *
3228 * Returns: (transfer none): the #GstElementFactory used for creating this
3229 * element. no refcounting is needed.
3228 * Returns: (transfer none) (nullable): the #GstElementFactory used for creating this
3229 * element or %NULL if element has not been registered (static element). no refcounting is needed.
32303230 */
32313231 GstElementFactory *
32323232 gst_element_get_factory (GstElement * element)
508508 gst_element_factory_get_metadata (GstElementFactory * factory,
509509 const gchar * key)
510510 {
511 g_return_val_if_fail (GST_IS_ELEMENT_FACTORY (factory), NULL);
512
511513 return gst_structure_get_string ((GstStructure *) factory->metadata, key);
512514 }
513515
13051305 GST_QUARK (CUR_TYPE), GST_TYPE_SEEK_TYPE, start_type,
13061306 GST_QUARK (CUR), G_TYPE_INT64, start,
13071307 GST_QUARK (STOP_TYPE), GST_TYPE_SEEK_TYPE, stop_type,
1308 GST_QUARK (STOP), G_TYPE_INT64, stop, NULL);
1308 GST_QUARK (STOP), G_TYPE_INT64, stop,
1309 GST_QUARK (TRICKMODE_INTERVAL), GST_TYPE_CLOCK_TIME, 0, NULL);
13091310 event = gst_event_new_custom (GST_EVENT_SEEK, structure);
13101311
13111312 return event;
13661367 }
13671368
13681369 /**
1370 * gst_event_set_seek_trickmode_interval:
1371 *
1372 * Sets a trickmode interval on a (writable) seek event. Elements
1373 * that support TRICKMODE_KEY_UNITS seeks SHOULD use this as the minimal
1374 * interval between each frame they may output.
1375 *
1376 * Since: 1.16
1377 */
1378 void
1379 gst_event_set_seek_trickmode_interval (GstEvent * event, GstClockTime interval)
1380 {
1381 g_return_if_fail (event != NULL);
1382 g_return_if_fail (GST_EVENT_TYPE (event) == GST_EVENT_SEEK);
1383 g_return_if_fail (gst_event_is_writable (event));
1384 g_return_if_fail (GST_CLOCK_TIME_IS_VALID (interval));
1385
1386 gst_structure_id_set (GST_EVENT_STRUCTURE (event),
1387 GST_QUARK (TRICKMODE_INTERVAL), GST_TYPE_CLOCK_TIME, interval, NULL);
1388 }
1389
1390 /**
1391 * gst_event_parse_seek_trickmode_interval:
1392 * @interval: (out)
1393 *
1394 * Retrieve the trickmode interval that may have been set on a
1395 * seek event with gst_event_set_seek_trickmode_interval().
1396 *
1397 * Since: 1.16
1398 */
1399 void
1400 gst_event_parse_seek_trickmode_interval (GstEvent * event,
1401 GstClockTime * interval)
1402 {
1403 g_return_if_fail (event != NULL);
1404 g_return_if_fail (interval != NULL);
1405 g_return_if_fail (GST_EVENT_TYPE (event) == GST_EVENT_SEEK);
1406
1407 gst_structure_id_get (GST_EVENT_STRUCTURE (event),
1408 GST_QUARK (TRICKMODE_INTERVAL), GST_TYPE_CLOCK_TIME, interval, NULL);
1409 }
1410
1411 /**
13691412 * gst_event_new_navigation:
13701413 * @structure: (transfer full): description of the event. The event will take
13711414 * ownership of the structure.
675675 GstSeekType *start_type, gint64 *start,
676676 GstSeekType *stop_type, gint64 *stop);
677677
678 GST_API
679 void gst_event_set_seek_trickmode_interval (GstEvent *event, GstClockTime interval);
680
681 GST_API
682 void gst_event_parse_seek_trickmode_interval (GstEvent *event, GstClockTime *interval);
683
678684 /* navigation event */
679685
680686 GST_API
402402 * @src: (transfer none) (allow-none): The object originating the message.
403403 * @error: (transfer none): The GError for this message.
404404 * @debug: A debugging string.
405 * @details: (transfer full): (allow-none): A GstStructure with details
405 * @details: (transfer full) (allow-none): A GstStructure with details
406406 *
407407 * Create a new error message. The message will copy @error and
408408 * @debug. This message is posted by element when a fatal event
496496 * @src: (transfer none) (allow-none): The object originating the message.
497497 * @error: (transfer none): The GError for this message.
498498 * @debug: A debugging string.
499 * @details: (transfer full): (allow-none): A GstStructure with details
499 * @details: (transfer full) (allow-none): A GstStructure with details
500500 *
501501 * Create a new warning message. The message will make copies of @error and
502502 * @debug.
586586 * @src: (transfer none) (allow-none): The object originating the message.
587587 * @error: (transfer none): The GError for this message.
588588 * @debug: A debugging string.
589 * @details: (transfer full): (allow-none): A GstStructure with details
589 * @details: (transfer full) (allow-none): A GstStructure with details
590590 *
591591 * Create a new info message. The message will make copies of @error and
592592 * @debug.
7575 "GstMessageStreamsSelected", "GstMessageRedirect", "redirect-entry-locations",
7676 "redirect-entry-taglists", "redirect-entry-structures",
7777 "GstEventStreamGroupDone", "GstQueryBitrate", "nominal-bitrate",
78 "GstMessageDeviceChanged", "device-changed"
78 "GstMessageDeviceChanged", "device-changed", "trickmode-interval",
7979 };
8080
8181 GQuark _priv_gst_quark_table[GST_QUARK_MAX];
220220 GST_QUARK_NOMINAL_BITRATE = 190,
221221 GST_QUARK_MESSAGE_DEVICE_CHANGED = 191,
222222 GST_QUARK_DEVICE_CHANGED = 192,
223 GST_QUARK_MAX = 193
223 GST_QUARK_TRICKMODE_INTERVAL = 193,
224 GST_QUARK_MAX = 194
224225 } GstQuarkId;
225226
226227 extern GQuark _priv_gst_quark_table[GST_QUARK_MAX];
3434
3535 #include "gstinfo.h"
3636 #include "gsttaskpool.h"
37 #include "gsterror.h"
3738
3839 GST_DEBUG_CATEGORY_STATIC (taskpool_debug);
3940 #define GST_CAT_DEFAULT (taskpool_debug)
7273 default_prepare (GstTaskPool * pool, GError ** error)
7374 {
7475 GST_OBJECT_LOCK (pool);
75 pool->pool = g_thread_pool_new ((GFunc) default_func, pool, -1, FALSE, NULL);
76 pool->pool = g_thread_pool_new ((GFunc) default_func, pool, -1, FALSE, error);
7677 GST_OBJECT_UNLOCK (pool);
7778 }
7879
7980 static void
8081 default_cleanup (GstTaskPool * pool)
8182 {
83 GThreadPool *pool_;
84
8285 GST_OBJECT_LOCK (pool);
83 if (pool->pool) {
86 pool_ = pool->pool;
87 pool->pool = NULL;
88 GST_OBJECT_UNLOCK (pool);
89
90 if (pool_) {
8491 /* Shut down all the threads, we still process the ones scheduled
8592 * because the unref happens in the thread function.
8693 * Also wait for currently running ones to finish. */
87 g_thread_pool_free (pool->pool, FALSE, TRUE);
88 pool->pool = NULL;
94 g_thread_pool_free (pool_, FALSE, TRUE);
8995 }
90 GST_OBJECT_UNLOCK (pool);
9196 }
9297
9398 static gpointer
105110 g_thread_pool_push (pool->pool, tdata, error);
106111 else {
107112 g_slice_free (TaskData, tdata);
113 g_set_error_literal (error, GST_CORE_ERROR, GST_CORE_ERROR_FAILED,
114 "No thread pool");
115
108116 }
109117 GST_OBJECT_UNLOCK (pool);
110118
22462246 *
22472247 * Extract the path string from the URI object.
22482248 *
2249 * Returns: (transfer full): (nullable): The path from the URI. Once finished
2250 * with the string should be g_free()'d.
2249 * Returns: (transfer full) (nullable): The path from the URI. Once finished
2250 * with the string should be g_free()'d.
22512251 *
22522252 * Since: 1.6
22532253 */
3939
4040 <release>
4141 <Version>
42 <revision>1.15.90</revision>
43 <branch>master</branch>
44 <name></name>
45 <created>2019-04-11</created>
46 <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.15.90.tar.xz" />
47 </Version>
48 </release>
49
50 <release>
51 <Version>
4252 <revision>1.15.2</revision>
4353 <branch>master</branch>
4454 <name></name>
129129
130130 static GstClockTime gst_aggregator_get_latency_unlocked (GstAggregator * self);
131131
132 static void gst_aggregator_pad_buffer_consumed (GstAggregatorPad * pad);
132 static void gst_aggregator_pad_buffer_consumed (GstAggregatorPad * pad,
133 GstBuffer * buffer);
133134
134135 GST_DEBUG_CATEGORY_STATIC (aggregator_debug);
135136 #define GST_CAT_DEFAULT aggregator_debug
260261 * the chain function is also happening.
261262 */
262263 GMutex flush_lock;
264
265 /* properties */
266 gboolean emit_signals;
263267 };
264268
265269 /* Must be called with PAD_LOCK held */
816820 if (GST_IS_BUFFER (item->data)
817821 && klass->skip_buffer (aggpad, agg, item->data)) {
818822 GST_LOG_OBJECT (aggpad, "Skipping %" GST_PTR_FORMAT, item->data);
819 gst_aggregator_pad_buffer_consumed (aggpad);
823 gst_aggregator_pad_buffer_consumed (aggpad, GST_BUFFER (item->data));
820824 gst_buffer_unref (item->data);
821825 g_queue_delete_link (&aggpad->priv->data, item);
822826 } else {
14701474 GstBuffer *gapbuf;
14711475
14721476 gst_event_parse_gap (event, &pts, &duration);
1473 gapbuf = gst_buffer_new ();
14741477
14751478 if (GST_CLOCK_TIME_IS_VALID (duration))
14761479 endpts = pts + duration;
14921495 else
14931496 duration = GST_CLOCK_TIME_NONE;
14941497
1498 gapbuf = gst_buffer_new ();
14951499 GST_BUFFER_PTS (gapbuf) = pts;
14961500 GST_BUFFER_DURATION (gapbuf) = duration;
14971501 GST_BUFFER_FLAG_SET (gapbuf, GST_BUFFER_FLAG_GAP);
14981502 GST_BUFFER_FLAG_SET (gapbuf, GST_BUFFER_FLAG_DROPPABLE);
14991503
15001504 /* Remove GAP event so we can replace it with the buffer */
1505 PAD_LOCK (aggpad);
15011506 if (g_queue_peek_tail (&aggpad->priv->data) == event)
15021507 gst_event_unref (g_queue_pop_tail (&aggpad->priv->data));
1508 PAD_UNLOCK (aggpad);
15031509
15041510 if (gst_aggregator_pad_chain_internal (self, aggpad, gapbuf, FALSE) !=
15051511 GST_FLOW_OK) {
28182824 ************************************/
28192825 G_DEFINE_TYPE_WITH_PRIVATE (GstAggregatorPad, gst_aggregator_pad, GST_TYPE_PAD);
28202826
2827 #define DEFAULT_PAD_EMIT_SIGNALS FALSE
2828
2829 enum
2830 {
2831 PAD_PROP_0,
2832 PAD_PROP_EMIT_SIGNALS,
2833 };
2834
2835 enum
2836 {
2837 PAD_SIGNAL_BUFFER_CONSUMED,
2838 PAD_LAST_SIGNAL,
2839 };
2840
2841 static guint gst_aggregator_pad_signals[PAD_LAST_SIGNAL] = { 0 };
2842
28212843 static void
28222844 gst_aggregator_pad_constructed (GObject * object)
28232845 {
28582880 }
28592881
28602882 static void
2883 gst_aggregator_pad_set_property (GObject * object, guint prop_id,
2884 const GValue * value, GParamSpec * pspec)
2885 {
2886 GstAggregatorPad *pad = GST_AGGREGATOR_PAD (object);
2887
2888 switch (prop_id) {
2889 case PAD_PROP_EMIT_SIGNALS:
2890 pad->priv->emit_signals = g_value_get_boolean (value);
2891 break;
2892 default:
2893 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
2894 break;
2895 }
2896 }
2897
2898 static void
2899 gst_aggregator_pad_get_property (GObject * object, guint prop_id,
2900 GValue * value, GParamSpec * pspec)
2901 {
2902 GstAggregatorPad *pad = GST_AGGREGATOR_PAD (object);
2903
2904 switch (prop_id) {
2905 case PAD_PROP_EMIT_SIGNALS:
2906 g_value_set_boolean (value, pad->priv->emit_signals);
2907 break;
2908 default:
2909 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
2910 break;
2911 }
2912 }
2913
2914 static void
28612915 gst_aggregator_pad_class_init (GstAggregatorPadClass * klass)
28622916 {
28632917 GObjectClass *gobject_class = (GObjectClass *) klass;
28652919 gobject_class->constructed = gst_aggregator_pad_constructed;
28662920 gobject_class->finalize = gst_aggregator_pad_finalize;
28672921 gobject_class->dispose = gst_aggregator_pad_dispose;
2922 gobject_class->set_property = gst_aggregator_pad_set_property;
2923 gobject_class->get_property = gst_aggregator_pad_get_property;
2924
2925 /**
2926 * GstAggregatorPad::buffer-consumed:
2927 *
2928 * Signals that a buffer was consumed. As aggregator pads store buffers
2929 * in an internal queue, there is no direct match between input and output
2930 * buffers at any given time. This signal can be useful to forward metas
2931 * such as #GstVideoTimeCodeMeta or #GstVideoCaptionMeta at the right time.
2932 *
2933 * Since: 1.16
2934 */
2935 gst_aggregator_pad_signals[PAD_SIGNAL_BUFFER_CONSUMED] =
2936 g_signal_new ("buffer-consumed", G_TYPE_FROM_CLASS (klass),
2937 G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_generic,
2938 G_TYPE_NONE, 1, GST_TYPE_BUFFER);
2939
2940 /**
2941 * GstAggregatorPad:emit-signals:
2942 *
2943 * Enables the emission of signals such as #GstAggregatorPad::buffer-consumed
2944 *
2945 * Since: 1.16
2946 */
2947 g_object_class_install_property (gobject_class, PAD_PROP_EMIT_SIGNALS,
2948 g_param_spec_boolean ("emit-signals", "Emit signals",
2949 "Send signals to signal data consumption", DEFAULT_PAD_EMIT_SIGNALS,
2950 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
28682951 }
28692952
28702953 static void
28802963
28812964 gst_aggregator_pad_reset_unlocked (pad);
28822965 pad->priv->negotiated = FALSE;
2966 pad->priv->emit_signals = DEFAULT_PAD_EMIT_SIGNALS;
28832967 }
28842968
28852969 /* Must be called with the PAD_LOCK held */
28862970 static void
2887 gst_aggregator_pad_buffer_consumed (GstAggregatorPad * pad)
2971 gst_aggregator_pad_buffer_consumed (GstAggregatorPad * pad, GstBuffer * buffer)
28882972 {
28892973 pad->priv->num_buffers--;
2890 GST_TRACE_OBJECT (pad, "Consuming buffer");
2974 GST_TRACE_OBJECT (pad, "Consuming buffer %" GST_PTR_FORMAT, buffer);
2975 if (buffer && pad->priv->emit_signals) {
2976 g_signal_emit (pad, gst_aggregator_pad_signals[PAD_SIGNAL_BUFFER_CONSUMED],
2977 0, buffer);
2978 }
28912979 PAD_BROADCAST_EVENT (pad);
28922980 }
28932981
29243012 buffer = aggclass->clip (self, pad, buffer);
29253013
29263014 if (buffer == NULL) {
2927 gst_aggregator_pad_buffer_consumed (pad);
3015 gst_aggregator_pad_buffer_consumed (pad, buffer);
29283016 GST_TRACE_OBJECT (pad, "Clipping consumed the buffer");
29293017 }
29303018 }
29633051
29643052 if (buffer) {
29653053 pad->priv->clipped_buffer = NULL;
2966 gst_aggregator_pad_buffer_consumed (pad);
3054 gst_aggregator_pad_buffer_consumed (pad, buffer);
29673055 GST_DEBUG_OBJECT (pad, "Consumed: %" GST_PTR_FORMAT, buffer);
29683056 }
29693057
641641 parse->priv->upstream_tags = NULL;
642642 parse->priv->parser_tags = NULL;
643643 parse->priv->parser_tags_merge_mode = GST_TAG_MERGE_APPEND;
644 parse->priv->disable_passthrough = DEFAULT_DISABLE_PASSTHROUGH;
644645 }
645646
646647 static void
832833 parse->priv->next_pts = GST_CLOCK_TIME_NONE;
833834 parse->priv->next_dts = 0;
834835 parse->priv->syncable = TRUE;
835 parse->priv->disable_passthrough = DEFAULT_DISABLE_PASSTHROUGH;
836836 parse->priv->passthrough = FALSE;
837837 parse->priv->pts_interpolate = TRUE;
838838 parse->priv->infer_ts = TRUE;
655655 * that can't return an authoritative size and only know that they're EOS
656656 * when trying to read more should set this to %FALSE.
657657 *
658 * When @src operates in %GST_FORMAT_TIME, #GstBaseSrc will send an EOS
659 * when a buffer outside of the currently configured segment is pushed if
660 * @automatic_eos is %TRUE. Since 1.16, if @automatic_eos is %FALSE an
661 * EOS will be pushed only when the #GstBaseSrc.create implementation
662 * returns %GST_FLOW_EOS.
663 *
658664 * Since: 1.4
659665 */
660666 void
29302936 /* positive rate, check if we reached the stop */
29312937 if (src->segment.stop != -1) {
29322938 if (position >= src->segment.stop) {
2933 eos = TRUE;
2939 if (g_atomic_int_get (&src->priv->automatic_eos))
2940 eos = TRUE;
29342941 position = src->segment.stop;
29352942 }
29362943 }
29382945 /* negative rate, check if we reached the start. start is always set to
29392946 * something different from -1 */
29402947 if (position <= src->segment.start) {
2941 eos = TRUE;
2948 if (g_atomic_int_get (&src->priv->automatic_eos))
2949 eos = TRUE;
29422950 position = src->segment.start;
29432951 }
29442952 /* when going reverse, all buffers are DISCONT */
3737 */
3838
3939 /**
40 * gst_bit_writer_new:
40 * gst_bit_writer_new: (skip)
4141 *
4242 * Creates a new, empty #GstBitWriter instance.
4343 *
5656 }
5757
5858 /**
59 * gst_bit_writer_new_size:
59 * gst_bit_writer_new_with_size: (skip)
6060 * @size: Initial size of data in bytes
6161 * @fixed: If %TRUE the data can't be reallocated
6262 *
7676 }
7777
7878 /**
79 * gst_bit_writer_new_with_data:
79 * gst_bit_writer_new_with_data: (skip)
8080 * @data: Memory area for writing
8181 * @size: Size of @data in bytes
8282 * @initialized: if %TRUE the complete data can be read from the beginning
100100 }
101101
102102 /**
103 * gst_bit_writer_init:
103 * gst_bit_writer_init: (skip)
104104 * @bitwriter: #GstBitWriter instance
105105 *
106106 * Initializes @bitwriter to an empty instance.
116116 }
117117
118118 /**
119 * gst_bit_writer_init_with_size:
119 * gst_bit_writer_init_with_size: (skip)
120120 * @bitwriter: #GstBitWriter instance
121121 * @size: the size on bytes to allocate for data
122122 * @fixed: If %TRUE the data can't be reallocated
138138 }
139139
140140 /**
141 * gst_bit_writer_init_with_data:
141 * gst_bit_writer_init_with_data: (skip)
142142 * @bitwriter: #GstBitWriter instance
143143 * @data: (array length=size) (transfer none): Memory area for writing
144144 * @size: Size of @data in bytes
124124
125125
126126 /**
127 * gst_check_add_log_filter:
127 * gst_check_add_log_filter: (skip)
128128 * @log_domain: the log domain of the message
129129 * @log_level: the log level of the message
130130 * @regex: (transfer full): a #GRegex to match the message
10451045 }
10461046 }
10471047
1048 /**
1049 * gst_check_run_suite: (skip)
1050 * @suite: the check test suite
1051 * @name: name
1052 * @fname: file name
1053 *
1054 * Returns: number of failed tests
1055 */
10481056 gint
10491057 gst_check_run_suite (Suite * suite, const gchar * name, const gchar * fname)
10501058 {
3030
3131 PROGRAM=libtool
3232 PACKAGE=libtool
33 VERSION="2.4.6 Debian-2.4.6-9"
33 VERSION="2.4.6 Debian-2.4.6-10"
3434 package_revision=2.4.6
3535
3636
21402140 compiler: $LTCC
21412141 compiler flags: $LTCFLAGS
21422142 linker: $LD (gnu? $with_gnu_ld)
2143 version: $progname $scriptversion Debian-2.4.6-9
2143 version: $progname $scriptversion Debian-2.4.6-10
21442144 automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
21452145 autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q`
21462146
47034703 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
47044704 _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
47054705 ;;
4706 # flang / f18. f95 an alias for gfortran or flang on Debian
4707 flang* | f18* | f95*)
4708 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
4709 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
4710 _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
4711 ;;
47064712 # icc used to be incompatible with GCC.
47074713 # ICC 10 doesn't accept -KPIC any more.
47084714 icc* | ifort*)
00 project('gstreamer', 'c',
1 version : '1.15.2',
1 version : '1.15.90',
22 meson_version : '>= 0.47',
33 default_options : [ 'warning_level=1',
44 'buildtype=debugoptimized' ])
396396 '-Waddress',
397397 '-Waggregate-return',
398398 '-Wno-multichar',
399 '-Wnested-externs',
400399 '-Wdeclaration-after-statement',
401400 '-Wvla',
402401 '-Wpointer-arith',
458457 'g_setenv("GST_REGISTRY_1.0", "/no/way/this/exists.reg", TRUE);' + \
459458 'g_setenv("GST_PLUGIN_PATH_1_0", "", TRUE);' + \
460459 'g_setenv("GST_PLUGIN_SYSTEM_PATH_1_0", "", TRUE);' + \
461 'gst_init(NULL,NULL);' ]
460 'gst_init(NULL,NULL);', '--quiet']
462461
463462 gst_c_args = ['-DHAVE_CONFIG_H']
464463
2222 * @short_description: log processing latency stats
2323 *
2424 * A tracing module that determines src-to-sink latencies by injecting custom
25 * events at sources and process them at sinks.
25 * events at sources and process them at sinks. This elements supports tracing
26 * the entire pipeline latency and per element latency. By default, only
27 * pipeline latency is traced. The 'flags' parameter can be used to enabled
28 * element tracing.
29 *
30 * ```
31 * GST_TRACERS="latency(flags=pipeline+element)" GST_DEBUG=GST_TRACER:7 ./...
32 * ```
2633 */
2734 /* TODO(ensonic): if there are two sources feeding into a mixer/muxer and later
2835 * we fan-out with tee and have two sinks, each sink would get all two events,
4754 G_DEFINE_TYPE_WITH_CODE (GstLatencyTracer, gst_latency_tracer, GST_TYPE_TRACER,
4855 _do_init);
4956
57 static void latency_query_stack_destroy (gpointer data);
58
5059 static GQuark latency_probe_id;
60 static GQuark sub_latency_probe_id;
5161 static GQuark latency_probe_pad;
62 static GQuark latency_probe_element;
63 static GQuark latency_probe_element_id;
5264 static GQuark latency_probe_ts;
65 static GQuark drop_sub_latency_quark;
5366
5467 static GstTracerRecord *tr_latency;
68 static GstTracerRecord *tr_element_latency;
69 static GstTracerRecord *tr_element_reported_latency;
70
71 /* The private stack for each thread */
72 static GPrivate latency_query_stack =
73 G_PRIVATE_INIT (latency_query_stack_destroy);
74
75 struct LatencyQueryTableValue
76 {
77 GstElement *peer_element;
78 guint64 min;
79 guint64 max;
80 };
5581
5682 /* data helpers */
5783
88114 return GST_ELEMENT_CAST (parent);
89115 }
90116
117 static void
118 latency_query_table_value_destroy (gpointer data)
119 {
120 struct LatencyQueryTableValue *v = data;
121
122 /* Unref the element */
123 if (v->peer_element) {
124 gst_object_unref (v->peer_element);
125 v->peer_element = NULL;
126 }
127
128 /* Destroy the structure */
129 g_free (v);
130 }
131
132 static void
133 latency_query_stack_destroy (gpointer data)
134 {
135 GQueue *queue = data;
136 g_queue_free_full (queue, latency_query_table_value_destroy);
137 }
138
139 static GQueue *
140 local_latency_query_stack_get (void)
141 {
142 /* Make sure the stack exists */
143 GQueue *stack = g_private_get (&latency_query_stack);
144 if (!stack) {
145 g_private_set (&latency_query_stack, g_queue_new ());
146 stack = g_private_get (&latency_query_stack);
147 }
148
149 g_assert (stack);
150 return stack;
151 }
152
153 static struct LatencyQueryTableValue *
154 local_latency_query_stack_pop (void)
155 {
156 GQueue *stack = local_latency_query_stack_get ();
157 return g_queue_pop_tail (stack);
158 }
159
160 static void
161 local_latency_query_stack_push (struct LatencyQueryTableValue *value)
162 {
163 GQueue *stack = local_latency_query_stack_get ();
164 g_queue_push_tail (stack, value);
165 }
166
91167 /* hooks */
92168
93169 static void
94 log_latency (const GstStructure * data, GstPad * sink_pad, guint64 sink_ts)
95 {
96 GstPad *src_pad;
170 log_latency (const GstStructure * data, GstElement * sink_parent,
171 GstPad * sink_pad, guint64 sink_ts)
172 {
97173 guint64 src_ts;
98 gchar *src, *sink;
99
100 gst_structure_id_get (data,
101 latency_probe_pad, GST_TYPE_PAD, &src_pad,
102 latency_probe_ts, G_TYPE_UINT64, &src_ts, NULL);
103
104 src = g_strdup_printf ("%s_%s", GST_DEBUG_PAD_NAME (src_pad));
105 sink = g_strdup_printf ("%s_%s", GST_DEBUG_PAD_NAME (sink_pad));
106
107 gst_tracer_record_log (tr_latency, src, sink,
174 const char *src, *element_src, *id_element_src;
175 const GValue *value;
176 gchar *sink, *element_sink, *id_element_sink;
177
178 value = gst_structure_id_get_value (data, latency_probe_ts);
179 src_ts = g_value_get_uint64 (value);
180
181 value = gst_structure_id_get_value (data, latency_probe_pad);
182 src = g_value_get_string (value);
183
184 value = gst_structure_id_get_value (data, latency_probe_element);
185 element_src = g_value_get_string (value);
186
187 value = gst_structure_id_get_value (data, latency_probe_element_id);
188 id_element_src = g_value_get_string (value);
189
190 id_element_sink = g_strdup_printf ("%p", sink_parent);
191 element_sink = gst_element_get_name (sink_parent);
192 sink = gst_pad_get_name (sink_pad);
193 gst_tracer_record_log (tr_latency, id_element_src, element_src, src,
194 id_element_sink, element_sink, sink, GST_CLOCK_DIFF (src_ts, sink_ts),
195 sink_ts);
196 g_free (sink);
197 g_free (element_sink);
198 g_free (id_element_sink);
199 }
200
201 static void
202 log_element_latency (const GstStructure * data, GstElement * parent,
203 GstPad * pad, guint64 sink_ts)
204 {
205 guint64 src_ts;
206 gchar *pad_name, *element_name, *element_id;
207 const GValue *value;
208
209 element_id = g_strdup_printf ("%p", parent);
210 element_name = gst_element_get_name (parent);
211 pad_name = gst_pad_get_name (pad);
212
213 /* TODO filtering */
214
215 value = gst_structure_id_get_value (data, latency_probe_ts);
216 src_ts = g_value_get_uint64 (value);
217
218 gst_tracer_record_log (tr_element_latency, element_id, element_name, pad_name,
108219 GST_CLOCK_DIFF (src_ts, sink_ts), sink_ts);
109 g_free (src);
110 g_free (sink);
111 }
112
113 static void
114 send_latency_probe (GstElement * parent, GstPad * pad, guint64 ts)
115 {
220
221 g_free (pad_name);
222 g_free (element_name);
223 g_free (element_id);
224 }
225
226 static void
227 send_latency_probe (GstLatencyTracer * self, GstElement * parent, GstPad * pad,
228 guint64 ts)
229 {
230 GstPad *peer_pad = GST_PAD_PEER (pad);
231 GstElement *peer_parent = get_real_pad_parent (peer_pad);
232
116233 /* allow for non-parented pads to send latency probes as used in e.g.
117234 * rtspsrc for TCP connections */
118 if (!parent || (!GST_IS_BIN (parent) &&
119 GST_OBJECT_FLAG_IS_SET (parent, GST_ELEMENT_FLAG_SOURCE))) {
120 GstEvent *latency_probe = gst_event_new_custom (GST_EVENT_CUSTOM_DOWNSTREAM,
121 gst_structure_new_id (latency_probe_id,
122 latency_probe_pad, GST_TYPE_PAD, pad,
123 latency_probe_ts, G_TYPE_UINT64, ts,
124 NULL));
125 gst_pad_push_event (pad, latency_probe);
235 if (peer_pad && (!parent || (!GST_IS_BIN (parent)))) {
236 gchar *pad_name, *element_name, *element_id;
237 GstEvent *latency_probe;
238
239 if (self->flags & GST_LATENCY_TRACER_FLAG_PIPELINE &&
240 GST_OBJECT_FLAG_IS_SET (parent, GST_ELEMENT_FLAG_SOURCE)) {
241 element_id = g_strdup_printf ("%p", parent);
242 element_name = gst_element_get_name (parent);
243 pad_name = gst_pad_get_name (pad);
244
245 GST_DEBUG ("%s: Sending latency event", pad_name);
246
247 latency_probe = gst_event_new_custom (GST_EVENT_CUSTOM_DOWNSTREAM,
248 gst_structure_new_id (latency_probe_id,
249 latency_probe_element_id, G_TYPE_STRING, element_id,
250 latency_probe_element, G_TYPE_STRING, element_name,
251 latency_probe_pad, G_TYPE_STRING, pad_name,
252 latency_probe_ts, G_TYPE_UINT64, ts, NULL));
253 g_free (pad_name);
254 g_free (element_name);
255 g_free (element_id);
256 gst_pad_push_event (pad, latency_probe);
257 }
258
259 if (self->flags & GST_LATENCY_TRACER_FLAG_ELEMENT) {
260 GST_DEBUG ("%s_%s: Sending sub-latency event", GST_DEBUG_PAD_NAME (pad));
261
262 element_id = g_strdup_printf ("%p", peer_parent);
263 element_name = gst_element_get_name (peer_parent);
264 pad_name = gst_pad_get_name (peer_pad);
265 latency_probe = gst_event_new_custom (GST_EVENT_CUSTOM_DOWNSTREAM,
266 gst_structure_new_id (sub_latency_probe_id,
267 latency_probe_element_id, G_TYPE_STRING, element_id,
268 latency_probe_element, G_TYPE_STRING, element_name,
269 latency_probe_pad, G_TYPE_STRING, pad_name,
270 latency_probe_ts, G_TYPE_UINT64, ts, NULL));
271 gst_pad_push_event (pad, latency_probe);
272 g_free (pad_name);
273 g_free (element_name);
274 g_free (element_id);
275 }
126276 }
127277 }
128278
129279 static void
130280 calculate_latency (GstElement * parent, GstPad * pad, guint64 ts)
131281 {
282 GstElement *peer_parent = get_real_pad_parent (GST_PAD_PEER (pad));
283
132284 if (parent && (!GST_IS_BIN (parent)) &&
133 GST_OBJECT_FLAG_IS_SET (parent, GST_ELEMENT_FLAG_SINK)) {
134 GstEvent *ev = g_object_get_qdata ((GObject *) pad, latency_probe_id);
135
285 (!GST_OBJECT_FLAG_IS_SET (parent, GST_ELEMENT_FLAG_SOURCE))) {
286 GstEvent *ev;
287
288 /* FIXME unsafe use of peer */
289 if (GST_OBJECT_FLAG_IS_SET (peer_parent, GST_ELEMENT_FLAG_SINK)) {
290 GST_DEBUG ("%s_%s: Should log full lantency now",
291 GST_DEBUG_PAD_NAME (pad));
292 ev = g_object_get_qdata ((GObject *) pad, latency_probe_id);
293 if (ev) {
294 g_object_set_qdata ((GObject *) pad, latency_probe_id, NULL);
295 log_latency (gst_event_get_structure (ev), peer_parent,
296 GST_PAD_PEER (pad), ts);
297 gst_event_unref (ev);
298 }
299 }
300
301 GST_DEBUG ("%s_%s: Should log sub lantency now", GST_DEBUG_PAD_NAME (pad));
302 ev = g_object_get_qdata ((GObject *) pad, sub_latency_probe_id);
136303 if (ev) {
137 g_object_set_qdata ((GObject *) pad, latency_probe_id, NULL);
138 log_latency (gst_event_get_structure (ev), pad, ts);
304 g_object_set_qdata ((GObject *) pad, sub_latency_probe_id, NULL);
305 log_element_latency (gst_event_get_structure (ev), parent, pad, ts);
139306 gst_event_unref (ev);
140307 }
141308 }
142309 }
143310
144311 static void
145 do_push_buffer_pre (GstTracer * self, guint64 ts, GstPad * pad)
146 {
147 GstPad *peer_pad = GST_PAD_PEER (pad);
312 do_push_buffer_pre (GstTracer * tracer, guint64 ts, GstPad * pad)
313 {
314 GstLatencyTracer *self = (GstLatencyTracer *) tracer;
148315 GstElement *parent = get_real_pad_parent (pad);
149 GstElement *peer_parent = get_real_pad_parent (peer_pad);
150
151 send_latency_probe (parent, pad, ts);
152 calculate_latency (peer_parent, peer_pad, ts);
153 }
154
155 static void
156 do_pull_range_pre (GstTracer * self, guint64 ts, GstPad * pad)
157 {
316
317 send_latency_probe (self, parent, pad, ts);
318 calculate_latency (parent, pad, ts);
319 }
320
321 static void
322 do_pull_range_pre (GstTracer * tracer, guint64 ts, GstPad * pad)
323 {
324 GstLatencyTracer *self = (GstLatencyTracer *) tracer;
158325 GstPad *peer_pad = GST_PAD_PEER (pad);
159326 GstElement *parent = get_real_pad_parent (peer_pad);
160327
161 send_latency_probe (parent, peer_pad, ts);
328 send_latency_probe (self, parent, peer_pad, ts);
162329 }
163330
164331 static void
169336 calculate_latency (parent, pad, ts);
170337 }
171338
339 static GstPadProbeReturn
340 do_drop_sub_latency_event (GstPad * pad, GstPadProbeInfo * info,
341 gpointer user_data)
342 {
343 GstEvent *ev = info->data;
344 GstPadProbeReturn ret = GST_PAD_PROBE_OK;
345
346 if (GST_EVENT_TYPE (ev) == GST_EVENT_CUSTOM_DOWNSTREAM) {
347 const GstStructure *data = gst_event_get_structure (ev);
348
349 if (gst_structure_get_name_id (data) == sub_latency_probe_id) {
350 const GValue *value;
351 /* FIXME unsafe peer pad usage */
352 gchar *pad_name = g_strdup_printf ("%s_%s",
353 GST_DEBUG_PAD_NAME (GST_PAD_PEER (pad)));
354
355 value = gst_structure_id_get_value (data, latency_probe_pad);
356 if (!g_str_equal (g_value_get_string (value), pad_name)) {
357 GST_DEBUG ("%s: Dropping sub-latency event", pad_name);
358 ret = GST_PAD_PROBE_DROP;
359 }
360
361 g_free (pad_name);
362 }
363 }
364
365 return ret;
366 }
367
172368 static void
173369 do_push_event_pre (GstTracer * self, guint64 ts, GstPad * pad, GstEvent * ev)
174370 {
371 GstElement *parent = get_real_pad_parent (pad);
175372 GstPad *peer_pad = GST_PAD_PEER (pad);
176 GstElement *parent = get_real_pad_parent (peer_pad);
373 GstElement *peer_parent = get_real_pad_parent (peer_pad);
177374
178375 if (parent && (!GST_IS_BIN (parent)) &&
179 GST_OBJECT_FLAG_IS_SET (parent, GST_ELEMENT_FLAG_SINK)) {
180 if (GST_EVENT_TYPE (ev) == GST_EVENT_CUSTOM_DOWNSTREAM) {
181 const GstStructure *data = gst_event_get_structure (ev);
182
183 if (gst_structure_get_name_id (data) == latency_probe_id) {
184 /* store event and calculate latency when the buffer that follows
185 * has been processed */
186 g_object_set_qdata ((GObject *) peer_pad, latency_probe_id,
187 gst_event_ref (ev));
376 (!GST_OBJECT_FLAG_IS_SET (parent, GST_ELEMENT_FLAG_SOURCE)) &&
377 GST_EVENT_TYPE (ev) == GST_EVENT_CUSTOM_DOWNSTREAM) {
378 const GstStructure *data = gst_event_get_structure (ev);
379
380 /* if not set yet, add a pad probe that prevents sub-latency event from
381 * flowing further */
382 if (gst_structure_get_name_id (data) == latency_probe_id) {
383
384 if (!g_object_get_qdata ((GObject *) pad, drop_sub_latency_quark)) {
385 GST_DEBUG ("%s_%s: Adding pad probe to drop sub-latency event",
386 GST_DEBUG_PAD_NAME (pad));
387 gst_pad_add_probe (pad, GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM,
388 do_drop_sub_latency_event, NULL, NULL);
389 g_object_set_qdata ((GObject *) pad, drop_sub_latency_quark,
390 (gpointer) 1);
188391 }
189 }
392
393 /* FIXME unsafe peer access */
394 if (GST_OBJECT_FLAG_IS_SET (peer_parent, GST_ELEMENT_FLAG_SINK)) {
395 GST_DEBUG ("%s_%s: Storing latency event", GST_DEBUG_PAD_NAME (pad));
396
397 /* store event so that we can calculate latency when the buffer that
398 * follows has been processed */
399 if (!g_object_get_qdata ((GObject *) pad, latency_probe_id))
400 g_object_set_qdata ((GObject *) pad, latency_probe_id,
401 gst_event_ref (ev));
402 }
403 }
404
405 if (gst_structure_get_name_id (data) == sub_latency_probe_id) {
406 const GValue *value;
407 gchar *element_id = g_strdup_printf ("%p", peer_parent);
408 gchar *element_name = gst_element_get_name (peer_parent);
409 gchar *pad_name = gst_pad_get_name (peer_pad);
410 const gchar *value_element_id, *value_element_name, *value_pad_name;
411
412 /* Get the element id, element name and pad name from data */
413 value = gst_structure_id_get_value (data, latency_probe_element_id);
414 value_element_id = g_value_get_string (value);
415 value = gst_structure_id_get_value (data, latency_probe_element);
416 value_element_name = g_value_get_string (value);
417 value = gst_structure_id_get_value (data, latency_probe_pad);
418 value_pad_name = g_value_get_string (value);
419
420 if (!g_str_equal (value_element_id, element_id) ||
421 !g_str_equal (value_element_name, element_name) ||
422 !g_str_equal (value_pad_name, pad_name)) {
423 GST_DEBUG ("%s_%s: Storing latency event", GST_DEBUG_PAD_NAME (pad));
424
425 if (!g_object_get_qdata ((GObject *) pad, sub_latency_probe_id))
426 g_object_set_qdata ((GObject *) pad, sub_latency_probe_id,
427 gst_event_ref (ev));
428 }
429
430 g_free (pad_name);
431 g_free (element_name);
432 g_free (element_id);
433 }
434 }
435 }
436
437 static void
438 do_query_post (GstLatencyTracer * tracer, GstClockTime ts, GstPad * pad,
439 GstQuery * query, gboolean res)
440 {
441 /* Only check for latency queries if flag is enabled */
442 if ((tracer->flags & GST_LATENCY_TRACER_FLAG_REPORTED_ELEMENT) &&
443 (GST_QUERY_TYPE (query) == GST_QUERY_LATENCY)) {
444 gboolean live;
445 guint64 min = 0, max = 0, min_prev = 0, max_prev = 0;
446 gchar *element_name, *element_id;
447 struct LatencyQueryTableValue *value;
448 GstElement *element = get_real_pad_parent (pad);
449 GstElement *peer_element = get_real_pad_parent (GST_PAD_PEER (pad));
450
451 /* Parse the query */
452 gst_query_parse_latency (query, &live, &min, &max);
453
454 /* Pop from stack */
455 value = local_latency_query_stack_pop ();
456 while (value && value->peer_element == element) {
457 min_prev = MAX (value->min, min_prev);
458 max_prev = MAX (value->max, max_prev);
459 value = local_latency_query_stack_pop ();
460 }
461
462 /* Push to stack */
463 value = g_new0 (struct LatencyQueryTableValue, 1);
464 value->peer_element = gst_object_ref (peer_element);
465 value->min = min;
466 value->max = max;
467 local_latency_query_stack_push (value);
468
469 /* Get the pad name */
470 element_id = g_strdup_printf ("%p", element);
471 element_name = gst_element_get_name (element);
472
473 /* Log reported latency */
474 gst_tracer_record_log (tr_element_reported_latency, element_id,
475 element_name, live, GST_CLOCK_DIFF (min_prev, min),
476 GST_CLOCK_DIFF (max_prev, max), ts);
477
478 /* Clean up */
479 g_free (element_name);
480 g_free (element_id);
190481 }
191482 }
192483
193484 /* tracer class */
194485
195486 static void
487 gst_latency_tracer_constructed (GObject * object)
488 {
489 GstLatencyTracer *self = GST_LATENCY_TRACER (object);
490 gchar *params, *tmp;
491 GstStructure *params_struct = NULL;
492
493 g_object_get (self, "params", &params, NULL);
494
495 if (!params)
496 return;
497
498 tmp = g_strdup_printf ("latency,%s", params);
499 params_struct = gst_structure_from_string (tmp, NULL);
500 g_free (tmp);
501
502 /* Read the flags if available */
503 if (params_struct) {
504 const gchar *flags = gst_structure_get_string (params_struct, "flags");
505
506 self->flags = 0;
507
508 if (flags) {
509 GStrv split = g_strsplit (flags, "+", -1);
510 gint i;
511
512 for (i = 0; split[i]; i++) {
513 if (g_str_equal (split[i], "pipeline"))
514 self->flags |= GST_LATENCY_TRACER_FLAG_PIPELINE;
515 else if (g_str_equal (split[i], "element"))
516 self->flags |= GST_LATENCY_TRACER_FLAG_ELEMENT;
517 else if (g_str_equal (split[i], "reported"))
518 self->flags |= GST_LATENCY_TRACER_FLAG_REPORTED_ELEMENT;
519 else
520 GST_WARNING ("Invalid latency tracer flags %s", split[i]);
521 }
522
523 g_strfreev (split);
524 }
525 }
526
527 g_free (params);
528 }
529
530 static void
196531 gst_latency_tracer_class_init (GstLatencyTracerClass * klass)
197532 {
533 GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
534
535 gobject_class->constructed = gst_latency_tracer_constructed;
536
198537 latency_probe_id = g_quark_from_static_string ("latency_probe.id");
538 sub_latency_probe_id = g_quark_from_static_string ("sub_latency_probe.id");
199539 latency_probe_pad = g_quark_from_static_string ("latency_probe.pad");
540 latency_probe_element = g_quark_from_static_string ("latency_probe.element");
541 latency_probe_element_id =
542 g_quark_from_static_string ("latency_probe.element_id");
200543 latency_probe_ts = g_quark_from_static_string ("latency_probe.ts");
544 drop_sub_latency_quark =
545 g_quark_from_static_string ("drop_sub_latency.quark");
201546
202547 /* announce trace formats */
203548 /* *INDENT-OFF* */
204549 tr_latency = gst_tracer_record_new ("latency.class",
550 "src-element-id", GST_TYPE_STRUCTURE, gst_structure_new ("scope",
551 "type", G_TYPE_GTYPE, G_TYPE_STRING,
552 "related-to", GST_TYPE_TRACER_VALUE_SCOPE,
553 GST_TRACER_VALUE_SCOPE_ELEMENT,
554 NULL),
555 "src-element", GST_TYPE_STRUCTURE, gst_structure_new ("scope",
556 "type", G_TYPE_GTYPE, G_TYPE_STRING,
557 "related-to", GST_TYPE_TRACER_VALUE_SCOPE,
558 GST_TRACER_VALUE_SCOPE_ELEMENT,
559 NULL),
205560 "src", GST_TYPE_STRUCTURE, gst_structure_new ("scope",
206561 "type", G_TYPE_GTYPE, G_TYPE_STRING,
207562 "related-to", GST_TYPE_TRACER_VALUE_SCOPE, GST_TRACER_VALUE_SCOPE_PAD,
563 NULL),
564 "sink-element-id", GST_TYPE_STRUCTURE, gst_structure_new ("scope",
565 "type", G_TYPE_GTYPE, G_TYPE_STRING,
566 "related-to", GST_TYPE_TRACER_VALUE_SCOPE,
567 GST_TRACER_VALUE_SCOPE_ELEMENT,
568 NULL),
569 "sink-element", GST_TYPE_STRUCTURE, gst_structure_new ("scope",
570 "type", G_TYPE_GTYPE, G_TYPE_STRING,
571 "related-to", GST_TYPE_TRACER_VALUE_SCOPE,
572 GST_TRACER_VALUE_SCOPE_ELEMENT,
208573 NULL),
209574 "sink", GST_TYPE_STRUCTURE, gst_structure_new ("scope",
210575 "type", G_TYPE_GTYPE, G_TYPE_STRING,
224589 "max", G_TYPE_UINT64, G_MAXUINT64,
225590 NULL),
226591 NULL);
592
593 tr_element_latency = gst_tracer_record_new ("element-latency.class",
594 "element-id", GST_TYPE_STRUCTURE, gst_structure_new ("scope",
595 "type", G_TYPE_GTYPE, G_TYPE_STRING,
596 "related-to", GST_TYPE_TRACER_VALUE_SCOPE,
597 GST_TRACER_VALUE_SCOPE_ELEMENT,
598 NULL),
599 "element", GST_TYPE_STRUCTURE, gst_structure_new ("scope",
600 "type", G_TYPE_GTYPE, G_TYPE_STRING,
601 "related-to", GST_TYPE_TRACER_VALUE_SCOPE,
602 GST_TRACER_VALUE_SCOPE_ELEMENT,
603 NULL),
604 "src", GST_TYPE_STRUCTURE, gst_structure_new ("scope",
605 "type", G_TYPE_GTYPE, G_TYPE_STRING,
606 "related-to", GST_TYPE_TRACER_VALUE_SCOPE, GST_TRACER_VALUE_SCOPE_PAD,
607 NULL),
608 "time", GST_TYPE_STRUCTURE, gst_structure_new ("value",
609 "type", G_TYPE_GTYPE, G_TYPE_UINT64,
610 "description", G_TYPE_STRING,
611 "time it took for the buffer to go from src to sink ns",
612 "min", G_TYPE_UINT64, G_GUINT64_CONSTANT (0),
613 "max", G_TYPE_UINT64, G_MAXUINT64,
614 NULL),
615 "ts", GST_TYPE_STRUCTURE, gst_structure_new ("value",
616 "type", G_TYPE_GTYPE, G_TYPE_UINT64,
617 "description", G_TYPE_STRING, "ts when the latency has been logged",
618 "min", G_TYPE_UINT64, G_GUINT64_CONSTANT (0),
619 "max", G_TYPE_UINT64, G_MAXUINT64,
620 NULL),
621 NULL);
622
623
624 tr_element_reported_latency = gst_tracer_record_new (
625 "element-reported-latency.class",
626 "element-id", GST_TYPE_STRUCTURE, gst_structure_new ("scope",
627 "type", G_TYPE_GTYPE, G_TYPE_STRING,
628 "related-to", GST_TYPE_TRACER_VALUE_SCOPE,
629 GST_TRACER_VALUE_SCOPE_ELEMENT,
630 NULL),
631 "element", GST_TYPE_STRUCTURE, gst_structure_new ("scope",
632 "type", G_TYPE_GTYPE, G_TYPE_STRING,
633 "related-to", GST_TYPE_TRACER_VALUE_SCOPE,
634 GST_TRACER_VALUE_SCOPE_ELEMENT,
635 NULL),
636 "live", GST_TYPE_STRUCTURE, gst_structure_new ("value",
637 "type", G_TYPE_GTYPE, G_TYPE_BOOLEAN,
638 "description", G_TYPE_STRING,
639 "wether the it is a live stream or not",
640 NULL),
641 "min", GST_TYPE_STRUCTURE, gst_structure_new ("value",
642 "type", G_TYPE_GTYPE, G_TYPE_UINT64,
643 "description", G_TYPE_STRING,
644 "the minimum reported latency",
645 "min", G_TYPE_UINT64, G_GUINT64_CONSTANT (0),
646 "max", G_TYPE_UINT64, G_MAXUINT64,
647 NULL),
648 "max", GST_TYPE_STRUCTURE, gst_structure_new ("value",
649 "type", G_TYPE_GTYPE, G_TYPE_UINT64,
650 "description", G_TYPE_STRING, "the maximum reported latency",
651 "min", G_TYPE_UINT64, G_GUINT64_CONSTANT (0),
652 "max", G_TYPE_UINT64, G_MAXUINT64,
653 NULL),
654 "ts", GST_TYPE_STRUCTURE, gst_structure_new ("value",
655 "type", G_TYPE_GTYPE, G_TYPE_UINT64,
656 "description", G_TYPE_STRING, "ts when the latency has been reported",
657 "min", G_TYPE_UINT64, G_GUINT64_CONSTANT (0),
658 "max", G_TYPE_UINT64, G_MAXUINT64,
659 NULL),
660 NULL);
227661 /* *INDENT-ON* */
228662 }
229663
231665 gst_latency_tracer_init (GstLatencyTracer * self)
232666 {
233667 GstTracer *tracer = GST_TRACER (self);
668
669 /* only trace pipeline latency by default */
670 self->flags = GST_LATENCY_TRACER_FLAG_PIPELINE;
234671
235672 /* in push mode, pre/post will be called before/after the peer chain
236673 * function has been called. For this reaosn, we only use -pre to avoid
251688
252689 gst_tracing_register_hook (tracer, "pad-push-event-pre",
253690 G_CALLBACK (do_push_event_pre));
254 }
691
692 /* Add pad query post hook to get the reported per-element latency */
693 gst_tracing_register_hook (tracer, "pad-query-post",
694 G_CALLBACK (do_query_post));
695 }
4141 typedef struct _GstLatencyTracer GstLatencyTracer;
4242 typedef struct _GstLatencyTracerClass GstLatencyTracerClass;
4343
44 typedef enum
45 {
46 GST_LATENCY_TRACER_FLAG_PIPELINE = 1 << 0,
47 GST_LATENCY_TRACER_FLAG_ELEMENT = 1 << 1,
48 GST_LATENCY_TRACER_FLAG_REPORTED_ELEMENT = 1 << 2,
49 } GstLatencyTracerFlags;
50
4451 /**
4552 * GstLatencyTracer:
4653 *
5057 GstTracer parent;
5158
5259 /*< private >*/
60 GstLatencyTracerFlags flags;
5361 };
5462
5563 struct _GstLatencyTracerClass {
66 msgstr ""
77 "Project-Id-Version: gstreamer 0.9.7\n"
88 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
9 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
9 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
1010 "PO-Revision-Date: 2005-12-05 11:45+0200\n"
1111 "Last-Translator: Petri Jooste <rkwjpj@puk.ac.za>\n"
1212 "Language-Team: Afrikaans <i18n@af.org.za>\n"
66 msgstr ""
77 "Project-Id-Version: gstreamer 0.10.28.2\n"
88 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
9 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
9 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
1010 "PO-Revision-Date: 2010-06-07 22:01+0100\n"
1111 "Last-Translator: astur <maacub@gmail.com>\n"
1212 "Language-Team: Asturian <ubuntu-l10n-ast@lists.ubuntu.com>\n"
66 msgstr ""
77 "Project-Id-Version: gstreamer-0.8.0\n"
88 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
9 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
9 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
1010 "PO-Revision-Date: 2004-03-19 18:40+0200\n"
1111 "Last-Translator: Metin Amiroff <metin@karegen.com>\n"
1212 "Language-Team: Azerbaijani <translation-team-az@lists.sourceforge.net>\n"
55 msgstr ""
66 "Project-Id-Version: gstreamer 0.9.7\n"
77 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
8 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
8 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
99 "PO-Revision-Date: 2006-01-18 22:26+0200\n"
1010 "Last-Translator: Ales Nyakhaychyk <nab@mail.by>\n"
1111 "Language-Team: Belarusian <i18n@mova.org>\n"
99 msgstr ""
1010 "Project-Id-Version: gstreamer 1.12.0\n"
1111 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
12 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
12 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
1313 "PO-Revision-Date: 2017-05-08 11:35+0200\n"
1414 "Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
1515 "Language-Team: Bulgarian <dict@ludost.net>\n"
66 msgstr ""
77 "Project-Id-Version: gstreamer 0.10.30.3\n"
88 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
9 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
9 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
1010 "PO-Revision-Date: 2010-11-04 19:41+0100\n"
1111 "Last-Translator: Jordi Mallach <jordi@sindominio.net>\n"
1212 "Language-Team: Catalan <ca@dodds.net>\n"
88 msgstr ""
99 "Project-Id-Version: gstreamer 1.12.0\n"
1010 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
11 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
11 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
1212 "PO-Revision-Date: 2017-09-13 15:04+0200\n"
1313 "Last-Translator: Marek Černocký <marek@manet.cz>\n"
1414 "Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n"
99 msgstr ""
1010 "Project-Id-Version: gstreamer 1.15.1\n"
1111 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
12 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
12 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
1313 "PO-Revision-Date: 2019-02-14 13:26+0200\n"
1414 "Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n"
1515 "Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
88 msgstr ""
99 "Project-Id-Version: gstreamer 1.12.0\n"
1010 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
11 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
11 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
1212 "PO-Revision-Date: 2017-05-25 16:25+0200\n"
1313 "Last-Translator: Christian Kirbach <christian.kirbach@gmail.com>\n"
1414 "Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
55 msgstr ""
66 "Project-Id-Version: gstreamer-0.10.30.3\n"
77 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
8 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
8 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
99 "PO-Revision-Date: 2010-11-29 11:14+0200\n"
1010 "Last-Translator: Michael Kotsarinis <mk73628@gmail.com>\n"
1111 "Language-Team: Greek <team@lists.gnome.gr>\n"
55 msgstr ""
66 "Project-Id-Version: gstreamer 0.8.1\n"
77 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
8 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
8 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
99 "PO-Revision-Date: 2004-04-26 10:36-0400\n"
1010 "Last-Translator: Gareth Owen <gowen72@yahoo.com>\n"
1111 "Language-Team: English (British) <en_gb@li.org>\n"
66 msgstr ""
77 "Project-Id-Version: gstreamer 0.10.32.2\n"
88 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
9 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
9 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
1010 "PO-Revision-Date: 2011-06-04 21:11+0100\n"
1111 "Last-Translator: Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>\n"
1212 "Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
66 msgstr ""
77 "Project-Id-Version: gstreamer 0.10.32.2\n"
88 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
9 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
9 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
1010 "PO-Revision-Date: 2011-10-02 15:45+0200\n"
1111 "Last-Translator: Jorge González González <aloriel@gmail.com>\n"
1212 "Language-Team: Spanish <es@li.org>\n"
77 msgstr ""
88 "Project-Id-Version: gstreamer-0.10.26.2\n"
99 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
10 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
10 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
1111 "PO-Revision-Date: 2010-03-25 13:10+0100\n"
1212 "Last-Translator: Mikel Olasagasti Uranga <hey_neken@mundurat.net>\n"
1313 "Language-Team: Basque <translation-team-eu@lists.sourceforge.net>\n"
1111 msgstr ""
1212 "Project-Id-Version: gstreamer 0.10.30.3\n"
1313 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
14 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
14 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
1515 "PO-Revision-Date: 2010-11-17 23:10+0200\n"
1616 "Last-Translator: Tommi Vainikainen <Tommi.Vainikainen@iki.fi>\n"
1717 "Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
99 msgstr ""
1010 "Project-Id-Version: gstreamer 1.12.0\n"
1111 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
12 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
12 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
1313 "PO-Revision-Date: 2017-05-05 22:33+0200\n"
1414 "Last-Translator: Stéphane Aulery <lkppo@free.fr>\n"
1515 "Language-Team: French <traduc@traduc.org>\n"
55 msgstr ""
66 "Project-Id-Version: gstreamer 1.10.0\n"
77 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
8 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
8 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
99 "PO-Revision-Date: 2017-03-19 15:41+0100\n"
1010 "Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n"
1111 "Language-Team: Friulian <f.t.public@gmail.com>\n"
55 msgstr ""
66 "Project-Id-Version: gstreamer 1.0.3\n"
77 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
8 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
8 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
99 "PO-Revision-Date: 2012-12-15 03:29+0200\n"
1010 "Last-Translator: Fran Dieguez <frandieguez@ubuntu.com>\n"
1111 "Language-Team: Galician <proxecto@trasno.net>\n"
44 #, fuzzy
55 msgid ""
66 msgstr ""
7 "Project-Id-Version: gstreamer 1.15.2\n"
7 "Project-Id-Version: gstreamer 1.15.90\n"
88 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
9 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
9 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
1010 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
1111 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1212 "Language-Team: LANGUAGE <LL@li.org>\n"
11481148 msgid "Internal data flow problem."
11491149 msgstr ""
11501150
1151 #: libs/gst/base/gstbasesink.c:4222 libs/gst/base/gstbasesrc.c:2702
1151 #: libs/gst/base/gstbasesink.c:4222 libs/gst/base/gstbasesrc.c:2708
11521152 msgid "Internal data flow error."
11531153 msgstr ""
11541154
1155 #: libs/gst/base/gstbasesrc.c:2632
1155 #: libs/gst/base/gstbasesrc.c:2638
11561156 msgid "Internal clock error."
11571157 msgstr ""
11581158
1159 #: libs/gst/base/gstbasesrc.c:2660 plugins/elements/gstdownloadbuffer.c:842
1159 #: libs/gst/base/gstbasesrc.c:2666 plugins/elements/gstdownloadbuffer.c:842
11601160 #: plugins/elements/gstdownloadbuffer.c:1265
11611161 msgid "Failed to map buffer."
11621162 msgstr ""
13121312 msgid "changeable only in NULL or READY state"
13131313 msgstr ""
13141314
1315 #: tools/gst-inspect.c:1129
1315 #: tools/gst-inspect.c:1131
13161316 msgid "Blacklisted files:"
13171317 msgstr ""
13181318
1319 #: tools/gst-inspect.c:1141 tools/gst-inspect.c:1274
1319 #: tools/gst-inspect.c:1143 tools/gst-inspect.c:1276
13201320 #, c-format
13211321 msgid "%sTotal count%s: %s"
13221322 msgstr ""
13231323
1324 #: tools/gst-inspect.c:1143
1324 #: tools/gst-inspect.c:1145
13251325 #, c-format
13261326 msgid "%d blacklisted file"
13271327 msgid_plural "%d blacklisted files"
13281328 msgstr[0] ""
13291329 msgstr[1] ""
13301330
1331 #: tools/gst-inspect.c:1276
1331 #: tools/gst-inspect.c:1278
13321332 #, c-format
13331333 msgid "%d plugin"
13341334 msgid_plural "%d plugins"
13351335 msgstr[0] ""
13361336 msgstr[1] ""
13371337
1338 #: tools/gst-inspect.c:1279
1338 #: tools/gst-inspect.c:1281
13391339 #, c-format
13401340 msgid "%d blacklist entry"
13411341 msgid_plural "%d blacklist entries"
13421342 msgstr[0] ""
13431343 msgstr[1] ""
13441344
1345 #: tools/gst-inspect.c:1284
1345 #: tools/gst-inspect.c:1286
13461346 #, c-format
13471347 msgid "%d feature"
13481348 msgid_plural "%d features"
13491349 msgstr[0] ""
13501350 msgstr[1] ""
13511351
1352 #: tools/gst-inspect.c:1949
1352 #: tools/gst-inspect.c:1951
13531353 msgid "Print all elements"
13541354 msgstr ""
13551355
1356 #: tools/gst-inspect.c:1951
1356 #: tools/gst-inspect.c:1953
13571357 msgid "Print list of blacklisted files"
13581358 msgstr ""
13591359
1360 #: tools/gst-inspect.c:1953
1360 #: tools/gst-inspect.c:1955
13611361 msgid ""
13621362 "Print a machine-parsable list of features the specified plugin or all "
13631363 "plugins provide.\n"
13651365 "automatic plugin installation mechanisms"
13661366 msgstr ""
13671367
1368 #: tools/gst-inspect.c:1958
1368 #: tools/gst-inspect.c:1960
13691369 msgid "List the plugin contents"
13701370 msgstr ""
13711371
1372 #: tools/gst-inspect.c:1960
1372 #: tools/gst-inspect.c:1962
13731373 msgid ""
13741374 "A slashes ('/') separated list of types of elements (also known as klass) to "
13751375 "list. (unordered)"
13761376 msgstr ""
13771377
1378 #: tools/gst-inspect.c:1963
1378 #: tools/gst-inspect.c:1965
13791379 msgid "Check if the specified element or plugin exists"
13801380 msgstr ""
13811381
1382 #: tools/gst-inspect.c:1966
1382 #: tools/gst-inspect.c:1968
13831383 msgid ""
13841384 "When checking if an element or plugin exists, also check that its version is "
13851385 "at least the version specified"
13861386 msgstr ""
13871387
1388 #: tools/gst-inspect.c:1970
1388 #: tools/gst-inspect.c:1972
13891389 msgid "Print supported URI schemes, with the elements that implement them"
13901390 msgstr ""
13911391
1392 #: tools/gst-inspect.c:1975
1392 #: tools/gst-inspect.c:1977
13931393 msgid ""
13941394 "Disable colors in output. You can also achieve the same by "
13951395 "setting'GST_INSPECT_NO_COLORS' environment variable to any value."
13961396 msgstr ""
13971397
1398 #: tools/gst-inspect.c:2131
1398 #: tools/gst-inspect.c:2133
13991399 #, c-format
14001400 msgid "Could not load plugin file: %s\n"
14011401 msgstr ""
14021402
1403 #: tools/gst-inspect.c:2137
1403 #: tools/gst-inspect.c:2139
14041404 #, c-format
14051405 msgid "No such element or plugin '%s'\n"
14061406 msgstr ""
1111 msgstr ""
1212 "Project-Id-Version: gstreamer-1.15.1\n"
1313 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
14 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
14 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
1515 "PO-Revision-Date: 2019-02-03 13:10-0800\n"
1616 "Last-Translator: Božidar Putanec <bozidarp@yahoo.com>\n"
1717 "Language-Team: Croatian <lokalizacija@linux.hr>\n"
77 msgstr ""
88 "Project-Id-Version: gstreamer 1.12.0\n"
99 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
10 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
10 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
1111 "PO-Revision-Date: 2017-05-05 20:17+0200\n"
1212 "Last-Translator: Balázs Úr <urbalazs@gmail.com>\n"
1313 "Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
66 msgstr ""
77 "Project-Id-Version: gstreamer 1.10.0\n"
88 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
9 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
9 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
1010 "PO-Revision-Date: 2016-11-14 20:59+0700\n"
1111 "Last-Translator: Andhika Padmawan <andhika.padmawan@gmail.com>\n"
1212 "Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
107107 msgstr ""
108108 "Project-Id-Version: gstreamer-1.15.1\n"
109109 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
110 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
110 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
111111 "PO-Revision-Date: 2019-01-29 09:16+0100\n"
112112 "Last-Translator: Milo Casagrande <milo@milo.name>\n"
113113 "Language-Team: Italian <tp@lists.linux.it>\n"
55 msgstr ""
66 "Project-Id-Version: gstreamer 1.0.3\n"
77 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
8 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
8 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
99 "PO-Revision-Date: 2013-08-20 14:56+0900\n"
1010 "Last-Translator: Makoto Kato <makoto.kt@gmail.com>\n"
1111 "Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
66 msgstr ""
77 "Project-Id-Version: gstreamer 0.10.29.2\n"
88 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
9 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
9 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
1010 "PO-Revision-Date: 2010-07-16 00:50+0300\n"
1111 "Last-Translator: Žygimantas Beručka <uid0@akl.lt>\n"
1212 "Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n"
77 msgstr ""
88 "Project-Id-Version: gstreamer 1.12.0\n"
99 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
10 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
10 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
1111 "PO-Revision-Date: 2017-05-23 22:59+0200\n"
1212 "Last-Translator: Johnny A. Solbu <johnny@solbu.net>\n"
1313 "Language-Team: Norwegian Bokmaal <i18n-nb@lister.ping.uio.no>\n"
99 msgstr ""
1010 "Project-Id-Version: gstreamer 1.12.0\n"
1111 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
12 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
12 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
1313 "PO-Revision-Date: 2017-10-24 22:53+0100\n"
1414 "Last-Translator: Freek de Kruijf <f.de.kruijf@gmail.com>\n"
1515 "Language-Team: Dutch <vertaling@vrijschrift.org>\n"
55 msgstr ""
66 "Project-Id-Version: gstreamer 1.15.1\n"
77 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
8 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
8 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
99 "PO-Revision-Date: 2019-01-24 21:45+0100\n"
1010 "Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
1111 "Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
1616 msgstr ""
1717 "Project-Id-Version: gstreamer-1.7.90\n"
1818 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
19 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
19 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
2020 "PO-Revision-Date: 2016-05-06 18:23-0300\n"
2121 "Last-Translator: Fabrício Godoy <skarllot@gmail.com>\n"
2222 "Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge."
44 msgstr ""
55 "Project-Id-Version: gstreamer 0.10.29.2\n"
66 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
7 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
7 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
88 "PO-Revision-Date: 2010-08-16 01:10+0300\n"
99 "Last-Translator: Lucian Adrian Grijincu <lucian.grijincu@gmail.com>\n"
1010 "Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
88 msgstr ""
99 "Project-Id-Version: gstreamer 1.15.1\n"
1010 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
11 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
11 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
1212 "PO-Revision-Date: 2019-01-25 19:43+0300\n"
1313 "Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
1414 "Language-Team: Russian <gnu@d07.ru>\n"
1414 msgstr ""
1515 "Project-Id-Version: gstreamer 0.8.8\n"
1616 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
17 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
17 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
1818 "PO-Revision-Date: 2005-04-04 10:55-0700\n"
1919 "Last-Translator: Steven Michael Murphy <murf@e-tools.com>\n"
2020 "Language-Team: Kinyarwanda <translation-team-rw@lists.sourceforge.net>\n"
77 msgstr ""
88 "Project-Id-Version: gstreamer 1.7.90\n"
99 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
10 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
10 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
1111 "PO-Revision-Date: 2016-05-20 11:32+0100\n"
1212 "Last-Translator: Peter Tuhársky <tuharsky@misbb.sk>\n"
1313 "Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
99 msgstr ""
1010 "Project-Id-Version: gstreamer-1.2.1\n"
1111 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
12 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
12 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
1313 "PO-Revision-Date: 2014-04-09 22:38+0100\n"
1414 "Last-Translator: Klemen Košir <klemen913@gmail.com>\n"
1515 "Language-Team: Slovenian <translation-team-sl@lists.sourceforge.net>\n"
55 msgstr ""
66 "Project-Id-Version: gstreamer 0.8.4\n"
77 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
8 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
8 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
99 "PO-Revision-Date: 2004-08-07 23:46+0200\n"
1010 "Last-Translator: Laurent Dhima <laurenti@alblinux.net>\n"
1111 "Language-Team: Albanian <begraj@hotmail.com>\n"
66 msgstr ""
77 "Project-Id-Version: gstreamer-1.12.0\n"
88 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
9 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
9 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
1010 "PO-Revision-Date: 2017-05-07 12:42+0200\n"
1111 "Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
1212 "Language-Team: Serbian <(nothing)>\n"
88 msgstr ""
99 "Project-Id-Version: gstreamer 1.15.1\n"
1010 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
11 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
11 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
1212 "PO-Revision-Date: 2019-02-05 18:22+0100\n"
1313 "Last-Translator: Sebastian Rasmussen <sebras@gmail.com>\n"
1414 "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
66 msgstr ""
77 "Project-Id-Version: gstreamer 1.15.1\n"
88 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
9 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
9 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
1010 "PO-Revision-Date: 2019-01-25 11:54+0300\n"
1111 "Last-Translator: Mehmet Kececi <mkececi@mehmetkececi.com>\n"
1212 "Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
77 msgstr ""
88 "Project-Id-Version: gstreamer 1.15.1\n"
99 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
10 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
10 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
1111 "PO-Revision-Date: 2019-01-24 21:55+0200\n"
1212 "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
1313 "Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
88 msgstr ""
99 "Project-Id-Version: gstreamer 1.12.0\n"
1010 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
11 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
11 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
1212 "PO-Revision-Date: 2017-05-05 06:45+0700\n"
1313 "Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n"
1414 "Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n"
66 msgstr ""
77 "Project-Id-Version: gstreamer 1.12.0\n"
88 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
9 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
9 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
1010 "PO-Revision-Date: 2017-05-05 22:53+0800\n"
1111 "Last-Translator: Tianze Wang <zwpwjwtz@126.com>\n"
1212 "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
2626 msgstr ""
2727 "Project-Id-Version: gstreamer 1.3.2\n"
2828 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
29 "POT-Creation-Date: 2019-02-26 11:37+0000\n"
29 "POT-Creation-Date: 2019-04-11 00:19+0100\n"
3030 "PO-Revision-Date: 2014-06-08 00:22+0800\n"
3131 "Last-Translator: Wen Liao <wen.cf83@gmail.com>\n"
3232 "Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n"
917917 fail_unless (GST_MEMORY_IS_READONLY (mem));
918918
919919 gst_buffer_unref (buf);
920 g_bytes_unref (bytes);
920921 }
921922
922923 GST_END_TEST;
217217 GstSeekFlags flags;
218218 GstSeekType start_type, stop_type;
219219 gint64 start, stop;
220 GstClockTime trickmode_interval;
220221
221222 event = gst_event_new_seek (0.5, GST_FORMAT_BYTES,
222223 GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE,
238239 fail_unless (stop_type == GST_SEEK_TYPE_NONE);
239240 fail_unless (stop == 0xdeadbeef);
240241
242 gst_event_parse_seek_trickmode_interval (event, &trickmode_interval);
243 fail_unless_equals_uint64 (trickmode_interval, 0);
244
245 gst_event_set_seek_trickmode_interval (event, GST_SECOND);
246 gst_event_parse_seek_trickmode_interval (event, &trickmode_interval);
247 fail_unless_equals_uint64 (trickmode_interval, GST_SECOND);
248
249 gst_event_ref (event);
250 ASSERT_CRITICAL (gst_event_set_seek_trickmode_interval (event,
251 2 * GST_SECOND));
252 gst_event_unref (event);
253
254 gst_event_unref (event);
255
256 event = gst_event_new_flush_start ();
257 ASSERT_CRITICAL (gst_event_set_seek_trickmode_interval (event, GST_SECOND));
241258 gst_event_unref (event);
242259 }
243260
382382
383383 gst_buffer_foreach_meta (buffer, foreach_meta_remove_one, meta3);
384384
385 fail_unless (gst_buffer_iterate_meta (buffer, &state) == (GstMeta *) meta1);
385386 fail_unless (gst_buffer_iterate_meta (buffer, &state) == (GstMeta *) meta2);
386 fail_unless (gst_buffer_iterate_meta (buffer, &state) == (GstMeta *) meta1);
387387 fail_unless (gst_buffer_iterate_meta (buffer, &state) == NULL);
388388
389389 /* clean up */
413413
414414 gst_buffer_foreach_meta (buffer, foreach_meta_remove_one, meta2);
415415
416 fail_unless (gst_buffer_iterate_meta (buffer, &state) == (GstMeta *) meta1);
416417 fail_unless (gst_buffer_iterate_meta (buffer, &state) == (GstMeta *) meta3);
417 fail_unless (gst_buffer_iterate_meta (buffer, &state) == (GstMeta *) meta1);
418418 fail_unless (gst_buffer_iterate_meta (buffer, &state) == NULL);
419419
420420 /* clean up */
444444
445445 gst_buffer_foreach_meta (buffer, foreach_meta_remove_one, meta1);
446446
447 fail_unless (gst_buffer_iterate_meta (buffer, &state) == (GstMeta *) meta2);
447448 fail_unless (gst_buffer_iterate_meta (buffer, &state) == (GstMeta *) meta3);
448 fail_unless (gst_buffer_iterate_meta (buffer, &state) == (GstMeta *) meta2);
449449 fail_unless (gst_buffer_iterate_meta (buffer, &state) == NULL);
450450
451451 /* clean up */
524524
525525 gst_buffer_foreach_meta (buffer, foreach_meta_remove_unpooled, NULL);
526526
527 fail_unless (gst_buffer_iterate_meta (buffer, &state) == (GstMeta *) meta2);
527528 fail_unless (gst_buffer_iterate_meta (buffer, &state) == (GstMeta *) meta5);
528 fail_unless (gst_buffer_iterate_meta (buffer, &state) == (GstMeta *) meta2);
529529 fail_unless (gst_buffer_iterate_meta (buffer, &state) == NULL);
530530
531531 /* clean up */
903903
904904 GST_END_TEST;
905905
906 typedef struct
907 {
908 GstBaseSrc parent;
909 GstSegment *segment;
910 gboolean n_output_buffers;
911 } TimeSrc;
912
913 typedef GstBaseSrcClass TimeSrcClass;
914
915 static GType time_src_get_type (void);
916
917 G_DEFINE_TYPE (TimeSrc, time_src, GST_TYPE_BASE_SRC);
918
919 static void
920 time_src_init (TimeSrc * src)
921 {
922 gst_base_src_set_format (GST_BASE_SRC (src), GST_FORMAT_TIME);
923 gst_base_src_set_automatic_eos (GST_BASE_SRC (src), FALSE);
924 src->n_output_buffers = 0;
925 }
926
927 /* This test src outputs a compressed format, with a single GOP
928 * starting at PTS 0.
929 *
930 * This means that in reverse playback, we may want to output
931 * buffers outside the segment bounds, and decide when to EOS
932 * from the create function.
933 */
934 static GstFlowReturn
935 time_src_create (GstBaseSrc * bsrc, guint64 offset, guint size,
936 GstBuffer ** p_buf)
937 {
938 TimeSrc *src = (TimeSrc *) bsrc;
939
940 if (src->segment->position >= src->segment->stop)
941 return GST_FLOW_EOS;
942
943 *p_buf = gst_buffer_new ();
944 GST_BUFFER_PTS (*p_buf) = src->segment->position;
945 GST_BUFFER_DURATION (*p_buf) = GST_SECOND;
946 src->segment->position += GST_SECOND;
947
948 src->n_output_buffers++;
949
950 return GST_FLOW_OK;
951 }
952
953 static gboolean
954 time_src_do_seek (GstBaseSrc * bsrc, GstSegment * segment)
955 {
956 TimeSrc *src = (TimeSrc *) bsrc;
957 fail_unless (segment->format == GST_FORMAT_TIME);
958
959 if (src->segment)
960 gst_segment_free (src->segment);
961
962 src->segment = gst_segment_copy (segment);
963
964 ((TimeSrc *) bsrc)->segment->position = 0;
965
966 return TRUE;
967 }
968
969 static gboolean
970 time_src_is_seekable (GstBaseSrc * bsrc)
971 {
972 return TRUE;
973 }
974
975 static void
976 time_src_class_init (TimeSrcClass * klass)
977 {
978 GstBaseSrcClass *gstbasesrc_class = GST_BASE_SRC_CLASS (klass);
979
980 gst_element_class_add_static_pad_template (GST_ELEMENT_CLASS (klass),
981 &src_template);
982
983 gstbasesrc_class->create = time_src_create;
984 gstbasesrc_class->do_seek = time_src_do_seek;
985 gstbasesrc_class->is_seekable = time_src_is_seekable;
986 }
987
988 GST_START_TEST (basesrc_time_automatic_eos)
989 {
990 GstElement *src, *sink;
991 GstElement *pipe;
992 GstBus *bus;
993
994 src = g_object_new (time_src_get_type (), NULL);
995 sink = gst_element_factory_make ("fakesink", NULL);
996
997 pipe = gst_pipeline_new (NULL);
998
999 gst_bin_add (GST_BIN (pipe), src);
1000 gst_bin_add (GST_BIN (pipe), sink);
1001
1002 gst_element_link (src, sink);
1003
1004 gst_element_set_state (pipe, GST_STATE_PAUSED);
1005 gst_element_get_state (pipe, NULL, NULL, GST_CLOCK_TIME_NONE);
1006
1007 gst_element_seek (pipe, -1.0, GST_FORMAT_TIME,
1008 GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE, GST_SEEK_TYPE_SET,
1009 GST_SECOND, GST_SEEK_TYPE_SET, 2 * GST_SECOND);
1010
1011 gst_element_set_state (pipe, GST_STATE_PLAYING);
1012
1013 bus = gst_pipeline_get_bus (GST_PIPELINE (pipe));
1014
1015 gst_bus_timed_pop_filtered (bus, GST_CLOCK_TIME_NONE, GST_MESSAGE_EOS);
1016
1017 gst_element_set_state (pipe, GST_STATE_NULL);
1018
1019 /* - One preroll buffer
1020 * - One (1-second) buffer outside the segment, our "keyframe"
1021 * - One buffer inside the segment
1022 */
1023 fail_unless_equals_int (((TimeSrc *) src)->n_output_buffers, 3);
1024
1025 if (((TimeSrc *) src)->segment)
1026 gst_segment_free (((TimeSrc *) src)->segment);
1027
1028 gst_object_unref (bus);
1029 gst_object_unref (pipe);
1030 }
1031
1032 GST_END_TEST;
1033
9061034 static Suite *
9071035 gst_basesrc_suite (void)
9081036 {
9191047 tcase_add_test (tc, basesrc_seek_events_rate_update);
9201048 tcase_add_test (tc, basesrc_seek_on_last_buffer);
9211049 tcase_add_test (tc, basesrc_create_bufferlist);
1050 tcase_add_test (tc, basesrc_time_automatic_eos);
9221051
9231052 return s;
9241053 }
8080 [ 'elements/concat.c', not gst_registry ],
8181 [ 'elements/dataurisrc.c', not gst_registry ],
8282 [ 'elements/fakesrc.c', not gst_registry ],
83 [ 'elements/fdsrc.c', not gst_registry ],
83 # FIXME: blocked forever on Windows due to missing fcntl (.. O_NONBLOCK)
84 [ 'elements/fdsrc.c', not gst_registry or host_system == 'windows' ],
8485 [ 'elements/filesink.c', not gst_registry ],
8586 [ 'elements/filesrc.c', not gst_registry ],
8687 [ 'elements/funnel.c', not gst_registry ],
635635 g_type_name (param->value_type), RESET_COLOR);
636636 if (param->value_type == GST_TYPE_STRUCTURE) {
637637 const GstStructure *s = gst_value_get_structure (&value);
638 if (s)
638 if (s) {
639 g_print ("\n");
639640 gst_structure_foreach (s, print_field,
640641 (gpointer) " ");
642 }
641643 }
642644 } else if (G_IS_PARAM_SPEC_POINTER (param)) {
643645 if (param->value_type != G_TYPE_POINTER) {
3636 static GHashTable *threads = NULL;
3737 static GPtrArray *elements = NULL;
3838 static GPtrArray *pads = NULL;
39 static GHashTable *latencies = NULL;
40 static GHashTable *element_latencies = NULL;
41 static GQueue *element_reported_latencies = NULL;
3942 static guint64 num_buffers = 0, num_events = 0, num_messages = 0, num_queries =
4043 0;
4144 static guint num_elements = 0, num_bins = 0, num_pads = 0, num_ghostpads = 0;
4245 static GstClockTime last_ts = G_GUINT64_CONSTANT (0);
4346 static guint total_cpuload = 0;
4447 static gboolean have_cpuload = FALSE;
48
49 static gboolean have_latency = FALSE;
50 static gboolean have_element_latency = FALSE;
51 static gboolean have_element_reported_latency = FALSE;
52
53 typedef struct
54 {
55 /* the number of latencies counted */
56 guint64 count;
57 /* the total of all latencies */
58 guint64 total;
59 /* the min of all latencies */
60 guint64 min;
61 /* the max of all latencies */
62 guint64 max;
63 } GstLatencyStats;
64
65 typedef struct
66 {
67 /* The element name */
68 gchar *element;
69 /* The timestamp of the reported latency */
70 guint64 ts;
71 /* the min reported latency */
72 guint64 min;
73 /* the max reported latency */
74 guint64 max;
75 } GstReportedLatency;
4576
4677 typedef struct
4778 {
88119 } GstThreadStats;
89120
90121 /* stats helper */
122
123 static void
124 latencies_foreach_print_stats (gchar * key, GstLatencyStats * ls, gpointer data)
125 {
126 printf ("\t%s: mean=%" G_GUINT64_FORMAT " min=%" G_GUINT64_FORMAT " max=%"
127 G_GUINT64_FORMAT "\n", key, ls->total / ls->count, ls->min, ls->max);
128 }
129
130 static void
131 reported_latencies_foreach_print_stats (GstReportedLatency * rl, gpointer data)
132 {
133 printf ("\t%s: min=%" G_GUINT64_FORMAT " max=%" G_GUINT64_FORMAT " ts=%"
134 GST_TIME_FORMAT "\n", rl->element, rl->min,
135 rl->max, GST_TIME_ARGS (rl->ts));
136 }
137
138 static void
139 free_latency_stats (gpointer data)
140 {
141 g_slice_free (GstLatencyStats, data);
142 }
143
144 static void
145 free_reported_latency (gpointer data)
146 {
147 GstReportedLatency *rl = data;
148
149 if (rl->element)
150 g_free (rl->element);
151
152 g_free (data);
153 }
91154
92155 static void
93156 free_element_stats (gpointer data)
409472 have_cpuload = TRUE;
410473 }
411474
475 static void
476 update_latency_table (GHashTable * table, const gchar * key, guint64 time)
477 {
478 /* Find the values in the hash table */
479 GstLatencyStats *ls = g_hash_table_lookup (table, key);
480 if (!ls) {
481 /* Insert the new key if the value does not exist */
482 ls = g_new0 (GstLatencyStats, 1);
483 ls->count = 1;
484 ls->total = time;
485 ls->min = time;
486 ls->max = time;
487 g_hash_table_insert (table, g_strdup (key), ls);
488 } else {
489 /* Otherwise update the existing value */
490 ls->count++;
491 ls->total += time;
492 if (ls->min > time)
493 ls->min = time;
494 if (ls->max < time)
495 ls->max = time;
496 }
497 }
498
499 static void
500 do_latency_stats (GstStructure * s)
501 {
502 gchar *key = NULL;
503 const gchar *src = NULL, *sink = NULL, *src_element = NULL,
504 *sink_element = NULL, *src_element_id = NULL, *sink_element_id = NULL;
505 guint64 ts = 0, time = 0;
506
507 /* Get the values from the structure */
508 src = gst_structure_get_string (s, "src");
509 sink = gst_structure_get_string (s, "sink");
510 src_element = gst_structure_get_string (s, "src-element");
511 sink_element = gst_structure_get_string (s, "sink-element");
512 src_element_id = gst_structure_get_string (s, "src-element-id");
513 sink_element_id = gst_structure_get_string (s, "sink-element-id");
514 gst_structure_get (s, "time", G_TYPE_UINT64, &time, NULL);
515 gst_structure_get (s, "ts", G_TYPE_UINT64, &ts, NULL);
516
517 /* Update last_ts */
518 last_ts = MAX (last_ts, ts);
519
520 /* Get the key */
521 key = g_strdup_printf ("%s.%s.%s|%s.%s.%s", src_element_id, src_element,
522 src, sink_element_id, sink_element, sink);
523
524 /* Update the latency in the table */
525 update_latency_table (latencies, key, time);
526
527 /* Clean up */
528 g_free (key);
529
530 have_latency = TRUE;
531 }
532
533 static void
534 do_element_latency_stats (GstStructure * s)
535 {
536 gchar *key = NULL;
537 const gchar *src = NULL, *element = NULL, *element_id = NULL;
538 guint64 ts = 0, time = 0;
539
540 /* Get the values from the structure */
541 src = gst_structure_get_string (s, "src");
542 element = gst_structure_get_string (s, "element");
543 element_id = gst_structure_get_string (s, "element-id");
544 gst_structure_get (s, "time", G_TYPE_UINT64, &time, NULL);
545 gst_structure_get (s, "ts", G_TYPE_UINT64, &ts, NULL);
546
547 /* Update last_ts */
548 last_ts = MAX (last_ts, ts);
549
550 /* Get the key */
551 key = g_strdup_printf ("%s.%s.%s", element_id, element, src);
552
553 /* Update the latency in the table */
554 update_latency_table (element_latencies, key, time);
555
556 /* Clean up */
557 g_free (key);
558
559 have_element_latency = TRUE;
560 }
561
562 static void
563 do_element_reported_latency (GstStructure * s)
564 {
565 const gchar *element = NULL, *element_id = NULL;
566 guint64 ts = 0, min = 0, max = 0;
567 GstReportedLatency *rl = NULL;
568
569 /* Get the values from the structure */
570 element_id = gst_structure_get_string (s, "element-id");
571 element = gst_structure_get_string (s, "element");
572 gst_structure_get (s, "min", G_TYPE_UINT64, &min, NULL);
573 gst_structure_get (s, "max", G_TYPE_UINT64, &max, NULL);
574 gst_structure_get (s, "ts", G_TYPE_UINT64, &ts, NULL);
575
576 /* Update last_ts */
577 last_ts = MAX (last_ts, ts);
578
579 /* Insert/Update the key in the table */
580 rl = g_new0 (GstReportedLatency, 1);
581 rl->element = g_strdup_printf ("%s.%s", element_id, element);
582 rl->ts = ts;
583 rl->min = min;
584 rl->max = max;
585 g_queue_push_tail (element_reported_latencies, rl);
586
587 have_element_reported_latency = TRUE;
588 }
589
412590 /* reporting */
413591
414592 static gint
667845 elements = g_ptr_array_new_with_free_func (free_element_stats);
668846 pads = g_ptr_array_new_with_free_func (free_pad_stats);
669847 threads = g_hash_table_new_full (NULL, NULL, NULL, free_thread_stats);
848 latencies = g_hash_table_new_full (g_str_hash, g_str_equal, g_free,
849 free_latency_stats);
850 element_latencies = g_hash_table_new_full (g_str_hash, g_str_equal, g_free,
851 free_latency_stats);
852 element_reported_latencies = g_queue_new ();
670853
671854 return TRUE;
672855 }
680863 g_ptr_array_free (elements, TRUE);
681864 if (threads)
682865 g_hash_table_destroy (threads);
866
867 if (latencies) {
868 g_hash_table_remove_all (latencies);
869 g_hash_table_destroy (latencies);
870 latencies = NULL;
871 }
872 if (element_latencies) {
873 g_hash_table_remove_all (element_latencies);
874 g_hash_table_destroy (element_latencies);
875 element_latencies = NULL;
876 }
877 if (element_reported_latencies) {
878 g_queue_free_full (element_reported_latencies, free_reported_latency);
879 element_reported_latencies = NULL;
880 }
683881
684882 if (raw_log)
685883 g_regex_unref (raw_log);
757955 puts ("");
758956 g_slist_free (list);
759957 }
958
959 /* latency stats */
960 if (have_latency) {
961 puts ("Latency Statistics:");
962 g_hash_table_foreach (latencies, (GHFunc) latencies_foreach_print_stats,
963 NULL);
964 puts ("");
965 }
966
967 /* element latency stats */
968 if (have_element_latency) {
969 puts ("Element Latency Statistics:");
970 g_hash_table_foreach (element_latencies,
971 (GHFunc) latencies_foreach_print_stats, NULL);
972 puts ("");
973 }
974
975 /* element reported latency stats */
976 if (have_element_reported_latency) {
977 puts ("Element Reported Latency:");
978 g_queue_foreach (element_reported_latencies,
979 (GFunc) reported_latencies_foreach_print_stats, NULL);
980 puts ("");
981 }
760982 }
761983
762984 static void
8111033 do_thread_rusage_stats (s);
8121034 } else if (!strcmp (name, "proc-rusage")) {
8131035 do_proc_rusage_stats (s);
1036 } else if (!strcmp (name, "latency")) {
1037 do_latency_stats (s);
1038 } else if (!strcmp (name, "element-latency")) {
1039 do_element_latency_stats (s);
1040 } else if (!strcmp (name, "element-reported-latency")) {
1041 do_element_reported_latency (s);
8141042 } else {
8151043 // TODO(ensonic): parse the xxx.class log lines
8161044 if (!g_str_has_suffix (data, ".class")) {