Hello community,

here is the log from the commit of package libmlt for openSUSE:Factory checked 
in at 2019-05-08 15:17:31
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libmlt (Old)
 and      /work/SRC/openSUSE:Factory/.libmlt.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libmlt"

Wed May  8 15:17:31 2019 rev:46 rq:701503 version:6.16.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/libmlt/libmlt.changes    2019-04-05 
12:02:42.530571242 +0200
+++ /work/SRC/openSUSE:Factory/.libmlt.new.5148/libmlt.changes  2019-05-08 
15:17:34.113135875 +0200
@@ -1,0 +2,20 @@
+Wed May  8 07:14:37 UTC 2019 - Luigi Baldoni <[email protected]>
+
+- Update to version 6.16.0
+  Framework:
+  * Added functions to get/set a creation date to a producer
+    + mlt_producer_get_creation_time()
+    + mlt_producer_set_creation_time()
+    + Mlt::Producer::set_creation_time()
+    + Mlt::Producer::get_creation_time()
+  Modules:
+  * Fixed dance filter not showing when lower track is
+    transparent.
+  * Refactored dynamictext filter to use
+    mlt_producer_get_creation_time().
+  * Marked frei0r rgsplit0r plugin version < 1.1 as not
+    thread-safe.
+  * Fixed possible null pointer crash in
+    mlt_properties_serialise_yaml.
+
+-------------------------------------------------------------------

Old:
----
  mlt-6.14.0.tar.gz

New:
----
  mlt-6.16.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libmlt.spec ++++++
--- /var/tmp/diff_new_pack.xJ8uVq/_old  2019-05-08 15:17:35.921139902 +0200
+++ /var/tmp/diff_new_pack.xJ8uVq/_new  2019-05-08 15:17:35.921139902 +0200
@@ -21,14 +21,14 @@
 
 %define _name mlt
 %define libname lib%{_name}
-%define lversion 6.14.0
+%define lversion 6.16.0
 %define soname 6
 %define _name_pp %{_name}++
 %define libname_pp lib%{_name_pp}
 %define soname_pp 3
 
 Name:           %{libname}
-Version:        6.14.0
+Version:        6.16.0
 Release:        0
 Summary:        Multimedia framework for television broadcasting
 License:        GPL-3.0-or-later

++++++ webvfx.spec ++++++
--- /var/tmp/diff_new_pack.xJ8uVq/_old  2019-05-08 15:17:35.941139947 +0200
+++ /var/tmp/diff_new_pack.xJ8uVq/_new  2019-05-08 15:17:35.945139955 +0200
@@ -17,8 +17,8 @@
 
 
 %define _name mlt
-%define mltversion 6.14.0
-%define mltsoversion 6.14.0
+%define mltversion 6.16.0
+%define mltsoversion 6.16.0
 %define sover 1
 %define mltmaj %(echo %{mltversion} |cut -d "." -f 1)
 # Find qt version used to build

++++++ mlt-6.14.0.tar.gz -> mlt-6.16.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mlt-6.14.0/.gitlab-ci.yml 
new/mlt-6.16.0/.gitlab-ci.yml
--- old/mlt-6.14.0/.gitlab-ci.yml       2019-03-30 21:59:21.000000000 +0100
+++ new/mlt-6.16.0/.gitlab-ci.yml       2019-05-08 04:27:10.000000000 +0200
@@ -61,25 +61,6 @@
         - ./configure --enable-gpl --enable-gpl3 && make && make install
             # there's no `check` or `test` `make` target
 
-debian-oldstable:
-    image: debian:jessie
-    script:
-        - echo -e 'deb-src http://deb.debian.org/debian jessie main\ndeb-src 
http://deb.debian.org/debian jessie-updates main\ndeb-src 
http://security.debian.org jessie/updates main' >> /etc/apt/sources.list
-        - apt-get -qq update
-        - apt-get -yqq build-dep mlt
-        - ./configure --enable-gpl --enable-gpl3 && make && make install
-            # there's no `check` or `test` `make` target
-
-debian-oldoldstable:
-    image: debian:wheezy
-    script:
-        - echo -e 'deb-src http://deb.debian.org/debian wheezy main\ndeb-src 
http://deb.debian.org/debian wheezy-updates main\ndeb-src 
http://security.debian.org wheezy/updates main' >> /etc/apt/sources.list
-        - apt-get -qq update
-        - apt-get -yqq build-dep mlt
-        - apt-get -yqq install libqt4-opengl-dev
-        - ./configure --enable-gpl --enable-gpl3 && make && make install
-            # there's no `check` or `test` `make` target
-
 centos-7:
     image: centos:7
     script:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mlt-6.14.0/ChangeLog new/mlt-6.16.0/ChangeLog
--- old/mlt-6.14.0/ChangeLog    2019-03-30 21:59:21.000000000 +0100
+++ new/mlt-6.16.0/ChangeLog    2019-05-08 04:27:10.000000000 +0200
@@ -1,3 +1,21 @@
+2019-05-07  Dan Dennedy <[email protected]>
+
+  * Doxyfile, configure, docs/melt.1, src/framework/mlt_version.h: Set version
+  to 6.16.0
+
+2019-03-25  Brian Matherly <[email protected]>
+
+  * src/framework/mlt.vers, src/framework/mlt_producer.c,
+  src/framework/mlt_producer.h, src/mlt++/MltProducer.cpp,
+  src/mlt++/MltProducer.h, src/mlt++/mlt++.vers,
+  src/modules/plus/filter_dynamictext.c: Add get/set creation_date to producer.
+   "creation_date" is a reserved producer property that can hold the creation
+  time of the producer. The creation_time property is always in UTC.
+
+2019-04-07  Dan Dennedy <[email protected]>
+
+  * configure, src/framework/mlt_version.h: Set interim version to 6.15.0
+
 2019-03-30  Dan Dennedy <[email protected]>
 
   * Doxyfile, configure, docs/melt.1, src/framework/mlt_version.h: Set version
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mlt-6.14.0/Doxyfile new/mlt-6.16.0/Doxyfile
--- old/mlt-6.14.0/Doxyfile     2019-03-30 21:59:21.000000000 +0100
+++ new/mlt-6.16.0/Doxyfile     2019-05-08 04:27:10.000000000 +0200
@@ -31,7 +31,7 @@
 # This could be handy for archiving the generated documentation or 
 # if some version control system is used.
 
-PROJECT_NUMBER = 6.14.0
+PROJECT_NUMBER = 6.16.0
 
 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
 # base path where the generated documentation will be put. 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mlt-6.14.0/NEWS new/mlt-6.16.0/NEWS
--- old/mlt-6.14.0/NEWS 2019-03-30 21:59:21.000000000 +0100
+++ new/mlt-6.16.0/NEWS 2019-05-08 04:27:10.000000000 +0200
@@ -1,6 +1,25 @@
 MLT Release Notes
 -----------------
 
+Version 6.16.0 - May 7, 2019
+
+This version is released to facilitate packaging the latest version of Shotcut,
+which is using new APIs.
+
+Framework
+  Added functions to get/set a creation date to a producer:
+  - mlt_producer_get_creation_time()
+  - mlt_producer_set_creation_time()
+  - Mlt::Producer::set_creation_time()
+  - Mlt::Producer::get_creation_time()
+
+Modules
+  * Fixed dance filter not showing when lower track is transparent.
+  * Refactored dynamictext filter to use mlt_producer_get_creation_time().
+  * Marked frei0r rgsplit0r plugin version < 1.1 as not thread-safe.
+  * Fixed possible null pointer crash in mlt_properties_serialise_yaml.
+
+
 Version 6.14.0 - March 30, 2019
 
 This version is mostly fixes plus a few API additions and filters.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mlt-6.14.0/configure new/mlt-6.16.0/configure
--- old/mlt-6.14.0/configure    2019-03-30 21:59:21.000000000 +0100
+++ new/mlt-6.16.0/configure    2019-05-08 04:27:10.000000000 +0200
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-export version=6.14.0
+export version=6.16.0
 export soversion=6
 
 show_help()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mlt-6.14.0/docs/melt.1 new/mlt-6.16.0/docs/melt.1
--- old/mlt-6.14.0/docs/melt.1  2019-03-30 21:59:21.000000000 +0100
+++ new/mlt-6.16.0/docs/melt.1  2019-05-08 04:27:10.000000000 +0200
@@ -1,5 +1,5 @@
 .\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.38.4.
-.TH MELT "1" "March 2019" "melt 6.14.0" "User Commands"
+.TH MELT "1" "May 2019" "melt 6.16.0" "User Commands"
 .SH NAME
 melt \- author, play, and encode multitrack audio/video compositions
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mlt-6.14.0/src/framework/mlt.vers 
new/mlt-6.16.0/src/framework/mlt.vers
--- old/mlt-6.14.0/src/framework/mlt.vers       2019-03-30 21:59:21.000000000 
+0100
+++ new/mlt-6.16.0/src/framework/mlt.vers       2019-05-08 04:27:10.000000000 
+0200
@@ -533,4 +533,6 @@
   global:
     mlt_frame_get_unique_properties;
     mlt_playlist_reorder;
+    mlt_producer_set_creation_time;
+    mlt_producer_get_creation_time;
 } MLT_6.12.0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mlt-6.14.0/src/framework/mlt_producer.c 
new/mlt-6.16.0/src/framework/mlt_producer.c
--- old/mlt-6.14.0/src/framework/mlt_producer.c 2019-03-30 21:59:21.000000000 
+0100
+++ new/mlt-6.16.0/src/framework/mlt_producer.c 2019-05-08 04:27:10.000000000 
+0200
@@ -3,7 +3,7 @@
  * \brief abstraction for all producer services
  * \see mlt_producer_s
  *
- * Copyright (C) 2003-2018 Meltytech, LLC
+ * Copyright (C) 2003-2019 Meltytech, LLC
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -30,6 +30,10 @@
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
+#include <sys/types.h> // for stat()
+#include <sys/stat.h>  // for stat()
+#include <time.h>      // for strftime() and gtime()
+#include <unistd.h>    // for stat()
 
 /* Forward references. */
 
@@ -1095,3 +1099,175 @@
                }
        }
 }
+
+
+/*
+ * Boost implementation of timegm()
+ * (C) Copyright Howard Hinnant
+ * (C) Copyright 2010-2011 Vicente J. Botet Escriba
+ */
+
+static inline int32_t is_leap(int32_t year)
+{
+       if(year % 400 == 0)
+               return 1;
+       if(year % 100 == 0)
+               return 0;
+       if(year % 4 == 0)
+               return 1;
+       return 0;
+}
+
+static inline int32_t days_from_0(int32_t year)
+{
+       year--;
+       return 365 * year + (year / 400) - (year/100) + (year / 4);
+}
+
+static inline int32_t days_from_1970(int32_t year)
+{
+       const int days_from_0_to_1970 = days_from_0(1970);
+       return days_from_0(year) - days_from_0_to_1970;
+}
+
+static inline int32_t days_from_1jan(int32_t year,int32_t month,int32_t day)
+{
+       static const int32_t days[2][12] =
+       {
+               { 0,31,59,90,120,151,181,212,243,273,304,334},
+               { 0,31,60,91,121,152,182,213,244,274,305,335}
+       };
+       return days[is_leap(year)][month-1] + day - 1;
+}
+
+static inline time_t internal_timegm(struct tm const *t)
+{
+       int year = t->tm_year + 1900;
+       int month = t->tm_mon;
+       if(month > 11)
+       {
+               year += month/12;
+               month %= 12;
+       }
+       else if(month < 0)
+       {
+               int years_diff = (-month + 11)/12;
+               year -= years_diff;
+               month+=12 * years_diff;
+       }
+       month++;
+       int day = t->tm_mday;
+       int day_of_year = days_from_1jan(year,month,day);
+       int days_since_epoch = days_from_1970(year) + day_of_year;
+
+       time_t seconds_in_day = 3600 * 24;
+       time_t result = seconds_in_day * days_since_epoch + 3600 * t->tm_hour + 
60 * t->tm_min + t->tm_sec;
+
+       return result;
+}
+
+/* End of Boost implementation of timegm(). */
+
+
+/** Get the creation time for the producer.
+ *
+ * The creation_time value is searched in the following order:
+ *   - A "creation_time" property in ISO 8601 format (yyyy-mm-ddThh:mm:ss)
+ *   - A "meta.attr.com.apple.quicktime.creationdate.markup" property in ISO 
8601 format
+ *   - A "meta.attr.creation_time.markup" property in ISO 8601 format
+ *   - If the producer has a resource that is a file, the mtime of the file
+ *
+ * \public \memberof mlt_producer_s
+ * \param self a producer
+ * \return the creation time of the producer in seconds since the epoch
+ */
+
+int64_t mlt_producer_get_creation_time( mlt_producer self )
+{
+       mlt_producer producer = mlt_producer_cut_parent( self );
+       // Prefer creation_time producer property if present
+       char* datestr = mlt_properties_get( MLT_PRODUCER_PROPERTIES( producer 
), "creation_time");
+       if (!datestr)
+       {
+               // Fall back to quicktime creationdate metadata (common for 
.mov files)
+               // creationdate is preferred over creation_time metadata because
+               // creation_time may be recalculated if the device re-encodes 
the file.
+               datestr = mlt_properties_get( MLT_PRODUCER_PROPERTIES( producer 
), "meta.attr.com.apple.quicktime.creationdate.markup");
+
+       }
+       if (!datestr)
+       {
+               // Fall back to creation_time metadata (common for most media 
handled by ffmpeg)
+               datestr = mlt_properties_get( MLT_PRODUCER_PROPERTIES( producer 
), "meta.attr.creation_time.markup");
+       }
+       if (datestr)
+       {
+               struct tm time_info = {0};
+               double seconds;
+               char offset_indicator = 0;
+               int hour_offset = 0;
+               int min_offset = 0;
+               int ret = sscanf(datestr, 
"%04d-%02d-%02dT%02d:%02d:%lf%c%02d%02d",
+                                       &time_info.tm_year, &time_info.tm_mon, 
&time_info.tm_mday,
+                                       &time_info.tm_hour, &time_info.tm_min, 
&seconds,
+                                       &offset_indicator, &hour_offset, 
&min_offset);
+
+               if (ret >= 6)
+               {
+                       time_info.tm_sec   = (int) seconds;
+                       time_info.tm_mon  -= 1;
+                       time_info.tm_year -= 1900;
+                       time_info.tm_isdst =-1;
+                       int64_t milliseconds = (int64_t) 
internal_timegm(&time_info) * 1000;
+                       milliseconds += (seconds - (double)time_info.tm_sec) * 
1000.0;
+
+                       // Apply time zone offset if present.
+                       if (ret == 9 && offset_indicator == '-')
+                       {
+                               milliseconds += ((hour_offset * 60) + 
min_offset) * 60000;
+                       }
+                       else if (ret == 9 && offset_indicator == '+')
+                       {
+                               milliseconds -= ((hour_offset * 60) + 
min_offset) * 60000;
+                       }
+                       return milliseconds;
+               }
+       }
+
+       // Fall back to file modification time.
+       char* resource = mlt_properties_get( MLT_PRODUCER_PROPERTIES( producer 
), "resource");
+       if (!resource)
+       {
+               resource = mlt_properties_get( MLT_PRODUCER_PROPERTIES( 
producer ), "warp_resource");
+       }
+       if (resource)
+       {
+               struct stat file_info;
+               if ( !stat( resource, &file_info ) )
+               {
+                       return (int64_t)file_info.st_mtime * 1000;
+               }
+       }
+
+       return 0;
+}
+
+/** Set the creation time for the producer.
+ *
+ * A "creation_time" property in ISO 8601 format (yyyy-mm-ddThh:mm:ss) will be
+ * applied to the producer.
+ *
+ * \public \memberof mlt_producer_s
+ * \param self a producer
+ * \param creation_time the creation time of the producer in seconds since the 
epoch
+ */
+
+void mlt_producer_set_creation_time( mlt_producer self, int64_t creation_time )
+{
+       time_t time = creation_time / 1000;
+       mlt_producer parent = mlt_producer_cut_parent( self );
+       char* datestr = calloc( 1, 20 );
+       strftime( datestr, 20, "%Y-%m-%dT%H:%M:%S", gmtime( &time ) );
+       mlt_properties_set( MLT_PRODUCER_PROPERTIES( parent ), "creation_time", 
datestr);
+       free( datestr );
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mlt-6.14.0/src/framework/mlt_producer.h 
new/mlt-6.16.0/src/framework/mlt_producer.h
--- old/mlt-6.14.0/src/framework/mlt_producer.h 2019-03-30 21:59:21.000000000 
+0100
+++ new/mlt-6.16.0/src/framework/mlt_producer.h 2019-05-08 04:27:10.000000000 
+0200
@@ -125,5 +125,7 @@
 extern mlt_producer mlt_producer_cut_parent( mlt_producer self );
 extern int mlt_producer_optimise( mlt_producer self );
 extern void mlt_producer_close( mlt_producer self );
+int64_t mlt_producer_get_creation_time( mlt_producer self );
+void mlt_producer_set_creation_time( mlt_producer self, int64_t creation_time 
);
 
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mlt-6.14.0/src/framework/mlt_properties.c 
new/mlt-6.16.0/src/framework/mlt_properties.c
--- old/mlt-6.14.0/src/framework/mlt_properties.c       2019-03-30 
21:59:21.000000000 +0100
+++ new/mlt-6.16.0/src/framework/mlt_properties.c       2019-05-08 
04:27:10.000000000 +0200
@@ -3,7 +3,7 @@
  * \brief Properties class definition
  * \see mlt_properties_s
  *
- * Copyright (C) 2003-2017 Meltytech, LLC
+ * Copyright (C) 2003-2019 Meltytech, LLC
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -1982,6 +1982,7 @@
 {
        property_list *list = self->local;
        int i = 0;
+       int is_sequence = mlt_properties_is_sequence( self );
 
        for ( i = 0; i < list->count; i ++ )
        {
@@ -1991,7 +1992,7 @@
                const char *name = list->name[i];
                const char *value = mlt_properties_get( self, name );
 
-               if ( mlt_properties_is_sequence( self ) )
+               if ( is_sequence )
                {
                        // Ignore hidden/non-serialisable items
                        if ( name[ 0 ] != '_' )
@@ -2026,7 +2027,7 @@
                                }
                        }
                        // Recurse on child
-                       if ( child )
+                       if ( child && child->local )
                                serialise_yaml( child, output, indent + 2, 1 );
                }
                else
@@ -2074,7 +2075,7 @@
                        }
 
                        // Output a child as a map item
-                       if ( child )
+                       if ( child && child->local )
                        {
                                indent_yaml( output, indent );
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mlt-6.14.0/src/framework/mlt_version.h 
new/mlt-6.16.0/src/framework/mlt_version.h
--- old/mlt-6.14.0/src/framework/mlt_version.h  2019-03-30 21:59:21.000000000 
+0100
+++ new/mlt-6.16.0/src/framework/mlt_version.h  2019-05-08 04:27:10.000000000 
+0200
@@ -27,7 +27,7 @@
 #define MLT_STRINGIZE(s)            MLT_STRINGIZE2(s)
 
 #define LIBMLT_VERSION_MAJOR    6
-#define LIBMLT_VERSION_MINOR    14
+#define LIBMLT_VERSION_MINOR    16
 #define LIBMLT_VERSION_REVISION 0
 #define LIBMLT_VERSION_INT      
((LIBMLT_VERSION_MAJOR<<16)+(LIBMLT_VERSION_MINOR<<8)+LIBMLT_VERSION_REVISION)
 #define LIBMLT_VERSION          
MLT_STRINGIZE(LIBMLT_VERSION_MAJOR.LIBMLT_VERSION_MINOR.LIBMLT_VERSION_REVISION)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mlt-6.14.0/src/mlt++/MltProducer.cpp 
new/mlt-6.16.0/src/mlt++/MltProducer.cpp
--- old/mlt-6.14.0/src/mlt++/MltProducer.cpp    2019-03-30 21:59:21.000000000 
+0100
+++ new/mlt-6.16.0/src/mlt++/MltProducer.cpp    2019-05-08 04:27:10.000000000 
+0200
@@ -235,3 +235,13 @@
 {
        return mlt_producer_clear( get_producer( ) );
 }
+
+int64_t Producer::get_creation_time( )
+{
+       return mlt_producer_get_creation_time( get_producer( ) );
+}
+
+void Producer::set_creation_time( int64_t creation_time )
+{
+       mlt_producer_set_creation_time( get_producer( ), creation_time );
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mlt-6.14.0/src/mlt++/MltProducer.h 
new/mlt-6.16.0/src/mlt++/MltProducer.h
--- old/mlt-6.14.0/src/mlt++/MltProducer.h      2019-03-30 21:59:21.000000000 
+0100
+++ new/mlt-6.16.0/src/mlt++/MltProducer.h      2019-05-08 04:27:10.000000000 
+0200
@@ -74,6 +74,8 @@
                        bool runs_into( Producer &that );
                        void optimise( );
                        int clear( );
+                       int64_t get_creation_time( );
+                       void set_creation_time( int64_t creation_time );
        };
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mlt-6.14.0/src/mlt++/mlt++.vers 
new/mlt-6.16.0/src/mlt++/mlt++.vers
--- old/mlt-6.14.0/src/mlt++/mlt++.vers 2019-03-30 21:59:21.000000000 +0100
+++ new/mlt-6.16.0/src/mlt++/mlt++.vers 2019-05-08 04:27:10.000000000 +0200
@@ -558,5 +558,8 @@
       "Mlt::Service::set_profile(mlt_profile_s*)";
       "Mlt::Playlist::reorder(int const*)";
       "Mlt::Transition::connect(Mlt::Service&, int, int)";
+      "Mlt::Producer::set_creation_time(long)";
+      "Mlt::Producer::set_creation_time(long long)";
+      "Mlt::Producer::get_creation_time()";
   };
 } MLTPP_6.10.0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mlt-6.14.0/src/modules/frei0r/not_thread_safe.txt 
new/mlt-6.16.0/src/modules/frei0r/not_thread_safe.txt
--- old/mlt-6.14.0/src/modules/frei0r/not_thread_safe.txt       2019-03-30 
21:59:21.000000000 +0100
+++ new/mlt-6.16.0/src/modules/frei0r/not_thread_safe.txt       2019-05-08 
04:27:10.000000000 +0200
@@ -49,6 +49,7 @@
 plasma
 primaries=0.2
 rgbparade
+rgbsplit0r=1.1
 saturation=0.2
 scale0tilt
 scanline0r=0.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mlt-6.14.0/src/modules/plus/filter_dance.c 
new/mlt-6.16.0/src/modules/plus/filter_dance.c
--- old/mlt-6.14.0/src/modules/plus/filter_dance.c      2019-03-30 
21:59:21.000000000 +0100
+++ new/mlt-6.16.0/src/modules/plus/filter_dance.c      2019-05-08 
04:27:10.000000000 +0200
@@ -161,17 +161,7 @@
        if( mlt_properties_get( frame_properties, pdata->mag_prop_name ) )
        {
                double mag = mlt_properties_get_double( frame_properties, 
pdata->mag_prop_name );
-               int iwidth = *width;
-               int iheight = *height;
-
-               // Get the image to find out the width and height that will be 
received.
-               char *interps = mlt_properties_get( frame_properties, 
"rescale.interp" );
-               if ( interps ) interps = strdup( interps );
-               // Request native width/height because that is what affine will 
do.
-               mlt_properties_set( frame_properties, "rescale.interp", "none" 
);
-               *format = mlt_image_rgb24a;
-               mlt_frame_get_image( frame, image, format, &iwidth, &iheight, 0 
);
-               // At this point, iwidth and iheight are what affine will use.
+               mlt_profile profile = mlt_service_profile( 
MLT_FILTER_SERVICE(filter) );
 
                // scale_x and scale_y are in the range 0.0 to x.0 with:
                //    0.0 = the largest possible
@@ -189,7 +179,7 @@
                //  < 0 = offset to the right
                double left = mlt_properties_get_double( filter_properties, 
"left" );
                double right = mlt_properties_get_double( filter_properties, 
"right" );
-               double ox = apply( left, right, mag, (double)iwidth / 100.0 );
+               double ox = apply( left, right, mag, (double)profile->width / 
100.0 );
 
                // oy is in the range -height to +height with:
                //  > 0 = offset up
@@ -197,7 +187,7 @@
                //  < 0 = offset down
                double up = mlt_properties_get_double( filter_properties, "up" 
);
                double down = mlt_properties_get_double( filter_properties, 
"down" );
-               double oy = apply( up, down, mag, (double)iheight / 100.0 );
+               double oy = apply( up, down, mag, (double)profile->height / 
100.0 );
 
                // fix_rotate_x is in the range -360 to +360 with:
                // > 0 = rotate clockwise
@@ -218,10 +208,6 @@
                mlt_filter_process( pdata->affine, frame );
                error = mlt_frame_get_image( frame, image, format, width, 
height, 0 );
                mlt_service_unlock( MLT_FILTER_SERVICE( filter ) );
-
-               // Restore the rescale property
-               mlt_properties_set( frame_properties, "rescale.interp", interps 
);
-               free( interps );
        } else {
                if ( pdata->preprocess_warned++ == 2 )
                {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mlt-6.14.0/src/modules/plus/filter_dynamictext.c 
new/mlt-6.16.0/src/modules/plus/filter_dynamictext.c
--- old/mlt-6.14.0/src/modules/plus/filter_dynamictext.c        2019-03-30 
21:59:21.000000000 +0100
+++ new/mlt-6.16.0/src/modules/plus/filter_dynamictext.c        2019-05-08 
04:27:10.000000000 +0200
@@ -167,35 +167,12 @@
 
 static void get_createdate_str( const char* keyword, mlt_filter filter, 
mlt_frame frame, char* text )
 {
-       char* datestr = mlt_properties_get( MLT_FRAME_PROPERTIES( frame ), 
"meta.attr.creation_time.markup");
+       time_t creation_date = (time_t)(mlt_producer_get_creation_time( 
mlt_frame_get_original_producer( frame ) ) / 1000);
        const char *format = "%Y/%m/%d";
        int n = strlen( "createdate" ) + 1;
        if ( strlen( keyword ) > n )
                format = &keyword[n];
-       struct tm time_info;
-       char *date = calloc( 1, MAX_TEXT_LEN );
-
-       if ( datestr && strptime( datestr, "%Y-%m-%dT%H:%M:%S", &time_info ) )
-       {
-               // Prefer creation_time property if available.
-               strftime( date, MAX_TEXT_LEN, format, &time_info );
-       }
-       else
-       {
-               // Fall back to file modification time.
-               mlt_producer producer = mlt_producer_cut_parent( 
mlt_frame_get_original_producer( frame ) );
-               mlt_properties producer_properties = MLT_PRODUCER_PROPERTIES( 
producer );
-               char* filename = mlt_properties_get( producer_properties, 
"resource");
-               struct stat file_info;
-               if ( !stat( filename, &file_info ) )
-               {
-                       strftime( date, MAX_TEXT_LEN, format, gmtime( 
&(file_info.st_mtime) ) );
-
-               }
-       }
-
-       strncat( text, date, MAX_TEXT_LEN - strlen( text ) - 1 );
-       free( date );
+       strftime( text, MAX_TEXT_LEN - strlen( text ) - 1, format, localtime( 
&creation_date ) );
 }
 
 /** Perform substitution for keywords that are enclosed in "# #".


Reply via email to