diff -Nru gst-plugins-base1.0-1.14.4/ChangeLog gst-plugins-base1.0-1.14.5/ChangeLog --- gst-plugins-base1.0-1.14.4/ChangeLog 2018-10-02 21:58:07.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/ChangeLog 2019-05-29 16:36:54.000000000 +0000 @@ -1,3 +1,922 @@ +=== release 1.14.5 === + +2019-05-29 17:36:53 +0100 Tim-Philipp Müller + + * ChangeLog: + * NEWS: + * README: + * RELEASE: + * configure.ac: + * gst-plugins-base.doap: + * meson.build: + Release 1.14.5 + +2019-05-29 17:36:53 +0100 Tim-Philipp Müller + + * docs/plugins/inspect/plugin-adder.xml: + * docs/plugins/inspect/plugin-alsa.xml: + * docs/plugins/inspect/plugin-app.xml: + * docs/plugins/inspect/plugin-audioconvert.xml: + * docs/plugins/inspect/plugin-audiomixer.xml: + * docs/plugins/inspect/plugin-audiorate.xml: + * docs/plugins/inspect/plugin-audioresample.xml: + * docs/plugins/inspect/plugin-audiotestsrc.xml: + * docs/plugins/inspect/plugin-cdparanoia.xml: + * docs/plugins/inspect/plugin-encoding.xml: + * docs/plugins/inspect/plugin-gio.xml: + * docs/plugins/inspect/plugin-libvisual.xml: + * docs/plugins/inspect/plugin-ogg.xml: + * docs/plugins/inspect/plugin-opengl.xml: + * docs/plugins/inspect/plugin-opus.xml: + * docs/plugins/inspect/plugin-pango.xml: + * docs/plugins/inspect/plugin-pbtypes.xml: + * docs/plugins/inspect/plugin-playback.xml: + * docs/plugins/inspect/plugin-rawparse.xml: + * docs/plugins/inspect/plugin-subparse.xml: + * docs/plugins/inspect/plugin-tcp.xml: + * docs/plugins/inspect/plugin-theora.xml: + * docs/plugins/inspect/plugin-typefindfunctions.xml: + * docs/plugins/inspect/plugin-videoconvert.xml: + * docs/plugins/inspect/plugin-videorate.xml: + * docs/plugins/inspect/plugin-videoscale.xml: + * docs/plugins/inspect/plugin-videotestsrc.xml: + * docs/plugins/inspect/plugin-volume.xml: + * docs/plugins/inspect/plugin-vorbis.xml: + * docs/plugins/inspect/plugin-ximagesink.xml: + * docs/plugins/inspect/plugin-xvimagesink.xml: + Update docs + +2019-05-26 16:36:20 +0200 Tim-Philipp Müller + + * gst-libs/gst/gl/wayland/wayland_event_source.c: + Revert "gl/wayland: fix glib mainloop integration" + This reverts commit 85c9b7670839801c766a9d1432a5bbc40abcb718. + This caused regressions in master which have not been resolved + yet, so removing backport from 1.14 branch. + See !241 and #603. + Fixes #607 + +2018-11-05 05:35:12 +0000 Matthew Waters + + * .gitmodules: + Update common submodule location without /git/ directory + +2018-11-05 12:06:15 +0800 Haihao Xiang + + * .gitmodules: + * gst-plugins-base.doap: + Clone the code from gitlab + This fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/503 + +2019-04-26 09:44:07 +0300 Sebastian Dröge + + * gst-libs/gst/tag/gstid3tag.c: + id3tag: Correctly validate the year from v1 tags before passing to GstDateTime + By using strtoul(), invalid values will get mapped to MAXULONG and we + would have to check errno. They won't get mapped to 0. + To solve this, use the signed g_ascii_strtoll(). This will map errors to + 0 or G_MAXINT64 or G_MININT64, and the valid range for GstDateTime is > + 0 and <= 9999 so we can directly check for this here. + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/384 + +2019-04-23 17:10:47 +0300 Sebastian Dröge + + * gst-libs/gst/gl/egl/gsteglimage.c: + eglimage: Add compatibility define for DRM_FORMAT_NV24 + +2019-03-06 00:59:35 +1100 Matthew Waters + + * gst-libs/gst/gl/gstgloverlaycompositor.c: + gloverlaycompositor: Also free the texcoord GL buffer + Fix a typo that was attempting to free the position GL buffer twice + (without any consequences as there was a if (buffer) check) + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/561 + +2019-01-27 12:35:12 +0900 mrk501 + + * gst-libs/gst/audio/gstaudioringbuffer.c: + audioringbuffer: Fix wrong memcpy address when reordering channels + When using multichannel audio data and being needed to reorder channels, + audio data is not copied correctly because destination address of + memcpy is wrong. + For example, the following command + $ gst-launch-1.0 pulsesrc ! audio/x-raw,channels=6,format=S16LE ! filesink location=test.raw + will reproduce this issue if there is 6-ch audio input device. + This commit fixes that. + The detailed process of this issue is as follows: + 1. gst-launch-1.0 calls gst_pulsesrc_prepare (gst-plugins-good/ext/pulse/pulsesrc.c) + 1466 gst_pulsesrc_prepare (GstAudioSrc * asrc, GstAudioRingBufferSpec * spec) + 1467 { + (skip...) + 1480 { + 1481 GstAudioRingBufferSpec s = *spec; + 1482 const pa_channel_map *m; + 1483 + 1484 m = pa_stream_get_channel_map (pulsesrc->stream); + 1485 gst_pulse_channel_map_to_gst (m, &s); + 1486 gst_audio_ring_buffer_set_channel_positions (GST_AUDIO_BASE_SRC + 1487 (pulsesrc)->ringbuffer, s.info.position); + 1488 } + In my environment, after line 1485 is processed, position of spec and s are + spec->info.position[0] = 0 + spec->info.position[1] = 1 + spec->info.position[2] = 2 + spec->info.position[3] = 6 + spec->info.position[4] = 7 + spec->info.position[5] = 8 + s.info.position[0] = 0 + s.info.position[1] = 6 + s.info.position[2] = 2 + s.info.position[3] = 1 + s.info.position[4] = 7 + s.info.position[5] = 8 + The values of spec->info.positions equal + GST_AUDIO_BASE_SRC(pulsesrc)->ringbuffer->spec->info.positions. + 2. gst_audio_ring_buffer_set_channel_positions calls + gst_audio_get_channel_reorder_map. + 3. Arguments of gst_audio_get_channel_reorder_map are + from = s.info.position + to = GST_AUDIO_BASE_SRC(pulsesrc)->ringbuffer->spec->info.positions + At the end of this function, reorder_map is set to + reorder_map[0] = 0 + reorder_map[1] = 3 + reorder_map[2] = 2 + reorder_map[3] = 1 + reorder_map[4] = 4 + reorder_map[5] = 5 + 4. Go back to gst_audio_ring_buffer_set_channel_positions and + 2065 buf->need_reorder = TRUE; + is processed. + 5. Finally, in gst_audio_ring_buffer_read, + 1821 if (need_reorder) { + (skip...) + 1829 memcpy (data + i * bpf + reorder_map[j] * bps, ptr + j * bps, bps); + is processed and makes this issue. + +2018-12-14 14:07:47 +0100 Niels De Graef + + * gst-libs/gst/gl/wayland/gstgldisplay_wayland.c: + gl/wayland: destroy wl_shell instance at finalize + +2019-04-23 14:52:28 +0300 Sebastian Dröge + + * gst-libs/gst/audio/gstaudioaggregator.h: + audioaggregator: Add Since: 1.14 markers to all public structs + +2019-01-23 12:50:40 +0100 Michael Tretter + + * gst-libs/gst/gl/gstglupload.c: + glupload: prevent segfault when updating caps + When the glupload element renegotiates the caps, set_caps will reset the + method_impl to NULL, but the method will be kept. transform_caps tries + to use the method_impl to transform the caps, because a method is set, + but will segfault. + +2019-03-25 13:49:39 +0100 Guillaume Desmottes + + * gst-libs/gst/video/video-info.c: + video-info: explain in logs why colorimetry are rejected + It wasn't clear from the logs why some colorimetry format were rejected. + +2019-04-01 09:53:19 -0400 Aaron Boxer + + * tests/check/libs/discoverer.c: + discoverer: fix a race bug in disco test + +2019-04-01 11:10:21 -0400 Aaron Boxer + + * gst-libs/gst/pbutils/gstdiscoverer.c: + discoverer: async_timeout_cb: don't clean up timeout_source + discoverer_collect() already does this. So, the second + unref triggers an assert. + +2019-03-24 20:45:03 +0000 Tim-Philipp Müller + + * gst/playback/gstdecodebin2.c: + decodebin2: fix pad leak and problem with GWeakRef code + Follow-up to !160 and commit 6a99ad2c. + Firstly, don't leak the sinkpad. g_weak_ref_get() returns + a strong reference (unless it returns NULL), so that must + be unrefed, as detected by the playbin-complex and + discoverer unit tests. + Next, if we do that we get invalid memory access when the + final pad ref is dropped a few lines below after the + request pad is released. The reason for this is that + GWeakRefs are not movable once they're in use, because + their address will be stored inside the object. In this + case the GWeakRef was embedded inside the GstDemuxerPad + struct which in turn was embedded inside the GArray data + section, and when the GArray gets resized, the structs + move. Just KISS and use a list with individual allocations + for each DemuxerPad instead. + +2019-03-15 18:21:37 -0300 Thibault Saunier + + * gst/playback/gstdecodebin2.c: + decodebin2: Make sure to remove probes when free GstDecodeGroup + Nothing guarantees that when we free a DecodeGroup the demuxer pads + have already been freed and thus the probes have been removed meaning + that in some case it is possible that the pad probes still get called + *after* the GstDecodeGroup is freed, leading to segfaults (as we use + the freed group in that function). + Sample stack trace when that happens: + #0 sink_pad_query_probe (pad=pad@entry=0x7fe654027180, info=info@entry=0x7ffe433bf270, user_data=0x7fe668076f80) at ../subprojects/gst-plugins-base/gst/playback/gstdecodebin2.c:3004 + 3004 if (last_group->reqpads) { + [Current thread is 1 (Thread 0x7fe69d8a0880 (LWP 24366))] + Missing separate debuginfos, use: dnf debuginfo-install elfutils-libelf-0.176-1.fc29.x86_64 elfutils-libs-0.176-1.fc29.x86_64 libXcursor-1.1.15-4.fc29.x86_64 libXi-1.7.9-8.fc29.x86_64 libgpg-error-1.33-1.fc29.x86_64 libvpx-1.7.0-7.fc29.x86_64 soundtouch-2.1.1-1.fc29.x86_64 + (gdb) bt + #0 0x00007fe68f7f3430 in sink_pad_query_probe (pad=pad@entry=0x7fe654027180 [GstMultiQueuePad], info=info@entry=0x7ffe433bf270, user_data=0x7fe668076f80) at ../subprojects/gst-plugins-base/gst/playback/gstdecodebin2.c:3004 + #1 0x00007fe69e79815e in probe_hook_marshal (hook=0x7fe63003a840, data=0x7ffe433bf160) at ../subprojects/gstreamer/gst/gstpad.c:3565 + #2 0x00007fe69e5774cc in g_hook_list_marshal (hook_list=hook_list@entry=0x7fe654027218, may_recurse=may_recurse@entry=1, marshaller=marshaller@entry=0x7fe69e797d40 , data=data@entry=0x7ffe433bf160) at ghook.c:672 + #3 0x00007fe69e797823 in do_probe_callbacks (pad=pad@entry=0x7fe654027180 [GstMultiQueuePad], info=info@entry=0x7ffe433bf270, defaultval=defaultval@entry=GST_FLOW_OK) at ../subprojects/gstreamer/gst/gstpad.c:3727 + #4 0x00007fe69e7a25fd in gst_pad_peer_query (pad=pad@entry=0x7fe654027180 [GstMultiQueuePad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4194 + #5 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0x7fe654027180 [GstMultiQueuePad], data=data@entry=0x7ffe433bf3c0) at ../subprojects/gstreamer/gst/gstpad.c:3376 + #6 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x7fe6540273d0 [GstPad], forward=forward@entry=0x7fe69e7a2b70 , user_data=user_data@entry=0x7ffe433bf3c0) at ../subprojects/gstreamer/gst/gstpad.c:3008 + #7 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0x7fe6540273d0 [GstPad], parent=, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447 + #8 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0x7fe6540273d0 [GstPad], parent=0x7fe61c035e00 [GstMultiQueue], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378 + #9 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x7fe6540273d0 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071 + #10 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x7fe648019620 [GstPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203 + #11 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0x7fe648019620 [GstPad], data=data@entry=0x7ffe433bf6f0) at ../subprojects/gstreamer/gst/gstpad.c:3376 + #12 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x7fe62000a9b0 [GstPad], forward=forward@entry=0x7fe69e7a2b70 , user_data=user_data@entry=0x7ffe433bf6f0) at ../subprojects/gstreamer/gst/gstpad.c:3008 + #13 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=pad@entry=0x7fe62000a9b0 [GstPad], parent=, query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447 + #14 0x00007fe69e0594d6 in gst_video_decoder_src_query_default (dec=0x7fe63001e290 [GstVP8Dec], query=0x7fe67803f140) at ../subprojects/gst-plugins-base/gst-libs/gst/video/gstvideodecoder.c:1684 + #15 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0x7fe62000a9b0 [GstPad], parent=0x7fe63001e290 [GstVP8Dec], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378 + #16 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x7fe62000a9b0 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071 + #17 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x7fe630054300 [GstProxyPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203 + #18 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0x7fe630054300 [GstProxyPad], data=data@entry=0x7ffe433bfa80) at ../subprojects/gstreamer/gst/gstpad.c:3376 + #19 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x7fe660047810 [GstDecodePad], forward=forward@entry=0x7fe69e7a2b70 , user_data=user_data@entry=0x7ffe433bfa80) at ../subprojects/gstreamer/gst/gstpad.c:3008 + #20 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0x7fe660047810 [GstDecodePad], parent=, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447 + #21 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x7fe660047810 [GstDecodePad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071 + #22 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x7fe654076cf0 [GstProxyPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203 + #23 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0x7fe654076cf0 [GstProxyPad], data=data@entry=0x7ffe433bfce0) at ../subprojects/gstreamer/gst/gstpad.c:3376 + #24 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x7fe668037720 [GstGhostPad], forward=forward@entry=0x7fe69e7a2b70 , user_data=user_data@entry=0x7ffe433bfce0) at ../subprojects/gstreamer/gst/gstpad.c:3008 + #25 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0x7fe668037720 [GstGhostPad], parent=, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447 + #26 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x7fe668037720 [GstGhostPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071 + #27 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0xa762c0 [GstPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203 + #28 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0xa762c0 [GstPad], data=data@entry=0x7ffe433bff40) at ../subprojects/gstreamer/gst/gstpad.c:3376 + #29 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0xa76510 [GstPad], forward=forward@entry=0x7fe69e7a2b70 , user_data=user_data@entry=0x7ffe433bff40) at ../subprojects/gstreamer/gst/gstpad.c:3008 + #30 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=pad@entry=0xa76510 [GstPad], parent=parent@entry=0x7fe67002b240 [GstQueue], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447 + #31 0x00007fe68f7bd321 in gst_queue_handle_src_query (pad=0xa76510 [GstPad], parent=0x7fe67002b240 [GstQueue], query=0x7fe67803f140) at ../subprojects/gstreamer/plugins/elements/gstqueue.c:1619 + #32 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0xa76510 [GstPad], parent=0x7fe67002b240 [GstQueue], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378 + #33 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0xa76510 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071 + #34 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0xa770a0 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203 + #35 0x00007fe69e118c6b in gst_base_transform_default_query (trans=0xa6f4d0 [GstVideoConvert], direction=GST_PAD_SRC, query=0x7fe67803f140) at ../subprojects/gstreamer/libs/gst/base/gstbasetransform.c:1557 + #36 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0xa772f0 [GstPad], parent=0xa6f4d0 [GstVideoConvert], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378 + #37 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0xa772f0 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071 + #38 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0xa779e0 [GstPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203 + #39 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0xa779e0 [GstPad], data=data@entry=0x7ffe433c0550) at ../subprojects/gstreamer/gst/gstpad.c:3376 + #40 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0xa77c30 [GstPad], forward=forward@entry=0x7fe69e7a2b70 , user_data=user_data@entry=0x7ffe433c0550) at ../subprojects/gstreamer/gst/gstpad.c:3008 + #41 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=pad@entry=0xa77c30 [GstPad], parent=parent@entry=0xa7f800 [GstDeinterlace], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447 + #42 0x00007fe68c0449a7 in gst_deinterlace_src_query (pad=0xa77c30 [GstPad], parent=0xa7f800 [GstDeinterlace], query=0x7fe67803f140) at ../subprojects/gst-plugins-good/gst/deinterlace/gstdeinterlace.c:3265 + #43 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0xa77c30 [GstPad], parent=0xa7f800 [GstDeinterlace], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378 + #44 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0xa77c30 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071 + #45 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0xa76760 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203 + #46 0x00007fe69e118c6b in gst_base_transform_default_query (trans=0xa46860 [GstFramePositioner], direction=GST_PAD_SRC, query=0x7fe67803f140) at ../subprojects/gstreamer/libs/gst/base/gstbasetransform.c:1557 + #47 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0xa769b0 [GstPad], parent=0xa46860 [GstFramePositioner], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378 + #48 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0xa769b0 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071 + #49 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0xa76c00 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203 + #50 0x00007fe69e118c6b in gst_base_transform_default_query (trans=0xa7eb20 [GstVideoScale], direction=GST_PAD_SRC, query=0x7fe67803f140) at ../subprojects/gstreamer/libs/gst/base/gstbasetransform.c:1557 + #51 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0xa76e50 [GstPad], parent=0xa7eb20 [GstVideoScale], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378 + #52 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0xa76e50 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071 + #53 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0xa77540 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203 + #54 0x00007fe69e118c6b in gst_base_transform_default_query (trans=0xa6f980 [GstVideoRate], direction=GST_PAD_SRC, query=0x7fe67803f140) at ../subprojects/gstreamer/libs/gst/base/gstbasetransform.c:1557 + #55 0x00007fe68f7369f0 in gst_video_rate_query (trans=0xa6f980 [GstVideoRate], direction=GST_PAD_SRC, query=0x7fe67803f140) at ../subprojects/gst-plugins-base/gst/videorate/gstvideorate.c:1115 + #56 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0xa77790 [GstPad], parent=0xa6f980 [GstVideoRate], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378 + #57 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0xa77790 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071 + #58 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0xa82120 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203 + #59 0x00007fe69e118c6b in gst_base_transform_default_query (trans=0xa172a0 [GstCapsFilter], direction=GST_PAD_SRC, query=0x7fe67803f140) at ../subprojects/gstreamer/libs/gst/base/gstbasetransform.c:1557 + #60 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0xa82370 [GstPad], parent=0xa172a0 [GstCapsFilter], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378 + #61 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0xa82370 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071 + #62 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0xa44c70 [GstProxyPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203 + #63 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0xa44c70 [GstProxyPad], data=data@entry=0x7ffe433c13a0) at ../subprojects/gstreamer/gst/gstpad.c:3376 + #64 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x7fe6700271e0 [GstGhostPad], forward=forward@entry=0x7fe69e7a2b70 , user_data=user_data@entry=0x7ffe433c13a0) at ../subprojects/gstreamer/gst/gstpad.c:3008 + #65 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0x7fe6700271e0 [GstGhostPad], parent=, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447 + #66 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x7fe6700271e0 [GstGhostPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071 + #67 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0xa447b0 [GstProxyPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203 + #68 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0xa447b0 [GstProxyPad], data=data@entry=0x7ffe433c1600) at ../subprojects/gstreamer/gst/gstpad.c:3376 + #69 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x7fe670026f60 [GstGhostPad], forward=forward@entry=0x7fe69e7a2b70 , user_data=user_data@entry=0x7ffe433c1600) at ../subprojects/gstreamer/gst/gstpad.c:3008 + #70 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0x7fe670026f60 [GstGhostPad], parent=, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447 + #71 0x00007fe68f54bb18 in ghostpad_query_function (ghostpad=0x7fe670026f60 [GstGhostPad], parent=0xa2a870 [NleSource], query=0x7fe67803f140) at ../subprojects/gst-editing-services/plugins/nle/nleghostpad.c:556 + #72 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x7fe670026f60 [GstGhostPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071 + #73 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x7fe61c00ab30 [GstGhostPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203 + #74 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0x7fe61c00ab30 [GstGhostPad], data=data@entry=0x7ffe433c18c0) at ../subprojects/gstreamer/gst/gstpad.c:3376 + #75 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x7fe6680ccab0 [GstProxyPad], forward=forward@entry=0x7fe69e7a2b70 , user_data=user_data@entry=0x7ffe433c18c0) at ../subprojects/gstreamer/gst/gstpad.c:3008 + #76 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0x7fe6680ccab0 [GstProxyPad], parent=, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447 + #77 0x00007fe68f54b6a9 in internalpad_query_function (internal=0x7fe6680ccab0 [GstProxyPad], parent=0x7fe61c00ab30 [GstGhostPad], query=0x7fe67803f140) at ../subprojects/gst-editing-services/plugins/nle/nleghostpad.c:448 + #78 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x7fe6680ccab0 [GstProxyPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071 + #79 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x7fe66800e510 [GESSmartMixerPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203 + #80 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0x7fe66800e510 [GESSmartMixerPad], data=data@entry=0x7ffe433c1b80) at ../subprojects/gstreamer/gst/gstpad.c:3376 + #81 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x7fe6680cc5f0 [GstProxyPad], forward=forward@entry=0x7fe69e7a2b70 , user_data=user_data@entry=0x7ffe433c1b80) at ../subprojects/gstreamer/gst/gstpad.c:3008 + #82 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0x7fe6680cc5f0 [GstProxyPad], parent=, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447 + #83 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x7fe6680cc5f0 [GstProxyPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071 + #84 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x7fe66805ee60 [GstGhostPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203 + #85 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0x7fe66805ee60 [GstGhostPad], data=data@entry=0x7ffe433c1de0) at ../subprojects/gstreamer/gst/gstpad.c:3376 + #86 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x7fe654077d90 [GstProxyPad], forward=forward@entry=0x7fe69e7a2b70 , user_data=user_data@entry=0x7ffe433c1de0) at ../subprojects/gstreamer/gst/gstpad.c:3008 + #87 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0x7fe654077d90 [GstProxyPad], parent=, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447 + #88 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x7fe654077d90 [GstProxyPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071 + #89 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x7fe654027ac0 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203 + #90 0x00007fe69e118c6b in gst_base_transform_default_query (trans=0x7fe6680c71d0 [GstVideoConvert], direction=GST_PAD_SRC, query=0x7fe67803f140) at ../subprojects/gstreamer/libs/gst/base/gstbasetransform.c:1557 + #91 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0x7fe654026a90 [GstPad], parent=0x7fe6680c71d0 [GstVideoConvert], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378 + #92 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x7fe654026a90 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071 + #93 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x7fe6680cc850 [GstProxyPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203 + #94 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0x7fe6680cc850 [GstProxyPad], data=data@entry=0x7ffe433c22d0) at ../subprojects/gstreamer/gst/gstpad.c:3376 + #95 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x7fe6680374a0 [GstGhostPad], forward=forward@entry=0x7fe69e7a2b70 , user_data=user_data@entry=0x7ffe433c22d0) at ../subprojects/gstreamer/gst/gstpad.c:3008 + #96 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0x7fe6680374a0 [GstGhostPad], parent=, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447 + #97 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x7fe6680374a0 [GstGhostPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071 + #98 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x7fe6680c7e20 [GstCompositorPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203 + #99 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0x7fe6680c7e20 [GstCompositorPad], data=data@entry=0x7ffe433c2530) at ../subprojects/gstreamer/gst/gstpad.c:3376 + #100 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0xa24170 [GstAggregatorPad], forward=forward@entry=0x7fe69e7a2b70 , user_data=user_data@entry=0x7ffe433c2530) at ../subprojects/gstreamer/gst/gstpad.c:3008 + #101 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0xa24170 [GstAggregatorPad], parent=, query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447 + #102 0x00007fe69e0e5512 in gst_aggregator_default_src_query (self=0xa21e90 [GstCompositor], query=0x7fe67803f140) at ../subprojects/gstreamer/libs/gst/base/gstaggregator.c:1909 + #103 0x00007fe69e0547be in gst_video_aggregator_src_query (agg=0xa21e90 [GstCompositor], query=0x7fe67803f140) at ../subprojects/gst-plugins-base/gst-libs/gst/video/gstvideoaggregator.c:2022 + #104 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0xa24170 [GstAggregatorPad], parent=0xa21e90 [GstCompositor], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378 + #105 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0xa24170 [GstAggregatorPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071 + #106 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x9aac10 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203 + #107 0x00007fe69e118c6b in gst_base_transform_default_query (trans=0xa28280 [GstIdentity], direction=GST_PAD_SRC, query=0x7fe67803f140) at ../subprojects/gstreamer/libs/gst/base/gstbasetransform.c:1557 + #108 0x00007fe68f79dfc4 in gst_identity_query (base=0xa28280 [GstIdentity], direction=GST_PAD_SRC, query=0x7fe67803f140) at ../subprojects/gstreamer/plugins/elements/gstidentity.c:957 + #109 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0x9aae60 [GstPad], parent=0xa28280 [GstIdentity], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378 + #110 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x9aae60 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071 + #111 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x99cc40 [GstProxyPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203 + #112 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0x99cc40 [GstProxyPad], data=data@entry=0x7ffe433c2c00) at ../subprojects/gstreamer/gst/gstpad.c:3376 + #113 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x9aee40 [GstGhostPad], forward=forward@entry=0x7fe69e7a2b70 , user_data=user_data@entry=0x7ffe433c2c00) at ../subprojects/gstreamer/gst/gstpad.c:3008 + #114 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0x9aee40 [GstGhostPad], parent=, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447 + #115 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x9aee40 [GstGhostPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071 + #116 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x99d100 [GstProxyPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203 + #117 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0x99d100 [GstProxyPad], data=data@entry=0x7ffe433c2e60) at ../subprojects/gstreamer/gst/gstpad.c:3376 + #118 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x9af0c0 [GstGhostPad], forward=forward@entry=0x7fe69e7a2b70 , user_data=user_data@entry=0x7ffe433c2e60) at ../subprojects/gstreamer/gst/gstpad.c:3008 + #119 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0x9af0c0 [GstGhostPad], parent=, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447 + #120 0x00007fe68f54bb18 in ghostpad_query_function (ghostpad=0x9af0c0 [GstGhostPad], parent=0x99ce70 [NleOperation], query=0x7fe67803f140) at ../subprojects/gst-editing-services/plugins/nle/nleghostpad.c:556 + #121 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x9af0c0 [GstGhostPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071 + #122 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x99c2c0 [GstProxyPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203 + #123 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0x99c2c0 [GstProxyPad], data=data@entry=0x7ffe433c3120) at ../subprojects/gstreamer/gst/gstpad.c:3376 + #124 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x9ae1c0 [GstGhostPad], forward=forward@entry=0x7fe69e7a2b70 , user_data=user_data@entry=0x7ffe433c3120) at ../subprojects/gstreamer/gst/gstpad.c:3008 + #125 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0x9ae1c0 [GstGhostPad], parent=, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447 + #126 0x00007fe68f54bb18 in ghostpad_query_function (ghostpad=0x9ae1c0 [GstGhostPad], parent=0xa16290 [NleComposition], query=0x7fe67803f140) at ../subprojects/gst-editing-services/plugins/nle/nleghostpad.c:556 + #127 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x9ae1c0 [GstGhostPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071 + #128 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x9aa080 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203 + #129 0x00007fe69e118c6b in gst_base_transform_default_query (trans=0xa165a0 [GstCapsFilter], direction=GST_PAD_SRC, query=0x7fe67803f140) at ../subprojects/gstreamer/libs/gst/base/gstbasetransform.c:1557 + #130 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0x9aa9c0 [GstPad], parent=0xa165a0 [GstCapsFilter], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378 + #131 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x9aa9c0 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071 + #132 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x99c9e0 [GstProxyPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203 + #133 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0x99c9e0 [GstProxyPad], data=data@entry=0x7ffe433c3670) at ../subprojects/gstreamer/gst/gstpad.c:3376 + #134 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x9aebc0 [GstGhostPad], forward=forward@entry=0x7fe69e7a2b70 , user_data=user_data@entry=0x7ffe433c3670) at ../subprojects/gstreamer/gst/gstpad.c:3008 + #135 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0x9aebc0 [GstGhostPad], parent=, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447 + #136 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x9aebc0 [GstGhostPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071 + #137 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x99d820 [GstProxyPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203 + #138 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0x99d820 [GstProxyPad], data=data@entry=0x7ffe433c38d0) at ../subprojects/gstreamer/gst/gstpad.c:3376 + #139 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x9af840 [GstGhostPad], forward=forward@entry=0x7fe69e7a2b70 , user_data=user_data@entry=0x7ffe433c38d0) at ../subprojects/gstreamer/gst/gstpad.c:3008 + #140 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0x9af840 [GstGhostPad], parent=, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447 + #141 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x9af840 [GstGhostPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071 + #142 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x7fe6780247d0 [GstPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203 + #143 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0x7fe6780247d0 [GstPad], data=data@entry=0x7ffe433c3b30) at ../subprojects/gstreamer/gst/gstpad.c:3376 + #144 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x7fe684032780 [GstTeePad], forward=forward@entry=0x7fe69e7a2b70 , user_data=user_data@entry=0x7ffe433c3b30) at ../subprojects/gstreamer/gst/gstpad.c:3008 + #145 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0x7fe684032780 [GstTeePad], parent=, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447 + #146 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0x7fe684032780 [GstTeePad], parent=0x7383f0 [GstTee], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378 + #147 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x7fe684032780 [GstTeePad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071 + #148 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x7fe670026060 [GstGhostPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203 + #149 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0x7fe670026060 [GstGhostPad], data=data@entry=0x7ffe433c3e60) at ../subprojects/gstreamer/gst/gstpad.c:3376 + #150 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x99dce0 [GstProxyPad], forward=forward@entry=0x7fe69e7a2b70 , user_data=user_data@entry=0x7ffe433c3e60) at ../subprojects/gstreamer/gst/gstpad.c:3008 + #151 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0x99dce0 [GstProxyPad], parent=, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447 + #152 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x99dce0 [GstProxyPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071 + #153 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0xa8d6b0 [GstPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203 + #154 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0xa8d6b0 [GstPad], data=data@entry=0x7ffe433c40c0) at ../subprojects/gstreamer/gst/gstpad.c:3376 + #155 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0xa8d900 [GstPad], forward=forward@entry=0x7fe69e7a2b70 , user_data=user_data@entry=0x7ffe433c40c0) at ../subprojects/gstreamer/gst/gstpad.c:3008 + #156 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0xa8d900 [GstPad], parent=, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447 + #157 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0xa8d900 [GstPad], parent=0x9f6060 [GstStreamSynchronizer], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378 + #158 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0xa8d900 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071 + #159 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0xad5a80 [GstGhostPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203 + #160 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0xad5a80 [GstGhostPad], data=data@entry=0x7ffe433c43f0) at ../subprojects/gstreamer/gst/gstpad.c:3376 + #161 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x7fe6680275b0 [GstProxyPad], forward=forward@entry=0x7fe69e7a2b70 , user_data=user_data@entry=0x7ffe433c43f0) at ../subprojects/gstreamer/gst/gstpad.c:3008 + #162 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0x7fe6680275b0 [GstProxyPad], parent=, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447 + #163 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x7fe6680275b0 [GstProxyPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071 + #164 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0xa39580 [GstPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203 + #165 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0xa39580 [GstPad], data=data@entry=0x7ffe433c4650) at ../subprojects/gstreamer/gst/gstpad.c:3376 + #166 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x7fe6780240e0 [GstPad], forward=forward@entry=0x7fe69e7a2b70 , user_data=user_data@entry=0x7ffe433c4650) at ../subprojects/gstreamer/gst/gstpad.c:3008 + #167 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=pad@entry=0x7fe6780240e0 [GstPad], parent=parent@entry=0x7fe66800e7b0 [GstQueue], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447 + #168 0x00007fe68f7bd321 in gst_queue_handle_src_query (pad=0x7fe6780240e0 [GstPad], parent=0x7fe66800e7b0 [GstQueue], query=0x7fe67803f140) at ../subprojects/gstreamer/plugins/elements/gstqueue.c:1619 + #169 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0x7fe6780240e0 [GstPad], parent=0x7fe66800e7b0 [GstQueue], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378 + #170 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x7fe6780240e0 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071 + #171 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0xad5580 [GstGhostPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203 + #172 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0xad5580 [GstGhostPad], data=data@entry=0x7ffe433c49d0) at ../subprojects/gstreamer/gst/gstpad.c:3376 + #173 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x7fe6680270f0 [GstProxyPad], forward=forward@entry=0x7fe69e7a2b70 , user_data=user_data@entry=0x7ffe433c49d0) at ../subprojects/gstreamer/gst/gstpad.c:3008 + #174 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0x7fe6680270f0 [GstProxyPad], parent=, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447 + #175 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x7fe6680270f0 [GstProxyPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071 + #176 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x7fe6780255b0 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203 + #177 0x00007fe69e118c6b in gst_base_transform_default_query (trans=0x7fe674032fa0 [GstVideoConvert], direction=GST_PAD_SRC, query=0x7fe67803f140) at ../subprojects/gstreamer/libs/gst/base/gstbasetransform.c:1557 + #178 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0x7fe678025a50 [GstPad], parent=0x7fe674032fa0 [GstVideoConvert], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378 + #179 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x7fe678025a50 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071 + #180 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x7fe678025800 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203 + #181 0x00007fe69e118c6b in gst_base_transform_default_query (trans=0x7fe6740346d0 [GstVideoScale], direction=GST_PAD_SRC, query=0x7fe67803f140) at ../subprojects/gstreamer/libs/gst/base/gstbasetransform.c:1557 + #182 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0x7fe678025360 [GstPad], parent=0x7fe6740346d0 [GstVideoScale], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378 + #183 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x7fe678025360 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071 + #184 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x7fe678024580 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203 + #185 0x00007fe69e118c6b in gst_base_transform_default_query (trans=0x7fe674011950 [GstVideoBalance], direction=GST_PAD_SRC, query=0x7fe67803f140) at ../subprojects/gstreamer/libs/gst/base/gstbasetransform.c:1557 + #186 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0x7fe678025110 [GstPad], parent=0x7fe674011950 [GstVideoBalance], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378 + #187 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x7fe678025110 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071 + #188 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0xa8d460 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203 + #189 0x00007fe69e118c6b in gst_base_transform_default_query (trans=0x7fe674037330 [GstVideoConvert], direction=GST_PAD_SRC, query=0x7fe67803f140) at ../subprojects/gstreamer/libs/gst/base/gstbasetransform.c:1557 + #190 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0x7fe678024ec0 [GstPad], parent=0x7fe674037330 [GstVideoConvert], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378 + #191 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x7fe678024ec0 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071 + #192 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x7fe668027350 [GstProxyPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203 + #193 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0x7fe668027350 [GstProxyPad], data=data@entry=0x7ffe433c5670) at ../subprojects/gstreamer/gst/gstpad.c:3376 + #194 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0xad5800 [GstGhostPad], forward=forward@entry=0x7fe69e7a2b70 , user_data=user_data@entry=0x7ffe433c5670) at ../subprojects/gstreamer/gst/gstpad.c:3008 + #195 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0xad5800 [GstGhostPad], parent=, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447 + #196 0x00007fe68f84ad95 in gst_play_sink_convert_bin_query (pad=0xad5800 [GstGhostPad], parent=, query=0x7fe67803f140) at ../subprojects/gst-plugins-base/gst/playback/gstplaysinkconvertbin.c:525 + #197 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0xad5800 [GstGhostPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071 + #198 0x00007fe69e7a263b in gst_pad_peer_query (pad=0xa380b0 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203 + #199 0x00007fe69e10564c in default_element_query (element=0xa369f0 [GstFakeSink], query=0x7fe67803f140) at ../subprojects/gstreamer/libs/gst/base/gstbasesink.c:5034 + #200 0x00007fe69e77f8f0 in gst_element_query (element=0xa369f0 [GstFakeSink], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstelement.c:1959 + #201 0x00007fe69e7584f7 in bin_query_generic_fold (vitem=, ret=0x7ffe433c59d0, fold=0x7ffe433c5a60) at ../subprojects/gstreamer/gst/gstbin.c:4232 + #202 0x00007fe69e78ffcc in gst_iterator_fold (it=it@entry=0x744820, func=func@entry=0x7fe69e758460 , ret=ret@entry=0x7ffe433c59d0, user_data=user_data@entry=0x7ffe433c5a60) at ../subprojects/gstreamer/gst/gstiterator.c:617 + #203 0x00007fe69e758b82 in bin_iterate_fold (bin=bin@entry=0xa19d80 [GstBin], iter=iter@entry=0x744820, fold_init=fold_init@entry=0x0, fold_done=fold_done@entry=0x0, fold_func=fold_func@entry=0x7fe69e758460 , fold_data=fold_data@entry=0x7ffe433c5a60, default_return=0) at ../subprojects/gstreamer/gst/gstbin.c:4259 + #204 0x00007fe69e75e776 in gst_bin_query (element=0xa19d80 [GstBin], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstbin.c:4379 + #205 0x00007fe69e77f8f0 in gst_element_query (element=0xa19d80 [GstBin], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstelement.c:1959 + #206 0x00007fe69e7584f7 in bin_query_generic_fold (vitem=, ret=0x7ffe433c5ba0, fold=0x7ffe433c5c30) at ../subprojects/gstreamer/gst/gstbin.c:4232 + #207 0x00007fe69e78ffcc in gst_iterator_fold (it=it@entry=0x744cf0, func=func@entry=0x7fe69e758460 , ret=ret@entry=0x7ffe433c5ba0, user_data=user_data@entry=0x7ffe433c5c30) at ../subprojects/gstreamer/gst/gstiterator.c:617 + #208 0x00007fe69e758b82 in bin_iterate_fold (bin=bin@entry=0x9f42e0 [GstPlaySink], iter=iter@entry=0x744cf0, fold_init=fold_init@entry=0x0, fold_done=fold_done@entry=0x0, fold_func=fold_func@entry=0x7fe69e758460 , fold_data=fold_data@entry=0x7ffe433c5c30, default_return=0) at ../subprojects/gstreamer/gst/gstbin.c:4259 + #209 0x00007fe69e75e776 in gst_bin_query (element=0x9f42e0 [GstPlaySink], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstbin.c:4379 + #210 0x00007fe69e77f8f0 in gst_element_query (element=0x9f42e0 [GstPlaySink], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstelement.c:1959 + #211 0x00007fe69e7584f7 in bin_query_generic_fold (vitem=, ret=0x7ffe433c5d70, fold=0x7ffe433c5e00) at ../subprojects/gstreamer/gst/gstbin.c:4232 + #212 0x00007fe69e78ffcc in gst_iterator_fold (it=it@entry=0x7448d0, func=func@entry=0x7fe69e758460 , ret=ret@entry=0x7ffe433c5d70, user_data=user_data@entry=0x7ffe433c5e00) at ../subprojects/gstreamer/gst/gstiterator.c:617 + #213 0x00007fe69e758b82 in bin_iterate_fold (bin=bin@entry=0x9ee0a0 [GESPipeline], iter=iter@entry=0x7448d0, fold_init=fold_init@entry=0x0, fold_done=fold_done@entry=0x0, fold_func=fold_func@entry=0x7fe69e758460 , fold_data=fold_data@entry=0x7ffe433c5e00, default_return=0) at ../subprojects/gstreamer/gst/gstbin.c:4259 + #214 0x00007fe69e75e776 in gst_bin_query (element=0x9ee0a0 [GESPipeline], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstbin.c:4379 + #215 0x00007fe69e77f8f0 in gst_element_query (element=0x9ee0a0 [GESPipeline], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstelement.c:1959 + #216 0x00007fe69e6b5d01 in _check_position (rate=0x7ffe433c5ee0, position=0x7ffe433c5ee8, act=0xaa82a0, scenario=0x9fe250 [GstValidateScenario]) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:1658 + #217 0x00007fe69e6b5d01 in execute_next_action (scenario=scenario@entry=0x9fe250 [GstValidateScenario]) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:2107 + #218 0x00007fe69e587b31 in g_timeout_dispatch (source=0xaa7da0, callback=0x7fe69e6b5830 , user_data=0x9fe250) at gmain.c:4667 + #219 0x00007fe69e58706d in g_main_dispatch (context=0x71bc50) at gmain.c:3182 + #220 0x00007fe69e58706d in g_main_context_dispatch (context=context@entry=0x71bc50) at gmain.c:3847 + #221 0x00007fe69e587438 in g_main_context_iterate (context=context@entry=0x71bc50, block=block@entry=1, dispatch=dispatch@entry=1, self=) at gmain.c:3920 + #222 0x00007fe69e5874d0 in g_main_context_iteration (context=context@entry=0x71bc50, may_block=may_block@entry=1) at gmain.c:3981 + #223 0x00007fe69e3dfd25 in g_application_run (application=0x71c1f0 [GESLauncher], argc=argc@entry=6, argv=argv@entry=0x7ffe433c61c8) at gapplication.c:2470 + #224 0x000000000040393c in main (argc=6, argv=0x7ffe433c61c8) at ../subprojects/gst-editing-services/tools/ges-launch.c:88 + (gdb) p last_group + $1 = (GstDecodeGroup *) 0x52c + (gdb) p group + $2 = (GstDecodeGroup *) 0x7fe668076f80 + (gdb) p group->parent + $3 = (GstDecodeChain *) 0x7fe6680774c0 + (gdb) p group->parent->next_group + There is no member named next_group. + (gdb) group->parent->next_groups + Undefined command: "group->parent->next_groups". Try "help". + (gdb) p group->parent->next_groups + $4 = 0x7fe660004280 = {0x528, 0x529, 0x52a, 0x52b, 0x52c} + (gdb) p *group->parent->next_groups + $5 = {data=0x528, next=0x7fe668077500, prev=0x7fe64c04ab80} + (gdb) p *group + $6 = {dbin = 0x52a, parent = 0x7fe6680774c0, multiqueue = 0x7fe668077500, overrunsig = 167503724544, overrun = 1, no_more_pads = 0, drained = 1745725152, children = 0xa19220 = {0x73d400, + (gdb) Quit + (gdb) + +2019-03-21 17:50:34 +0100 Josep Torra + + * gst-libs/gst/rtp/gstrtcpbuffer.c: + rtcpbuffer: test for len instead of type + The function rtcp_packet_min_length() returns a length for each known type + and -1 for unknown types. This change fixes the test accordingly and silences + the following warning. + gstrtcpbuffer.c:567:12: error: comparison of constant -1 with expression of type 'GstRTCPType' is always false + [-Werror,-Wtautological-constant-out-of-range-compare] + if (type == -1) + +2019-03-15 17:38:58 +0100 Antonio Ospite + + * gst-libs/gst/rtp/gstrtpbasepayload.c: + rtpbasepayload: print list size in log output instead of -1 + It is weird to see "Preparing to push packet with size 4294967295" in + the logs, so print the list length in case of a buffer list. + +2019-03-14 10:12:27 +0100 Tobias Ronge + + * gst-libs/gst/rtsp/gstrtspconnection.c: + gstrtspconnection: Security loophole making heap overflow + The former code allowed an attacker to create a heap overflow by + sending a longer than allowed session id in a response and including a + semicolon to change the maximum length. With this change, the parser + will never go beyond 512 bytes. + +2019-03-08 19:52:25 +0100 Lucas Stach + + * gst-libs/gst/gl/wayland/wayland_event_source.c: + gl/wayland: fix glib mainloop integration + Implement the prepare and check functions according to the + documentation by returning TRUE when events should be dispatched + via the dispatch function. + As wl_display_read_events never blocks we can call it unconditionally + without looking at the poll status. + This simplifies the implementation and gets rid of a race where the + mainloop could get blocked due to nobody actually reading the events + from the wayland connection. + +2019-03-06 09:14:04 +0000 Tim-Philipp Müller + + * ext/vorbis/gstvorbisdec.c: + vorbisdec: fix leak of header buffers + handle_header_buffer() does no take ownership of + the buffer passed. + Fixes leaks in various unit tests. + +2019-03-05 14:32:37 +0100 Marc Leeman + + * gst-libs/gst/rtp/gstrtppayloads.c: + rtp: add H265 to lookup for media info + +2019-03-04 17:05:04 -0500 Nicolas Dufresne + + * gst-libs/gst/video/videooverlay.c: + videooverlay: Fix render-rectangle range + The range was set to -1 to MAXINT, but the x,y value can be negative. + Relax the restriction so that we can now have negative coordinates. + +2019-02-09 17:21:13 +0000 James Cowgill + + * gst-libs/gst/video/video-format.c: + video-format: Fix GBRA_10/12 alpha channel pixel strides + These formats have 4 components, so they should also have 4 components + of pixel stride. + +2019-02-18 15:24:18 +0100 Kristofer Bjorkstrom + + * gst-libs/gst/rtsp/gstrtspconnection.c: + rtspconnection: Fix GError set over the top of a previous GError + The function fill_bytes could sometimes return a value greater than zero + and in the same time set the GError. + Function read_bytes calls fill_bytes in a while loop. In the special + case above it would call fill_bytes with error already set. + Thus resulting in "GError set over the top of a previous GError". + Solved this by clearing GError when return value is greater than zero. + Actions are taken depending on error type by caller of read_bytes. Eg. + with EWOULDBLOCK gst_rtsp_source_dispatch_read will try to read the + missing bytes again (GST_RTSP_EINTR ) + https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/445 + +2019-02-15 16:45:09 -0500 Nicolas Dufresne + + * ext/gl/gstglimagesink.c: + glimagesink: Don't call set_property helper in get_property + +2019-02-11 10:01:55 -0500 Nicolas Dufresne + + * gst-libs/gst/gl/egl/gsteglimage.c: + eglimage: Add some more defines + This allow building on advertised version of libdrm drm_fourcc.h files. + Fixes #549 + +2019-01-28 13:54:43 +0900 Seungha Yang + + * tests/check/libs/discoverer.c: + tests: discoverer: Add async API test cases + Add more test cases for async APIs such as gst_discoverer_{start,stop}, + and gst_discoverer_discover_uri_async() + +2019-01-28 18:13:27 +0900 Seungha Yang + + * gst-libs/gst/pbutils/gstdiscoverer.c: + discoverer: Hold GSource object instead of source id + g_source_remove() works only for a GSource which was attached + to default GMainContext, but the GSource might be attached to + custom context depending on how gst_discoverer_start() was called. + Whatever the attached context was, g_source_destroy() can clean it up. + +2019-01-24 10:14:36 +0200 Sebastian Dröge + + * ext/gl/gstglcolorbalance.c: + glcolorbalance: Copy caps in transform_internal_caps() + We don't get ownership of the caps that are passed in, and doing so + causes crashes at a later time. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/546 + +2019-01-11 17:43:03 +0200 Jordan Petridis + + * gst/subparse/gstsubparse.c: + * tests/check/elements/subparse.c: + subparse: do not assert when failing to parse subrip timestamp + If a badly formatted was passed into `parse_subrip_time` it would + assert instead of exiting gracefully. This is problematic since + the input is provided by the user, and will trigger a crash. + https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/532 + +2019-01-14 10:29:54 +0200 Sebastian Dröge + + * pkgconfig/gstreamer-pbutils-uninstalled.pc.in: + * pkgconfig/gstreamer-pbutils.pc.in: + pbutils: Add audio, base and video library to Requires line in the pkg-config file + We use all those libraries internally and include headers from them in + the public headers. + And add the tag library to Requires.private as we use it internally and + it would be needed when doing static linking. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/537 + +2019-01-12 12:27:27 +0100 Víctor Manuel Jáquez Leal + + * ext/gl/gstglsinkbin.c: + glsinkbin: validate property in internal sink + It might be the case that glgsinkbin would try to set a property to + its internal sink which doesn't exist in it, leading to a glib's + warning. For example, when playsink sets 'force-aspect-ratio' property + and glsinkbin has, as internal sink, appsink, which doesn't handle + that property. + The patch validates the incoming property to forward to internal sink + if it exists in the internal sink and both properties has the same + type. + +2018-12-14 20:59:11 +0200 Sebastian Dröge + + * gst-libs/gst/video/gstvideotimecode.c: + videotimecode: Fix handling of timecodes without daily jam in gst_video_time_code_to_date_time() + So that it behaves according to documentation. + +2018-12-14 14:13:18 +0200 Sebastian Dröge + + * gst-libs/gst/video/gstvideotimecode.c: + videotimecode: We only support 30000/1001 and 60000/1001 as drop-frame framerates + 24000/1001 is *not* a drop-frame framerate. + +2018-12-14 13:56:28 +0200 Sebastian Dröge + + * gst-libs/gst/video/gstvideotimecode.c: + videotimecode: Fix division by zero in timecode validation function + And add some comments about what exactly we're testing in the + non-trivial cases. + +2018-12-17 08:58:21 +0100 Edward Hervey + + * gst-libs/gst/rtsp/gstrtspconnection.c: + rtspconnection: Properly exit infinite loop + In the unlikeliness the builder state is invalid, exit the + top-level while(TRUE) loop. + +2018-12-16 11:14:47 +0100 Edward Hervey + + * gst-libs/gst/pbutils/codec-utils.c: + codec-utils: Don't leak bytewriter data + In error cases, don't forget to reset it. + +2018-12-13 11:20:03 -0500 Olivier Crête + + * gst-libs/gst/rtp/gstrtcpbuffer.c: + rtcpbuffer: Validate the length of RTCP packets + +2018-11-30 13:37:26 +0100 Per Forlin + + * gst-libs/gst/rtsp/gstrtspconnection.c: + rtspconnection: Replace Auth header instead of append + gst_rtsp_connection_send() adds the Authorization header to the request. + If this function is being called multiple times with the same request + it will add one more Authorization header every time. + To fix to this issue do not append a new Authorization header on + top of an existing ones. Remove any existing Authorization headers first + and then add the new one. + Fixes gst-plugins-good#425 + +2018-11-29 12:55:28 +0100 Marouen Ghodhbane + + * gst-libs/gst/audio/audio-converter.c: + audio-convert: Fix endianness conversion function init + Endianness conversion should be based on the sample width instead of the + sample depth. + Fixes #510 + +2018-11-23 16:41:38 +0300 Freyr666 + + * ext/gl/gstgldeinterlace.c: + opengl: gldeinterlace: remove interlace-mode from srcpad's caps + This fixes output caps format, so the output frames are not interlaced anymore + +2018-11-28 11:13:39 +0000 Philippe Normand + + * ext/gl/gstgltestsrc.c: + gltestsrc: Run context query only during decide_allocation + Running the context query in _start and during the NULL->READY state transition + can fail because downstream elements might not be able to answer and thus the + source element would not be able to reuse downstream GLContext and GLDisplay. + This issue happened specifically when trying to use gltestsrc in playbin. + +2018-11-19 15:09:25 +0000 Maciej Wolny + + * gst-libs/gst/gl/gbm/gstglwindow_gbm_egl.h: + * gst-libs/gst/gl/gstgldebug.h: + * gst-libs/gst/gl/gstglfuncs.h: + gst-gl: Remove duplicate declarations + This causes 'redefinition of typedef ...' errors on GCC 4.5.3 + +2019-03-06 09:17:02 +0000 Tim-Philipp Müller + + * gst-libs/gst/video/convertframe.c: + video: fix pipeline leak in gst_video_convert_sample_async() + +2018-11-30 12:40:19 +0200 Sebastian Dröge + + * gst-libs/gst/video/convertframe.c: + video: convertframe: Shut down pipeline asynchronously via the thread pool + If we use the main loop it might happen that the caller (e.g. our unit + test) already shut down the loop once the result was received and in + that case the pipeline would never ever be shut down (and our unit test + would hang). + +2018-11-23 13:25:43 +0200 Sebastian Dröge + + * gst-libs/gst/video/convertframe.c: + convertframe: Error out directly in the sync variant if the state change to PAUSED failed + +2018-11-23 13:22:44 +0200 Sebastian Dröge + + * gst-libs/gst/video/convertframe.c: + convertframe: Only go to PAUSED state for the async variant + We only care for the pre-roll sample. + +2018-11-23 13:21:23 +0200 Sebastian Dröge + + * gst-libs/gst/video/convertframe.c: + convertframe: Error out directly if changing the pipeline state to PLAYING failed + +2018-11-23 13:16:43 +0200 Sebastian Dröge + + * gst-libs/gst/video/convertframe.c: + convertframe: Use refcounting for the context + While this creates a circular reference between the pipeline and the + context, this ensures that the context stays alive for as long as any + callbacks could be called on it. The circular reference is broken once + the conversion is finished (or error, or timeout), which will then cause + everything to be freed. + Previously it was possible that a callback could be called on the + context right after it was freed already. + Also use only a single context structure, the second structure does not + simplify anything and duplicates storage. + +2018-10-17 15:58:40 -0400 Xavier Claessens + + * gst-libs/gst/gl/egl/gstglcontext_egl.h: + gl: Fix subclassing of GstGLContextEGL + +2018-10-16 12:31:57 +0200 Linus Svensson + + * gst-libs/gst/rtp/gstrtpbasepayload.c: + rtpbasepayload: Update current seqnum for buffer lists + The current sequence number will be the one from the first RTP buffer + when a buffer list is pushed, but should be the last one. + Fixes #495 + +2019-01-22 13:24:29 +0000 Tim-Philipp Müller + + * gst-libs/gst/gl/meson.build: + meson: opengl: fix enabled_gl_apis in pkg-config file + Make consistent with what autotools puts into enabled_gl_apis + variable. Autotools puts 'gl' in there instead of 'opengl'. + This would cause problems when building -bad glmixers plugin + in meson against a -base that was built with autotools. + See https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/871 + +2019-01-11 16:37:40 +0100 Wim Taymans + + * gst-libs/gst/video/video-converter.c: + video-converter: fix number of allocated lines + We make an allocator for temporary lines and then use this for all + the steps in the conversion that can do in-place processing. + Keep track of the number of lines each step needs and use this to + allocate the right number of lines. + Previously we would not always allocate enough lines and we would + end up with conversion errors as lines would be reused prematurely. + Fixes #350 + +2018-11-09 10:48:38 +0100 Sjoerd Simons + + * gst-libs/gst/gl/gstglupload.c: + glupload: dmabuf: be explicit about gl formats used + Rather then letting gst_gl_memory_setup_buffer guess the GL format used + for an eglimage after importing a dmabuf be explicit about it. This + fixes issues where dmabuf import may have used another format then + gst_gl_format_from_video_info would guess on the basis of the available + GL extensions. + In particular on etnaviv the gst_gl_format_from_video_info would + assuming a luminance + alpha GL format is used for YUY2, but the dmabuf + import will always use RG88. Which causes images to end up somewhat pink when + displayed on the screen. + +2018-11-09 10:30:06 +0100 Sjoerd Simons + + * gst-libs/gst/gl/egl/gsteglimage.c: + gl/egl: Determine correct format on dmabuf import + When importing an egl image from dmabuf gst_gl_format_from_video_info + was used to work what the result GL format will be. Unfortunately that + will only work if the conventional format and the choosen DRM fourcc for + the format match up. + On etnaviv platforms there is no support for GL_EXT_texture_rg, so the + GL format chosen for YUY2 ends up being GST_GL_LUMINANCE_ALPHA. However + DRM does not do luminance + alpha as it's a legacy GL thing, so the + dmabuf import ends up using DRM_FORMAT_GR88. + To fix this, tie the DRM_FORMAT and the GL format together so they + always match up. + +2018-11-10 12:34:36 +0000 Tim-Philipp Müller + + * gst-libs/gst/gl/meson.build: + meson: fix backported gl patch + compat_includes only exists in master. + Fixes #507 + +2018-10-05 00:48:58 +1000 Matthew Waters + + * ext/gl/gstglimagesink.c: + glimagesink: make multiview none equivalent to mono + Fixes the internal viewconvert to not scale buffers for output with the + following pipeline: + gltestsrc ! glimagesink + It also fixes overlay composition with a resized output with an OpenGL + upstream: + gltestsrc ! timeoverlay ! glimagesink + +2018-09-28 12:09:16 +1000 Matthew Waters + + * ext/gl/gstglimagesink.c: + glimagesink: only update the output info iff there's a valid display_rect + Attempting to use the MAX(1, display_rect) would result in the overlay + composition attempting to draw into 1x1 buffer and calculate some + grossly incorrect sizes. + previously failing case: + gltestsrc ! textoverlay text=GStreamer ! glimagesinkelement + +2018-09-27 13:30:35 +1000 Matthew Waters + + * gst-libs/gst/gl/gstgloverlaycompositor.c: + gl/overlaycompositor: handle ANY caps features gracefully + +2018-09-27 13:29:03 +1000 Matthew Waters + + * gst-libs/gst/gl/gstglfilter.c: + glfilter: don't complete overwrite caps features from the subclass + We can get away with ensuring that the memory:GLMemory caps feature is + present in the output caps + +2018-09-05 18:34:06 +1000 Matthew Waters + + * gst-libs/gst/gl/meson.build: + gl/meson: check for EGL headers before allowing use of EGL + For distros that provide headers in seperate dev/devel packages this + won't build egl support without the necessary EGL headers. + +2018-08-10 22:44:12 +1000 Matthew Waters + + * gst-libs/gst/gl/gstglviewconvert.c: + glviewconvert: fix output when a transformation matrix is used + If we have a transformation matrix, we have no idea where in the output + the video is going to endup. It might also be different and not cover + the entire output. + We need to clear the output to remove any previous data in the backing + texture. + Found from + https://stackoverflow.com/questions/51707229/python-gstreamer-for-dynamic-control-of-element-properties + +2017-06-07 18:00:08 +0200 Nicolas Dufresne + + * gst-libs/gst/gl/gstglmemory.c: + glmemory: Fix n_wrapped_pointers usage + gst_gl_memory_setup_buffer() was not properly using the number + of pointers to wrapped. This also fixes the validation, as we + only support 1 wrapper per view, or num_planes * views wrapper. + https://bugzilla.gnome.org/show_bug.cgi?id=783521 + +2018-07-24 18:40:36 +0800 Roland Jon + + * gst/playback/gstdecodebin3.c: + decodebin3: fix eos event leak + https://bugzilla.gnome.org/show_bug.cgi?id=796860 + +2018-10-17 19:43:51 +0300 Sebastian Dröge + + * ext/ogg/gstoggdemux.c: + oggdemux: Answer POSITION query + +2018-10-15 19:45:46 +0530 Nirbheek Chauhan + + * gst-libs/gst/video/gstvideometa.c: + videometa: Log map errors with GST_ERROR, not DEBUG + Otherwise it's very easy to miss them when gst_video_frame_map() fails + +2018-10-10 23:15:49 +0200 Mathieu Duponchelle + + * gst-libs/gst/rtsp/gstrtspconnection.c: + rtspconnection: do not duplicate authentication headers + rtsp_connection_send takes care of adding those already, + and some reverse proxies such as nginx will reject the request + altogether if the Authorization header is present twice, + even with the same value. + https://bugzilla.gnome.org/show_bug.cgi?id=797272 + +2018-10-01 17:51:26 -0700 Thiago Santos + + * gst-libs/gst/pbutils/encoding-profile.c: + encoding-profile: set_restriction should accept null as valid + It was checking for GST_IS_CAPS only and that would fail if the new + restriction caps was NULL and its documentation says it accepts NULL as + valid input. + +2018-09-29 11:26:27 +0300 Sebastian Dröge + + * gst-libs/gst/video/gstvideometa.c: + video: Fix annotations for gst_buffer_add_video_meta_full() + === release 1.14.4 === 2018-10-02 22:58:06 +0100 Tim-Philipp Müller diff -Nru gst-plugins-base1.0-1.14.4/configure gst-plugins-base1.0-1.14.5/configure --- gst-plugins-base1.0-1.14.4/configure 2018-10-02 21:53:42.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/configure 2019-05-29 16:33:20.000000000 +0000 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for GStreamer Base Plug-ins 1.14.4. +# Generated by GNU Autoconf 2.69 for GStreamer Base Plug-ins 1.14.5. # # Report bugs to . # @@ -591,8 +591,8 @@ # Identity of this package. PACKAGE_NAME='GStreamer Base Plug-ins' PACKAGE_TARNAME='gst-plugins-base' -PACKAGE_VERSION='1.14.4' -PACKAGE_STRING='GStreamer Base Plug-ins 1.14.4' +PACKAGE_VERSION='1.14.5' +PACKAGE_STRING='GStreamer Base Plug-ins 1.14.5' PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer' PACKAGE_URL='' @@ -1973,7 +1973,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures GStreamer Base Plug-ins 1.14.4 to adapt to many kinds of systems. +\`configure' configures GStreamer Base Plug-ins 1.14.5 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -2046,7 +2046,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of GStreamer Base Plug-ins 1.14.4:";; + short | recursive ) echo "Configuration of GStreamer Base Plug-ins 1.14.5:";; esac cat <<\_ACEOF @@ -2415,7 +2415,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -GStreamer Base Plug-ins configure 1.14.4 +GStreamer Base Plug-ins configure 1.14.5 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -3255,7 +3255,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by GStreamer Base Plug-ins $as_me 1.14.4, which was +It was created by GStreamer Base Plug-ins $as_me 1.14.5, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -4234,7 +4234,7 @@ # Define the identity of the package. PACKAGE='gst-plugins-base' - VERSION='1.14.4' + VERSION='1.14.5' cat >>confdefs.h <<_ACEOF @@ -4445,9 +4445,9 @@ - PACKAGE_VERSION_MAJOR=$(echo 1.14.4 | cut -d'.' -f1) - PACKAGE_VERSION_MINOR=$(echo 1.14.4 | cut -d'.' -f2) - PACKAGE_VERSION_MICRO=$(echo 1.14.4 | cut -d'.' -f3) + PACKAGE_VERSION_MAJOR=$(echo 1.14.5 | cut -d'.' -f1) + PACKAGE_VERSION_MINOR=$(echo 1.14.5 | cut -d'.' -f2) + PACKAGE_VERSION_MICRO=$(echo 1.14.5 | cut -d'.' -f3) @@ -4458,7 +4458,7 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: checking nano version" >&5 $as_echo_n "checking nano version... " >&6; } - NANO=$(echo 1.14.4 | cut -d'.' -f4) + NANO=$(echo 1.14.5 | cut -d'.' -f4) if test x"$NANO" = x || test "x$NANO" = "x0" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: 0 (release)" >&5 @@ -7695,11 +7695,8 @@ test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 - (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "$nlist"; then + $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&5 + if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&5 && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" @@ -9292,10 +9289,10 @@ done - GST_CURRENT=1404 + GST_CURRENT=1405 GST_REVISION=0 - GST_AGE=1404 - GST_LIBVERSION=1404:0:1404 + GST_AGE=1405 + GST_LIBVERSION=1405:0:1405 @@ -10362,6 +10359,12 @@ lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; + # flang / f18. f95 an alias for gfortran or flang on Debian + flang* | f18* | f95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) @@ -13923,7 +13926,7 @@ -GST_REQ=1.14.4 +GST_REQ=1.14.5 @@ -19360,7 +19363,7 @@ # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' else GXX=no @@ -19852,7 +19855,7 @@ # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then @@ -19917,7 +19920,7 @@ # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then @@ -20256,7 +20259,7 @@ # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' else # FIXME: insert proper C++ library support @@ -20340,7 +20343,7 @@ # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. @@ -20351,7 +20354,7 @@ # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' fi hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir' @@ -37735,7 +37738,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by GStreamer Base Plug-ins $as_me 1.14.4, which was +This file was extended by GStreamer Base Plug-ins $as_me 1.14.5, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -37801,7 +37804,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -GStreamer Base Plug-ins config.status 1.14.4 +GStreamer Base Plug-ins config.status 1.14.5 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -Nru gst-plugins-base1.0-1.14.4/configure.ac gst-plugins-base1.0-1.14.5/configure.ac --- gst-plugins-base1.0-1.14.4/configure.ac 2018-10-02 21:53:28.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/configure.ac 2019-05-29 16:33:06.000000000 +0000 @@ -5,7 +5,7 @@ dnl initialize autoconf dnl releases only do -Wall, git and prerelease does -Werror too dnl use a three digit version number for releases, and four for git/prerelease -AC_INIT([GStreamer Base Plug-ins],[1.14.4],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gst-plugins-base]) +AC_INIT([GStreamer Base Plug-ins],[1.14.5],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gst-plugins-base]) AG_GST_INIT @@ -56,10 +56,10 @@ dnl 1.10.9 (who knows) => 1009 dnl dnl sets GST_LT_LDFLAGS -AS_LIBTOOL(GST, 1404, 0, 1404) +AS_LIBTOOL(GST, 1405, 0, 1405) dnl *** required versions of GStreamer stuff *** -GST_REQ=1.14.4 +GST_REQ=1.14.5 dnl *** autotools stuff **** diff -Nru gst-plugins-base1.0-1.14.4/debian/changelog gst-plugins-base1.0-1.14.5/debian/changelog --- gst-plugins-base1.0-1.14.4/debian/changelog 2019-05-16 12:18:37.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/debian/changelog 2019-07-03 16:19:20.000000000 +0000 @@ -1,3 +1,10 @@ +gst-plugins-base1.0 (1.14.5-0ubuntu1~18.04.1) bionic; urgency=medium + + * New upstream release (LP: #1832123) + - debian/patches/CVE-2019-9928.patch: drop - it's in this release + + -- Iain Lane Wed, 03 Jul 2019 17:19:20 +0100 + gst-plugins-base1.0 (1.14.4-1ubuntu1.1~ubuntu18.04.1) bionic; urgency=medium * No-change backport to bionic (LP: #1829366) diff -Nru gst-plugins-base1.0-1.14.4/debian/control gst-plugins-base1.0-1.14.5/debian/control --- gst-plugins-base1.0-1.14.4/debian/control 2019-04-26 13:41:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/debian/control 2019-07-03 16:19:20.000000000 +0000 @@ -7,7 +7,7 @@ Sebastien Bacher , Sebastian Dröge , Sjoerd Simons -Build-Depends: libgstreamer1.0-dev (>= 1.14.4), libasound2-dev (>= 0.9.0) [linux-any] , libgudev-1.0-dev (>= 143) [linux-any] , libwayland-dev (>= 1.4.0) [linux-any] , libdrm-dev (>= 2.4.55) [linux-any] , libgbm-dev [linux-any] , wayland-protocols (>= 1.4) [linux-any], autotools-dev, automake (>= 1.14), autoconf (>= 2.69), libtool (>= 2.2.6), dh-autoreconf, autopoint (>= 0.17), cdbs (>= 0.4.93~), debhelper (>= 9), gnome-pkg-tools (>= 0.7), gtk-doc-tools (>= 1.12), pkg-config (>= 0.11.0), libxv-dev (>= 6.8.2.dfsg.1-3), libxt-dev (>= 6.8.2.dfsg.1-3), libvorbis-dev (>= 1.0.0-2), libcdparanoia-dev (>= 3.10.2) [!hurd-i386], liborc-0.4-dev (>= 1:0.4.24), libpango1.0-dev (>= 1.16.0), libtheora-dev (>= 1.1), libglib2.0-dev (>= 2.40), zlib1g-dev (>= 1:1.1.4), libvisual-0.4-dev (>= 0.4.0), dpkg-dev (>= 1.15.1), iso-codes, libgtk-3-dev (>= 3.10), libglib2.0-doc, gstreamer1.0-doc, libgirepository1.0-dev (>= 0.9.12-4~), gobject-introspection (>= 0.9.12-4~), gir1.2-glib-2.0, gir1.2-freedesktop, gir1.2-gstreamer-1.0, zlib1g-dev, libopus-dev (>= 0.9.4), libgl1-mesa-dev, libegl1-mesa-dev, libgles2-mesa-dev, libgraphene-1.0-dev, libpng-dev, libjpeg-dev +Build-Depends: libgstreamer1.0-dev (>= 1.14.5), libasound2-dev (>= 0.9.0) [linux-any] , libgudev-1.0-dev (>= 143) [linux-any] , libwayland-dev (>= 1.4.0) [linux-any] , libdrm-dev (>= 2.4.55) [linux-any] , libgbm-dev [linux-any] , wayland-protocols (>= 1.4) [linux-any], autotools-dev, automake (>= 1.14), autoconf (>= 2.69), libtool (>= 2.2.6), dh-autoreconf, autopoint (>= 0.17), cdbs (>= 0.4.93~), debhelper (>= 9), gnome-pkg-tools (>= 0.7), gtk-doc-tools (>= 1.12), pkg-config (>= 0.11.0), libxv-dev (>= 6.8.2.dfsg.1-3), libxt-dev (>= 6.8.2.dfsg.1-3), libvorbis-dev (>= 1.0.0-2), libcdparanoia-dev (>= 3.10.2) [!hurd-i386], liborc-0.4-dev (>= 1:0.4.24), libpango1.0-dev (>= 1.16.0), libtheora-dev (>= 1.1), libglib2.0-dev (>= 2.40), zlib1g-dev (>= 1:1.1.4), libvisual-0.4-dev (>= 0.4.0), dpkg-dev (>= 1.15.1), iso-codes, libgtk-3-dev (>= 3.10), libglib2.0-doc, gstreamer1.0-doc, libgirepository1.0-dev (>= 0.9.12-4~), gobject-introspection (>= 0.9.12-4~), gir1.2-glib-2.0, gir1.2-freedesktop, gir1.2-gstreamer-1.0, zlib1g-dev, libopus-dev (>= 0.9.4), libgl1-mesa-dev, libegl1-mesa-dev, libgles2-mesa-dev, libgraphene-1.0-dev, libpng-dev, libjpeg-dev Standards-Version: 3.9.3 Vcs-Git: git://git.launchpad.net/~ubuntu-desktop/ubuntu/+source/gst-plugins-base1.0 Vcs-Browser: https://code.launchpad.net/~ubuntu-desktop/ubuntu/+source/gst-plugins-base1.0/+git/gst-plugins-base1.0 @@ -86,7 +86,7 @@ libgstreamer-gl1.0-0 (= ${binary:Version}), libc6-dev | libc-dev, pkg-config, - libgstreamer1.0-dev (>= 1.14.4), + libgstreamer1.0-dev (>= 1.14.5), libglib2.0-dev, liborc-0.4-dev (>= 1:0.4.24), libgl1-mesa-dev, @@ -132,7 +132,7 @@ Section: libs Depends: ${misc:Depends}, ${shlibs:Depends}, - libgstreamer-plugins-base1.0-0 (>= 1.14.4) + libgstreamer-plugins-base1.0-0 (>= 1.14.5) Suggests: alsa-utils (>= 0.9.0) XB-GStreamer-Version: ${gstreamer:Version} XB-GStreamer-Elements: ${gstreamer:Elements} @@ -158,7 +158,7 @@ Section: libs Depends: ${misc:Depends}, ${shlibs:Depends}, - libgstreamer-plugins-base1.0-0 (>= 1.14.4) + libgstreamer-plugins-base1.0-0 (>= 1.14.5) Breaks: gstreamer1.0-plugins-bad (<< 1.13.1) Replaces: gstreamer1.0-plugins-bad (<< 1.13.1) Suggests: gvfs @@ -211,7 +211,7 @@ Section: libs Depends: ${misc:Depends}, ${shlibs:Depends}, - libgstreamer-plugins-base1.0-0 (>= 1.14.4) + libgstreamer-plugins-base1.0-0 (>= 1.14.5) XB-GStreamer-Version: ${gstreamer:Version} XB-GStreamer-Elements: ${gstreamer:Elements} XB-GStreamer-URI-Sources: ${gstreamer:URISources} @@ -237,8 +237,8 @@ Section: libs Depends: ${misc:Depends}, ${shlibs:Depends}, - libgstreamer-plugins-base1.0-0 (>= 1.14.4), - libgstreamer-gl1.0-0 (>= 1.14.4) + libgstreamer-plugins-base1.0-0 (>= 1.14.5), + libgstreamer-gl1.0-0 (>= 1.14.5) XB-GStreamer-Version: ${gstreamer:Version} XB-GStreamer-Elements: ${gstreamer:Elements} XB-GStreamer-URI-Sources: ${gstreamer:URISources} diff -Nru gst-plugins-base1.0-1.14.4/debian/patches/CVE-2019-9928.patch gst-plugins-base1.0-1.14.5/debian/patches/CVE-2019-9928.patch --- gst-plugins-base1.0-1.14.4/debian/patches/CVE-2019-9928.patch 2019-04-26 13:41:19.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/debian/patches/CVE-2019-9928.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -From f672277509705c4034bc92a141eefee4524d15aa Mon Sep 17 00:00:00 2001 -From: Tobias Ronge -Date: Thu, 14 Mar 2019 10:12:27 +0100 -Subject: [PATCH] gstrtspconnection: Security loophole making heap overflow - -The former code allowed an attacker to create a heap overflow by -sending a longer than allowed session id in a response and including a -semicolon to change the maximum length. With this change, the parser -will never go beyond 512 bytes. ---- - gst-libs/gst/rtsp/gstrtspconnection.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -Index: gst-plugins-base1.0-1.14.4/gst-libs/gst/rtsp/gstrtspconnection.c -=================================================================== ---- gst-plugins-base1.0-1.14.4.orig/gst-libs/gst/rtsp/gstrtspconnection.c 2019-04-26 09:41:17.316530080 -0400 -+++ gst-plugins-base1.0-1.14.4/gst-libs/gst/rtsp/gstrtspconnection.c 2019-04-26 09:41:17.312530080 -0400 -@@ -2128,7 +2128,7 @@ build_next (GstRTSPBuilder * builder, Gs - maxlen = sizeof (conn->session_id) - 1; - /* the sessionid can have attributes marked with ; - * Make sure we strip them */ -- for (i = 0; session_id[i] != '\0'; i++) { -+ for (i = 0; i < maxlen && session_id[i] != '\0'; i++) { - if (session_id[i] == ';') { - maxlen = i; - /* parse timeout */ diff -Nru gst-plugins-base1.0-1.14.4/debian/patches/series gst-plugins-base1.0-1.14.5/debian/patches/series --- gst-plugins-base1.0-1.14.4/debian/patches/series 2019-04-26 13:41:16.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/debian/patches/series 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -CVE-2019-9928.patch diff -Nru gst-plugins-base1.0-1.14.4/debian/rules gst-plugins-base1.0-1.14.5/debian/rules --- gst-plugins-base1.0-1.14.4/debian/rules 2018-10-05 11:22:08.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/debian/rules 2019-07-03 16:19:20.000000000 +0000 @@ -28,7 +28,7 @@ gst_lib := libgstreamer$(gst_abi)-0 gst_lib_dev := libgstreamer$(gst_abi)-dev # what gstreamer version is needed -gst_lib_dev_dep := $(gst_lib_dev) (>= 1.14.4) +gst_lib_dev_dep := $(gst_lib_dev) (>= 1.14.5) gst_pkgname := gstreamer$(gst_abi) gst_deb_abi := $(gst_abi)-0 diff -Nru gst-plugins-base1.0-1.14.4/docs/libs/html/GstAudioAggregator.html gst-plugins-base1.0-1.14.5/docs/libs/html/GstAudioAggregator.html --- gst-plugins-base1.0-1.14.4/docs/libs/html/GstAudioAggregator.html 2018-10-02 21:58:09.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/libs/html/GstAudioAggregator.html 2019-05-29 16:36:56.000000000 +0000 @@ -192,6 +192,7 @@ +

Since: 1.14


@@ -231,6 +232,7 @@
+

Since: 1.14


@@ -248,6 +250,7 @@
+

Since: 1.14


@@ -286,6 +289,7 @@
+

Since: 1.14


@@ -304,6 +308,7 @@
+

Since: 1.14


@@ -312,6 +317,7 @@ GstAudioAggregatorPadClass parent_class; }; +

Since: 1.14

diff -Nru gst-plugins-base1.0-1.14.4/docs/libs/html/gst-plugins-base-libs-1.0.devhelp2 gst-plugins-base1.0-1.14.5/docs/libs/html/gst-plugins-base-libs-1.0.devhelp2 --- gst-plugins-base1.0-1.14.4/docs/libs/html/gst-plugins-base-libs-1.0.devhelp2 2018-10-02 21:58:09.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/libs/html/gst-plugins-base-libs-1.0.devhelp2 2019-05-29 16:36:56.000000000 +0000 @@ -336,11 +336,11 @@ - + - + - + diff -Nru gst-plugins-base1.0-1.14.4/docs/libs/html/gst-plugins-base-libs-gstvideometa.html gst-plugins-base1.0-1.14.5/docs/libs/html/gst-plugins-base-libs-gstvideometa.html --- gst-plugins-base1.0-1.14.4/docs/libs/html/gst-plugins-base-libs-gstvideometa.html 2018-10-02 21:58:09.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/libs/html/gst-plugins-base-libs-gstvideometa.html 2019-05-29 16:36:56.000000000 +0000 @@ -489,13 +489,13 @@

offset

-

offset of each plane

-  +

offset of each plane.

+[array fixed-size=4]

stride

-

stride of each plane

-  +

stride of each plane.

+[array fixed-size=4]
diff -Nru gst-plugins-base1.0-1.14.4/docs/libs/html/gst-plugins-base-libs-Version.html gst-plugins-base1.0-1.14.5/docs/libs/html/gst-plugins-base-libs-Version.html --- gst-plugins-base1.0-1.14.4/docs/libs/html/gst-plugins-base-libs-Version.html 2018-10-02 21:58:09.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/libs/html/gst-plugins-base-libs-Version.html 2019-05-29 16:36:56.000000000 +0000 @@ -184,7 +184,7 @@

GST_PLUGINS_BASE_VERSION_MICRO

-
#define GST_PLUGINS_BASE_VERSION_MICRO (4)
+
#define GST_PLUGINS_BASE_VERSION_MICRO (5)
 

The micro version of GStreamer's gst-plugins-base libraries at compile time.

diff -Nru gst-plugins-base1.0-1.14.4/docs/libs/html/index.html gst-plugins-base1.0-1.14.5/docs/libs/html/index.html --- gst-plugins-base1.0-1.14.4/docs/libs/html/index.html 2018-10-02 21:58:09.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/libs/html/index.html 2019-05-29 16:36:56.000000000 +0000 @@ -15,7 +15,7 @@

- for GStreamer Base Library 1.0 (1.14.4) + for GStreamer Base Library 1.0 (1.14.5) http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/.

diff -Nru gst-plugins-base1.0-1.14.4/docs/libs/html/ix03.html gst-plugins-base1.0-1.14.5/docs/libs/html/ix03.html --- gst-plugins-base1.0-1.14.4/docs/libs/html/ix03.html 2018-10-02 21:58:09.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/libs/html/ix03.html 2019-05-29 16:36:56.000000000 +0000 @@ -36,6 +36,30 @@
+GstAudioAggregator, struct in GstAudioAggregator +
+
+
+GstAudioAggregatorClass, struct in GstAudioAggregator +
+
+
+GstAudioAggregatorConvertPad, struct in GstAudioAggregator +
+
+
+GstAudioAggregatorConvertPadClass, struct in GstAudioAggregator +
+
+
+GstAudioAggregatorPad, struct in GstAudioAggregator +
+
+
+GstAudioAggregatorPadClass, struct in GstAudioAggregator +
+
+
GstAudioStreamAlign, struct in GstAudio
diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-adder.html gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-adder.html --- gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-adder.html 2018-10-02 21:58:10.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-adder.html 2019-05-29 16:36:58.000000000 +0000 @@ -42,7 +42,7 @@

version

-1.14.4 +1.14.5

run-time license

diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-alsa.html gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-alsa.html --- gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-alsa.html 2018-10-02 21:58:10.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-alsa.html 2019-05-29 16:36:58.000000000 +0000 @@ -42,7 +42,7 @@

version

-1.14.4 +1.14.5

run-time license

diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-app.html gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-app.html --- gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-app.html 2018-10-02 21:58:10.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-app.html 2019-05-29 16:36:58.000000000 +0000 @@ -42,7 +42,7 @@

version

-1.14.4 +1.14.5

run-time license

diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-audioconvert.html gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-audioconvert.html --- gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-audioconvert.html 2018-10-02 21:58:10.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-audioconvert.html 2019-05-29 16:36:58.000000000 +0000 @@ -42,7 +42,7 @@

version

-1.14.4 +1.14.5

run-time license

diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-audiomixer.html gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-audiomixer.html --- gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-audiomixer.html 2018-10-02 21:58:10.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-audiomixer.html 2019-05-29 16:36:58.000000000 +0000 @@ -42,7 +42,7 @@

version

-1.14.4 +1.14.5

run-time license

diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-audiorate.html gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-audiorate.html --- gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-audiorate.html 2018-10-02 21:58:10.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-audiorate.html 2019-05-29 16:36:58.000000000 +0000 @@ -42,7 +42,7 @@

version

-1.14.4 +1.14.5

run-time license

diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-audioresample.html gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-audioresample.html --- gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-audioresample.html 2018-10-02 21:58:10.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-audioresample.html 2019-05-29 16:36:58.000000000 +0000 @@ -42,7 +42,7 @@

version

-1.14.4 +1.14.5

run-time license

diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-audiotestsrc.html gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-audiotestsrc.html --- gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-audiotestsrc.html 2018-10-02 21:58:10.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-audiotestsrc.html 2019-05-29 16:36:58.000000000 +0000 @@ -42,7 +42,7 @@

version

-1.14.4 +1.14.5

run-time license

diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-cdparanoia.html gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-cdparanoia.html --- gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-cdparanoia.html 2018-10-02 21:58:10.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-cdparanoia.html 2019-05-29 16:36:58.000000000 +0000 @@ -42,7 +42,7 @@

version

-1.14.4 +1.14.5

run-time license

diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-encoding.html gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-encoding.html --- gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-encoding.html 2018-10-02 21:58:10.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-encoding.html 2019-05-29 16:36:58.000000000 +0000 @@ -42,7 +42,7 @@

version

-1.14.4 +1.14.5

run-time license

diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-gio.html gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-gio.html --- gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-gio.html 2018-10-02 21:58:10.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-gio.html 2019-05-29 16:36:58.000000000 +0000 @@ -42,7 +42,7 @@

version

-1.14.4 +1.14.5

run-time license

diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-libvisual.html gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-libvisual.html --- gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-libvisual.html 2018-10-02 21:58:10.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-libvisual.html 2019-05-29 16:36:58.000000000 +0000 @@ -42,7 +42,7 @@

version

-1.14.4 +1.14.5

run-time license

diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-ogg.html gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-ogg.html --- gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-ogg.html 2018-10-02 21:58:10.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-ogg.html 2019-05-29 16:36:58.000000000 +0000 @@ -42,7 +42,7 @@

version

-1.14.4 +1.14.5

run-time license

diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-opengl.html gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-opengl.html --- gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-opengl.html 2018-10-02 21:58:10.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-opengl.html 2019-05-29 16:36:58.000000000 +0000 @@ -42,7 +42,7 @@

version

-1.14.4 +1.14.5

run-time license

diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-opus.html gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-opus.html --- gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-opus.html 2018-10-02 21:58:10.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-opus.html 2019-05-29 16:36:58.000000000 +0000 @@ -42,7 +42,7 @@

version

-1.14.4 +1.14.5

run-time license

diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-pango.html gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-pango.html --- gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-pango.html 2018-10-02 21:58:10.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-pango.html 2019-05-29 16:36:58.000000000 +0000 @@ -42,7 +42,7 @@

version

-1.14.4 +1.14.5

run-time license

diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-playback.html gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-playback.html --- gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-playback.html 2018-10-02 21:58:10.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-playback.html 2019-05-29 16:36:58.000000000 +0000 @@ -42,7 +42,7 @@

version

-1.14.4 +1.14.5

run-time license

diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-rawparse.html gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-rawparse.html --- gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-rawparse.html 2018-10-02 21:58:10.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-rawparse.html 2019-05-29 16:36:58.000000000 +0000 @@ -42,7 +42,7 @@

version

-1.14.4 +1.14.5

run-time license

diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-subparse.html gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-subparse.html --- gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-subparse.html 2018-10-02 21:58:10.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-subparse.html 2019-05-29 16:36:58.000000000 +0000 @@ -42,7 +42,7 @@

version

-1.14.4 +1.14.5

run-time license

diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-tcp.html gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-tcp.html --- gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-tcp.html 2018-10-02 21:58:10.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-tcp.html 2019-05-29 16:36:58.000000000 +0000 @@ -42,7 +42,7 @@

version

-1.14.4 +1.14.5

run-time license

diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-theora.html gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-theora.html --- gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-theora.html 2018-10-02 21:58:10.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-theora.html 2019-05-29 16:36:58.000000000 +0000 @@ -42,7 +42,7 @@

version

-1.14.4 +1.14.5

run-time license

diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-typefindfunctions.html gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-typefindfunctions.html --- gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-typefindfunctions.html 2018-10-02 21:58:10.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-typefindfunctions.html 2019-05-29 16:36:58.000000000 +0000 @@ -42,7 +42,7 @@

version

-1.14.4 +1.14.5

run-time license

diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-videoconvert.html gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-videoconvert.html --- gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-videoconvert.html 2018-10-02 21:58:10.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-videoconvert.html 2019-05-29 16:36:58.000000000 +0000 @@ -42,7 +42,7 @@

version

-1.14.4 +1.14.5

run-time license

diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-videorate.html gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-videorate.html --- gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-videorate.html 2018-10-02 21:58:10.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-videorate.html 2019-05-29 16:36:58.000000000 +0000 @@ -42,7 +42,7 @@

version

-1.14.4 +1.14.5

run-time license

diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-videoscale.html gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-videoscale.html --- gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-videoscale.html 2018-10-02 21:58:10.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-videoscale.html 2019-05-29 16:36:58.000000000 +0000 @@ -42,7 +42,7 @@

version

-1.14.4 +1.14.5

run-time license

diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-videotestsrc.html gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-videotestsrc.html --- gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-videotestsrc.html 2018-10-02 21:58:10.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-videotestsrc.html 2019-05-29 16:36:58.000000000 +0000 @@ -42,7 +42,7 @@

version

-1.14.4 +1.14.5

run-time license

diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-volume.html gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-volume.html --- gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-volume.html 2018-10-02 21:58:10.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-volume.html 2019-05-29 16:36:58.000000000 +0000 @@ -42,7 +42,7 @@

version

-1.14.4 +1.14.5

run-time license

diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-vorbis.html gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-vorbis.html --- gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-vorbis.html 2018-10-02 21:58:10.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-vorbis.html 2019-05-29 16:36:58.000000000 +0000 @@ -42,7 +42,7 @@

version

-1.14.4 +1.14.5

run-time license

diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-ximagesink.html gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-ximagesink.html --- gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-ximagesink.html 2018-10-02 21:58:10.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-ximagesink.html 2019-05-29 16:36:58.000000000 +0000 @@ -42,7 +42,7 @@

version

-1.14.4 +1.14.5

run-time license

diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-xvimagesink.html gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-xvimagesink.html --- gst-plugins-base1.0-1.14.4/docs/plugins/html/gst-plugins-base-plugins-plugin-xvimagesink.html 2018-10-02 21:58:10.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/html/gst-plugins-base-plugins-plugin-xvimagesink.html 2019-05-29 16:36:58.000000000 +0000 @@ -41,7 +41,7 @@

version

-1.14.4 +1.14.5

run-time license

diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/html/index.html gst-plugins-base1.0-1.14.5/docs/plugins/html/index.html --- gst-plugins-base1.0-1.14.4/docs/plugins/html/index.html 2018-10-02 21:58:10.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/html/index.html 2019-05-29 16:36:58.000000000 +0000 @@ -15,7 +15,7 @@

- for GStreamer Base Plugins 1.0 (1.14.4) + for GStreamer Base Plugins 1.0 (1.14.5) The latest version of this documentation can be found on-line at http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-plugins/html/.

diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-adder.xml gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-adder.xml --- gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-adder.xml 2018-10-02 21:58:06.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-adder.xml 2019-05-29 16:36:53.000000000 +0000 @@ -3,7 +3,7 @@ Adds multiple streams ../../gst/adder/.libs/libgstadder.so libgstadder.so - 1.14.4 + 1.14.5 LGPL gst-plugins-base GStreamer Base Plug-ins source release diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-alsa.xml gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-alsa.xml --- gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-alsa.xml 2018-10-02 21:58:06.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-alsa.xml 2019-05-29 16:36:53.000000000 +0000 @@ -3,7 +3,7 @@ ALSA plugin library ../../ext/alsa/.libs/libgstalsa.so libgstalsa.so - 1.14.4 + 1.14.5 LGPL gst-plugins-base GStreamer Base Plug-ins source release diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-app.xml gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-app.xml --- gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-app.xml 2018-10-02 21:58:06.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-app.xml 2019-05-29 16:36:53.000000000 +0000 @@ -3,7 +3,7 @@ Elements used to communicate with applications ../../gst/app/.libs/libgstapp.so libgstapp.so - 1.14.4 + 1.14.5 LGPL gst-plugins-base GStreamer Base Plug-ins source release diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-audioconvert.xml gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-audioconvert.xml --- gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-audioconvert.xml 2018-10-02 21:58:06.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-audioconvert.xml 2019-05-29 16:36:53.000000000 +0000 @@ -3,7 +3,7 @@ Convert audio to different formats ../../gst/audioconvert/.libs/libgstaudioconvert.so libgstaudioconvert.so - 1.14.4 + 1.14.5 LGPL gst-plugins-base GStreamer Base Plug-ins source release diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-audiomixer.xml gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-audiomixer.xml --- gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-audiomixer.xml 2018-10-02 21:58:06.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-audiomixer.xml 2019-05-29 16:36:53.000000000 +0000 @@ -3,7 +3,7 @@ Mixes multiple audio streams ../../gst/audiomixer/.libs/libgstaudiomixer.so libgstaudiomixer.so - 1.14.4 + 1.14.5 LGPL gst-plugins-base GStreamer Base Plug-ins source release diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-audiorate.xml gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-audiorate.xml --- gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-audiorate.xml 2018-10-02 21:58:06.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-audiorate.xml 2019-05-29 16:36:53.000000000 +0000 @@ -3,7 +3,7 @@ Adjusts audio frames ../../gst/audiorate/.libs/libgstaudiorate.so libgstaudiorate.so - 1.14.4 + 1.14.5 LGPL gst-plugins-base GStreamer Base Plug-ins source release diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-audioresample.xml gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-audioresample.xml --- gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-audioresample.xml 2018-10-02 21:58:06.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-audioresample.xml 2019-05-29 16:36:53.000000000 +0000 @@ -3,7 +3,7 @@ Resamples audio ../../gst/audioresample/.libs/libgstaudioresample.so libgstaudioresample.so - 1.14.4 + 1.14.5 LGPL gst-plugins-base GStreamer Base Plug-ins source release diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-audiotestsrc.xml gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-audiotestsrc.xml --- gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-audiotestsrc.xml 2018-10-02 21:58:06.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-audiotestsrc.xml 2019-05-29 16:36:53.000000000 +0000 @@ -3,7 +3,7 @@ Creates audio test signals of given frequency and volume ../../gst/audiotestsrc/.libs/libgstaudiotestsrc.so libgstaudiotestsrc.so - 1.14.4 + 1.14.5 LGPL gst-plugins-base GStreamer Base Plug-ins source release diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-cdparanoia.xml gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-cdparanoia.xml --- gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-cdparanoia.xml 2018-10-02 21:58:06.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-cdparanoia.xml 2019-05-29 16:36:53.000000000 +0000 @@ -3,7 +3,7 @@ Read audio from CD in paranoid mode ../../ext/cdparanoia/.libs/libgstcdparanoia.so libgstcdparanoia.so - 1.14.4 + 1.14.5 LGPL gst-plugins-base GStreamer Base Plug-ins source release diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-encoding.xml gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-encoding.xml --- gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-encoding.xml 2018-10-02 21:58:06.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-encoding.xml 2019-05-29 16:36:53.000000000 +0000 @@ -3,7 +3,7 @@ various encoding-related elements ../../gst/encoding/.libs/libgstencoding.so libgstencoding.so - 1.14.4 + 1.14.5 LGPL gst-plugins-base GStreamer Base Plug-ins source release diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-gio.xml gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-gio.xml --- gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-gio.xml 2018-10-02 21:58:06.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-gio.xml 2019-05-29 16:36:53.000000000 +0000 @@ -3,7 +3,7 @@ GIO elements ../../gst/gio/.libs/libgstgio.so libgstgio.so - 1.14.4 + 1.14.5 LGPL gst-plugins-base GStreamer Base Plug-ins source release diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-libvisual.xml gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-libvisual.xml --- gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-libvisual.xml 2018-10-02 21:58:06.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-libvisual.xml 2019-05-29 16:36:53.000000000 +0000 @@ -3,7 +3,7 @@ libvisual visualization plugins ../../ext/libvisual/.libs/libgstlibvisual.so libgstlibvisual.so - 1.14.4 + 1.14.5 LGPL gst-plugins-base GStreamer Base Plug-ins source release diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-ogg.xml gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-ogg.xml --- gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-ogg.xml 2018-10-02 21:58:06.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-ogg.xml 2019-05-29 16:36:53.000000000 +0000 @@ -3,7 +3,7 @@ ogg stream manipulation (info about ogg: http://xiph.org) ../../ext/ogg/.libs/libgstogg.so libgstogg.so - 1.14.4 + 1.14.5 LGPL gst-plugins-base GStreamer Base Plug-ins source release diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-opengl.xml gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-opengl.xml --- gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-opengl.xml 2018-10-02 21:58:06.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-opengl.xml 2019-05-29 16:36:53.000000000 +0000 @@ -3,7 +3,7 @@ OpenGL plugin ../../ext/gl/.libs/libgstopengl.so libgstopengl.so - 1.14.4 + 1.14.5 LGPL gst-plugins-base GStreamer Base Plug-ins source release diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-opus.xml gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-opus.xml --- gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-opus.xml 2018-10-02 21:58:06.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-opus.xml 2019-05-29 16:36:53.000000000 +0000 @@ -3,7 +3,7 @@ OPUS plugin library ../../ext/opus/.libs/libgstopus.so libgstopus.so - 1.14.4 + 1.14.5 LGPL gst-plugins-base GStreamer Base Plug-ins source release diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-pango.xml gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-pango.xml --- gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-pango.xml 2018-10-02 21:58:06.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-pango.xml 2019-05-29 16:36:53.000000000 +0000 @@ -3,7 +3,7 @@ Pango-based text rendering and overlay ../../ext/pango/.libs/libgstpango.so libgstpango.so - 1.14.4 + 1.14.5 LGPL gst-plugins-base GStreamer Base Plug-ins source release diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-pbtypes.xml gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-pbtypes.xml --- gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-pbtypes.xml 2018-10-02 21:58:06.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-pbtypes.xml 2019-05-29 16:36:53.000000000 +0000 @@ -3,7 +3,7 @@ gst-plugins-base dynamic types ../../gst/pbtypes/.libs/libgstpbtypes.so libgstpbtypes.so - 1.14.4 + 1.14.5 LGPL gst-plugins-base GStreamer Base Plug-ins source release diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-playback.xml gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-playback.xml --- gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-playback.xml 2018-10-02 21:58:06.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-playback.xml 2019-05-29 16:36:53.000000000 +0000 @@ -3,7 +3,7 @@ various playback elements ../../gst/playback/.libs/libgstplayback.so libgstplayback.so - 1.14.4 + 1.14.5 LGPL gst-plugins-base GStreamer Base Plug-ins source release diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-rawparse.xml gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-rawparse.xml --- gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-rawparse.xml 2018-10-02 21:58:06.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-rawparse.xml 2019-05-29 16:36:53.000000000 +0000 @@ -3,7 +3,7 @@ Parses byte streams into raw frames ../../gst/rawparse/.libs/libgstrawparse.so libgstrawparse.so - 1.14.4 + 1.14.5 LGPL gst-plugins-base GStreamer Base Plug-ins source release diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-subparse.xml gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-subparse.xml --- gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-subparse.xml 2018-10-02 21:58:06.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-subparse.xml 2019-05-29 16:36:53.000000000 +0000 @@ -3,7 +3,7 @@ Subtitle parsing ../../gst/subparse/.libs/libgstsubparse.so libgstsubparse.so - 1.14.4 + 1.14.5 LGPL gst-plugins-base GStreamer Base Plug-ins source release diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-tcp.xml gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-tcp.xml --- gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-tcp.xml 2018-10-02 21:58:06.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-tcp.xml 2019-05-29 16:36:53.000000000 +0000 @@ -3,7 +3,7 @@ transfer data over the network via TCP ../../gst/tcp/.libs/libgsttcp.so libgsttcp.so - 1.14.4 + 1.14.5 LGPL gst-plugins-base GStreamer Base Plug-ins source release diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-theora.xml gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-theora.xml --- gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-theora.xml 2018-10-02 21:58:06.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-theora.xml 2019-05-29 16:36:53.000000000 +0000 @@ -3,7 +3,7 @@ Theora plugin library ../../ext/theora/.libs/libgsttheora.so libgsttheora.so - 1.14.4 + 1.14.5 LGPL gst-plugins-base GStreamer Base Plug-ins source release diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-typefindfunctions.xml gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-typefindfunctions.xml --- gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-typefindfunctions.xml 2018-10-02 21:58:06.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-typefindfunctions.xml 2019-05-29 16:36:53.000000000 +0000 @@ -3,7 +3,7 @@ default typefind functions ../../gst/typefind/.libs/libgsttypefindfunctions.so libgsttypefindfunctions.so - 1.14.4 + 1.14.5 LGPL gst-plugins-base GStreamer Base Plug-ins source release diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-videoconvert.xml gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-videoconvert.xml --- gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-videoconvert.xml 2018-10-02 21:58:06.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-videoconvert.xml 2019-05-29 16:36:53.000000000 +0000 @@ -3,7 +3,7 @@ Colorspace conversion ../../gst/videoconvert/.libs/libgstvideoconvert.so libgstvideoconvert.so - 1.14.4 + 1.14.5 LGPL gst-plugins-base GStreamer Base Plug-ins source release diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-videorate.xml gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-videorate.xml --- gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-videorate.xml 2018-10-02 21:58:06.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-videorate.xml 2019-05-29 16:36:53.000000000 +0000 @@ -3,7 +3,7 @@ Adjusts video frames ../../gst/videorate/.libs/libgstvideorate.so libgstvideorate.so - 1.14.4 + 1.14.5 LGPL gst-plugins-base GStreamer Base Plug-ins source release diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-videoscale.xml gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-videoscale.xml --- gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-videoscale.xml 2018-10-02 21:58:06.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-videoscale.xml 2019-05-29 16:36:53.000000000 +0000 @@ -3,7 +3,7 @@ Resizes video ../../gst/videoscale/.libs/libgstvideoscale.so libgstvideoscale.so - 1.14.4 + 1.14.5 LGPL gst-plugins-base GStreamer Base Plug-ins source release diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-videotestsrc.xml gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-videotestsrc.xml --- gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-videotestsrc.xml 2018-10-02 21:58:06.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-videotestsrc.xml 2019-05-29 16:36:53.000000000 +0000 @@ -3,7 +3,7 @@ Creates a test video stream ../../gst/videotestsrc/.libs/libgstvideotestsrc.so libgstvideotestsrc.so - 1.14.4 + 1.14.5 LGPL gst-plugins-base GStreamer Base Plug-ins source release diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-volume.xml gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-volume.xml --- gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-volume.xml 2018-10-02 21:58:06.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-volume.xml 2019-05-29 16:36:53.000000000 +0000 @@ -3,7 +3,7 @@ plugin for controlling audio volume ../../gst/volume/.libs/libgstvolume.so libgstvolume.so - 1.14.4 + 1.14.5 LGPL gst-plugins-base GStreamer Base Plug-ins source release diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-vorbis.xml gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-vorbis.xml --- gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-vorbis.xml 2018-10-02 21:58:06.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-vorbis.xml 2019-05-29 16:36:53.000000000 +0000 @@ -3,7 +3,7 @@ Vorbis plugin library ../../ext/vorbis/.libs/libgstvorbis.so libgstvorbis.so - 1.14.4 + 1.14.5 LGPL gst-plugins-base GStreamer Base Plug-ins source release diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-ximagesink.xml gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-ximagesink.xml --- gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-ximagesink.xml 2018-10-02 21:58:06.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-ximagesink.xml 2019-05-29 16:36:53.000000000 +0000 @@ -3,7 +3,7 @@ X11 video output element based on standard Xlib calls ../../sys/ximage/.libs/libgstximagesink.so libgstximagesink.so - 1.14.4 + 1.14.5 LGPL gst-plugins-base GStreamer Base Plug-ins source release diff -Nru gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-xvimagesink.xml gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-xvimagesink.xml --- gst-plugins-base1.0-1.14.4/docs/plugins/inspect/plugin-xvimagesink.xml 2018-10-02 21:58:06.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/docs/plugins/inspect/plugin-xvimagesink.xml 2019-05-29 16:36:53.000000000 +0000 @@ -3,7 +3,7 @@ XFree86 video output plugin using Xv extension ../../sys/xvimage/.libs/libgstxvimagesink.so libgstxvimagesink.so - 1.14.4 + 1.14.5 LGPL gst-plugins-base GStreamer Base Plug-ins source release diff -Nru gst-plugins-base1.0-1.14.4/ext/gl/gstglcolorbalance.c gst-plugins-base1.0-1.14.5/ext/gl/gstglcolorbalance.c --- gst-plugins-base1.0-1.14.4/ext/gl/gstglcolorbalance.c 2018-07-19 11:26:47.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/ext/gl/gstglcolorbalance.c 2019-05-02 16:33:49.000000000 +0000 @@ -181,7 +181,7 @@ gcb_transform_internal_caps (GstGLFilter * filter, GstPadDirection direction, GstCaps * caps, GstCaps * filter_caps) { - GstCaps *tmp = gst_caps_make_writable (caps); + GstCaps *tmp = gst_caps_copy (caps); gint i; /* If we're not in passthrough mode, we can only output 2D textures, * but can always receive any compatible texture. diff -Nru gst-plugins-base1.0-1.14.4/ext/gl/gstgldeinterlace.c gst-plugins-base1.0-1.14.5/ext/gl/gstgldeinterlace.c --- gst-plugins-base1.0-1.14.4/ext/gl/gstgldeinterlace.c 2018-03-23 20:44:42.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/ext/gl/gstgldeinterlace.c 2019-05-02 16:33:49.000000000 +0000 @@ -62,6 +62,8 @@ static gboolean gst_gl_deinterlace_start (GstBaseTransform * trans); static gboolean gst_gl_deinterlace_reset (GstBaseTransform * trans); +static GstCaps *gst_gl_deinterlace_transform_internal_caps (GstGLFilter * filter, + GstPadDirection direction, GstCaps * caps, GstCaps * caps_filter); static gboolean gst_gl_deinterlace_init_fbo (GstGLFilter * filter); static gboolean gst_gl_deinterlace_filter (GstGLFilter * filter, GstBuffer * inbuf, GstBuffer * outbuf); @@ -264,6 +266,8 @@ GST_BASE_TRANSFORM_CLASS (klass)->start = gst_gl_deinterlace_start; GST_BASE_TRANSFORM_CLASS (klass)->stop = gst_gl_deinterlace_reset; + GST_GL_FILTER_CLASS (klass)->transform_internal_caps = + gst_gl_deinterlace_transform_internal_caps; GST_GL_FILTER_CLASS (klass)->filter = gst_gl_deinterlace_filter; GST_GL_FILTER_CLASS (klass)->filter_texture = gst_gl_deinterlace_filter_texture; @@ -327,6 +331,26 @@ return GST_BASE_TRANSFORM_CLASS (parent_class)->stop (trans); } +static GstCaps * +gst_gl_deinterlace_transform_internal_caps (GstGLFilter * filter, + GstPadDirection direction, GstCaps * caps, GstCaps * caps_filter) +{ + gint len; + GstCaps *res; + GstStructure *s; + + res = gst_caps_copy (caps); + + for (len = gst_caps_get_size (res); len > 0; len--) { + s = gst_caps_get_structure (res, len - 1); + if (direction == GST_PAD_SINK) { + gst_structure_remove_field (s, "interlace-mode"); + } + } + + return res; +} + static void gst_gl_deinterlace_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec) diff -Nru gst-plugins-base1.0-1.14.4/ext/gl/gstglimagesink.c gst-plugins-base1.0-1.14.5/ext/gl/gstglimagesink.c --- gst-plugins-base1.0-1.14.4/ext/gl/gstglimagesink.c 2018-03-23 20:44:42.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/ext/gl/gstglimagesink.c 2019-05-02 16:33:49.000000000 +0000 @@ -893,8 +893,7 @@ g_value_set_enum (value, glimage_sink->mview_downmix_mode); break; default: - if (!gst_video_overlay_set_property (object, PROP_LAST, prop_id, value)) - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } @@ -1378,6 +1377,19 @@ return TRUE; } +static gboolean +_mview_modes_are_equal (GstVideoMultiviewMode a, GstVideoMultiviewMode b) +{ + if (a == b) + return TRUE; + if (a == GST_VIDEO_MULTIVIEW_MODE_NONE && b == GST_VIDEO_MULTIVIEW_MODE_MONO) + return TRUE; + if (a == GST_VIDEO_MULTIVIEW_MODE_MONO && b == GST_VIDEO_MULTIVIEW_MODE_NONE) + return TRUE; + + return FALSE; +} + /* Called with GST_GLIMAGE_SINK lock held, to * copy in_info to out_info and update out_caps */ static gboolean @@ -1397,7 +1409,7 @@ mv_mode = GST_VIDEO_INFO_MULTIVIEW_MODE (&glimage_sink->in_info); - if (glimage_sink->mview_output_mode != mv_mode) { + if (!_mview_modes_are_equal (glimage_sink->mview_output_mode, mv_mode)) { /* Input is multiview, and output wants a conversion - configure 3d converter now, * otherwise defer it until either the caps or the 3D output mode changes */ gst_video_multiview_video_info_change_mode (out_info, @@ -1426,27 +1438,29 @@ * view parity properly for line-by-line modes, because that * depends on the window being placed correctly. * FIXME: Should this rescaling be configurable? */ - new_w = MAX (1, glimage_sink->display_rect.w); - new_h = MAX (1, glimage_sink->display_rect.h); - if (new_w != out_info->width || new_h != out_info->height) { - /* Recalculate PAR if rescaling */ - gint from_dar_n, from_dar_d; - if (!gst_util_fraction_multiply (out_info->width, out_info->height, - out_info->par_n, out_info->par_d, &from_dar_n, - &from_dar_d) || - !gst_util_fraction_multiply (from_dar_n, from_dar_d, new_h, new_w, - &par_n, &par_d)) { - par_n = glimage_sink->par_n; - par_d = glimage_sink->par_d; - } - out_info->par_n = par_n; - out_info->par_d = par_d; - out_info->width = new_w; - out_info->height = new_h; - } + if (glimage_sink->display_rect.w > 0 && glimage_sink->display_rect.h > 0) { + new_w = glimage_sink->display_rect.w; + new_h = glimage_sink->display_rect.h; + if (new_w != out_info->width || new_h != out_info->height) { + /* Recalculate PAR if rescaling */ + gint from_dar_n, from_dar_d; + if (!gst_util_fraction_multiply (out_info->width, out_info->height, + out_info->par_n, out_info->par_d, &from_dar_n, + &from_dar_d) || + !gst_util_fraction_multiply (from_dar_n, from_dar_d, new_h, new_w, + &par_n, &par_d)) { + par_n = glimage_sink->par_n; + par_d = glimage_sink->par_d; + } + out_info->par_n = par_n; + out_info->par_d = par_d; + out_info->width = new_w; + out_info->height = new_h; + } - GST_LOG_OBJECT (glimage_sink, "Set 3D output scale to %d,%d PAR %d/%d", - out_info->width, out_info->height, out_info->par_n, out_info->par_d); + GST_LOG_OBJECT (glimage_sink, "Set 3D output scale to %dx%d PAR %d/%d", + out_info->width, out_info->height, out_info->par_n, out_info->par_d); + } } s = gst_caps_get_structure (glimage_sink->in_caps, 0); diff -Nru gst-plugins-base1.0-1.14.4/ext/gl/gstglsinkbin.c gst-plugins-base1.0-1.14.5/ext/gl/gstglsinkbin.c --- gst-plugins-base1.0-1.14.4/ext/gl/gstglsinkbin.c 2018-08-12 23:15:41.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/ext/gl/gstglsinkbin.c 2019-05-02 16:33:49.000000000 +0000 @@ -343,6 +343,7 @@ const GValue * value, GParamSpec * pspec) { GstGLSinkBin *self = GST_GL_SINK_BIN (object); + GParamSpec *sink_pspec; switch (prop_id) { case PROP_SINK: @@ -356,8 +357,17 @@ g_object_set_property (G_OBJECT (self->balance), pspec->name, value); break; default: - if (self->sink) - g_object_set_property (G_OBJECT (self->sink), pspec->name, value); + if (self->sink) { + sink_pspec = + g_object_class_find_property (G_OBJECT_GET_CLASS (self->sink), + pspec->name); + if (sink_pspec + && G_PARAM_SPEC_TYPE (sink_pspec) == G_PARAM_SPEC_TYPE (pspec)) { + g_object_set_property (G_OBJECT (self->sink), pspec->name, value); + } else { + GST_INFO ("Failed to set unmatched property %s", pspec->name); + } + } break; } } diff -Nru gst-plugins-base1.0-1.14.4/ext/gl/gstgltestsrc.c gst-plugins-base1.0-1.14.5/ext/gl/gstgltestsrc.c --- gst-plugins-base1.0-1.14.4/ext/gl/gstgltestsrc.c 2018-03-23 20:44:42.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/ext/gl/gstgltestsrc.c 2019-05-02 16:33:49.000000000 +0000 @@ -510,11 +510,6 @@ { GstGLTestSrc *src = GST_GL_TEST_SRC (basesrc); - if (!gst_gl_ensure_element_data (src, &src->display, &src->other_context)) - return FALSE; - - gst_gl_display_filter_gl_api (src->display, SUPPORTED_GL_APIS); - src->running_time = 0; src->n_frames = 0; src->negotiated = FALSE; @@ -735,18 +730,6 @@ gst_element_state_get_name (GST_STATE_TRANSITION_CURRENT (transition)), gst_element_state_get_name (GST_STATE_TRANSITION_NEXT (transition))); - switch (transition) { - case GST_STATE_CHANGE_NULL_TO_READY: - if (!gst_gl_ensure_element_data (element, &src->display, - &src->other_context)) - return GST_STATE_CHANGE_FAILURE; - - gst_gl_display_filter_gl_api (src->display, SUPPORTED_GL_APIS); - break; - default: - break; - } - ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition); if (ret == GST_STATE_CHANGE_FAILURE) return ret; diff -Nru gst-plugins-base1.0-1.14.4/ext/ogg/gstoggdemux.c gst-plugins-base1.0-1.14.5/ext/ogg/gstoggdemux.c --- gst-plugins-base1.0-1.14.4/ext/ogg/gstoggdemux.c 2018-03-23 20:44:42.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/ext/ogg/gstoggdemux.c 2018-10-18 12:09:42.000000000 +0000 @@ -252,6 +252,19 @@ ogg = GST_OGG_DEMUX (parent); switch (GST_QUERY_TYPE (query)) { + case GST_QUERY_POSITION: + { + GstFormat format; + GstOggPad *ogg_pad = GST_OGG_PAD (pad); + + gst_query_parse_position (query, &format, NULL); + /* can only get position in time */ + if (format != GST_FORMAT_TIME) + goto wrong_format; + + gst_query_set_position (query, format, ogg_pad->position); + break; + } case GST_QUERY_DURATION: { GstFormat format; @@ -385,7 +398,7 @@ /* ERRORS */ wrong_format: { - GST_DEBUG_OBJECT (ogg, "only query duration on TIME is supported"); + GST_DEBUG_OBJECT (ogg, "only query position/duration on TIME is supported"); res = FALSE; goto done; } diff -Nru gst-plugins-base1.0-1.14.4/ext/vorbis/gstvorbisdec.c gst-plugins-base1.0-1.14.5/ext/vorbis/gstvorbisdec.c --- gst-plugins-base1.0-1.14.4/ext/vorbis/gstvorbisdec.c 2018-09-30 20:18:13.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/ext/vorbis/gstvorbisdec.c 2019-05-02 16:33:49.000000000 +0000 @@ -358,6 +358,7 @@ } } +/* Does not take ownership of buffer */ static GstFlowReturn vorbis_dec_handle_header_buffer (GstVorbisDec * vd, GstBuffer * buffer) { @@ -615,17 +616,20 @@ /* All good, let's reset ourselves and process the headers */ vorbis_dec_reset ((GstAudioDecoder *) vd); result = vorbis_dec_handle_header_buffer (vd, buffer1); + gst_buffer_unref (buffer1); if (result != GST_FLOW_OK) { gst_buffer_unref (buffer3); gst_buffer_unref (buffer5); return result; } result = vorbis_dec_handle_header_buffer (vd, buffer3); + gst_buffer_unref (buffer3); if (result != GST_FLOW_OK) { gst_buffer_unref (buffer5); return result; } result = vorbis_dec_handle_header_buffer (vd, buffer5); + gst_buffer_unref (buffer5); return result; diff -Nru gst-plugins-base1.0-1.14.4/gst/playback/gstdecodebin2.c gst-plugins-base1.0-1.14.5/gst/playback/gstdecodebin2.c --- gst-plugins-base1.0-1.14.4/gst/playback/gstdecodebin2.c 2018-03-23 20:44:42.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/gst/playback/gstdecodebin2.c 2019-05-02 16:33:49.000000000 +0000 @@ -121,6 +121,7 @@ typedef struct _GstPendingPad GstPendingPad; typedef struct _GstDecodeElement GstDecodeElement; +typedef struct _GstDemuxerPad GstDemuxerPad; typedef struct _GstDecodeChain GstDecodeChain; typedef struct _GstDecodeGroup GstDecodeGroup; typedef struct _GstDecodePad GstDecodePad; @@ -416,6 +417,14 @@ gulong no_more_pads_id; }; +struct _GstDemuxerPad +{ + GWeakRef weakPad; + gulong event_probe_id; + gulong query_probe_id; +}; + + /* GstDecodeGroup * * Streams belonging to the same group/chain of a media file @@ -437,6 +446,7 @@ gboolean drained; /* TRUE if the all children are drained */ GList *children; /* List of GstDecodeChains in this group */ + GList *demuxer_pad_probe_ids; GList *reqpads; /* List of RequestPads for multiqueue, there is * exactly one RequestPad per child chain */ @@ -3565,6 +3575,24 @@ GST_DEBUG_OBJECT (group->dbin, "%s group %p", (hide ? "Hiding" : "Freeing"), group); + + if (!hide) { + for (l = group->demuxer_pad_probe_ids; l != NULL; l = l->next) { + GstDemuxerPad *demuxer_pad = l->data; + GstPad *sinkpad = g_weak_ref_get (&demuxer_pad->weakPad); + + if (sinkpad != NULL) { + gst_pad_remove_probe (sinkpad, demuxer_pad->event_probe_id); + gst_pad_remove_probe (sinkpad, demuxer_pad->query_probe_id); + g_weak_ref_clear (&demuxer_pad->weakPad); + gst_object_unref (sinkpad); + } + g_free (demuxer_pad); + } + g_list_free (group->demuxer_pad_probe_ids); + group->demuxer_pad_probe_ids = NULL; + } + for (l = group->children; l; l = l->next) { GstDecodeChain *chain = (GstDecodeChain *) l->data; @@ -3816,6 +3844,7 @@ group->overrunsig = g_signal_connect (mq, "overrun", G_CALLBACK (multi_queue_overrun_cb), group); + group->demuxer_pad_probe_ids = NULL; gst_element_set_state (mq, GST_STATE_PAUSED); gst_bin_add (GST_BIN (dbin), gst_object_ref (mq)); @@ -3845,6 +3874,7 @@ gst_decode_group_control_demuxer_pad (GstDecodeGroup * group, GstPad * pad) { GstDecodeBin *dbin; + GstDemuxerPad *demuxer_pad; GstPad *srcpad, *sinkpad; GstIterator *it = NULL; GValue item = { 0, }; @@ -3878,12 +3908,21 @@ sinkpad); goto error; } - gst_pad_add_probe (sinkpad, GST_PAD_PROBE_TYPE_EVENT_UPSTREAM, - sink_pad_event_probe, group, NULL); - gst_pad_add_probe (sinkpad, GST_PAD_PROBE_TYPE_QUERY_UPSTREAM, - sink_pad_query_probe, group, NULL); CHAIN_MUTEX_LOCK (group->parent); + + /* Note: GWeakRefs can't be moved in memory once they're in use, so do a + * dedicated alloc for the GstDemuxerPad struct that contains it */ + demuxer_pad = g_new0 (GstDemuxerPad, 1); + demuxer_pad->event_probe_id = gst_pad_add_probe (sinkpad, + GST_PAD_PROBE_TYPE_EVENT_UPSTREAM, sink_pad_event_probe, group, NULL); + demuxer_pad->query_probe_id = gst_pad_add_probe (sinkpad, + GST_PAD_PROBE_TYPE_QUERY_UPSTREAM, sink_pad_query_probe, group, NULL); + + g_weak_ref_set (&demuxer_pad->weakPad, sinkpad); + group->demuxer_pad_probe_ids = + g_list_prepend (group->demuxer_pad_probe_ids, demuxer_pad); + group->reqpads = g_list_prepend (group->reqpads, gst_object_ref (sinkpad)); CHAIN_MUTEX_UNLOCK (group->parent); diff -Nru gst-plugins-base1.0-1.14.4/gst/playback/gstdecodebin3.c gst-plugins-base1.0-1.14.5/gst/playback/gstdecodebin3.c --- gst-plugins-base1.0-1.14.4/gst/playback/gstdecodebin3.c 2018-05-13 22:34:44.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/gst/playback/gstdecodebin3.c 2018-10-18 12:09:45.000000000 +0000 @@ -1747,6 +1747,8 @@ } else if (!was_drained) { check_all_slot_for_eos (dbin); } + if (ret == GST_PAD_PROBE_HANDLED) + gst_event_unref (ev); SELECTION_UNLOCK (dbin); break; } diff -Nru gst-plugins-base1.0-1.14.4/gst/subparse/gstsubparse.c gst-plugins-base1.0-1.14.5/gst/subparse/gstsubparse.c --- gst-plugins-base1.0-1.14.4/gst/subparse/gstsubparse.c 2018-07-18 13:24:41.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/gst/subparse/gstsubparse.c 2019-05-02 16:33:49.000000000 +0000 @@ -884,7 +884,13 @@ /* make sure we have exactly three digits after he comma */ p = strchr (s, ','); - g_assert (p != NULL); + if (p == NULL) { + /* If there isn't a ',' the timestamp is broken */ + /* https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/532#note_100179 */ + GST_WARNING ("failed to parse subrip timestamp string '%s'", s); + return FALSE; + } + ++p; len = strlen (p); if (len > 3) { diff -Nru gst-plugins-base1.0-1.14.4/gst-libs/gst/audio/audio-converter.c gst-plugins-base1.0-1.14.5/gst-libs/gst/audio/audio-converter.c --- gst-plugins-base1.0-1.14.4/gst-libs/gst/audio/audio-converter.c 2018-05-09 06:29:09.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/gst-libs/gst/audio/audio-converter.c 2019-05-02 16:33:49.000000000 +0000 @@ -1253,20 +1253,20 @@ convert->convert = converter_endian; convert->in_place = TRUE; - switch (GST_AUDIO_INFO_BPS (in_info)) { - case 2: + switch (GST_AUDIO_INFO_WIDTH (in_info)) { + case 16: GST_DEBUG ("initializing 16-bit endian conversion"); convert->swap_endian = converter_swap_endian_16; break; - case 3: + case 24: GST_DEBUG ("initializing 24-bit endian conversion"); convert->swap_endian = converter_swap_endian_24; break; - case 4: + case 32: GST_DEBUG ("initializing 32-bit endian conversion"); convert->swap_endian = converter_swap_endian_32; break; - case 8: + case 64: GST_DEBUG ("initializing 64-bit endian conversion"); convert->swap_endian = converter_swap_endian_64; break; diff -Nru gst-plugins-base1.0-1.14.4/gst-libs/gst/audio/gstaudioaggregator.h gst-plugins-base1.0-1.14.5/gst-libs/gst/audio/gstaudioaggregator.h --- gst-plugins-base1.0-1.14.4/gst-libs/gst/audio/gstaudioaggregator.h 2018-05-09 06:29:09.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/gst-libs/gst/audio/gstaudioaggregator.h 2019-05-02 16:33:49.000000000 +0000 @@ -63,6 +63,8 @@ * @info: The audio info for this pad set from the incoming caps * * The default implementation of GstPad used with #GstAudioAggregator + * + * Since: 1.14 */ struct _GstAudioAggregatorPad { @@ -82,6 +84,8 @@ * @convert_buffer: Convert a buffer from one format to another. * @update_conversion_info: Called when either the input or output * formats have changed. + * + * Since: 1.14 */ struct _GstAudioAggregatorPadClass { @@ -123,6 +127,8 @@ * An implementation of GstPad that can be used with #GstAudioAggregator. * * See #GstAudioAggregator for more details. + * + * Since: 1.14 */ struct _GstAudioAggregatorConvertPad { @@ -137,6 +143,7 @@ /** * GstAudioAggregatorConvertPadClass: * + * Since: 1.14 */ struct _GstAudioAggregatorConvertPadClass { @@ -167,6 +174,8 @@ * @current_caps: The caps set by the subclass * * GstAudioAggregator object + * + * Since: 1.14 */ struct _GstAudioAggregator { @@ -187,6 +196,8 @@ * buffer. The in_offset and out_offset are in "frames", which is * the size of a sample times the number of channels. Returns TRUE if * any non-silence was added to the buffer + * + * Since: 1.14 */ struct _GstAudioAggregatorClass { GstAggregatorClass parent_class; diff -Nru gst-plugins-base1.0-1.14.4/gst-libs/gst/audio/gstaudioringbuffer.c gst-plugins-base1.0-1.14.5/gst-libs/gst/audio/gstaudioringbuffer.c --- gst-plugins-base1.0-1.14.4/gst-libs/gst/audio/gstaudioringbuffer.c 2018-04-23 18:25:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/gst-libs/gst/audio/gstaudioringbuffer.c 2019-05-02 16:33:49.000000000 +0000 @@ -1823,7 +1823,7 @@ /* Reorder from device order to GStreamer order */ for (i = 0; i < sampleslen; i++) { for (j = 0; j < channels; j++) { - memcpy (data + reorder_map[j] * bps, ptr + j * bps, bps); + memcpy (data + i * bpf + reorder_map[j] * bps, ptr + j * bps, bps); } ptr += bpf; } diff -Nru gst-plugins-base1.0-1.14.4/gst-libs/gst/gl/egl/gsteglimage.c gst-plugins-base1.0-1.14.5/gst-libs/gst/gl/egl/gsteglimage.c --- gst-plugins-base1.0-1.14.4/gst-libs/gst/gl/egl/gsteglimage.c 2018-07-18 13:32:30.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/gst-libs/gst/gl/egl/gsteglimage.c 2019-05-02 16:33:49.000000000 +0000 @@ -64,6 +64,10 @@ #ifndef DRM_FORMAT_GR88 #define DRM_FORMAT_GR88 fourcc_code('G', 'R', '8', '8') #endif + +#ifndef DRM_FORMAT_NV24 +#define DRM_FORMAT_NV24 fourcc_code('N', 'V', '2', '4') +#endif #endif #ifndef EGL_LINUX_DMA_BUF_EXT @@ -86,6 +90,34 @@ #define EGL_DMA_BUF_PLANE0_PITCH_EXT 0x3274 #endif +#ifndef DRM_FORMAT_MOD_LINEAR +#define DRM_FORMAT_MOD_LINEAR 0ULL +#endif + +#ifndef EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT +#define EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT 0x3443 +#endif + +#ifndef EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT +#define EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT 0x3444 +#endif + +#ifndef EGL_DMA_BUF_PLANE1_MODIFIER_LO_EXT +#define EGL_DMA_BUF_PLANE1_MODIFIER_LO_EXT 0x3445 +#endif + +#ifndef EGL_DMA_BUF_PLANE1_MODIFIER_HI_EXT +#define EGL_DMA_BUF_PLANE1_MODIFIER_HI_EXT 0x3446 +#endif + +#ifndef EGL_DMA_BUF_PLANE2_MODIFIER_LO_EXT +#define EGL_DMA_BUF_PLANE2_MODIFIER_LO_EXT 0x3447 +#endif + +#ifndef EGL_DMA_BUF_PLANE2_MODIFIER_HI_EXT +#define EGL_DMA_BUF_PLANE2_MODIFIER_HI_EXT 0x3448 +#endif + #if !GST_GL_HAVE_EGLUINT64KHR typedef khronos_uint64_t EGLuint64KHR; #endif @@ -353,7 +385,7 @@ * target. */ static int -_drm_fourcc_from_info (GstVideoInfo * info, int plane) +_drm_fourcc_from_info (GstVideoInfo * info, int plane, GstGLFormat *out_format) { GstVideoFormat format = GST_VIDEO_INFO_FORMAT (info); #if G_BYTE_ORDER == G_LITTLE_ENDIAN @@ -372,10 +404,12 @@ switch (format) { case GST_VIDEO_FORMAT_RGB16: case GST_VIDEO_FORMAT_BGR16: + *out_format = GST_GL_RGB565; return DRM_FORMAT_RGB565; case GST_VIDEO_FORMAT_RGB: case GST_VIDEO_FORMAT_BGR: + *out_format = GST_GL_RGB; return rgb_fourcc; case GST_VIDEO_FORMAT_RGBA: @@ -387,19 +421,23 @@ case GST_VIDEO_FORMAT_ABGR: case GST_VIDEO_FORMAT_xBGR: case GST_VIDEO_FORMAT_AYUV: + *out_format = GST_GL_RGBA; return rgba_fourcc; case GST_VIDEO_FORMAT_GRAY8: + *out_format = GST_GL_RED; return DRM_FORMAT_R8; case GST_VIDEO_FORMAT_YUY2: case GST_VIDEO_FORMAT_UYVY: case GST_VIDEO_FORMAT_GRAY16_LE: case GST_VIDEO_FORMAT_GRAY16_BE: + *out_format = GST_GL_RG; return rg_fourcc; case GST_VIDEO_FORMAT_NV12: case GST_VIDEO_FORMAT_NV21: + *out_format = plane == 0 ? GST_GL_RED : GST_GL_RG; return plane == 0 ? DRM_FORMAT_R8 : rg_fourcc; case GST_VIDEO_FORMAT_I420: @@ -407,6 +445,7 @@ case GST_VIDEO_FORMAT_Y41B: case GST_VIDEO_FORMAT_Y42B: case GST_VIDEO_FORMAT_Y444: + *out_format = GST_GL_RED; return DRM_FORMAT_R8; default: @@ -436,9 +475,7 @@ gint fourcc; gint i; - fourcc = _drm_fourcc_from_info (in_info, plane); - format = gst_gl_format_from_video_info (context, in_info, plane); - + fourcc = _drm_fourcc_from_info (in_info, plane, &format); GST_DEBUG ("fourcc %.4s (%d) plane %d (%dx%d)", (char *) &fourcc, fourcc, plane, GST_VIDEO_INFO_COMP_WIDTH (in_info, plane), diff -Nru gst-plugins-base1.0-1.14.4/gst-libs/gst/gl/egl/gstglcontext_egl.h gst-plugins-base1.0-1.14.5/gst-libs/gst/gl/egl/gstglcontext_egl.h --- gst-plugins-base1.0-1.14.4/gst-libs/gst/gl/egl/gstglcontext_egl.h 2018-03-23 20:44:42.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/gst-libs/gst/gl/egl/gstglcontext_egl.h 2019-05-02 16:33:49.000000000 +0000 @@ -33,11 +33,16 @@ #define GST_TYPE_GL_CONTEXT_EGL (gst_gl_context_egl_get_type()) #define GST_GL_CONTEXT_EGL(o) (G_TYPE_CHECK_INSTANCE_CAST((o), GST_TYPE_GL_CONTEXT_EGL, GstGLContextEGL)) -#define GST_GL_CONTEXT_EGL_CLASS(k) (G_TYPE_CHECK_CLASS((k), GST_TYPE_GL_CONTEXT_EGL, GstGLContextEGLClass)) +#define GST_GL_CONTEXT_EGL_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GST_TYPE_GL_CONTEXT_EGL, GstGLContextEGLClass)) #define GST_IS_GL_CONTEXT_EGL(o) (G_TYPE_CHECK_INSTANCE_TYPE((o), GST_TYPE_GL_CONTEXT_EGL)) #define GST_IS_GL_CONTEXT_EGL_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE((k), GST_TYPE_GL_CONTEXT_EGL)) #define GST_GL_CONTEXT_EGL_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS((o), GST_TYPE_GL_CONTEXT_EGL, GstGLContextEGLClass)) +#ifdef G_DEFINE_AUTOPTR_CLEANUP_FUNC +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstGLContextEGL, gst_object_unref) +#endif + + /** * GstGLContextEGL: * diff -Nru gst-plugins-base1.0-1.14.4/gst-libs/gst/gl/gbm/gstglwindow_gbm_egl.h gst-plugins-base1.0-1.14.5/gst-libs/gst/gl/gbm/gstglwindow_gbm_egl.h --- gst-plugins-base1.0-1.14.4/gst-libs/gst/gl/gbm/gstglwindow_gbm_egl.h 2018-03-28 11:25:03.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/gst-libs/gst/gl/gbm/gstglwindow_gbm_egl.h 2019-05-02 16:33:49.000000000 +0000 @@ -24,6 +24,7 @@ #include #include #include +#include G_BEGIN_DECLS @@ -37,8 +38,6 @@ typedef struct _GstGLWindowGBMEGL GstGLWindowGBMEGL; typedef struct _GstGLWindowGBMEGLClass GstGLWindowGBMEGLClass; -typedef struct _GstGLDisplayGBM GstGLDisplayGBM; - struct _GstGLWindowGBMEGL { /*< private >*/ GstGLWindow parent; diff -Nru gst-plugins-base1.0-1.14.4/gst-libs/gst/gl/gstgldebug.h gst-plugins-base1.0-1.14.5/gst-libs/gst/gl/gstgldebug.h --- gst-plugins-base1.0-1.14.4/gst-libs/gst/gl/gstgldebug.h 2018-03-23 20:44:42.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/gst-libs/gst/gl/gstgldebug.h 2019-05-02 16:33:49.000000000 +0000 @@ -25,8 +25,6 @@ G_BEGIN_DECLS -typedef struct _GstGLAsyncDebug GstGLAsyncDebug; - typedef gchar * (*GstGLAsyncDebugLogGetMessage) (gpointer user_data); /** diff -Nru gst-plugins-base1.0-1.14.4/gst-libs/gst/gl/gstglfilter.c gst-plugins-base1.0-1.14.5/gst-libs/gst/gl/gstglfilter.c --- gst-plugins-base1.0-1.14.4/gst-libs/gst/gl/gstglfilter.c 2018-03-23 20:44:42.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/gst-libs/gst/gl/gstglfilter.c 2018-11-10 12:31:08.000000000 +0000 @@ -611,7 +611,7 @@ } static GstCaps * -gst_gl_filter_set_caps_features (const GstCaps * caps, +gst_gl_filter_ensure_caps_contains_features (const GstCaps * caps, const gchar * feature_name) { GstCaps *ret = gst_caps_copy (caps); @@ -619,8 +619,12 @@ guint i = 0; for (i = 0; i < n; i++) { - gst_caps_set_features (ret, i, - gst_caps_features_from_string (GST_CAPS_FEATURE_MEMORY_GL_MEMORY)); + GstCapsFeatures *f = gst_caps_get_features (ret, i); + if (!gst_caps_features_is_any (f)) { + if (!gst_caps_features_contains (f, feature_name)) { + gst_caps_features_add (f, GST_CAPS_FEATURE_MEMORY_GL_MEMORY); + } + } } return ret; @@ -651,7 +655,7 @@ direction, caps, NULL); result = - gst_gl_filter_set_caps_features (tmp, + gst_gl_filter_ensure_caps_contains_features (tmp, GST_CAPS_FEATURE_MEMORY_GL_MEMORY); gst_caps_unref (tmp); tmp = result; diff -Nru gst-plugins-base1.0-1.14.4/gst-libs/gst/gl/gstglfuncs.h gst-plugins-base1.0-1.14.5/gst-libs/gst/gl/gstglfuncs.h --- gst-plugins-base1.0-1.14.4/gst-libs/gst/gl/gstglfuncs.h 2018-03-23 20:44:42.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/gst-libs/gst/gl/gstglfuncs.h 2019-05-02 16:33:49.000000000 +0000 @@ -93,11 +93,11 @@ ret (GSTGLAPI *name) args; #define GST_GL_EXT_END() -typedef struct _GstGLFuncs +struct _GstGLFuncs { #include gpointer padding[GST_PADDING_LARGE*6]; -} GstGLFuncs; +}; #undef GST_GL_EXT_BEGIN #undef GST_GL_EXT_FUNCTION diff -Nru gst-plugins-base1.0-1.14.4/gst-libs/gst/gl/gstglmemory.c gst-plugins-base1.0-1.14.5/gst-libs/gst/gl/gstglmemory.c --- gst-plugins-base1.0-1.14.4/gst-libs/gst/gl/gstglmemory.c 2018-05-09 06:29:09.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/gst-libs/gst/gl/gstglmemory.c 2018-11-10 12:31:08.000000000 +0000 @@ -1458,8 +1458,13 @@ else views = 1; + if (n_wrapped_pointers == views) + n_mem = 1; + + /* Sanity check for the code below; there should be as many pointers as the + * number of memory we are going to create */ g_return_val_if_fail (!wrapped_data - || views * n_mem != n_wrapped_pointers, FALSE); + || n_mem * views == n_wrapped_pointers, FALSE); for (v = 0; v < views; v++) { for (i = 0; i < n_mem; i++) { diff -Nru gst-plugins-base1.0-1.14.4/gst-libs/gst/gl/gstgloverlaycompositor.c gst-plugins-base1.0-1.14.5/gst-libs/gst/gl/gstgloverlaycompositor.c --- gst-plugins-base1.0-1.14.4/gst-libs/gst/gl/gstgloverlaycompositor.c 2018-03-23 20:44:42.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/gst-libs/gst/gl/gstgloverlaycompositor.c 2019-05-02 16:33:49.000000000 +0000 @@ -179,8 +179,8 @@ } if (overlay->texcoord_buffer) { - gl->DeleteBuffers (1, &overlay->position_buffer); - overlay->position_buffer = 0; + gl->DeleteBuffers (1, &overlay->texcoord_buffer); + overlay->texcoord_buffer = 0; } if (overlay->index_buffer) { @@ -639,8 +639,9 @@ for (i = 0; i < gst_caps_get_size (composition_caps); i++) { GstCapsFeatures *f = gst_caps_get_features (composition_caps, i); - gst_caps_features_add (f, - GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION); + if (!gst_caps_features_is_any (f)) + gst_caps_features_add (f, + GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION); } caps = gst_caps_merge (composition_caps, caps); diff -Nru gst-plugins-base1.0-1.14.4/gst-libs/gst/gl/gstglupload.c gst-plugins-base1.0-1.14.5/gst-libs/gst/gl/gstglupload.c --- gst-plugins-base1.0-1.14.4/gst-libs/gst/gl/gstglupload.c 2018-04-23 18:26:15.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/gst-libs/gst/gl/gstglupload.c 2019-05-02 16:33:49.000000000 +0000 @@ -487,6 +487,7 @@ GstGLUpload *upload; GstEGLImage *eglimage[GST_VIDEO_MAX_PLANES]; + GstGLFormat formats[GST_VIDEO_MAX_PLANES]; GstBuffer *outbuf; GstGLVideoAllocationParams *params; }; @@ -667,6 +668,7 @@ return FALSE; _set_cached_eglimage (mems[i], dmabuf->eglimage[i], i); + dmabuf->formats[i] = dmabuf->eglimage[i]->format; } return TRUE; @@ -691,8 +693,9 @@ /* FIXME: buffer pool */ dmabuf->outbuf = gst_buffer_new (); - gst_gl_memory_setup_buffer (allocator, dmabuf->outbuf, dmabuf->params, NULL, - (gpointer *) dmabuf->eglimage, gst_buffer_n_memory (dmabuf->outbuf)); + gst_gl_memory_setup_buffer (allocator, dmabuf->outbuf, dmabuf->params, + dmabuf->formats, (gpointer *) dmabuf->eglimage, + gst_buffer_n_memory (dmabuf->outbuf)); gst_object_unref (allocator); } @@ -1711,6 +1714,7 @@ gst_video_info_from_caps (&upload->priv->in_info, in_caps); gst_video_info_from_caps (&upload->priv->out_info, out_caps); + upload->priv->method = NULL; upload->priv->method_impl = NULL; upload->priv->method_i = 0; diff -Nru gst-plugins-base1.0-1.14.4/gst-libs/gst/gl/gstglviewconvert.c gst-plugins-base1.0-1.14.5/gst-libs/gst/gl/gstglviewconvert.c --- gst-plugins-base1.0-1.14.4/gst-libs/gst/gl/gstglviewconvert.c 2018-09-30 20:18:13.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/gst-libs/gst/gl/gstglviewconvert.c 2018-11-10 12:31:08.000000000 +0000 @@ -1948,6 +1948,9 @@ gl->ActiveTexture (GL_TEXTURE0); gl->BindTexture (from_gl_target, priv->in_tex[0]->tex_id); + gl->ClearColor (0.0, 0.0, 0.0, 1.0); + gl->Clear (GL_COLOR_BUFFER_BIT); + gl->DrawElements (GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, NULL); if (gl->BindVertexArray) diff -Nru gst-plugins-base1.0-1.14.4/gst-libs/gst/gl/meson.build gst-plugins-base1.0-1.14.5/gst-libs/gst/gl/meson.build --- gst-plugins-base1.0-1.14.4/gst-libs/gst/gl/meson.build 2018-07-18 13:56:20.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/gst-libs/gst/gl/meson.build 2019-01-23 00:42:08.000000000 +0000 @@ -407,7 +407,7 @@ if gl_dep.found() gl_lib_deps += gl_dep glconf.set10('GST_GL_HAVE_OPENGL', 1) - enabled_gl_apis += 'opengl' + enabled_gl_apis += 'gl' endif # EGL checks @@ -416,10 +416,13 @@ egl_dep = dependency('egl', required : false) if not egl_dep.found() egl_dep = cc.find_library('EGL', required : false) + endif - if not egl_dep.found() and need_platform_egl == 'yes' - error ('Could not find requested EGL library') - endif + if egl_dep.found() and not cc.has_header('EGL/egl.h', dependencies : egl_dep) + egl_dep = unneeded_dep + endif + if egl_dep.found() and not cc.has_header('EGL/eglext.h', dependencies : egl_dep) + egl_dep = unneeded_dep endif if egl_dep.found() @@ -449,8 +452,9 @@ #include ''' enabled_gl_platforms += 'egl' + elif need_platform_egl == 'yes' + error ('Could not find requested EGL library') endif - endif # wayland checks diff -Nru gst-plugins-base1.0-1.14.4/gst-libs/gst/gl/wayland/gstgldisplay_wayland.c gst-plugins-base1.0-1.14.5/gst-libs/gst/gl/wayland/gstgldisplay_wayland.c --- gst-plugins-base1.0-1.14.4/gst-libs/gst/gl/wayland/gstgldisplay_wayland.c 2018-03-23 20:44:42.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/gst-libs/gst/gl/wayland/gstgldisplay_wayland.c 2019-05-02 16:33:49.000000000 +0000 @@ -91,6 +91,8 @@ { GstGLDisplayWayland *display_wayland = GST_GL_DISPLAY_WAYLAND (object); + g_clear_pointer (&display_wayland->shell, wl_shell_destroy); + /* Cause eglTerminate() to occur before wl_display_disconnect() * https://bugzilla.gnome.org/show_bug.cgi?id=787293 */ g_object_set_data (object, "gst.gl.display.egl", NULL); diff -Nru gst-plugins-base1.0-1.14.4/gst-libs/gst/pbutils/codec-utils.c gst-plugins-base1.0-1.14.5/gst-libs/gst/pbutils/codec-utils.c --- gst-plugins-base1.0-1.14.4/gst-libs/gst/pbutils/codec-utils.c 2018-04-23 18:26:05.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/gst-libs/gst/pbutils/codec-utils.c 2019-05-02 16:33:49.000000000 +0000 @@ -1567,6 +1567,7 @@ if (!hdl) { GST_WARNING ("Error creating header"); + gst_byte_writer_reset (&bw); return NULL; } diff -Nru gst-plugins-base1.0-1.14.4/gst-libs/gst/pbutils/encoding-profile.c gst-plugins-base1.0-1.14.5/gst-libs/gst/pbutils/encoding-profile.c --- gst-plugins-base1.0-1.14.4/gst-libs/gst/pbutils/encoding-profile.c 2018-05-09 06:29:09.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/gst-libs/gst/pbutils/encoding-profile.c 2018-10-18 12:07:58.000000000 +0000 @@ -774,7 +774,7 @@ gst_encoding_profile_set_restriction (GstEncodingProfile * profile, GstCaps * restriction) { - g_return_if_fail (GST_IS_CAPS (restriction)); + g_return_if_fail (restriction == NULL || GST_IS_CAPS (restriction)); g_return_if_fail (GST_IS_ENCODING_PROFILE (profile)); if (profile->restriction) diff -Nru gst-plugins-base1.0-1.14.4/gst-libs/gst/pbutils/gstdiscoverer.c gst-plugins-base1.0-1.14.5/gst-libs/gst/pbutils/gstdiscoverer.c --- gst-plugins-base1.0-1.14.4/gst-libs/gst/pbutils/gstdiscoverer.c 2018-03-23 20:44:42.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/gst-libs/gst/pbutils/gstdiscoverer.c 2019-05-02 16:33:49.000000000 +0000 @@ -124,8 +124,8 @@ /* Custom main context variables */ GMainContext *ctx; - guint sourceid; - guint timeoutid; + GSource *bus_source; + GSource *timeout_source; /* reusable queries */ GstQuery *seeking_query; @@ -1313,9 +1313,10 @@ GST_DEBUG ("Collecting information"); /* Stop the timeout handler if present */ - if (dc->priv->timeoutid) { - g_source_remove (dc->priv->timeoutid); - dc->priv->timeoutid = 0; + if (dc->priv->timeout_source) { + g_source_destroy (dc->priv->timeout_source); + g_source_unref (dc->priv->timeout_source); + dc->priv->timeout_source = NULL; } if (dc->priv->streams) { @@ -1447,8 +1448,8 @@ /* Attach a timeout to the main context */ source = g_timeout_source_new (dc->priv->timeout / GST_MSECOND); g_source_set_callback_indirect (source, g_object_ref (dc), &cb_funcs); - dc->priv->timeoutid = g_source_attach (source, dc->priv->ctx); - g_source_unref (source); + g_source_attach (source, dc->priv->ctx); + dc->priv->timeout_source = source; } @@ -1784,7 +1785,6 @@ async_timeout_cb (GstDiscoverer * dc) { if (!g_source_is_destroyed (g_main_current_source ())) { - dc->priv->timeoutid = 0; GST_DEBUG ("Setting result to TIMEOUT"); dc->priv->current_info->result = GST_DISCOVERER_TIMEOUT; dc->priv->processing = FALSE; @@ -2188,8 +2188,8 @@ source = gst_bus_create_watch (discoverer->priv->bus); g_source_set_callback (source, (GSourceFunc) gst_bus_async_signal_func, NULL, NULL); - discoverer->priv->sourceid = g_source_attach (source, ctx); - g_source_unref (source); + g_source_attach (source, ctx); + discoverer->priv->bus_source = source; discoverer->priv->ctx = g_main_context_ref (ctx); start_discovering (discoverer); @@ -2231,14 +2231,16 @@ DISCO_UNLOCK (discoverer); /* Remove timeout handler */ - if (discoverer->priv->timeoutid) { - g_source_remove (discoverer->priv->timeoutid); - discoverer->priv->timeoutid = 0; + if (discoverer->priv->timeout_source) { + g_source_destroy (discoverer->priv->timeout_source); + g_source_unref (discoverer->priv->timeout_source); + discoverer->priv->timeout_source = NULL; } /* Remove signal watch */ - if (discoverer->priv->sourceid) { - g_source_remove (discoverer->priv->sourceid); - discoverer->priv->sourceid = 0; + if (discoverer->priv->bus_source) { + g_source_destroy (discoverer->priv->bus_source); + g_source_unref (discoverer->priv->bus_source); + discoverer->priv->bus_source = NULL; } /* Unref main context */ if (discoverer->priv->ctx) { diff -Nru gst-plugins-base1.0-1.14.4/gst-libs/gst/rtp/gstrtcpbuffer.c gst-plugins-base1.0-1.14.5/gst-libs/gst/rtp/gstrtcpbuffer.c --- gst-plugins-base1.0-1.14.4/gst-libs/gst/rtp/gstrtcpbuffer.c 2018-04-23 18:25:13.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/gst-libs/gst/rtp/gstrtcpbuffer.c 2019-05-02 16:33:49.000000000 +0000 @@ -371,6 +371,31 @@ return count; } +static gint +rtcp_packet_min_length (GstRTCPType type) +{ + switch (type) { + case GST_RTCP_TYPE_SR: + return 28; + case GST_RTCP_TYPE_RR: + return 8; + case GST_RTCP_TYPE_SDES: + return 4; + case GST_RTCP_TYPE_BYE: + return 4; + case GST_RTCP_TYPE_APP: + return 12; + case GST_RTCP_TYPE_RTPFB: + return 12; + case GST_RTCP_TYPE_PSFB: + return 12; + case GST_RTCP_TYPE_XR: + return 8; + default: + return -1; + } +} + /** * read_packet_header: * @packet: a packet @@ -385,6 +410,8 @@ guint8 *data; gsize maxsize; guint offset; + gint minsize; + guint minlength; g_return_val_if_fail (packet != NULL, FALSE); @@ -415,6 +442,15 @@ if (offset + 4 + packet->length * 4 > maxsize) return FALSE; + minsize = rtcp_packet_min_length (packet->type); + if (minsize == -1) + minsize = 0; + minlength = (minsize - 4) >> 2; + + /* Validate the size */ + if (packet->length < minlength) + return FALSE; + return TRUE; } @@ -466,7 +502,7 @@ g_return_val_if_fail (packet->rtcp != NULL, FALSE); g_return_val_if_fail (packet->rtcp->map.flags & GST_MAP_READ, FALSE); - /* if we have a padding or invalid packet, it must be the last, + /* if we have a padding or invalid packet, it must be the last, * return FALSE */ if (packet->type == GST_RTCP_TYPE_INVALID || packet->padding) goto end; @@ -524,34 +560,10 @@ /* packet->offset is now pointing to the next free offset in the buffer to * start a compount packet. Next we figure out if we have enough free space in * the buffer to continue. */ - switch (type) { - case GST_RTCP_TYPE_SR: - len = 28; - break; - case GST_RTCP_TYPE_RR: - len = 8; - break; - case GST_RTCP_TYPE_SDES: - len = 4; - break; - case GST_RTCP_TYPE_BYE: - len = 4; - break; - case GST_RTCP_TYPE_APP: - len = 12; - break; - case GST_RTCP_TYPE_RTPFB: - len = 12; - break; - case GST_RTCP_TYPE_PSFB: - len = 12; - break; - case GST_RTCP_TYPE_XR: - len = 4; - break; - default: - goto unknown_type; - } + len = rtcp_packet_min_length (type); + if (len == -1) + goto unknown_type; + if (packet->offset + len >= maxsize) goto no_space; diff -Nru gst-plugins-base1.0-1.14.4/gst-libs/gst/rtp/gstrtpbasepayload.c gst-plugins-base1.0-1.14.5/gst-libs/gst/rtp/gstrtpbasepayload.c --- gst-plugins-base1.0-1.14.4/gst-libs/gst/rtp/gstrtpbasepayload.c 2018-03-23 20:44:42.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/gst-libs/gst/rtp/gstrtpbasepayload.c 2019-05-02 16:33:49.000000000 +0000 @@ -1244,6 +1244,8 @@ /* set ssrc, payload type, seq number, caps and rtptime */ if (is_list) { gst_buffer_list_foreach (GST_BUFFER_LIST_CAST (obj), set_headers, &data); + /* sequence number has increased more if this was a buffer list */ + payload->seqnum = data.seqnum - 1; } else { GstBuffer *buf = GST_BUFFER_CAST (obj); set_headers (&buf, 0, &data); @@ -1252,9 +1254,11 @@ priv->next_seqnum = data.seqnum; payload->timestamp = data.rtptime; - GST_LOG_OBJECT (payload, "Preparing to push packet with size %" + GST_LOG_OBJECT (payload, "Preparing to push %s with size %" G_GSIZE_FORMAT ", seq=%d, rtptime=%u, pts %" GST_TIME_FORMAT, - (is_list) ? -1 : gst_buffer_get_size (GST_BUFFER (obj)), + (is_list) ? "list" : "packet", + (is_list) ? gst_buffer_list_length (GST_BUFFER_LIST_CAST (obj)) : + gst_buffer_get_size (GST_BUFFER (obj)), payload->seqnum, data.rtptime, GST_TIME_ARGS (data.pts)); if (g_atomic_int_compare_and_exchange (&payload-> diff -Nru gst-plugins-base1.0-1.14.4/gst-libs/gst/rtp/gstrtppayloads.c gst-plugins-base1.0-1.14.5/gst-libs/gst/rtp/gstrtppayloads.c --- gst-plugins-base1.0-1.14.4/gst-libs/gst/rtp/gstrtppayloads.c 2018-03-23 20:44:42.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/gst-libs/gst/rtp/gstrtppayloads.c 2019-05-02 16:33:49.000000000 +0000 @@ -155,6 +155,7 @@ {G_MAXUINT8, "application", "MPEG4-GENERIC", 0, NULL, 0}, {G_MAXUINT8, "video", "H264", 90000, NULL, 0}, + {G_MAXUINT8, "video", "H265", 90000, NULL, 0}, {G_MAXUINT8, "video", "MPEG4-GENERIC", 90000, NULL, 0}, {G_MAXUINT8, "video", "THEORA", 0, NULL, 0}, {G_MAXUINT8, "video", "VORBIS", 0, NULL, 0}, diff -Nru gst-plugins-base1.0-1.14.4/gst-libs/gst/rtsp/gstrtspconnection.c gst-plugins-base1.0-1.14.5/gst-libs/gst/rtsp/gstrtspconnection.c --- gst-plugins-base1.0-1.14.4/gst-libs/gst/rtsp/gstrtspconnection.c 2018-03-23 20:44:42.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/gst-libs/gst/rtsp/gstrtspconnection.c 2019-05-02 16:33:49.000000000 +0000 @@ -768,7 +768,6 @@ gst_rtsp_message_add_header (msg, GST_RTSP_HDR_CACHE_CONTROL, "no-cache"); gst_rtsp_message_add_header (msg, GST_RTSP_HDR_PRAGMA, "no-cache"); gst_rtsp_message_add_header (msg, GST_RTSP_HDR_HOST, host); - add_auth_header (conn, msg); /* we need to temporarily set conn->tunneled to FALSE to prevent the HTTP * request from being base64 encoded */ @@ -850,7 +849,6 @@ "Sun, 9 Jan 1972 00:00:00 GMT"); gst_rtsp_message_add_header (msg, GST_RTSP_HDR_CONTENT_LENGTH, "32767"); gst_rtsp_message_add_header (msg, GST_RTSP_HDR_HOST, host); - add_auth_header (conn, msg); /* we need to temporarily set conn->tunneled to FALSE to prevent the HTTP * request from being base64 encoded */ @@ -1089,6 +1087,8 @@ g_free (auth_string); auth_string = auth_string2; } + /* Do not keep any old Authorization headers */ + gst_rtsp_message_remove_header (message, GST_RTSP_HDR_AUTHORIZATION, -1); gst_rtsp_message_take_header (message, GST_RTSP_HDR_AUTHORIZATION, auth_string); break; @@ -1276,8 +1276,12 @@ /* try to read more bytes */ r = fill_raw_bytes (conn, in, sizeof (in), block, err); if (r <= 0) { - if (out == 0) + if (out == 0) { out = r; + } else { + /* we have some data ignore error */ + g_clear_error (err); + } break; } @@ -2128,7 +2132,7 @@ maxlen = sizeof (conn->session_id) - 1; /* the sessionid can have attributes marked with ; * Make sure we strip them */ - for (i = 0; session_id[i] != '\0'; i++) { + for (i = 0; i < maxlen && session_id[i] != '\0'; i++) { if (session_id[i] == ';') { maxlen = i; /* parse timeout */ @@ -2157,7 +2161,7 @@ } default: res = GST_RTSP_ERROR; - break; + goto done; } } done: diff -Nru gst-plugins-base1.0-1.14.4/gst-libs/gst/tag/gstid3tag.c gst-plugins-base1.0-1.14.5/gst-libs/gst/tag/gstid3tag.c --- gst-plugins-base1.0-1.14.4/gst-libs/gst/tag/gstid3tag.c 2018-04-23 18:21:52.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/gst-libs/gst/tag/gstid3tag.c 2019-05-02 16:33:49.000000000 +0000 @@ -262,7 +262,7 @@ GstTagList * gst_tag_list_new_from_id3v1 (const guint8 * data) { - guint year; + gint64 year; gchar *ystr; GstTagList *list; @@ -275,9 +275,9 @@ gst_tag_extract_id3v1_string (list, GST_TAG_ARTIST, (gchar *) & data[33], 30); gst_tag_extract_id3v1_string (list, GST_TAG_ALBUM, (gchar *) & data[63], 30); ystr = g_strndup ((gchar *) & data[93], 4); - year = strtoul (ystr, NULL, 10); + year = g_ascii_strtoll (ystr, NULL, 10); g_free (ystr); - if (year > 0) { + if (year > 0 && year <= 9999) { GstDateTime *dt = gst_date_time_new_y (year); gst_tag_list_add (list, GST_TAG_MERGE_REPLACE, GST_TAG_DATE_TIME, dt, NULL); diff -Nru gst-plugins-base1.0-1.14.4/gst-libs/gst/video/convertframe.c gst-plugins-base1.0-1.14.5/gst-libs/gst/video/convertframe.c --- gst-plugins-base1.0-1.14.4/gst-libs/gst/video/convertframe.c 2018-03-23 20:44:42.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/gst-libs/gst/video/convertframe.c 2019-05-02 16:33:49.000000000 +0000 @@ -317,7 +317,6 @@ from_caps = gst_sample_get_caps (sample); g_return_val_if_fail (from_caps != NULL, NULL); - to_caps_copy = gst_caps_new_empty (); n = gst_caps_get_size (to_caps); for (i = 0; i < n; i++) { @@ -338,7 +337,9 @@ * appsrc, this should preroll the converted buffer in appsink */ GST_DEBUG ("running conversion pipeline to caps %" GST_PTR_FORMAT, to_caps_copy); - gst_element_set_state (pipeline, GST_STATE_PAUSED); + if (gst_element_set_state (pipeline, + GST_STATE_PAUSED) == GST_STATE_CHANGE_FAILURE) + goto state_change_failed; /* feed buffer in appsrc */ GST_DEBUG ("feeding buffer %p, size %" G_GSIZE_FORMAT ", caps %" @@ -401,6 +402,7 @@ /* ERRORS */ no_pipeline: +state_change_failed: { gst_caps_unref (to_caps_copy); @@ -415,6 +417,7 @@ typedef struct { + gint ref_count; GMutex mutex; GstElement *pipeline; GstVideoConvertSampleCallback callback; @@ -422,57 +425,60 @@ GDestroyNotify destroy_notify; GMainContext *context; GstSample *sample; - //GstBuffer *buffer; GSource *timeout_source; gboolean finished; + + /* Results */ + GstSample *converted_sample; + GError *error; } GstVideoConvertSampleContext; -typedef struct +static GstVideoConvertSampleContext * +gst_video_convert_frame_context_ref (GstVideoConvertSampleContext * ctx) { - GstVideoConvertSampleCallback callback; - GstSample *sample; - //GstBuffer *buffer; - GError *error; - gpointer user_data; - GDestroyNotify destroy_notify; + g_atomic_int_inc (&ctx->ref_count); - GstVideoConvertSampleContext *context; -} GstVideoConvertSampleCallbackContext; + return ctx; +} static void -gst_video_convert_frame_context_free (GstVideoConvertSampleContext * ctx) +gst_video_convert_frame_context_unref (GstVideoConvertSampleContext * ctx) { - /* Wait until all users of the mutex are done */ - g_mutex_lock (&ctx->mutex); - g_mutex_unlock (&ctx->mutex); + if (!g_atomic_int_dec_and_test (&ctx->ref_count)) + return; + g_mutex_clear (&ctx->mutex); if (ctx->timeout_source) g_source_destroy (ctx->timeout_source); - //if (ctx->buffer) - // gst_buffer_unref (ctx->buffer); if (ctx->sample) gst_sample_unref (ctx->sample); + if (ctx->converted_sample) + gst_sample_unref (ctx->converted_sample); + g_clear_error (&ctx->error); g_main_context_unref (ctx->context); - gst_element_set_state (ctx->pipeline, GST_STATE_NULL); - gst_object_unref (ctx->pipeline); + /* The pipeline was already destroyed in finish() earlier and we + * must not end up here without finish() being called */ + g_warn_if_fail (ctx->pipeline == NULL); g_slice_free (GstVideoConvertSampleContext, ctx); } -static void - gst_video_convert_frame_callback_context_free - (GstVideoConvertSampleCallbackContext * ctx) -{ - if (ctx->context) - gst_video_convert_frame_context_free (ctx->context); - g_slice_free (GstVideoConvertSampleCallbackContext, ctx); -} - static gboolean -convert_frame_dispatch_callback (GstVideoConvertSampleCallbackContext * ctx) +convert_frame_dispatch_callback (GstVideoConvertSampleContext * ctx) { - ctx->callback (ctx->sample, ctx->error, ctx->user_data); + GstSample *sample; + GError *error; + + g_return_val_if_fail (ctx->converted_sample != NULL + || ctx->error != NULL, FALSE); + + sample = ctx->converted_sample; + error = ctx->error; + ctx->converted_sample = NULL; + ctx->error = NULL; + + ctx->callback (sample, error, ctx->user_data); if (ctx->destroy_notify) ctx->destroy_notify (ctx->user_data); @@ -481,33 +487,51 @@ } static void +convert_frame_stop_pipeline (GstElement * element, gpointer user_data) +{ + gst_element_set_state (element, GST_STATE_NULL); +} + +static void convert_frame_finish (GstVideoConvertSampleContext * context, GstSample * sample, GError * error) { GSource *source; - GstVideoConvertSampleCallbackContext *ctx; + + g_return_if_fail (!context->finished); + g_return_if_fail (sample != NULL || error != NULL); + + context->finished = TRUE; + context->converted_sample = sample; + context->error = error; if (context->timeout_source) g_source_destroy (context->timeout_source); context->timeout_source = NULL; - ctx = g_slice_new (GstVideoConvertSampleCallbackContext); - ctx->callback = context->callback; - ctx->user_data = context->user_data; - ctx->destroy_notify = context->destroy_notify; - ctx->sample = sample; - //ctx->buffer = buffer; - ctx->error = error; - ctx->context = context; - source = g_timeout_source_new (0); g_source_set_callback (source, - (GSourceFunc) convert_frame_dispatch_callback, ctx, - (GDestroyNotify) gst_video_convert_frame_callback_context_free); + (GSourceFunc) convert_frame_dispatch_callback, + gst_video_convert_frame_context_ref (context), + (GDestroyNotify) gst_video_convert_frame_context_unref); g_source_attach (source, context->context); g_source_unref (source); - context->finished = TRUE; + /* Asynchronously stop the pipeline here: this will set its + * state to NULL and get rid of its last reference, which in turn + * will get rid of all remaining references to our context and free + * it too. We can't do this directly here as we might be called from + * a streaming thread. + * + * We don't use the main loop here because the user might shut down it + * immediately after getting the result of the conversion above. + */ + if (context->pipeline) { + gst_element_call_async (context->pipeline, convert_frame_stop_pipeline, + NULL, NULL); + gst_object_unref (context->pipeline); + context->pipeline = NULL; + } } static gboolean @@ -593,11 +617,11 @@ convert_frame_finish (context, NULL, error); } - g_signal_handlers_disconnect_by_func (src, convert_frame_need_data_callback, - context); - done: g_mutex_unlock (&context->mutex); + + g_signal_handlers_disconnect_by_func (src, convert_frame_need_data_callback, + context); } static GstFlowReturn @@ -620,12 +644,12 @@ } convert_frame_finish (context, sample, error); - g_signal_handlers_disconnect_by_func (sink, convert_frame_need_data_callback, - context); - done: g_mutex_unlock (&context->mutex); + g_signal_handlers_disconnect_by_func (sink, convert_frame_need_data_callback, + context); + return GST_FLOW_OK; } @@ -693,69 +717,87 @@ gst_caps_append_structure (to_caps_copy, s); } - pipeline = - build_convert_frame_pipeline (&src, &sink, from_caps, - gst_buffer_get_video_crop_meta (buf), to_caps_copy, &error); - if (!pipeline) - goto no_pipeline; - - bus = gst_element_get_bus (pipeline); - + /* There's a reference cycle between the context and the pipeline, which is + * broken up once the finish() is called on the context. At latest when the + * timeout triggers the context will be freed */ ctx = g_slice_new0 (GstVideoConvertSampleContext); + ctx->ref_count = 1; g_mutex_init (&ctx->mutex); - //ctx->buffer = gst_buffer_ref (buf); ctx->sample = gst_sample_ref (sample); ctx->callback = callback; ctx->user_data = user_data; ctx->destroy_notify = destroy_notify; ctx->context = g_main_context_ref (context); ctx->finished = FALSE; + + pipeline = + build_convert_frame_pipeline (&src, &sink, from_caps, + gst_buffer_get_video_crop_meta (buf), to_caps_copy, &error); + if (!pipeline) + goto no_pipeline; ctx->pipeline = pipeline; + bus = gst_element_get_bus (pipeline); + if (timeout != GST_CLOCK_TIME_NONE) { ctx->timeout_source = g_timeout_source_new (timeout / GST_MSECOND); g_source_set_callback (ctx->timeout_source, - (GSourceFunc) convert_frame_timeout_callback, ctx, NULL); + (GSourceFunc) convert_frame_timeout_callback, + gst_video_convert_frame_context_ref (ctx), + (GDestroyNotify) gst_video_convert_frame_context_unref); g_source_attach (ctx->timeout_source, context); } - g_signal_connect (src, "need-data", - G_CALLBACK (convert_frame_need_data_callback), ctx); - g_signal_connect (sink, "new-preroll", - G_CALLBACK (convert_frame_new_preroll_callback), ctx); + g_signal_connect_data (src, "need-data", + G_CALLBACK (convert_frame_need_data_callback), + gst_video_convert_frame_context_ref (ctx), + (GClosureNotify) gst_video_convert_frame_context_unref, 0); + g_signal_connect_data (sink, "new-preroll", + G_CALLBACK (convert_frame_new_preroll_callback), + gst_video_convert_frame_context_ref (ctx), + (GClosureNotify) gst_video_convert_frame_context_unref, 0); source = gst_bus_create_watch (bus); g_source_set_callback (source, (GSourceFunc) convert_frame_bus_callback, - ctx, NULL); + gst_video_convert_frame_context_ref (ctx), + (GDestroyNotify) gst_video_convert_frame_context_unref); g_source_attach (source, context); g_source_unref (source); + gst_object_unref (bus); - gst_element_set_state (pipeline, GST_STATE_PLAYING); + if (gst_element_set_state (pipeline, + GST_STATE_PAUSED) == GST_STATE_CHANGE_FAILURE) + goto state_change_failed; - gst_object_unref (bus); gst_caps_unref (to_caps_copy); + gst_video_convert_frame_context_unref (ctx); + return; /* ERRORS */ no_pipeline: { - GstVideoConvertSampleCallbackContext *ctx; - GSource *source; + gst_caps_unref (to_caps_copy); + + g_mutex_lock (&ctx->mutex); + convert_frame_finish (ctx, NULL, error); + g_mutex_unlock (&ctx->mutex); + gst_video_convert_frame_context_unref (ctx); + return; + } +state_change_failed: + { gst_caps_unref (to_caps_copy); - ctx = g_slice_new0 (GstVideoConvertSampleCallbackContext); - ctx->callback = callback; - ctx->user_data = user_data; - ctx->destroy_notify = destroy_notify; - ctx->sample = NULL; - ctx->error = error; - - source = g_timeout_source_new (0); - g_source_set_callback (source, - (GSourceFunc) convert_frame_dispatch_callback, ctx, - (GDestroyNotify) gst_video_convert_frame_callback_context_free); - g_source_attach (source, context); - g_source_unref (source); + error = g_error_new (GST_CORE_ERROR, GST_CORE_ERROR_STATE_CHANGE, + "failed to change state to PLAYING"); + + g_mutex_lock (&ctx->mutex); + convert_frame_finish (ctx, NULL, error); + g_mutex_unlock (&ctx->mutex); + gst_video_convert_frame_context_unref (ctx); + + return; } } diff -Nru gst-plugins-base1.0-1.14.4/gst-libs/gst/video/gstvideometa.c gst-plugins-base1.0-1.14.5/gst-libs/gst/video/gstvideometa.c --- gst-plugins-base1.0-1.14.4/gst-libs/gst/video/gstvideometa.c 2018-05-09 06:29:09.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/gst-libs/gst/video/gstvideometa.c 2018-10-18 12:09:38.000000000 +0000 @@ -227,12 +227,12 @@ /* ERRORS */ no_memory: { - GST_DEBUG ("plane %u, no memory at offset %" G_GSIZE_FORMAT, plane, offset); + GST_ERROR ("plane %u, no memory at offset %" G_GSIZE_FORMAT, plane, offset); return FALSE; } cannot_map: { - GST_DEBUG ("cannot map memory range %u-%u", idx, length); + GST_ERROR ("cannot map memory range %u-%u", idx, length); return FALSE; } } @@ -288,8 +288,8 @@ * @width: the width * @height: the height * @n_planes: number of planes - * @offset: offset of each plane - * @stride: stride of each plane + * @offset: (array fixed-size=4): offset of each plane + * @stride: (array fixed-size=4): stride of each plane * * Attaches GstVideoMeta metadata to @buffer with the given parameters. * diff -Nru gst-plugins-base1.0-1.14.4/gst-libs/gst/video/gstvideotimecode.c gst-plugins-base1.0-1.14.5/gst-libs/gst/video/gstvideotimecode.c --- gst-plugins-base1.0-1.14.4/gst-libs/gst/video/gstvideotimecode.c 2018-05-15 10:17:39.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/gst-libs/gst/video/gstvideotimecode.c 2019-05-02 16:33:49.000000000 +0000 @@ -66,7 +66,8 @@ g_return_val_if_fail (tc != NULL, FALSE); - fr = (tc->config.fps_n + (tc->config.fps_d >> 1)) / tc->config.fps_d; + if (tc->config.fps_d == 0) + return FALSE; if (tc->hours >= 24) return FALSE; @@ -74,10 +75,14 @@ return FALSE; if (tc->seconds >= 60) return FALSE; - if (tc->config.fps_d == 0) - return FALSE; + + /* We can't have more frames than rounded up frames per second */ + fr = (tc->config.fps_n + (tc->config.fps_d >> 1)) / tc->config.fps_d; if (tc->frames >= fr && (tc->config.fps_n != 0 || tc->config.fps_d != 1)) return FALSE; + + /* We either need a specific X/1001 framerate or otherwise an integer + * framerate */ if (tc->config.fps_d == 1001) { if (tc->config.fps_n != 30000 && tc->config.fps_n != 60000 && tc->config.fps_n != 24000) @@ -85,6 +90,18 @@ } else if (tc->config.fps_n % tc->config.fps_d != 0) { return FALSE; } + + /* We only support 30000/1001 and 60000/1001 as drop-frame framerates. + * 24000/1001 is *not* a drop-frame framerate! */ + if (tc->config.flags & GST_VIDEO_TIME_CODE_FLAGS_DROP_FRAME) { + if (tc->config.fps_d != 1001 || (tc->config.fps_n != 30000 + && tc->config.fps_n != 60000)) + return FALSE; + } + + /* Drop-frame framerates require skipping over the first two + * timecodes every minutes except for every tenth minute in case + * of 30000/1001 and the first four timecodes for 60000/1001 */ if ((tc->config.flags & GST_VIDEO_TIME_CODE_FLAGS_DROP_FRAME) && tc->minutes % 10 && tc->seconds == 0 && tc->frames < fr / 15) { return FALSE; @@ -153,17 +170,13 @@ gdouble add_us; g_return_val_if_fail (gst_video_time_code_is_valid (tc), NULL); - g_return_val_if_fail (tc->config.latest_daily_jam != NULL, NULL); - ret = g_date_time_ref (tc->config.latest_daily_jam); - - if (ret == NULL) { + if (tc->config.latest_daily_jam == NULL) { gchar *tc_str = gst_video_time_code_to_string (tc); GST_WARNING ("Asked to convert time code %s to GDateTime, but its latest daily jam is NULL", tc_str); g_free (tc_str); - g_date_time_unref (ret); return NULL; } @@ -173,10 +186,11 @@ ("Asked to convert time code %s to GDateTime, but its framerate is unknown", tc_str); g_free (tc_str); - g_date_time_unref (ret); return NULL; } + ret = g_date_time_ref (tc->config.latest_daily_jam); + gst_util_fraction_to_double (tc->frames * tc->config.fps_d, tc->config.fps_n, &add_us); if ((tc->config.flags & GST_VIDEO_TIME_CODE_FLAGS_INTERLACED) diff -Nru gst-plugins-base1.0-1.14.4/gst-libs/gst/video/video-converter.c gst-plugins-base1.0-1.14.5/gst-libs/gst/video/video-converter.c --- gst-plugins-base1.0-1.14.4/gst-libs/gst/video/video-converter.c 2018-05-05 14:45:07.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/gst-libs/gst/video/video-converter.c 2019-01-22 12:49:30.000000000 +0000 @@ -2070,20 +2070,18 @@ static void setup_allocators (GstVideoConverter * convert) { - GstLineCache *cache; + GstLineCache *cache, *prev; GstLineCacheAllocLineFunc alloc_line; gboolean alloc_writable; gpointer user_data; GDestroyNotify notify; - gint width, n_lines; + gint width; gint i; width = MAX (convert->in_maxwidth, convert->out_maxwidth); width += convert->out_x; for (i = 0; i < convert->conversion_runner->n_threads; i++) { - n_lines = 1; - /* start with using dest lines if we can directly write into it */ if (convert->identity_pack) { alloc_line = get_dest_line; @@ -2101,12 +2099,24 @@ alloc_writable = convert->borderline != NULL; } + /* First step, try to calculate how many temp lines we need. Go backwards, + * keep track of the maximum number of lines we need for each intermediate + * step. */ + for (prev = cache = convert->pack_lines[i]; cache; cache = cache->prev) { + GST_DEBUG ("looking at cache %p, %d lines, %d backlog", cache, + cache->n_lines, cache->backlog); + prev->n_lines = MAX (prev->n_lines, cache->n_lines); + if (!cache->pass_alloc) { + GST_DEBUG ("cache %p, needs %d lines", prev, prev->n_lines); + prev = cache; + } + } + /* now walk backwards, we try to write into the dest lines directly * and keep track if the source needs to be writable */ for (cache = convert->pack_lines[i]; cache; cache = cache->prev) { gst_line_cache_set_alloc_line_func (cache, alloc_line, user_data, notify); cache->alloc_writable = alloc_writable; - n_lines = MAX (n_lines, cache->n_lines); /* make sure only one cache frees the allocator */ notify = NULL; @@ -2115,11 +2125,10 @@ /* can't pass allocator, make new temp line allocator */ user_data = converter_alloc_new (sizeof (guint16) * width * 4, - n_lines + cache->backlog, convert, NULL); + cache->n_lines + cache->backlog, convert, NULL); notify = (GDestroyNotify) converter_alloc_free; alloc_line = get_temp_line; alloc_writable = FALSE; - n_lines = cache->n_lines; } /* if someone writes to the input, we need a writable line from the * previous cache */ diff -Nru gst-plugins-base1.0-1.14.4/gst-libs/gst/video/video-format.c gst-plugins-base1.0-1.14.5/gst-libs/gst/video/video-format.c --- gst-plugins-base1.0-1.14.4/gst-libs/gst/video/video-format.c 2018-03-23 20:44:42.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/gst-libs/gst/video/video-format.c 2019-05-02 16:33:49.000000000 +0000 @@ -5215,18 +5215,17 @@ DPTH888, PSTR244, PLANE0, OFFS102, SUB422, PACK_VYUY), MAKE_RGBA_FORMAT (GBRA, "raw video", DPTH8888, PSTR1111, PLANE2013, OFFS0, SUB4444, PACK_GBRA), - MAKE_RGBA_FORMAT (GBRA_10BE, "raw video", DPTH10_10_10_10, PSTR222, PLANE2013, - OFFS0, SUB4444, PACK_GBRA_10BE), - MAKE_RGBA_LE_FORMAT (GBRA_10LE, "raw video", DPTH10_10_10_10, PSTR222, - PLANE2013, - OFFS0, SUB4444, PACK_GBRA_10LE), + MAKE_RGBA_FORMAT (GBRA_10BE, "raw video", DPTH10_10_10_10, PSTR2222, + PLANE2013, OFFS0, SUB4444, PACK_GBRA_10BE), + MAKE_RGBA_LE_FORMAT (GBRA_10LE, "raw video", DPTH10_10_10_10, PSTR2222, + PLANE2013, OFFS0, SUB4444, PACK_GBRA_10LE), MAKE_RGB_FORMAT (GBR_12BE, "raw video", DPTH12_12_12, PSTR222, PLANE201, OFFS0, SUB444, PACK_GBR_12BE), MAKE_RGB_LE_FORMAT (GBR_12LE, "raw video", DPTH12_12_12, PSTR222, PLANE201, OFFS0, SUB444, PACK_GBR_12LE), - MAKE_RGBA_FORMAT (GBRA_12BE, "raw video", DPTH12_12_12_12, PSTR222, PLANE2013, - OFFS0, SUB4444, PACK_GBRA_12BE), - MAKE_RGBA_LE_PACK_FORMAT (GBRA_12LE, "raw video", DPTH12_12_12_12, PSTR222, + MAKE_RGBA_FORMAT (GBRA_12BE, "raw video", DPTH12_12_12_12, PSTR2222, + PLANE2013, OFFS0, SUB4444, PACK_GBRA_12BE), + MAKE_RGBA_LE_PACK_FORMAT (GBRA_12LE, "raw video", DPTH12_12_12_12, PSTR2222, PLANE2013, OFFS0, SUB4444, PACK_GBRA_12LE), MAKE_YUV_FORMAT (I420_12BE, "raw video", 0x00000000, DPTH12_12_12, PSTR222, PLANE012, OFFS0, SUB420, PACK_I420_12BE), diff -Nru gst-plugins-base1.0-1.14.4/gst-libs/gst/video/video-info.c gst-plugins-base1.0-1.14.5/gst-libs/gst/video/video-info.c --- gst-plugins-base1.0-1.14.4/gst-libs/gst/video/video-info.c 2018-04-23 18:25:29.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/gst-libs/gst/video/video-info.c 2019-05-02 16:33:49.000000000 +0000 @@ -185,12 +185,19 @@ const GstVideoFormatInfo *finfo = info->finfo; if (!GST_VIDEO_FORMAT_INFO_IS_RGB (finfo) && - info->colorimetry.matrix == GST_VIDEO_COLOR_MATRIX_RGB) + info->colorimetry.matrix == GST_VIDEO_COLOR_MATRIX_RGB) { + GST_WARNING + ("color matrix RGB is only supported with RGB format, %s is not", + finfo->name); return FALSE; + } if (GST_VIDEO_FORMAT_INFO_IS_YUV (finfo) && - info->colorimetry.matrix == GST_VIDEO_COLOR_MATRIX_UNKNOWN) + info->colorimetry.matrix == GST_VIDEO_COLOR_MATRIX_UNKNOWN) { + GST_WARNING ("Need to specify a color matrix when using YUV format (%s)", + finfo->name); return FALSE; + } return TRUE; } diff -Nru gst-plugins-base1.0-1.14.4/gst-libs/gst/video/videooverlay.c gst-plugins-base1.0-1.14.5/gst-libs/gst/video/videooverlay.c --- gst-plugins-base1.0-1.14.4/gst-libs/gst/video/videooverlay.c 2018-03-23 20:44:42.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/gst-libs/gst/video/videooverlay.c 2019-05-02 16:33:49.000000000 +0000 @@ -534,7 +534,7 @@ gst_param_spec_array ("render-rectangle", "Render Rectangle", "The render rectangle ('')", g_param_spec_int ("rect-value", "Rectangle Value", - "One of x, y, width or height value.", -1, G_MAXINT, -1, + "One of x, y, width or height value.", G_MININT, G_MAXINT, -1, G_PARAM_WRITABLE | G_PARAM_STATIC_STRINGS), G_PARAM_WRITABLE | G_PARAM_STATIC_STRINGS)); } diff -Nru gst-plugins-base1.0-1.14.4/gst-plugins-base.doap gst-plugins-base1.0-1.14.5/gst-plugins-base.doap --- gst-plugins-base1.0-1.14.4/gst-plugins-base.doap 2018-10-02 21:53:28.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/gst-plugins-base.doap 2019-05-29 16:33:06.000000000 +0000 @@ -29,13 +29,23 @@ - - + + + 1.14.5 + 1.14 + + 2019-05-29 + + + + + + 1.14.4 1.14 diff -Nru gst-plugins-base1.0-1.14.4/ltmain.sh gst-plugins-base1.0-1.14.5/ltmain.sh --- gst-plugins-base1.0-1.14.4/ltmain.sh 2018-10-02 21:53:37.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/ltmain.sh 2019-05-29 16:33:14.000000000 +0000 @@ -31,7 +31,7 @@ PROGRAM=libtool PACKAGE=libtool -VERSION="2.4.6 Debian-2.4.6-2.1" +VERSION="2.4.6 Debian-2.4.6-10" package_revision=2.4.6 @@ -64,7 +64,7 @@ # libraries, which are installed to $pkgauxdir. # Set a version string for this script. -scriptversion=2015-10-12.13; # UTC +scriptversion=2015-01-20.17; # UTC # General shell script boiler plate, and helper functions. # Written by Gary V. Vaughan, 2004 @@ -580,16 +580,16 @@ { $debug_cmd - func_quote_arg pretty "$2" - eval "$1+=\\ \$func_quote_arg_result" + func_quote_for_eval "$2" + eval "$1+=\\ \$func_quote_for_eval_result" }' else func_append_quoted () { $debug_cmd - func_quote_arg pretty "$2" - eval "$1=\$$1\\ \$func_quote_arg_result" + func_quote_for_eval "$2" + eval "$1=\$$1\\ \$func_quote_for_eval_result" } fi @@ -1091,181 +1091,85 @@ } -# func_quote_portable EVAL ARG -# ---------------------------- -# Internal function to portably implement func_quote_arg. Note that we still -# keep attention to performance here so we as much as possible try to avoid -# calling sed binary (so far O(N) complexity as long as func_append is O(1)). -func_quote_portable () +# func_quote_for_eval ARG... +# -------------------------- +# Aesthetically quote ARGs to be evaled later. +# This function returns two values: +# i) func_quote_for_eval_result +# double-quoted, suitable for a subsequent eval +# ii) func_quote_for_eval_unquoted_result +# has all characters that are still active within double +# quotes backslashified. +func_quote_for_eval () { $debug_cmd - func_quote_portable_result=$2 - - # one-time-loop (easy break) - while true - do - if $1; then - func_quote_portable_result=`$ECHO "$2" | $SED \ - -e "$sed_double_quote_subst" -e "$sed_double_backslash"` - break - fi - - # Quote for eval. - case $func_quote_portable_result in + func_quote_for_eval_unquoted_result= + func_quote_for_eval_result= + while test 0 -lt $#; do + case $1 in *[\\\`\"\$]*) - case $func_quote_portable_result in - *[\[\*\?]*) - func_quote_portable_result=`$ECHO "$func_quote_portable_result" | $SED "$sed_quote_subst"` - break - ;; - esac + _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; + *) + _G_unquoted_arg=$1 ;; + esac + if test -n "$func_quote_for_eval_unquoted_result"; then + func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" + else + func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" + fi - func_quote_portable_old_IFS=$IFS - for _G_char in '\' '`' '"' '$' - do - # STATE($1) PREV($2) SEPARATOR($3) - set start "" "" - func_quote_portable_result=dummy"$_G_char$func_quote_portable_result$_G_char"dummy - IFS=$_G_char - for _G_part in $func_quote_portable_result - do - case $1 in - quote) - func_append func_quote_portable_result "$3$2" - set quote "$_G_part" "\\$_G_char" - ;; - start) - set first "" "" - func_quote_portable_result= - ;; - first) - set quote "$_G_part" "" - ;; - esac - done - done - IFS=$func_quote_portable_old_IFS + case $_G_unquoted_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting, command substitution and variable expansion + # for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + _G_quoted_arg=\"$_G_unquoted_arg\" ;; - *) ;; + *) + _G_quoted_arg=$_G_unquoted_arg + ;; esac - break - done - func_quote_portable_unquoted_result=$func_quote_portable_result - case $func_quote_portable_result in - # double-quote args containing shell metacharacters to delay - # word splitting, command substitution and variable expansion - # for a subsequent eval. - # many bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - func_quote_portable_result=\"$func_quote_portable_result\" - ;; - esac + if test -n "$func_quote_for_eval_result"; then + func_append func_quote_for_eval_result " $_G_quoted_arg" + else + func_append func_quote_for_eval_result "$_G_quoted_arg" + fi + shift + done } -# func_quotefast_eval ARG -# ----------------------- -# Quote one ARG (internal). This is equivalent to 'func_quote_arg eval ARG', -# but optimized for speed. Result is stored in $func_quotefast_eval. -if test xyes = `(x=; printf -v x %q yes; echo x"$x") 2>/dev/null`; then - func_quotefast_eval () - { - printf -v func_quotefast_eval_result %q "$1" - } -else - func_quotefast_eval () - { - func_quote_portable false "$1" - func_quotefast_eval_result=$func_quote_portable_result - } -fi - +# func_quote_for_expand ARG +# ------------------------- +# Aesthetically quote ARG to be evaled later; same as above, +# but do not quote variable references. +func_quote_for_expand () +{ + $debug_cmd -# func_quote_arg MODEs ARG -# ------------------------ -# Quote one ARG to be evaled later. MODEs argument may contain zero ore more -# specifiers listed below separated by ',' character. This function returns two -# values: -# i) func_quote_arg_result -# double-quoted (when needed), suitable for a subsequent eval -# ii) func_quote_arg_unquoted_result -# has all characters that are still active within double -# quotes backslashified. Available only if 'unquoted' is specified. -# -# Available modes: -# ---------------- -# 'eval' (default) -# - escape shell special characters -# 'expand' -# - the same as 'eval'; but do not quote variable references -# 'pretty' -# - request aesthetic output, i.e. '"a b"' instead of 'a\ b'. This might -# later used in func_quote to get output like: 'echo "a b"' instead of -# 'echo a\ b'. This is slower than default on some shells. -# 'unquoted' -# - produce also $func_quote_arg_unquoted_result which does not contain -# wrapping double-quotes. -# -# Examples for 'func_quote_arg pretty,unquoted string': -# -# string | *_result | *_unquoted_result -# ------------+-----------------------+------------------- -# " | \" | \" -# a b | "a b" | a b -# "a b" | "\"a b\"" | \"a b\" -# * | "*" | * -# z="${x-$y}" | "z=\"\${x-\$y}\"" | z=\"\${x-\$y}\" -# -# Examples for 'func_quote_arg pretty,unquoted,expand string': -# -# string | *_result | *_unquoted_result -# --------------+---------------------+-------------------- -# z="${x-$y}" | "z=\"${x-$y}\"" | z=\"${x-$y}\" -func_quote_arg () -{ - _G_quote_expand=false - case ,$1, in - *,expand,*) - _G_quote_expand=: - ;; + case $1 in + *[\\\`\"]*) + _G_arg=`$ECHO "$1" | $SED \ + -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; + *) + _G_arg=$1 ;; esac - case ,$1, in - *,pretty,*|*,expand,*|*,unquoted,*) - func_quote_portable $_G_quote_expand "$2" - func_quote_arg_result=$func_quote_portable_result - func_quote_arg_unquoted_result=$func_quote_portable_unquoted_result - ;; - *) - # Faster quote-for-eval for some shells. - func_quotefast_eval "$2" - func_quote_arg_result=$func_quotefast_eval_result + case $_G_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting and command substitution for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + _G_arg=\"$_G_arg\" ;; esac -} - -# func_quote MODEs ARGs... -# ------------------------ -# Quote all ARGs to be evaled later and join them into single command. See -# func_quote_arg's description for more info. -func_quote () -{ - $debug_cmd - _G_func_quote_mode=$1 ; shift - func_quote_result= - while test 0 -lt $#; do - func_quote_arg "$_G_func_quote_mode" "$1" - if test -n "$func_quote_result"; then - func_append func_quote_result " $func_quote_arg_result" - else - func_append func_quote_result "$func_quote_arg_result" - fi - shift - done + func_quote_for_expand_result=$_G_arg } @@ -1311,8 +1215,8 @@ _G_cmd=$1 _G_fail_exp=${2-':'} - func_quote_arg pretty,expand "$_G_cmd" - eval "func_notquiet $func_quote_arg_result" + func_quote_for_expand "$_G_cmd" + eval "func_notquiet $func_quote_for_expand_result" $opt_dry_run || { eval "$_G_cmd" @@ -1337,8 +1241,8 @@ _G_fail_exp=${2-':'} $opt_quiet || { - func_quote_arg expand,pretty "$_G_cmd" - eval "func_echo $func_quote_arg_result" + func_quote_for_expand "$_G_cmd" + eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || { @@ -1466,7 +1370,7 @@ #! /bin/sh # Set a version string for this script. -scriptversion=2015-10-12.13; # UTC +scriptversion=2015-10-07.11; # UTC # A portable, pluggable option parser for Bourne shell. # Written by Gary V. Vaughan, 2010 @@ -1676,8 +1580,8 @@ # ' # # No change in '$@' (ignored completely by this hook). There is # # no need to do the equivalent (but slower) action: -# # func_quote eval ${1+"$@"} -# # my_options_prep_result=$func_quote_result +# # func_quote_for_eval ${1+"$@"} +# # my_options_prep_result=$func_quote_for_eval_result # false # } # func_add_hook func_options_prep my_options_prep @@ -1713,8 +1617,8 @@ # done # # if $args_changed; then -# func_quote eval ${1+"$@"} -# my_silent_option_result=$func_quote_result +# func_quote_for_eval ${1+"$@"} +# my_silent_option_result=$func_quote_for_eval_result # fi # # $args_changed @@ -1781,8 +1685,8 @@ if $_G_rc_options; then func_options_result=$_G_res_var else - func_quote eval ${1+"$@"} - func_options_result=$func_quote_result + func_quote_for_eval ${1+"$@"} + func_options_result=$func_quote_for_eval_result fi $_G_rc_options @@ -1925,8 +1829,8 @@ if $_G_rc_parse_options; then # save modified positional parameters for caller - func_quote eval ${1+"$@"} - func_parse_options_result=$func_quote_result + func_quote_for_eval ${1+"$@"} + func_parse_options_result=$func_quote_for_eval_result fi $_G_rc_parse_options @@ -2237,7 +2141,7 @@ compiler: $LTCC compiler flags: $LTCFLAGS linker: $LD (gnu? $with_gnu_ld) - version: $progname $scriptversion Debian-2.4.6-2.1 + version: $progname $scriptversion Debian-2.4.6-10 automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` @@ -2471,8 +2375,8 @@ if $_G_rc_lt_options_prep; then # Pass back the list of options. - func_quote eval ${1+"$@"} - libtool_options_prep_result=$func_quote_result + func_quote_for_eval ${1+"$@"} + libtool_options_prep_result=$func_quote_for_eval_result fi $_G_rc_lt_options_prep @@ -2578,8 +2482,8 @@ if $_G_rc_lt_parse_options; then # save modified positional parameters for caller - func_quote eval ${1+"$@"} - libtool_parse_options_result=$func_quote_result + func_quote_for_eval ${1+"$@"} + libtool_parse_options_result=$func_quote_for_eval_result fi $_G_rc_lt_parse_options @@ -2639,8 +2543,8 @@ } # Pass back the unparsed argument list - func_quote eval ${1+"$@"} - libtool_validate_options_result=$func_quote_result + func_quote_for_eval ${1+"$@"} + libtool_validate_options_result=$func_quote_for_eval_result } func_add_hook func_validate_options libtool_validate_options @@ -3606,8 +3510,8 @@ esac done - func_quote_arg pretty "$libobj" - test "X$libobj" != "X$func_quote_arg_result" \ + func_quote_for_eval "$libobj" + test "X$libobj" != "X$func_quote_for_eval_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && func_warning "libobj name '$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" @@ -3680,8 +3584,8 @@ func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 srcfile=$func_to_tool_file_result - func_quote_arg pretty "$srcfile" - qsrcfile=$func_quote_arg_result + func_quote_for_eval "$srcfile" + qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test yes = "$build_libtool_libs"; then @@ -4284,8 +4188,8 @@ case $nonopt in *shtool*) :;; *) false;; esac then # Aesthetically quote it. - func_quote_arg pretty "$nonopt" - install_prog="$func_quote_arg_result " + func_quote_for_eval "$nonopt" + install_prog="$func_quote_for_eval_result " arg=$1 shift else @@ -4295,8 +4199,8 @@ # The real first argument should be the name of the installation program. # Aesthetically quote it. - func_quote_arg pretty "$arg" - func_append install_prog "$func_quote_arg_result" + func_quote_for_eval "$arg" + func_append install_prog "$func_quote_for_eval_result" install_shared_prog=$install_prog case " $install_prog " in *[\\\ /]cp\ *) install_cp=: ;; @@ -4353,12 +4257,12 @@ esac # Aesthetically quote the argument. - func_quote_arg pretty "$arg" - func_append install_prog " $func_quote_arg_result" + func_quote_for_eval "$arg" + func_append install_prog " $func_quote_for_eval_result" if test -n "$arg2"; then - func_quote_arg pretty "$arg2" + func_quote_for_eval "$arg2" fi - func_append install_shared_prog " $func_quote_arg_result" + func_append install_shared_prog " $func_quote_for_eval_result" done test -z "$install_prog" && \ @@ -4369,8 +4273,8 @@ if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else - func_quote_arg pretty "$install_override_mode" - func_append install_shared_prog " -m $func_quote_arg_result" + func_quote_for_eval "$install_override_mode" + func_append install_shared_prog " -m $func_quote_for_eval_result" fi fi @@ -4666,8 +4570,8 @@ relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_quiet || { - func_quote_arg expand,pretty "$relink_command" - eval "func_echo $func_quote_arg_result" + func_quote_for_expand "$relink_command" + eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else @@ -5446,8 +5350,7 @@ if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" - func_quote_arg pretty "$ECHO" - qECHO=$func_quote_arg_result + qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` $ECHO "\ # A function that is used when there is no print builtin or printf. @@ -5457,7 +5360,7 @@ \$1 _LTECHO_EOF' } - ECHO=$qECHO + ECHO=\"$qECHO\" fi # Very basic option parsing. These options are (a) specific to @@ -6800,9 +6703,9 @@ while test "$#" -gt 0; do arg=$1 shift - func_quote_arg pretty,unquoted "$arg" - qarg=$func_quote_arg_unquoted_result - func_append libtool_args " $func_quote_arg_result" + func_quote_for_eval "$arg" + qarg=$func_quote_for_eval_unquoted_result + func_append libtool_args " $func_quote_for_eval_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then @@ -7400,9 +7303,9 @@ save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs - func_quote_arg pretty "$flag" - func_append arg " $func_quote_arg_result" - func_append compiler_flags " $func_quote_arg_result" + func_quote_for_eval "$flag" + func_append arg " $func_quote_for_eval_result" + func_append compiler_flags " $func_quote_for_eval_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" @@ -7416,10 +7319,10 @@ save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs - func_quote_arg pretty "$flag" - func_append arg " $wl$func_quote_arg_result" - func_append compiler_flags " $wl$func_quote_arg_result" - func_append linker_flags " $func_quote_arg_result" + func_quote_for_eval "$flag" + func_append arg " $wl$func_quote_for_eval_result" + func_append compiler_flags " $wl$func_quote_for_eval_result" + func_append linker_flags " $func_quote_for_eval_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" @@ -7443,8 +7346,8 @@ # -msg_* for osf cc -msg_*) - func_quote_arg pretty "$arg" - arg=$func_quote_arg_result + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result ;; # Flags to be passed through unchanged, with rationale: @@ -7464,12 +7367,13 @@ # -specs=* GCC specs files # -stdlib=* select c++ std lib with clang # -fsanitize=* Clang/GCC memory and address sanitizer + # -fuse-ld=* Linker select flags for GCC -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ - -specs=*|-fsanitize=*) - func_quote_arg pretty "$arg" - arg=$func_quote_arg_result + -specs=*|-fsanitize=*|-fuse-ld=*) + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" @@ -7490,15 +7394,15 @@ continue else # Otherwise treat like 'Some other compiler flag' below - func_quote_arg pretty "$arg" - arg=$func_quote_arg_result + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result fi ;; # Some other compiler flag. -* | +*) - func_quote_arg pretty "$arg" - arg=$func_quote_arg_result + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result ;; *.$objext) @@ -7618,8 +7522,8 @@ *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. - func_quote_arg pretty "$arg" - arg=$func_quote_arg_result + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result ;; esac # arg @@ -10131,8 +10035,8 @@ for cmd in $concat_cmds; do IFS=$save_ifs $opt_quiet || { - func_quote_arg expand,pretty "$cmd" - eval "func_echo $func_quote_arg_result" + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? @@ -10225,8 +10129,8 @@ eval cmd=\"$cmd\" IFS=$save_ifs $opt_quiet || { - func_quote_arg expand,pretty "$cmd" - eval "func_echo $func_quote_arg_result" + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? @@ -10700,12 +10604,12 @@ elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else - func_quote_arg pretty "$var_value" - relink_command="$var=$func_quote_arg_result; export $var; $relink_command" + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done - func_quote_arg pretty,unquoted "(cd `pwd`; $relink_command)" - relink_command=$func_quote_arg_unquoted_result + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. @@ -10945,14 +10849,13 @@ elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else - func_quote_arg pretty,unquoted "$var_value" - relink_command="$var=$func_quote_arg_unquoted_result; export $var; $relink_command" + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" - func_quote_arg pretty,unquoted "$relink_command" - relink_command=$func_quote_arg_unquoted_result + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` if test yes = "$hardcode_automatic"; then relink_command= fi diff -Nru gst-plugins-base1.0-1.14.4/m4/libtool.m4 gst-plugins-base1.0-1.14.5/m4/libtool.m4 --- gst-plugins-base1.0-1.14.4/m4/libtool.m4 2018-10-02 21:53:37.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/m4/libtool.m4 2019-05-29 16:33:14.000000000 +0000 @@ -4063,7 +4063,8 @@ if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm - if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then + $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&AS_MESSAGE_LOG_FD + if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&AS_MESSAGE_LOG_FD && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" @@ -4703,6 +4704,12 @@ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; + # flang / f18. f95 an alias for gfortran or flang on Debian + flang* | f18* | f95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) @@ -6438,7 +6445,7 @@ # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' else GXX=no @@ -6813,7 +6820,7 @@ # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then @@ -6878,7 +6885,7 @@ # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then @@ -7217,7 +7224,7 @@ # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' else # FIXME: insert proper C++ library support @@ -7301,7 +7308,7 @@ # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. @@ -7312,7 +7319,7 @@ # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' diff -Nru gst-plugins-base1.0-1.14.4/meson.build gst-plugins-base1.0-1.14.5/meson.build --- gst-plugins-base1.0-1.14.4/meson.build 2018-10-02 21:53:28.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/meson.build 2019-05-29 16:33:06.000000000 +0000 @@ -1,5 +1,5 @@ project('gst-plugins-base', 'c', - version : '1.14.4', + version : '1.14.5', meson_version : '>= 0.40.1', default_options : [ 'warning_level=1', 'buildtype=debugoptimized' ]) diff -Nru gst-plugins-base1.0-1.14.4/NEWS gst-plugins-base1.0-1.14.5/NEWS --- gst-plugins-base1.0-1.14.4/NEWS 2018-10-02 21:58:04.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/NEWS 2019-05-29 16:36:52.000000000 +0000 @@ -5,13 +5,16 @@ GStreamer 1.14.0 was originally released on 19 March 2018. -The latest bug-fix release in the 1.14 series is 1.14.3 and was released -on 16 September 2018. +The latest bug-fix release in the 1.14 series is 1.14.5 and was released +on 29 May 2019. + +1.14.5 will likely be the last release in the 1.14 release series which +has now been superseded by the 1.16 release series. See https://gstreamer.freedesktop.org/releases/1.14/ for the latest version of this document. -_Last updated: Sunday 16 September 2018, 13:00 UTC (log)_ +_Last updated: Wednesday 29 May 2019, 12:00 UTC (log)_ Introduction @@ -1519,6 +1522,187 @@ list of changes. For the full list of changes please refer to the GIT logs or ChangeLogs of the particular modules. +1.14.5 + +The fifth and likely last 1.14 bug-fix release (1.14.5) was released on +29 May 2019. + +This release only contains bugfixes and it should be safe to update from +1.14.x. + +Highlighted bugfixes in 1.14.5 + +GStreamer core + +- aggregator: take the pad lock around queue gap event removal +- aggregator: don’t leak gap buffer when out of segment +- buffer: fix possible memory corruption in gst_buffer_foreach_meta() + when removing metas +- bus: Make removing of signal/bus watches thread-safe +- bus: Don’t allow removing signal watches with gst_bus_remove_watch() +- controlbinding: Check if the weak pointer was cleared before + explicitly removing it +- ptp clock: Wait for ANNOUNCE before selecting a master; increase + tolerance for late follow-up and delay-resp +- segment: Allow stop == -1 in gst_segment_to_running_time() and + negative rate +- g-i: annotations fixes + +gst-plugins-base + +- audioconvert: fix endianness conversion for unpacked formats + (e.g. S24_32BE) +- audioringbuffer: Fix wrong memcpy address when reordering channels +- decodebin2: Make sure to remove pad probes when freeing + GstDecodeGroup +- glviewconvert: fix output when a transformation matrix is used +- glupload: prevent segfault when updating caps +- gl/egl: Determine correct format on dmabuf import +- glupload: dmabuf: be explicit about gl formats used +- id3tag: validate the year from v1 tags before passing to GstDateTime +- rtpbasepayload: fix sequence numbers when using buffer lists +- rtspconnection: fix security issue, potential heap overflow + (CVE-2019-9928) +- rtspconnection: fix GError set over the top of a previous GError +- rtspconnection: do not duplicate authentication headers +- subparse: don’t assert when failing to parse subrip timestamp +- video: various convert sample frame fixes +- video-converter: fix conversion from I420_10LE/BE, I420_12LE/BE, + A420_10LE/BE to BGRA/RGBA which created corrupted output +- video-format: Fix GBRA_10/12 alpha channel pixel strides + +gst-plugins-good + +- flv: Use 8kHz sample rate for alaw/mulaw audio +- flvdemux: Do not error out if the first added and chained pad is not + linked +- flvmux: try harder to make sure timestamps are always increasing +- gdkpixbufdec: output a TIME segment which is what’s expected for raw + video +- matroskademux: fix handling of MS ACM audio +- matroska: fix handling of FlagInterlaced +- pulsesink: Deal with not being able to convert a format to caps +- rtph265depay, rtph264depay; aggregation packet marker handling fixes +- rtpmp4gdepay: detect broken senders who send AAC with ADTS frames +- rtprawdepay: keep buffer pool around when flushing/seeking +- rtpssrcdemux: Forward serialized events to all pads +- qmlglsink: Handle OPENGL header guard changes +- qtdemux: fix track language code parsing; ignore corrupted CTTS box +- qtmux: Correctly set tkhd width/height to the display size +- splitmuxsink: various timecode meta handling fixes +- splitmuxsink: make work with audio-only encoders as muxers, + e.g. wavenc +- v4l2sink: fix pool-less allocation query handling +- v4l2dec/enc: fix use after free when handling events +- vpx: Fix build against libvpx 1.8 +- webmmux: allow resolutions above 4096 + +gst-plugins-ugly + +- sid: Fix cross-compilation by using AC_TRY_LINK instead of + AC_TRY_RUN +- x264: Only enable dynamic loading code for x264 before v253 + +gst-plugins-bad + +- assrender: fix disappearing subtitles when seeking back in time +- decklinkvideosink: fix segfault when audiosink is closed before + videosink +- decklinkvideosrc: respect pixel format property even if mode is set + to auto +- d3dvideosink: Fix calculating buffer size of packed format; don’t + leak thread object +- dtls: Don’t abort on non-fatal issues, make work with newer OpenSSL + versions +- msdk: more robust error handling; fix intel sdk libdir path +- nvenc: Ensure drain all frames on finish; fix element reuse and + clean up properly +- openh264dec: Fix handling of errors when doing EOS +- shmsrc: fixes a crash when is-live is true due a race condition +- shmsink: fix possible (racy) deadlock on shutdown +- siren: Fix invalid floating point operation +- tsdemux: Skew correction improvements: use upstream DTS if set +- wasapi: number of segments was always 2 (the absolute minimum) by + accident +- wasapi: Fix infinite loop when the device disappears + +gst-libav + +- libav: Update internal snapshot to ffmpeg n3.4.6 +- avdemux: fix negative pts if start_time is bigger than the ts + +gst-rtsp-server + +- rtsp-client: Fix crash in close handler and remove timeout GSource + on cleanup +- rtsp-stream: Use cached address when allocating sockets +- rtsp-media: Handle set state when preparing +- rtsp-media: Fix race condition in finish_unprepare +- rtsp-stream: Use seqnum-offset for rtpinfo +- rtsp-stream: add source elements to the pipeline before activation + for stream-status create message + +gst-editing-services + +- Fix compilation with latest GLib +- layer: Resort clips before syncing priorities +- timeline: Better handle loading inconsistent timelines + +gstreamer-vaapi + +- thread-safety and memory leak fixes +- improve caps negotiation if downstream takes ANY caps +- fix build with -DG_DISABLE_ASSERT + +gst-omx + +- fix caps leak + +cerbero + +- Add support for MacOSX 10.14, iOS 12.1, Fedora 29/30, Linux Mint + Tara (19) +- Miscellaneous tarball download / error handling improvements +- disable parallel builds by default on Windows + +Contributors to 1.14.5 + +Aaron Boxer, Adam Jackson, Aleix Conchillo Flaqué, Alexandru Băluț, +Alicia Boya García, Andreas Frisch, Antonio Ospite, Arun Raghavan, +Benjamin Berg, Brad Reitmeyer, Christopher Snowhill, Daniel Drake, +Daniel Stone, Dardo D Kleiner, David Ing, Denis Nagorny, Edward Hervey, +Erlend Eriksen, Florent Thiéry, Freyr666, Göran Jönsson, Guillaume +Desmottes, Haihao Xiang, Haihua Hu, Havard Graff, He Junyan, Helmut +Grohne, Ilya Smelykh, Jacek Tomaszewski, James Cowgill, Jan Alexander +Steffens (heftig), Jan Schmidt, Johan Bjäreholt, Jordan Petridis, Josep +Torra, Joshua M. Doe, Justin Kim, Kristofer Bjorkstrom, Lars Petter +Endresen, Lars Wiréen, Linus Svensson, Lucas Stach, Maciej Wolny, +Marc-André Lureau, Marc Leeman, Marcos Kintschner, Marco Trevisan +(Treviño), Marouen Ghodhbane, Matej Knopp, Mathieu Duponchelle, Matthew +Waters, Michael Olbrich, Michael Tretter, mrk501, Naveen Cherukuri, +Nicola Murino, Nicolas Dufresne, Niels De Graef, Nirbheek Chauhan, +okuoku, Olivier Crête, Patricia Muscalu, Per Forlin, Peter Körner, +Philippe Normand, Philipp Zabel, Roland Jon, Russel Winder, Santiago +Carot-Nemesio, Sebastian Dröge, Seungha Yang, Sjoerd Simons, Thiago +Santos, Thibault Saunier, Tim-Philipp Müller, Tobias Ronge, Tomislav +Tustonić, U. Artie Eoff, Víctor Manuel Jáquez Leal, Vincenzo Bono, Vivia +Nikolaidou, Wangfei, Wim Taymans, Xabier Rodriguez Calvar, Xavier +Claessens, Xiang, Haihao, Yeongjin Jeong, and many others. Thank you +all! + +List of bugs fixed in 1.14.5 + +For a full list of bugfixes see Bugzilla. Note that this is not the full +list of changes. For the full list of changes please refer to the GIT +logs or ChangeLogs of the particular modules. + +During the release cycle issue and patch tracking moved from bugzilla to +gitlab, so information about this release may be on either of those two +trackers. + +MRs with milestone 1.14.5: +https://gitlab.freedesktop.org/groups/gstreamer/-/merge_requests?scope=all&utf8=%E2%9C%93&state=all&milestone_title=1.14.5 + Known Issues @@ -1541,12 +1725,8 @@ unstable development version leading up to the stable 1.16 release. The development of 1.15/1.16 will happen in the git master branch. -The plan for the 1.16 development cycle is yet to be confirmed, but it -is expected that feature freeze will be around September 2018 followed -by several 1.15 pre-releases and the new 1.16 stable release in October. - -1.16 will be backwards-compatible to the stable 1.14, 1.12, 1.10, 1.8, -1.6, 1.4, 1.2 and 1.0 release series. +1.16.0 was released on 19 April 2019 and is backwards-compatible to the +stable 1.14, 1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series. ------------------------------------------------------------------------ diff -Nru gst-plugins-base1.0-1.14.4/pkgconfig/gstreamer-pbutils.pc.in gst-plugins-base1.0-1.14.5/pkgconfig/gstreamer-pbutils.pc.in --- gst-plugins-base1.0-1.14.4/pkgconfig/gstreamer-pbutils.pc.in 2018-03-23 20:44:42.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/pkgconfig/gstreamer-pbutils.pc.in 2019-05-02 16:33:49.000000000 +0000 @@ -9,7 +9,8 @@ Name: GStreamer Base Utils Library Description: General utility functions -Requires: gstreamer-@GST_API_VERSION@ +Requires: gstreamer-@GST_API_VERSION@ gstreamer-audio-@GST_API_VERSION@ gstreamer-base-@GST_API_VERSION@ gstreamer-video-@GST_API_VERSION@ +Requires.private: gstreamer-tag-@GST_API_VERSION@ Version: @VERSION@ Libs: -L${libdir} -lgstpbutils-@GST_API_VERSION@ Cflags: -I${includedir} diff -Nru gst-plugins-base1.0-1.14.4/pkgconfig/gstreamer-pbutils-uninstalled.pc.in gst-plugins-base1.0-1.14.5/pkgconfig/gstreamer-pbutils-uninstalled.pc.in --- gst-plugins-base1.0-1.14.4/pkgconfig/gstreamer-pbutils-uninstalled.pc.in 2018-03-23 20:44:42.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/pkgconfig/gstreamer-pbutils-uninstalled.pc.in 2019-05-02 16:33:49.000000000 +0000 @@ -10,7 +10,8 @@ Name: GStreamer Base Utils Library, Uninstalled Description: General utility functions, uninstalled Version: @VERSION@ -Requires: gstreamer-@GST_API_VERSION@ +Requires: gstreamer-@GST_API_VERSION@ gstreamer-audio-@GST_API_VERSION@ gstreamer-base-@GST_API_VERSION@ gstreamer-video-@GST_API_VERSION@ +Requires.private: gstreamer-tag-@GST_API_VERSION@ Libs: -L${libdir} -lgstpbutils-@GST_API_VERSION@ Cflags: -I@abs_top_srcdir@/gst-libs -I@abs_top_builddir@/gst-libs diff -Nru gst-plugins-base1.0-1.14.4/po/af.po gst-plugins-base1.0-1.14.5/po/af.po --- gst-plugins-base1.0-1.14.4/po/af.po 2018-10-02 21:58:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/af.po 2019-05-29 16:37:08.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gst-plugins 0.7.6\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: 2004-03-18 14:16+0200\n" "Last-Translator: Petri Jooste \n" "Language-Team: Afrikaans \n" diff -Nru gst-plugins-base1.0-1.14.4/po/az.po gst-plugins-base1.0-1.14.5/po/az.po --- gst-plugins-base1.0-1.14.4/po/az.po 2018-10-02 21:58:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/az.po 2019-05-29 16:37:08.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gst-plugins-0.8.0\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: 2004-03-19 18:29+0200\n" "Last-Translator: Metin Amiroff \n" "Language-Team: Azerbaijani \n" diff -Nru gst-plugins-base1.0-1.14.4/po/bg.po gst-plugins-base1.0-1.14.5/po/bg.po --- gst-plugins-base1.0-1.14.4/po/bg.po 2018-10-02 21:58:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/bg.po 2019-05-29 16:37:08.000000000 +0000 @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: gst-plugins-base 1.7.2\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: 2016-02-21 21:03+0200\n" "Last-Translator: Alexander Shopov \n" "Language-Team: Bulgarian \n" diff -Nru gst-plugins-base1.0-1.14.4/po/ca.po gst-plugins-base1.0-1.14.5/po/ca.po --- gst-plugins-base1.0-1.14.4/po/ca.po 2018-10-02 21:58:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/ca.po 2019-05-29 16:37:08.000000000 +0000 @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: gst-plugins-base 0.10.32.2\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: 2012-01-01 14:19+0100\n" "Last-Translator: Gil Forcada \n" "Language-Team: Catalan \n" diff -Nru gst-plugins-base1.0-1.14.4/po/cs.po gst-plugins-base1.0-1.14.5/po/cs.po --- gst-plugins-base1.0-1.14.4/po/cs.po 2018-10-02 21:58:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/cs.po 2019-05-29 16:37:08.000000000 +0000 @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: gst-plugins-base-1.10.0\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: 2017-09-13 15:20+0200\n" "Last-Translator: Marek Černocký \n" "Language-Team: Czech \n" diff -Nru gst-plugins-base1.0-1.14.4/po/da.po gst-plugins-base1.0-1.14.5/po/da.po --- gst-plugins-base1.0-1.14.4/po/da.po 2018-10-02 21:58:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/da.po 2019-05-29 16:37:08.000000000 +0000 @@ -33,7 +33,7 @@ msgstr "" "Project-Id-Version: gst-plugins-base 1.10.0\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: 2016-11-03 16:38+0100\n" "Last-Translator: Joe Hansen \n" "Language-Team: Danish \n" diff -Nru gst-plugins-base1.0-1.14.4/po/de.po gst-plugins-base1.0-1.14.5/po/de.po --- gst-plugins-base1.0-1.14.4/po/de.po 2018-10-02 21:58:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/de.po 2019-05-29 16:37:08.000000000 +0000 @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: gst-plugins-base 1.10.0\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: 2016-11-01 23:00+0100\n" "Last-Translator: Christian Kirbach \n" "Language-Team: German \n" diff -Nru gst-plugins-base1.0-1.14.4/po/el.po gst-plugins-base1.0-1.14.5/po/el.po --- gst-plugins-base1.0-1.14.4/po/el.po 2018-10-02 21:58:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/el.po 2019-05-29 16:37:08.000000000 +0000 @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: gst-plugins-base 0.10.32.2\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: 2012-05-05 19:13+0100\n" "Last-Translator: Savvas Radevic \n" "Language-Team: Greek \n" diff -Nru gst-plugins-base1.0-1.14.4/po/en_GB.po gst-plugins-base1.0-1.14.5/po/en_GB.po --- gst-plugins-base1.0-1.14.4/po/en_GB.po 2018-10-02 21:58:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/en_GB.po 2019-05-29 16:37:08.000000000 +0000 @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: gst-plugins 0.8.1\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: 2004-04-26 10:41-0400\n" "Last-Translator: Gareth Owen \n" "Language-Team: English (British) \n" diff -Nru gst-plugins-base1.0-1.14.4/po/eo.po gst-plugins-base1.0-1.14.5/po/eo.po --- gst-plugins-base1.0-1.14.4/po/eo.po 2018-10-02 21:58:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/eo.po 2019-05-29 16:37:08.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gst-plugins-base 0.10.32.2\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: 2011-06-04 21:11+0100\n" "Last-Translator: Kristjan SCHMIDT \n" "Language-Team: Esperanto \n" diff -Nru gst-plugins-base1.0-1.14.4/po/es.po gst-plugins-base1.0-1.14.5/po/es.po --- gst-plugins-base1.0-1.14.4/po/es.po 2018-10-02 21:58:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/es.po 2019-05-29 16:37:08.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gst-plugins-base 0.10.32.2\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: 2011-10-02 15:46+0200\n" "Last-Translator: Jorge González González \n" "Language-Team: Spanish \n" diff -Nru gst-plugins-base1.0-1.14.4/po/eu.po gst-plugins-base1.0-1.14.5/po/eu.po --- gst-plugins-base1.0-1.14.4/po/eu.po 2018-10-02 21:58:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/eu.po 2019-05-29 16:37:08.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: gst-plugins-base-0.10.26.2\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: 2010-03-25 12:32+0100\n" "Last-Translator: Mikel Olasagasti Uranga \n" "Language-Team: Basque \n" diff -Nru gst-plugins-base1.0-1.14.4/po/fi.po gst-plugins-base1.0-1.14.5/po/fi.po --- gst-plugins-base1.0-1.14.4/po/fi.po 2018-10-02 21:58:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/fi.po 2019-05-29 16:37:08.000000000 +0000 @@ -12,7 +12,7 @@ msgstr "" "Project-Id-Version: gst-plugins-base 0.10.30.3\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: 2010-12-31 23:21+0200\n" "Last-Translator: Tommi Vainikainen \n" "Language-Team: Finnish \n" diff -Nru gst-plugins-base1.0-1.14.4/po/fr.po gst-plugins-base1.0-1.14.5/po/fr.po --- gst-plugins-base1.0-1.14.4/po/fr.po 2018-10-02 21:58:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/fr.po 2019-05-29 16:37:08.000000000 +0000 @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: gst-plugins-base 1.10.0\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: 2016-12-23 20:39+0100\n" "Last-Translator: Stéphane Aulery \n" "Language-Team: French \n" diff -Nru gst-plugins-base1.0-1.14.4/po/fur.po gst-plugins-base1.0-1.14.5/po/fur.po --- gst-plugins-base1.0-1.14.4/po/fur.po 2018-10-02 21:58:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/fur.po 2019-05-29 16:37:08.000000000 +0000 @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: gst-plugins-base 1.10.0\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: 2017-02-20 15:34+0100\n" "Last-Translator: Fabio Tomat \n" "Language-Team: Friulian \n" diff -Nru gst-plugins-base1.0-1.14.4/po/gl.po gst-plugins-base1.0-1.14.5/po/gl.po --- gst-plugins-base1.0-1.14.4/po/gl.po 2018-10-02 21:58:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/gl.po 2019-05-29 16:37:08.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: gst-plugins-base 1.0.3\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: 2012-12-15 03:40+0200\n" "Last-Translator: Fran Dieguez \n" "Language-Team: Galician \n" diff -Nru gst-plugins-base1.0-1.14.4/po/gst-plugins-base-1.0.pot gst-plugins-base1.0-1.14.5/po/gst-plugins-base-1.0.pot --- gst-plugins-base1.0-1.14.4/po/gst-plugins-base-1.0.pot 2018-10-02 21:58:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/gst-plugins-base-1.0.pot 2019-05-29 16:37:08.000000000 +0000 @@ -5,9 +5,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: gst-plugins-base 1.14.4\n" +"Project-Id-Version: gst-plugins-base 1.14.5\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -110,11 +110,11 @@ msgid "Missing element '%s' - check your GStreamer installation." msgstr "" -#: gst/playback/gstdecodebin2.c:1873 gst/playback/gstparsebin.c:1556 +#: gst/playback/gstdecodebin2.c:1883 gst/playback/gstparsebin.c:1556 msgid "Could not determine type of stream" msgstr "" -#: gst/playback/gstdecodebin2.c:2851 gst/playback/gstparsebin.c:2388 +#: gst/playback/gstdecodebin2.c:2861 gst/playback/gstparsebin.c:2388 msgid "This appears to be a text file" msgstr "" diff -Nru gst-plugins-base1.0-1.14.4/po/hr.po gst-plugins-base1.0-1.14.5/po/hr.po --- gst-plugins-base1.0-1.14.4/po/hr.po 2018-10-02 21:58:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/hr.po 2019-05-29 16:37:08.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gst-plugins-base-1.10.0\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: 2018-04-17 13:52-0800\n" "Last-Translator: Božidar Putanec \n" "Language-Team: Croatian \n" diff -Nru gst-plugins-base1.0-1.14.4/po/hu.po gst-plugins-base1.0-1.14.5/po/hu.po --- gst-plugins-base1.0-1.14.4/po/hu.po 2018-10-02 21:58:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/hu.po 2019-05-29 16:37:08.000000000 +0000 @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: gst-plugins-base 1.10.0\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: 2017-03-19 00:47+0100\n" "Last-Translator: Balázs Úr \n" "Language-Team: Hungarian \n" diff -Nru gst-plugins-base1.0-1.14.4/po/id.po gst-plugins-base1.0-1.14.5/po/id.po --- gst-plugins-base1.0-1.14.4/po/id.po 2018-10-02 21:58:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/id.po 2019-05-29 16:37:08.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gst-plugins-base 1.10.0\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: 2016-11-14 20:50+0700\n" "Last-Translator: Andhika Padmawan \n" "Language-Team: Indonesian \n" diff -Nru gst-plugins-base1.0-1.14.4/po/it.po gst-plugins-base1.0-1.14.5/po/it.po --- gst-plugins-base1.0-1.14.4/po/it.po 2018-10-02 21:58:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/it.po 2019-05-29 16:37:08.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gst-plugins-base 0.10.28.2\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: 2010-04-28 14:27+0200\n" "Last-Translator: Luca Ferretti \n" "Language-Team: Italian \n" diff -Nru gst-plugins-base1.0-1.14.4/po/ja.po gst-plugins-base1.0-1.14.5/po/ja.po --- gst-plugins-base1.0-1.14.4/po/ja.po 2018-10-02 21:58:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/ja.po 2019-05-29 16:37:08.000000000 +0000 @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: gst-plugins-base 0.10.30.3\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: 2010-10-25 10:27+0900\n" "Last-Translator: Makoto Kato \n" "Language-Team: Japanese \n" diff -Nru gst-plugins-base1.0-1.14.4/po/lt.po gst-plugins-base1.0-1.14.5/po/lt.po --- gst-plugins-base1.0-1.14.4/po/lt.po 2018-10-02 21:58:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/lt.po 2019-05-29 16:37:08.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gst-plugins-base-0.10.15.2\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: 2008-03-07 23:43+0200\n" "Last-Translator: Gintautas Miliauskas \n" "Language-Team: Lithuanian \n" diff -Nru gst-plugins-base1.0-1.14.4/po/lv.po gst-plugins-base1.0-1.14.5/po/lv.po --- gst-plugins-base1.0-1.14.4/po/lv.po 2018-10-02 21:58:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/lv.po 2019-05-29 16:37:08.000000000 +0000 @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: gst-plugins-base 1.2.1\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: 2014-04-20 16:15+0300\n" "Last-Translator: Rihards Prieditis \n" "Language-Team: Latvian \n" diff -Nru gst-plugins-base1.0-1.14.4/po/nb.po gst-plugins-base1.0-1.14.5/po/nb.po --- gst-plugins-base1.0-1.14.4/po/nb.po 2018-10-02 21:58:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/nb.po 2019-05-29 16:37:08.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: gst-plugins-base 1.10.0\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: 2017-01-05 01:29+0100\n" "Last-Translator: Johnny A. Solbu \n" "Language-Team: Norwegian Bokmaal \n" diff -Nru gst-plugins-base1.0-1.14.4/po/nl.po gst-plugins-base1.0-1.14.5/po/nl.po --- gst-plugins-base1.0-1.14.4/po/nl.po 2018-10-02 21:58:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/nl.po 2019-05-29 16:37:08.000000000 +0000 @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: gst-plugins-base 1.7.2\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: 2016-02-20 16:39+0100\n" "Last-Translator: Freek de Kruijf \n" "Language-Team: Dutch \n" diff -Nru gst-plugins-base1.0-1.14.4/po/or.po gst-plugins-base1.0-1.14.5/po/or.po --- gst-plugins-base1.0-1.14.4/po/or.po 2018-10-02 21:58:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/or.po 2019-05-29 16:37:08.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: gst-plugins-0.8.3\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: 2004-09-27 13:32+0530\n" "Last-Translator: Gora Mohanty \n" "Language-Team: Oriya \n" diff -Nru gst-plugins-base1.0-1.14.4/po/pl.po gst-plugins-base1.0-1.14.5/po/pl.po --- gst-plugins-base1.0-1.14.4/po/pl.po 2018-10-02 21:58:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/pl.po 2019-05-29 16:37:08.000000000 +0000 @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: gst-plugins-base 1.10.0\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: 2016-11-01 20:50+0100\n" "Last-Translator: Jakub Bogusz \n" "Language-Team: Polish \n" diff -Nru gst-plugins-base1.0-1.14.4/po/pt_BR.po gst-plugins-base1.0-1.14.5/po/pt_BR.po --- gst-plugins-base1.0-1.14.4/po/pt_BR.po 2018-10-02 21:58:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/pt_BR.po 2019-05-29 16:37:08.000000000 +0000 @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: gst-plugins-base-1.7.90\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: 2016-05-06 16:47-0300\n" "Last-Translator: Fabrício Godoy \n" "Language-Team: Brazilian Portuguese \n" "Language-Team: Romanian \n" diff -Nru gst-plugins-base1.0-1.14.4/po/ru.po gst-plugins-base1.0-1.14.5/po/ru.po --- gst-plugins-base1.0-1.14.4/po/ru.po 2018-10-02 21:58:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/ru.po 2019-05-29 16:37:08.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: gst-plugins-base 1.10.0\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: 2016-11-02 21:17+0300\n" "Last-Translator: Yuri Kozlov \n" "Language-Team: Russian \n" diff -Nru gst-plugins-base1.0-1.14.4/po/sk.po gst-plugins-base1.0-1.14.5/po/sk.po --- gst-plugins-base1.0-1.14.4/po/sk.po 2018-10-02 21:58:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/sk.po 2019-05-29 16:37:08.000000000 +0000 @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: gst-plugins-base 1.7.90\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: 2016-05-20 12:24+0100\n" "Last-Translator: Peter Tuhársky \n" "Language-Team: Slovak \n" diff -Nru gst-plugins-base1.0-1.14.4/po/sl.po gst-plugins-base1.0-1.14.5/po/sl.po --- gst-plugins-base1.0-1.14.4/po/sl.po 2018-10-02 21:58:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/sl.po 2019-05-29 16:37:08.000000000 +0000 @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: gst-plugins-base-1.0.3\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: 2013-01-05 10:10+0100\n" "Last-Translator: Klemen Košir \n" "Language-Team: Slovenian \n" diff -Nru gst-plugins-base1.0-1.14.4/po/sq.po gst-plugins-base1.0-1.14.5/po/sq.po --- gst-plugins-base1.0-1.14.4/po/sq.po 2018-10-02 21:58:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/sq.po 2019-05-29 16:37:08.000000000 +0000 @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: gst-plugins 0.8.3\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: 2004-08-07 20:29+0200\n" "Last-Translator: Laurent Dhima \n" "Language-Team: Albanian \n" diff -Nru gst-plugins-base1.0-1.14.4/po/sr.po gst-plugins-base1.0-1.14.5/po/sr.po --- gst-plugins-base1.0-1.14.4/po/sr.po 2018-10-02 21:58:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/sr.po 2019-05-29 16:37:08.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gst-plugins-base-1.10.0\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: 2016-12-04 14:32+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" diff -Nru gst-plugins-base1.0-1.14.4/po/sv.po gst-plugins-base1.0-1.14.5/po/sv.po --- gst-plugins-base1.0-1.14.4/po/sv.po 2018-10-02 21:58:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/sv.po 2019-05-29 16:37:08.000000000 +0000 @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: gst-plugins-base 1.10.0\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: 2017-05-21 18:55+0800\n" "Last-Translator: Sebastian Rasmussen \n" "Language-Team: Swedish \n" diff -Nru gst-plugins-base1.0-1.14.4/po/tr.po gst-plugins-base1.0-1.14.5/po/tr.po --- gst-plugins-base1.0-1.14.4/po/tr.po 2018-10-02 21:58:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/tr.po 2019-05-29 16:37:08.000000000 +0000 @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: gst-plugins-base 1.10.0\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: 2017-07-05 01:40+0300\n" "Last-Translator: Mehmet Kececi \n" "Language-Team: Turkish \n" diff -Nru gst-plugins-base1.0-1.14.4/po/uk.po gst-plugins-base1.0-1.14.5/po/uk.po --- gst-plugins-base1.0-1.14.4/po/uk.po 2018-10-02 21:58:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/uk.po 2019-05-29 16:37:08.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: gst-plugins-base 1.10.0\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: 2016-11-01 20:49+0200\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" diff -Nru gst-plugins-base1.0-1.14.4/po/vi.po gst-plugins-base1.0-1.14.5/po/vi.po --- gst-plugins-base1.0-1.14.4/po/vi.po 2018-10-02 21:58:22.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/vi.po 2019-05-29 16:37:08.000000000 +0000 @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: gst-plugins-base 1.10.0\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: 2016-11-02 13:29+0700\n" "Last-Translator: Trần Ngọc Quân \n" "Language-Team: Vietnamese \n" diff -Nru gst-plugins-base1.0-1.14.4/po/zh_CN.po gst-plugins-base1.0-1.14.5/po/zh_CN.po --- gst-plugins-base1.0-1.14.4/po/zh_CN.po 2018-10-02 21:58:23.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/po/zh_CN.po 2019-05-29 16:37:08.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gst-plugins-base 1.10.0\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2018-10-02 22:58+0100\n" +"POT-Creation-Date: 2019-05-29 17:37+0100\n" "PO-Revision-Date: 2016-11-02 13:38+0800\n" "Last-Translator: Tianze Wang \n" "Language-Team: Chinese (simplified) \n" diff -Nru gst-plugins-base1.0-1.14.4/README gst-plugins-base1.0-1.14.5/README --- gst-plugins-base1.0-1.14.4/README 2018-05-09 06:29:09.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/README 2019-05-29 16:36:52.000000000 +0000 @@ -1,4 +1,4 @@ -GStreamer 1.13.x development series +GStreamer 1.14.x development series WHAT IT IS ---------- diff -Nru gst-plugins-base1.0-1.14.4/RELEASE gst-plugins-base1.0-1.14.5/RELEASE --- gst-plugins-base1.0-1.14.4/RELEASE 2018-10-02 21:58:04.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/RELEASE 2019-05-29 16:36:52.000000000 +0000 @@ -1,4 +1,4 @@ -This is GStreamer gst-plugins-base 1.14.4. +This is GStreamer gst-plugins-base 1.14.5. The GStreamer team is pleased to announce another bug-fix release in the stable 1.x API series of your favourite cross-platform multimedia framework! @@ -7,6 +7,10 @@ part of the API and ABI-stable 1.x release series of the GStreamer multimedia framework. +The 1.14 release series has now been superseded by the stable 1.16 series +which was released on 19 April 2019 and should be backwards compatible. We +recommend you upgrade to 1.16 at your earliest convenience. + Full release notes can be found at: https://gstreamer.freedesktop.org/releases/1.14/ @@ -54,10 +58,10 @@ ==== Download ==== You can find source releases of gstreamer in the download -directory: https://gstreamer.freedesktop.org/src/gstreamer/ +directory: https://gstreamer.freedesktop.org/src/ The git repository and details how to clone it can be found at -https://cgit.freedesktop.org/gstreamer/gstreamer/ +https://gitlab.freedesktop.org/gstreamer/ ==== Homepage ==== @@ -65,10 +69,16 @@ ==== Support and Bugs ==== -We use GNOME's bugzilla for bug reports and feature requests: -https://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer +We have recently moved from GNOME Bugzilla to GitLab on freedesktop.org +for bug reports and feature requests: + + https://gitlab.freedesktop.org/gstreamer + +Please submit patches via GitLab as well, in form of Merge Requests. See + + https://gstreamer.freedesktop.org/documentation/contribute/ -Please submit patches via bugzilla as well. +for more details. For help and support, please subscribe to and send questions to the gstreamer-devel mailing list (see below for details). diff -Nru gst-plugins-base1.0-1.14.4/tests/check/elements/subparse.c gst-plugins-base1.0-1.14.5/tests/check/elements/subparse.c --- gst-plugins-base1.0-1.14.4/tests/check/elements/subparse.c 2018-05-13 22:34:44.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/tests/check/elements/subparse.c 2019-05-02 16:33:49.000000000 +0000 @@ -182,6 +182,19 @@ , }; +/* Test broken timestamp */ +static SubParseInputChunk srt_input5[] = { + { + "1\n00:00:01,000 --> 00:00:02,000\nsome text\n\n", + 1 * GST_SECOND, 2 * GST_SECOND, "some text"} + , + { + "2\n00:02:00,000 --> 00:03:0\nsome other text\n\n3\n00:00:03,000 --> 00:00:04,000\nsome more text\n\n", + 3 * GST_SECOND, 4 * GST_SECOND, "some more text"} + , +}; + + static void setup_subparse (void) { @@ -374,6 +387,9 @@ /* try with some WebVTT chunks */ test_srt_do_test (srt_input4, 0, G_N_ELEMENTS (srt_input4)); + + /* try with some broken/cut-off timestamp */ + test_srt_do_test (srt_input5, 0, G_N_ELEMENTS (srt_input5)); } GST_END_TEST; diff -Nru gst-plugins-base1.0-1.14.4/tests/check/libs/discoverer.c gst-plugins-base1.0-1.14.5/tests/check/libs/discoverer.c --- gst-plugins-base1.0-1.14.4/tests/check/libs/discoverer.c 2018-05-09 06:29:09.000000000 +0000 +++ gst-plugins-base1.0-1.14.5/tests/check/libs/discoverer.c 2019-05-02 16:33:49.000000000 +0000 @@ -243,6 +243,134 @@ GST_END_TEST; +typedef struct _AsyncTestData +{ + gchar *uri; + GMainLoop *loop; + GstDiscovererResult result; +} AsyncTestData; + +static void +discovered_cb (GstDiscoverer * discoverer, + GstDiscovererInfo * info, GError * err, AsyncTestData * data) +{ + const gchar *uri = gst_discoverer_info_get_uri (info); + + fail_unless_equals_string (data->uri, uri); + + /* cannot ensure GST_DISCOVERER_OK since there might be missing plugins */ + data->result = gst_discoverer_info_get_result (info); + + g_main_loop_quit (data->loop); +} + +static void +test_disco_async_with_context (GMainContext * context) +{ + GstDiscoverer *dc; + GError *err = NULL; + AsyncTestData data = { 0, }; + gchar *path = + g_build_filename (GST_TEST_FILES_PATH, "theora-vorbis.ogg", NULL); + + if (context) + g_main_context_push_thread_default (context); + + data.uri = gst_filename_to_uri (path, &err); + /* something wrong if we have error here */ + fail_unless (err == NULL); + g_free (path); + + data.loop = g_main_loop_new (context, FALSE); + + /* high timeout, in case we're running under valgrind */ + dc = gst_discoverer_new (5 * GST_SECOND, &err); + fail_unless (dc != NULL); + fail_unless (err == NULL); + + g_signal_connect (dc, "discovered", G_CALLBACK (discovered_cb), &data); + + gst_discoverer_start (dc); + fail_unless (gst_discoverer_discover_uri_async (dc, data.uri) == TRUE); + + g_main_loop_run (data.loop); + + if (have_theora && have_ogg) { + fail_unless_equals_int (data.result, GST_DISCOVERER_OK); + } else { + fail_unless_equals_int (data.result, GST_DISCOVERER_MISSING_PLUGINS); + } + + gst_discoverer_stop (dc); + g_object_unref (dc); + g_free (data.uri); + + g_main_loop_unref (data.loop); + + if (context) + g_main_context_pop_thread_default (context); +} + +GST_START_TEST (test_disco_async) +{ + /* use default GMainContext */ + test_disco_async_with_context (NULL); +} + +GST_END_TEST; + +typedef struct _CustomContextData +{ + GMutex lock; + GCond cond; + gboolean finish; +} CustomContextData; + + +static gpointer +custom_context_thread_func (CustomContextData * data) +{ + GMainContext *context; + + /* test async APIs with custom GMainContext */ + context = g_main_context_new (); + test_disco_async_with_context (context); + g_main_context_unref (context); + + data->finish = TRUE; + g_cond_signal (&data->cond); + + return NULL; +} + +GST_START_TEST (test_disco_async_custom_context) +{ + GThread *thread; + CustomContextData data; + + g_mutex_init (&data.lock); + g_cond_init (&data.cond); + data.finish = FALSE; + + /* ensure default context here, but we will use other thread default context + * instead of this */ + g_main_context_default (); + + thread = g_thread_new ("test-custom-context-thread", + (GThreadFunc) custom_context_thread_func, &data); + + g_mutex_lock (&data.lock); + while (!data.finish) + g_cond_wait (&data.cond, &data.lock); + g_mutex_unlock (&data.lock); + + g_thread_join (thread); + g_mutex_clear (&data.lock); + g_cond_clear (&data.cond); +} + +GST_END_TEST; + static Suite * discoverer_suite (void) { @@ -262,6 +390,8 @@ tcase_add_test (tc_chain, test_disco_sync_reuse_timeout); tcase_add_test (tc_chain, test_disco_missing_plugins); tcase_add_test (tc_chain, test_disco_serializing); + tcase_add_test (tc_chain, test_disco_async); + tcase_add_test (tc_chain, test_disco_async_custom_context); return s; }