Hello community,
here is the log from the commit of package gstreamer-editing-services for
openSUSE:Factory checked in at 2020-11-29 12:25:50
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gstreamer-editing-services (Old)
and /work/SRC/openSUSE:Factory/.gstreamer-editing-services.new.5913 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gstreamer-editing-services"
Sun Nov 29 12:25:50 2020 rev:33 rq:851360 version:1.18.1
Changes:
--------
---
/work/SRC/openSUSE:Factory/gstreamer-editing-services/gstreamer-editing-services.changes
2020-10-27 18:59:13.254755288 +0100
+++
/work/SRC/openSUSE:Factory/.gstreamer-editing-services.new.5913/gstreamer-editing-services.changes
2020-11-29 12:26:01.289856121 +0100
@@ -1,0 +2,18 @@
+Thu Nov 26 14:03:39 UTC 2020 - Bjørn Lie <[email protected]>
+
+- Fix minimum version of pkgconfig(gst-validate-1.0) BuildRequires.
+
+-------------------------------------------------------------------
+Wed Oct 28 10:23:37 UTC 2020 - Antonio Larrosa <[email protected]>
+
+- Update to 1.18.1:
+ + Highlighted bugfixes in 1.18.1
+ - important security fixes
+ - bug fixes and memory leak fixes
+ - various stability and reliability improvements
+ + gst-editing-services changes:
+ - ges: Do not recreate auto-transitions when changing clip
+ assets
+ - ges: Fix a copy/paste mistake in meson file
+
+-------------------------------------------------------------------
Old:
----
gst-editing-services-1.18.0.tar.xz
New:
----
gst-editing-services-1.18.1.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gstreamer-editing-services.spec ++++++
--- /var/tmp/diff_new_pack.ZM0Twr/_old 2020-11-29 12:26:01.941856781 +0100
+++ /var/tmp/diff_new_pack.ZM0Twr/_new 2020-11-29 12:26:01.945856786 +0100
@@ -19,7 +19,7 @@
%define _name gst-editing-services
Name: gstreamer-editing-services
-Version: 1.18.0
+Version: 1.18.1
Release: 0
Summary: GStreamer Editing Services
License: GPL-3.0-or-later AND LGPL-2.1-or-later
@@ -37,7 +37,7 @@
BuildRequires: pkgconfig(gio-2.0) >= 2.16
BuildRequires: pkgconfig(glib-2.0) >= 2.40.0
BuildRequires: pkgconfig(gobject-introspection-1.0) >= 0.9.6
-BuildRequires: pkgconfig(gst-validate-1.0) >= %{version}
+BuildRequires: pkgconfig(gst-validate-1.0) >= 1.18.0
BuildRequires: pkgconfig(gstreamer-1.0) >= %{version}
BuildRequires: pkgconfig(gstreamer-controller-1.0)
BuildRequires: pkgconfig(gstreamer-pbutils-1.0) >= %{version}
++++++ _service ++++++
--- /var/tmp/diff_new_pack.ZM0Twr/_old 2020-11-29 12:26:01.981856822 +0100
+++ /var/tmp/diff_new_pack.ZM0Twr/_new 2020-11-29 12:26:01.981856822 +0100
@@ -3,7 +3,7 @@
<param
name="url">https://gitlab.freedesktop.org/gstreamer/gst-editing-services.git</param>
<param name="filename">gst-editing-services</param>
<!-- <param name="versionformat">@PARENT_TAG@+git%cd.%h</param>-->
- <param name="revision">1.18.0</param>
+ <param name="revision">1.18.1</param>
<param name="versionformat">@PARENT_TAG@</param>
<param name="scm">git</param>
</service>
++++++ gst-editing-services-1.18.0.tar.xz -> gst-editing-services-1.18.1.tar.xz
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-editing-services-1.18.0/ChangeLog
new/gst-editing-services-1.18.1/ChangeLog
--- old/gst-editing-services-1.18.0/ChangeLog 2020-09-08 01:09:26.902830100
+0200
+++ new/gst-editing-services-1.18.1/ChangeLog 2020-10-26 12:16:26.716392300
+0100
@@ -1,7 +1,49 @@
+=== release 1.18.1 ===
+
+2020-10-26 11:16:25 +0000 Tim-Philipp Müller <[email protected]>
+
+ * ChangeLog:
+ * NEWS:
+ * RELEASE:
+ * gst-editing-services.doap:
+ * meson.build:
+ Release 1.18.1
+
+2020-09-03 23:32:23 -0400 Thibault Saunier <[email protected]>
+
+ * ges/ges-auto-transition.c:
+ * ges/ges-clip.c:
+ * ges/ges-internal.h:
+ * ges/ges-timeline-tree.c:
+ * ges/ges-timeline.c:
+ * ges/ges-uri-clip.c:
+ * tests/check/python/common.py:
+ * tests/check/python/test_assets.py:
+ * tests/check/python/test_timeline.py:
+ ges: Do not recreate auto-transitions when changing clip assets
+ Otherwise we loose the configuration of the auto transition, and
+ it is not required at all in any case.
+ Fixes https://gitlab.gnome.org/GNOME/pitivi/-/issues/2380
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/214>
+
+2020-09-08 11:39:10 -0300 Thibault Saunier <[email protected]>
+
+ * tests/check/meson.build:
+ ges: Fix a copy/paste mistake in meson file
+ Passed unnoticed because we built against GstValidate
+ Fixes
https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/issues/119
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/213>
+
+2020-09-08 17:44:40 +0100 Tim-Philipp Müller <[email protected]>
+
+ * meson.build:
+ Back to development
+
=== release 1.18.0 ===
2020-09-08 00:09:25 +0100 Tim-Philipp Müller <[email protected]>
+ * .gitlab-ci.yml:
* ChangeLog:
* NEWS:
* RELEASE:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-editing-services-1.18.0/NEWS
new/gst-editing-services-1.18.1/NEWS
--- old/gst-editing-services-1.18.0/NEWS 2020-09-08 01:09:26.902830100
+0200
+++ new/gst-editing-services-1.18.1/NEWS 2020-10-26 12:16:26.716392300
+0100
@@ -1,11 +1,14 @@
GStreamer 1.18 Release Notes
-GStreamer 1.18.0 was originally released on 7 September 2020.
+GStreamer 1.18.0 was originally released on 8 September 2020.
+
+The latest bug-fix release in the 1.18 series is 1.18.1 and was released
+on 26 October 2020.
See https://gstreamer.freedesktop.org/releases/1.18/ for the latest
version of this document.
-Last updated: Monday 7 September 2020, 10:30 UTC (log)
+Last updated: Monday 26 October 2020, 11:00 UTC (log)
Introduction
@@ -28,7 +31,8 @@
- Active Format Description (AFD) and Bar Data support
-- ONVIF trick modes support in both GStreamer RTSP server and client
+- RTSP server and client implementations gained ONVIF trick modes
+ support
- Hardware-accelerated video decoding on Windows via DXVA2 /
Direct3D11
@@ -39,24 +43,25 @@
- qmlgloverlay: New overlay element that renders a QtQuick scene over
the top of an input video stream
-- New imagesequencesrc element to easily create a video stream from a
+- imagesequencesrc: New element to easily create a video stream from a
sequence of jpeg or png images
-- dashsink: Add new sink to produce DASH content
+- dashsink: New sink to produce DASH content
-- dvbsubenc: DVB Subtitle encoder element
+- dvbsubenc: New DVB Subtitle encoder element
-- TV broadcast compliant MPEG-TS muxing with constant bitrate muxing
- and SCTE-35 support
+- MPEG-TS muxing now also supports TV broadcast compliant muxing with
+ constant bitrate muxing and SCTE-35 support
-- rtmp2: new RTMP client source and sink element implementation
+- rtmp2: New RTMP client source and sink element from-scratch
+ implementation
-- svthevcenc: new SVT-HEVC-based H.265 video encoder
+- svthevcenc: New SVT-HEVC-based H.265 video encoder
-- vaapioverlay compositor element using VA-API
+- vaapioverlay: New compositor element using VA-API
-- rtpmanager support for Google’s Transport-Wide Congestion Control
- (twcc) RTP extension
+- rtpmanager gained support for Google’s Transport-Wide Congestion
+ Control (twcc) RTP extension
- splitmuxsink and splitmuxsrc gained support for auxiliary video
streams
@@ -64,18 +69,18 @@
- webrtcbin now contains some initial support for renegotiation
involving stream addition and removal
-- New RTP source and sink elements to easily set up RTP streaming via
- rtp:// URIs
+- RTP support was enhanced with new RTP source and sink elements to
+ easily set up RTP streaming via rtp:// URIs
-- New Audio Video Transport Protocol (AVTP) plugin for Time-Sensitive
- Applications
+- avtp: New Audio Video Transport Protocol (AVTP) plugin for
+ Time-Sensitive Applications
- Support for the Video Services Forum’s Reliable Internet Stream
Transport (RIST) TR-06-1 Simple Profile
- Universal Windows Platform (UWP) support
-- rpicamsrc element for capturing from the Raspberry Pi camera
+- rpicamsrc: New element for capturing from the Raspberry Pi camera
- RTSP Server TCP interleaved backpressure handling improvements as
well as support for Scale/Speed headers
@@ -2179,7 +2184,208 @@
1.18.0
-1.18.0 was released on 7 September 2020.
+1.18.0 was released on 8 September 2020.
+
+1.18.1
+
+The first 1.18 bug-fix release (1.18.1) was released on 26 October 2020.
+
+This release only contains bugfixes and it should be safe to update from
+1.18.0.
+
+Highlighted bugfixes in 1.18.1
+
+- important security fixes
+- bug fixes and memory leak fixes
+- various stability and reliability improvements
+
+gstreamer
+
+- aggregator: make peek() has() pop() drop() buffer API threadsafe
+- gstvalue: don’t write to const char *
+- meson: Disallow DbgHelp for UWP build
+- info: Fix build on Windows ARM64 device
+- build: use cpu_family for arch checks
+- basetransform: Fix in/outbuf confusion of _default_transform_meta
+- Fix documentation
+- info: Load DbgHelp.dll using g_module_open()
+- padtemplate: mark documentation caps as may be leaked
+- gstmeta: intern registered impl string
+- aggregator: Hold SRC_LOCK while unblocking via SRC_BROADCAST()
+- ptp_helper_post_install.sh: deal with none
+- skip elements/leak.c if tracer is not available
+- aggregator: Wake up source pad in PAUSED<->PLAYING transitions
+- input-selector: Wake up blocking pads when releasing them
+- ptp: Also handle gnu/kfreebsd
+
+gst-plugins-base
+
+- theoradec: Set telemetry options only if they are nonzero
+- glslstage: delete shader on finalize of stage
+- urisourcebin: Fix crash caused by use after free
+- decodebin3: Store stream-start event on output pad before exposing
+ it
+- Add some missing nullable annotations
+- typefind/xdgmime: Validate mimetypes to be valid GstStructure names
+ before using them
+- uridecodebin3: Forward upstream events to decodebin3 directly
+- video-converter: Add fast paths from v210 to I420/YV12, Y42B, UYVY
+ and YUY2
+- videoaggregator: Limit accepted caps by template caps
+- gstrtpbuffer: fix header extension length validation
+- decodebin3: only force streams-selected seqnum after a
+ select-streams
+- videodecoder: don’t copy interlace-mode from reference state
+- enable abi checks
+- multihandlesink: Don’t pass NULL caps to gst_caps_is_equal
+- audio: video: Fix in/outbuf confusion of transform_meta
+- meson: Always wrap “prefix” option with join_paths() to make Windows
+ happy
+- videoaggregator: ensure peek_next_sample() uses the correct caps
+- meson: Actually build gstgl without implicit include dirs
+- videoaggregator: Don’t require any pads to be configured for
+ negotiating source pad caps
+- gst-libs: gl: Fix documentation typo and clarify
+ gl_memory_texsubimage
+- audioaggregator: Reset offset if the output rate is renegotiated
+- video-anc: Implement transform functions for AFD/Bar metas
+- appsrc: Wake up the create() function on caps changes
+- rtpbasepayload: do not forget delayed segment when forwarding gaps
+
+gst-plugins-good
+
+- v4l2object: Only offer inactive pools and if needed
+- vpx: Fix the check to unfixed/unknown framerate to set bitrate
+- qmlglsink: fix crash when created/destroyed in quick succession
+- rtputils: Count metas with an empty tag list for copying/keeping
+- rtpbin: Remove the rtpjitterbuffer with the stream
+- rtph26*depay: drop FU’s without a corresponding start bit
+- imagefreeze: Response caps query from srcpad
+- rtpmp4gdepay: Allow lower-case “aac-hbr” instead of correct
+ “AAC-hbr”
+- rtspsrc: Fix push-backchannel-buffer parameter mismatch
+- jpegdec: check buffer size before dereferencing
+- flvmux: Move stream skipping to GstAggregatorPadClass.skip_buffer
+- v4l2object: plug memory leak
+- splitmuxsink: fix sink pad release while PLAYING
+
+gst-plugins-bad
+
+- codecparsers: h264parser: guard against ref_pic_markings overflow
+- v4l2codecs: Various fixes
+- h265parse: Don’t enable passthrough by default
+- srt: Fix “Fix timestamping”
+- srt: Fixes for 1.4.2
+- dtlsconnection: Ignore OpenSSL system call errors
+- h265parse: set interlace-mode=interleaved on interlaced content
+- Replace GPL v2 with LGPL v2 in COPYING file
+- srt: Consume the error from gst_srt_object_write
+- srt: Check socket state before retrieving payload size
+- x265enc: fix deadlock on reconfig
+- webrtc: Require gstreamer-sdp in the pkg-config file
+- srtsrc: Fix timestamping
+- mfvideosrc: Use only the first video stream per device
+- srtobject: typecast SRTO_LINGER to linger
+- decklink: Correctly order the different dependent mode tables
+- wasapisrc: Make sure that wasapisrc produces data in loopback mode
+- wpesrc: fix some caps leaks using the non-GL output
+- smoothstreaming: clear live adapter on seek
+- vtdec/vulkan: use Shared storage mode for IOSurface textures
+- wpe: Move webview load waiting to WPEView
+- wpe: Use proper callback for TLS errors signal handling
+- kmssink: Do not source using padded width/height
+- avtp: avtpaafdepay: fix crash when building caps
+- opencv: set opencv_dep when option is disabled to fix the build
+- line21encoder: miscellaneous enhancements
+- Hls youtube issues with urisourcebin/queue2
+- rtmp2: Replace stats queue with stats lock
+- rtmp2sink: support EOS event for graceful connection shutdown
+- mpegtsmux: Make handling of sinkpads thread-safe
+- hlssink2: Actually release splitmuxsink’s pads
+- mpegtsmux: Don’t create streams with reserved PID
+
+gst-plugins-ugly
+
+- no changes
+
+gst-libav
+
+- avaudenc/avvidenc: Reopen encoding session if it’s required
+- avauddec/audenc/videnc: Don’t return GST_FLOW_EOS when draining
+- avauddec/avviddec: Avoid dropping non-OK flow return
+- avcodecmap: Enable 24 bit WMA Lossless decoding
+
+gst-rtsp-server
+
+- rtsp-stream: collect rtp info when blocking
+- rtsp-media: set a 0 storage size for TCP receivers
+- rtsp-stream: preroll on gap events
+- rtsp-media: do not unblock on unsuspend
+
+gstreamer-vaapi
+
+- decoder: don’t reply src caps query with allowed if pad is fixed
+- plugins: decode: fix a DMA caps typo in ensure_allowed_srcpad_caps
+
+gstreamer-sharp
+
+- Add bindings for some missing 1.18 API
+
+gst-omx
+
+- omxvideodec: support interlace-mode=interleaved input
+
+gst-python
+
+- no changes
+
+gst-editing-services
+
+- ges: Do not recreate auto-transitions when changing clip assets
+- ges: Fix a copy/paste mistake in meson file
+
+gst-integration-testsuites
+
+- medias: Update for h265parse passthrough behavior change
+- update validate.test.h265parse.alternate test
+
+gst-build
+
+- windows: Detect Strawberry Perl and error out early
+- {pygobject,pycairo}.wrap: point to stable refs
+
+Cerbero build tool and packaging changes in 1.18.1
+
+- Add macOS Big Sur support
+- gst-plugins-bad: Ship rtpmanagerbad plugin
+- gstreamer-1.0: Don’t enable DbgHelp for UWP build
+- pango: fix font corruption on windows
+- cairo: use thread local storage to grant one windows HDC per thread
+- small fixes for Xcode 12
+- cerbero: Re-add alsa-devel to bootstrap on Linux
+- FreeType: update to 2.10.4 to fix security vulnerability
+
+Contributors to 1.18.1
+
+Aaron Boxer, Adam Williamson, Andrew Wesie, Arun Raghavan, Bastien
+Reboulet, Brent Gardner, Edward Hervey, François Laignel, Guillaume
+Desmottes, Havard Graff, He Junyan, Hosang Lee, Jacek Tomaszewski, Jakub
+Adam, Jan Alexander Steffens (heftig), Jan Schmidt, Jérôme Laheurte,
+Jordan Petridis, Marc Leeman, Marian Cichy, Marijn Suijten, Mathieu
+Duponchelle, Matthew Waters, Michael Tretter, Nazar Mokrynskyi, Nicolas
+Dufresne, Niklas Hambüchen, Nirbheek Chauhan, Olivier Crête, Philippe
+Normand, raghavendra, Ricky Tang, Sebastian Dröge, Seungha Yang,
+sohwan.park, Stéphane Cerveau, Thibault Saunier, Tim-Philipp Müller, Tom
+Schoonjans, Víctor Manuel Jáquez Leal, Will Miller, Xavier Claessens, Xℹ
+Ruoyao, Zebediah Figura,
+
+… and many others who have contributed bug reports, translations, sent
+suggestions or helped testing. Thank you all!
+
+List of merge requests and issues fixed in 1.18.1
+
+- List of Merge Requests applied in 1.18.1
+- List of Issues fixed in 1.18.1
Schedule for 1.20
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-editing-services-1.18.0/RELEASE
new/gst-editing-services-1.18.1/RELEASE
--- old/gst-editing-services-1.18.0/RELEASE 2020-09-08 01:09:26.906830000
+0200
+++ new/gst-editing-services-1.18.1/RELEASE 2020-10-26 12:16:26.716392300
+0100
@@ -1,4 +1,4 @@
-This is GStreamer gst-editing-services 1.18.0.
+This is GStreamer gst-editing-services 1.18.1.
The GStreamer team is thrilled to announce a new major feature release
of your favourite cross-platform multimedia framework!
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-editing-services-1.18.0/ges/ges-auto-transition.c
new/gst-editing-services-1.18.1/ges/ges-auto-transition.c
--- old/gst-editing-services-1.18.0/ges/ges-auto-transition.c 2020-09-08
01:09:26.910830000 +0200
+++ new/gst-editing-services-1.18.1/ges/ges-auto-transition.c 2020-10-26
12:16:26.724392200 +0100
@@ -104,6 +104,11 @@
_track_changed_cb (GESTrackElement * track_element,
GParamSpec * arg G_GNUC_UNUSED, GESAutoTransition * self)
{
+ if (self->frozen) {
+ GST_LOG_OBJECT (self, "Not updating because frozen");
+ return;
+ }
+
if (ges_track_element_get_track (track_element) == NULL) {
GST_DEBUG_OBJECT (self, "Neighboor %" GST_PTR_FORMAT
" removed from track ... auto destructing", track_element);
@@ -134,12 +139,16 @@
}
void
-ges_auto_transition_set_previous_source (GESAutoTransition * self,
- GESTrackElement * source)
+ges_auto_transition_set_source (GESAutoTransition * self,
+ GESTrackElement * source, GESEdge edge)
{
_disconnect_from_source (self, self->previous_source);
_connect_to_source (self, source);
- self->previous_source = source;
+
+ if (edge == GES_EDGE_END)
+ self->next_source = source;
+ else
+ self->previous_source = source;
}
static void
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-editing-services-1.18.0/ges/ges-clip.c
new/gst-editing-services-1.18.1/ges/ges-clip.c
--- old/gst-editing-services-1.18.0/ges/ges-clip.c 2020-09-08
01:09:26.910830000 +0200
+++ new/gst-editing-services-1.18.1/ges/ges-clip.c 2020-10-26
12:16:26.724392200 +0100
@@ -3491,11 +3491,12 @@
gst_object_ref (track));
trans = timeline ?
- ges_timeline_get_auto_transition_at_end (timeline, orig) : NULL;
+ ges_timeline_get_auto_transition_at_edge (timeline, orig,
+ GES_EDGE_END) : NULL;
if (trans) {
trans->frozen = TRUE;
- ges_auto_transition_set_previous_source (trans, copy);
+ ges_auto_transition_set_source (trans, copy, GES_EDGE_START);
transitions = g_list_append (transitions, trans);
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-editing-services-1.18.0/ges/ges-internal.h
new/gst-editing-services-1.18.1/ges/ges-internal.h
--- old/gst-editing-services-1.18.0/ges/ges-internal.h 2020-09-08
01:09:26.914830000 +0200
+++ new/gst-editing-services-1.18.1/ges/ges-internal.h 2020-10-26
12:16:26.728392400 +0100
@@ -112,7 +112,8 @@
ges_timeline_freeze_auto_transitions (GESTimeline * timeline, gboolean freeze);
G_GNUC_INTERNAL GESAutoTransition *
-ges_timeline_get_auto_transition_at_end (GESTimeline * timeline,
GESTrackElement * source);
+ges_timeline_get_auto_transition_at_edge (GESTimeline * timeline,
GESTrackElement * source,
+ GESEdge edge);
G_GNUC_INTERNAL gboolean ges_timeline_is_disposed (GESTimeline* timeline);
@@ -183,7 +184,7 @@
ges_timeline_get_smart_rendering (GESTimeline *timeline);
G_GNUC_INTERNAL void
-ges_auto_transition_set_previous_source (GESAutoTransition * self,
GESTrackElement * source);
+ges_auto_transition_set_source (GESAutoTransition * self, GESTrackElement *
source, GESEdge edge);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-editing-services-1.18.0/ges/ges-timeline-tree.c
new/gst-editing-services-1.18.1/ges/ges-timeline-tree.c
--- old/gst-editing-services-1.18.0/ges/ges-timeline-tree.c 2020-09-08
01:09:26.918830000 +0200
+++ new/gst-editing-services-1.18.1/ges/ges-timeline-tree.c 2020-10-26
12:16:26.732392300 +0100
@@ -2368,9 +2368,8 @@
ges_timeline_create_transition (timeline, prev, next, NULL, layer,
_START (next), duration);
} else {
- GST_INFO ("Already have transition %" GES_FORMAT " between %" GES_FORMAT
- " and %" GES_FORMAT, GES_ARGS (trans), GES_ARGS (prev),
- GES_ARGS (next));
+ GST_INFO ("Already have transition %" GST_PTR_FORMAT " between %"
GES_FORMAT
+ " and %" GES_FORMAT, trans, GES_ARGS (prev), GES_ARGS (next));
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-editing-services-1.18.0/ges/ges-timeline.c
new/gst-editing-services-1.18.1/ges/ges-timeline.c
--- old/gst-editing-services-1.18.0/ges/ges-timeline.c 2020-09-08
01:09:26.918830000 +0200
+++ new/gst-editing-services-1.18.1/ges/ges-timeline.c 2020-10-26
12:16:26.732392300 +0100
@@ -1074,8 +1074,8 @@
}
GESAutoTransition *
-ges_timeline_get_auto_transition_at_end (GESTimeline * timeline,
- GESTrackElement * source)
+ges_timeline_get_auto_transition_at_edge (GESTimeline * timeline,
+ GESTrackElement * source, GESEdge edge)
{
GList *tmp, *auto_transitions;
GESAutoTransition *ret = NULL;
@@ -1090,7 +1090,10 @@
/* We already have a transition linked to one of the elements we want to
* find a transition for */
- if (auto_trans->previous_source == source) {
+ if (edge == GES_EDGE_END && auto_trans->previous_source == source) {
+ ret = gst_object_ref (auto_trans);
+ break;
+ } else if (edge == GES_EDGE_START && auto_trans->next_source == source) {
ret = gst_object_ref (auto_trans);
break;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-editing-services-1.18.0/ges/ges-uri-clip.c
new/gst-editing-services-1.18.1/ges/ges-uri-clip.c
--- old/gst-editing-services-1.18.0/ges/ges-uri-clip.c 2020-09-08
01:09:26.918830000 +0200
+++ new/gst-editing-services-1.18.1/ges/ges-uri-clip.c 2020-10-26
12:16:26.732392300 +0100
@@ -224,6 +224,27 @@
return g_strdup (GES_URI_CLIP (self)->priv->uri);
}
+static GList *
+get_auto_transitions_around_source (GESTrackElement * child)
+{
+ GList *transitions = NULL;
+ GESTimeline *timeline = GES_TIMELINE_ELEMENT_TIMELINE (child);
+ gint i;
+ GESEdge edges[] = { GES_EDGE_START, GES_EDGE_END };
+
+ if (!timeline)
+ return NULL;
+
+ for (i = 0; i < G_N_ELEMENTS (edges); i++) {
+ GESAutoTransition *transition =
+ ges_timeline_get_auto_transition_at_edge (timeline, child, edges[i]);
+ if (transition)
+ transitions = g_list_prepend (transitions, transition);
+ }
+
+ return transitions;
+}
+
static gboolean
extractable_set_asset (GESExtractable * self, GESAsset * asset)
{
@@ -235,9 +256,11 @@
GESTimelineElement *element = GES_TIMELINE_ELEMENT (self);
GESLayer *layer = ges_clip_get_layer (clip);
GList *tmp, *children;
- GHashTable *source_by_track;
+ GHashTable *source_by_track, *auto_transitions_on_sources;
GstClockTime max_duration;
GESAsset *prev_asset;
+ GList *transitions = NULL;
+ GESTimeline *timeline = GES_TIMELINE_ELEMENT_TIMELINE (self);
g_return_val_if_fail (GES_IS_URI_CLIP_ASSET (asset), FALSE);
@@ -300,23 +323,36 @@
source_by_track = g_hash_table_new_full (NULL, NULL,
gst_object_unref, gst_object_unref);
- children = ges_container_get_children (container, FALSE);
+ auto_transitions_on_sources = g_hash_table_new_full (NULL, NULL,
+ gst_object_unref, (GDestroyNotify) g_list_free);
+
+ if (timeline)
+ ges_timeline_freeze_auto_transitions (timeline, TRUE);
+ children = ges_container_get_children (container, FALSE);
for (tmp = children; tmp; tmp = tmp->next) {
GESTrackElement *child = tmp->data;
- GESTrack *track = ges_track_element_get_track (child);
+ GESTrack *track;
+
/* remove our core children */
- if (ges_track_element_is_core (child)) {
- if (track)
- g_hash_table_insert (source_by_track, gst_object_ref (track),
- gst_object_ref (child));
-
- /* removing the track element from its clip whilst it is in a
- * timeline will remove it from its track */
- /* removing the core element will also empty its non-core siblings
- * from the same track */
- ges_container_remove (container, GES_TIMELINE_ELEMENT (child));
- }
+ if (!ges_track_element_is_core (child))
+ continue;
+
+ track = ges_track_element_get_track (child);
+ if (track)
+ g_hash_table_insert (source_by_track, gst_object_ref (track),
+ gst_object_ref (child));
+
+ transitions = get_auto_transitions_around_source (child);
+ if (transitions)
+ g_hash_table_insert (auto_transitions_on_sources, gst_object_ref (child),
+ transitions);
+
+ /* removing the track element from its clip whilst it is in a
+ * timeline will remove it from its track */
+ /* removing the core element will also empty its non-core siblings
+ * from the same track */
+ ges_container_remove (container, GES_TIMELINE_ELEMENT (child));
}
g_list_free_full (children, g_object_unref);
@@ -343,17 +379,32 @@
* the same source! */
for (tmp = container->children; tmp; tmp = tmp->next) {
GESTrackElement *child = tmp->data;
- if (ges_track_element_is_core (child)) {
- GESTrackElement *orig_source = g_hash_table_lookup (source_by_track,
- ges_track_element_get_track (child));
- contains_core = TRUE;
-
- if (orig_source) {
- ges_track_element_copy_properties (GES_TIMELINE_ELEMENT
- (orig_source), GES_TIMELINE_ELEMENT (child));
- ges_track_element_copy_bindings (orig_source, child,
- GST_CLOCK_TIME_NONE);
- }
+ GESTrackElement *orig_source;
+
+ if (!ges_track_element_is_core (child))
+ continue;
+
+ contains_core = TRUE;
+ orig_source = g_hash_table_lookup (source_by_track,
+ ges_track_element_get_track (child));
+
+ if (!orig_source)
+ continue;
+
+ ges_track_element_copy_properties (GES_TIMELINE_ELEMENT
+ (orig_source), GES_TIMELINE_ELEMENT (child));
+ ges_track_element_copy_bindings (orig_source, child,
+ GST_CLOCK_TIME_NONE);
+
+ transitions =
+ g_hash_table_lookup (auto_transitions_on_sources, orig_source);
+ for (; transitions; transitions = transitions->next) {
+ GESAutoTransition *transition = transitions->data;
+
+ if (transition->previous_source == orig_source)
+ ges_auto_transition_set_source (transition, child, GES_EDGE_START);
+ else if (transition->next_source == orig_source)
+ ges_auto_transition_set_source (transition, child, GES_EDGE_END);
}
}
} else {
@@ -363,6 +414,10 @@
gst_object_unref (layer);
}
g_hash_table_unref (source_by_track);
+ g_hash_table_unref (auto_transitions_on_sources);
+
+ if (timeline)
+ ges_timeline_freeze_auto_transitions (timeline, FALSE);
if (res) {
g_free (uriclip->priv->uri);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-editing-services-1.18.0/gst-editing-services.doap
new/gst-editing-services-1.18.1/gst-editing-services.doap
--- old/gst-editing-services-1.18.0/gst-editing-services.doap 2020-09-08
01:09:26.922830000 +0200
+++ new/gst-editing-services-1.18.1/gst-editing-services.doap 2020-10-26
12:16:26.736392300 +0100
@@ -32,6 +32,16 @@
<release>
<Version>
+ <revision>1.18.1</revision>
+ <branch>1.18</branch>
+ <name></name>
+ <created>2020-10-26</created>
+ <file-release
rdf:resource="https://gstreamer.freedesktop.org/src/gst-editing-services/gst-editing-services-1.18.1.tar.xz"
/>
+ </Version>
+ </release>
+
+ <release>
+ <Version>
<revision>1.18.0</revision>
<branch>master</branch>
<name></name>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-editing-services-1.18.0/meson.build
new/gst-editing-services-1.18.1/meson.build
--- old/gst-editing-services-1.18.0/meson.build 2020-09-08 01:09:26.922830000
+0200
+++ new/gst-editing-services-1.18.1/meson.build 2020-10-26 12:16:26.736392300
+0100
@@ -1,5 +1,5 @@
project('gst-editing-services', 'c',
- version : '1.18.0',
+ version : '1.18.1',
meson_version : '>= 0.49',
default_options : [ 'warning_level=1',
'buildtype=debugoptimized' ])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-editing-services-1.18.0/tests/check/meson.build
new/gst-editing-services-1.18.1/tests/check/meson.build
--- old/gst-editing-services-1.18.0/tests/check/meson.build 2020-09-08
01:09:26.926830000 +0200
+++ new/gst-editing-services-1.18.1/tests/check/meson.build 2020-10-26
12:16:26.744392400 +0100
@@ -123,7 +123,6 @@
env.set('CK_DEFAULT_TIMEOUT', '20')
env.set('GST_REGISTRY',
'@0@/@[email protected]'.format(meson.current_build_dir(), 'scenarios'))
env.set('GST_PLUGIN_PATH_1_0', [meson.build_root()] + pluginsdirs)
- env.set('GST_VALIDATE_LOGSDIR', meson.current_build_dir() / scenario)
env.set('GI_TYPELIB_PATH', meson.current_build_dir() / '..' / '..' / 'ges')
test('pythontests', runtests, args: ['--pyunittest-dir',
meson.current_source_dir(), 'pyunittest', '--dump-on-failure'],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-editing-services-1.18.0/tests/check/python/common.py
new/gst-editing-services-1.18.1/tests/check/python/common.py
--- old/gst-editing-services-1.18.0/tests/check/python/common.py
2020-09-08 01:09:26.930830000 +0200
+++ new/gst-editing-services-1.18.1/tests/check/python/common.py
2020-10-26 12:16:26.744392400 +0100
@@ -32,6 +32,12 @@
import unittest # noqa
import tempfile # noqa
+try:
+ gi.require_version("GstTranscoder", "1.0")
+ from gi.repository import GstTranscoder
+except ValueError:
+ GstTranscoder = None
+
Gst.init(None)
GES.init()
@@ -99,6 +105,28 @@
os.remove(xges_path)
+def can_generate_assets():
+ if GstTranscoder is None:
+ return False, "GstTranscoder is not available"
+
+ if not Gst.ElementFactory.make("testsrcbin"):
+ return False, "testbinsrc is not available"
+
+ return True, None
+
+
[email protected]
+def created_video_asset(uri=None, num_bufs=30):
+ with tempfile.NamedTemporaryFile(suffix=".ogg") as f:
+ if not uri:
+ uri = Gst.filename_to_uri(f.name)
+ transcoder =
GstTranscoder.Transcoder.new("testbin://video,num-buffers=%s" % num_bufs,
+ uri, "application/ogg:video/x-theora:audio/x-vorbis")
+ transcoder.run()
+
+ yield uri
+
+
def get_asset_uri(name):
python_tests_dir = os.path.dirname(os.path.abspath(__file__))
assets_dir = os.path.join(python_tests_dir, "..", "assets")
@@ -217,7 +245,11 @@
while len(self.timeline.get_layers()) < layer + 1:
self.timeline.append_layer()
layer = self.timeline.get_layers()[layer]
- clip = GES.Asset.request(asset_type, asset_id).extract()
+ if asset_type == GES.UriClip:
+ asset = GES.UriClipAsset.request_sync(asset_id)
+ else:
+ asset = GES.Asset.request(asset_type, asset_id)
+ clip = asset.extract()
clip.props.start = layer.get_duration()
clip.props.duration = 10
self.assertTrue(layer.add_clip(clip))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-editing-services-1.18.0/tests/check/python/test_assets.py
new/gst-editing-services-1.18.1/tests/check/python/test_assets.py
--- old/gst-editing-services-1.18.0/tests/check/python/test_assets.py
2020-09-08 01:09:26.930830000 +0200
+++ new/gst-editing-services-1.18.1/tests/check/python/test_assets.py
2020-10-26 12:16:26.744392400 +0100
@@ -32,12 +32,6 @@
import unittest # noqa
from unittest import mock
-try:
- gi.require_version("GstTranscoder", "1.0")
- from gi.repository import GstTranscoder
-except ValueError:
- GstTranscoder = None
-
from . import common
from .common import GESSimpleTimelineTest # noqa
@@ -66,40 +60,29 @@
asset = proj.create_asset_sync("file:///png.png", GES.UriClip)
self.assertIsNotNone(asset)
- @unittest.skipIf(GstTranscoder is None, "GstTranscoder is not available")
- @unittest.skipIf(Gst.ElementFactory.make("testsrcbin") is None,
"testbinsrc is not available")
+ @unittest.skipUnless(*common.can_generate_assets())
def test_reload_asset(self):
- with tempfile.NamedTemporaryFile(suffix=".ogg") as f:
- uri = Gst.filename_to_uri(f.name)
- transcoder =
GstTranscoder.Transcoder.new("testbin://video,num-buffers=30",
- uri, "application/ogg:video/x-theora:audio/x-vorbis")
- transcoder.run()
-
+ with common.created_video_asset() as uri:
asset0 = GES.UriClipAsset.request_sync(uri)
self.assertEqual(asset0.props.duration, Gst.SECOND)
- transcoder =
GstTranscoder.Transcoder.new("testbin://video,num-buffers=60",
- uri, "application/ogg:video/x-theora:audio/x-vorbis")
- transcoder.run()
-
- GES.Asset.needs_reload(GES.UriClip, uri)
- asset1 = GES.UriClipAsset.request_sync(uri)
- self.assertEqual(asset1.props.duration, 2 * Gst.SECOND)
- self.assertEqual(asset1, asset0)
-
- transcoder =
GstTranscoder.Transcoder.new("testbin://video,num-buffers=90",
- uri, "application/ogg:video/x-theora:audio/x-vorbis")
- transcoder.run()
- mainloop = common.create_main_loop()
- def asset_loaded_cb(_, res, mainloop):
- asset2 = GES.Asset.request_finish(res)
- self.assertEqual(asset2.props.duration, 3 * Gst.SECOND)
- self.assertEqual(asset2, asset0)
- mainloop.quit()
-
- GES.Asset.needs_reload(GES.UriClip, uri)
- GES.Asset.request_async(GES.UriClip, uri, None, asset_loaded_cb,
mainloop)
- mainloop.run()
+ with common.created_video_asset(uri, 60) as uri:
+ GES.Asset.needs_reload(GES.UriClip, uri)
+ asset1 = GES.UriClipAsset.request_sync(uri)
+ self.assertEqual(asset1.props.duration, 2 * Gst.SECOND)
+ self.assertEqual(asset1, asset0)
+
+ with common.created_video_asset(uri, 90) as uri:
+ mainloop = common.create_main_loop()
+ def asset_loaded_cb(_, res, mainloop):
+ asset2 = GES.Asset.request_finish(res)
+ self.assertEqual(asset2.props.duration, 3 * Gst.SECOND)
+ self.assertEqual(asset2, asset0)
+ mainloop.quit()
+
+ GES.Asset.needs_reload(GES.UriClip, uri)
+ GES.Asset.request_async(GES.UriClip, uri, None,
asset_loaded_cb, mainloop)
+ mainloop.run()
def test_asset_metadata_on_reload(self):
mainloop = GLib.MainLoop()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-editing-services-1.18.0/tests/check/python/test_timeline.py
new/gst-editing-services-1.18.1/tests/check/python/test_timeline.py
--- old/gst-editing-services-1.18.0/tests/check/python/test_timeline.py
2020-09-08 01:09:26.930830000 +0200
+++ new/gst-editing-services-1.18.1/tests/check/python/test_timeline.py
2020-10-26 12:16:26.744392400 +0100
@@ -201,6 +201,29 @@
]
])
+ @unittest.skipUnless(*common.can_generate_assets())
+ def test_auto_transition_type_after_setting_proxy_asset(self):
+ self.track_types = [GES.TrackType.VIDEO]
+ super().setUp()
+
+ self.timeline.props.auto_transition = True
+ with common.created_video_asset() as uri:
+ self.append_clip(asset_type=GES.UriClip, asset_id=uri)
+ self.append_clip(asset_type=GES.UriClip, asset_id=uri).props.start
= 5
+ clip1, transition, clip2 = self.layer.get_clips()
+ video_transition, = transition.get_children(True)
+
video_transition.set_transition_type(GES.VideoStandardTransitionType.BAR_WIPE_LR)
+ self.assertEqual(video_transition.get_transition_type(),
GES.VideoStandardTransitionType.BAR_WIPE_LR)
+
+ with common.created_video_asset() as uri2:
+ proxy_asset = GES.UriClipAsset.request_sync(uri2)
+ clip1.set_asset(proxy_asset)
+ clip1, transition1, clip2 = self.layer.get_clips()
+
+ video_transition1, = transition1.get_children(True)
+ self.assertEqual(video_transition, video_transition1)
+ self.assertEqual(video_transition.get_transition_type(),
GES.VideoStandardTransitionType.BAR_WIPE_LR)
+
def test_frame_info(self):
self.track_types = [GES.TrackType.VIDEO]
super().setUp()
@@ -345,12 +368,10 @@
def _snapped_cb(timeline, elem1, elem2, position):
self.snapped_at.append(position)
- Gst.error('%s' % position)
def _snapped_end_cb(timeline, elem1, elem2, position):
if self.snapped_at: # Ignoring first snap end.
self.snapped_at.append(Gst.CLOCK_TIME_NONE)
- Gst.error('%s' % position)
self.timeline.connect("snapping-started", _snapped_cb)
self.timeline.connect("snapping-ended", _snapped_end_cb)
_______________________________________________
openSUSE Commits mailing list -- [email protected]
To unsubscribe, email [email protected]
List Netiquette: https://en.opensuse.org/openSUSE:Mailing_list_netiquette
List Archives:
https://lists.opensuse.org/archives/list/[email protected]