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]

Reply via email to