Blob Blame History Raw
--- api/gstreamer/examples/bgst_inspect.scm.orig	2019-07-04 00:09:45.000000000 -0600
+++ api/gstreamer/examples/bgst_inspect.scm	2019-11-12 14:31:36.961888769 -0700
@@ -19,7 +19,7 @@
 ;*---------------------------------------------------------------------*/
 ;*    bgst-inspect-version ...                                         */
 ;*---------------------------------------------------------------------*/
-(define (bgst-inspect-version) "0.10")
+(define (bgst-inspect-version) "1.0")
 
 ;*---------------------------------------------------------------------*/
 ;*    main ...                                                         */
--- api/gstreamer/examples/bgst_launch.scm.orig	2019-07-04 00:09:45.000000000 -0600
+++ api/gstreamer/examples/bgst_launch.scm	2019-11-12 14:31:16.580233386 -0700
@@ -44,7 +44,7 @@
 ;*---------------------------------------------------------------------*/
 ;*    bgst-launch-version ...                                          */
 ;*---------------------------------------------------------------------*/
-(define-parameter bgst-launch-version "0.10")
+(define-parameter bgst-launch-version "1.0")
 (define-parameter bgst-launch-verbose #f)
 (define-parameter bgst-launch-messages #f)
 
--- api/gstreamer/examples/bgst_mm.scm.orig	2019-07-04 00:09:45.000000000 -0600
+++ api/gstreamer/examples/bgst_mm.scm	2019-11-21 09:12:38.042854253 -0700
@@ -44,8 +44,6 @@
 ;*    main ...                                                         */
 ;*---------------------------------------------------------------------*/
 (define (main args)
-   (eval '(library-load 'multimedia))
-   (eval '(library-load 'gstreamer))
    (let ((files '())
 	 (backend 'gstreamer)
 	 (command #f)
--- api/gstreamer/examples/bgst_play.scm.orig	2019-07-04 00:09:45.000000000 -0600
+++ api/gstreamer/examples/bgst_play.scm	2019-11-06 14:44:13.588762385 -0700
@@ -148,7 +148,7 @@
 					  (error 'gstreamer
 					     "Message error"
 					     (gst-message-error-string msg)))
-				       (when (=fx type $gst-message-duration)
+				       (when (=fx type $gst-message-duration-changed)
 					  (verb 3 "duration: "
 					     (gst-element-query-duration
 						pipeline)))
--- api/gstreamer/examples/bgst_repl.scm.orig	2019-07-04 00:09:45.000000000 -0600
+++ api/gstreamer/examples/bgst_repl.scm	2019-11-21 09:14:05.130257480 -0700
@@ -21,5 +21,4 @@
 ;*---------------------------------------------------------------------*/
 (define (main argv)
    (print "Welcome to the Bigloo+Gstreamer repl...")
-   (eval '(library-load 'gstreamer))
    (repl))
--- api/gstreamer/examples/typefind.scm.orig	2019-07-04 00:09:45.000000000 -0600
+++ api/gstreamer/examples/typefind.scm	2019-11-20 12:00:41.642795553 -0700
@@ -24,6 +24,7 @@
 	  (bus (with-access::gst-pipeline pipeline (bus) bus))
 	  (filesrc (gst-element-factory-make "filesrc" "source"))
 	  (typefind (gst-element-factory-make "typefind" "typefinder"))
+	  (fakesink (gst-element-factory-make "fakesink" "sink"))
 	  (file (if (null? (cdr argv))
 		    "/usr/local/lib/hop/1.9.0/weblets/doc/etc/sound1.mp3"
 		    (cadr argv))))
@@ -31,18 +32,20 @@
       (gst-object-connect! typefind
 	 "have-type"
 	 (lambda (_ probability caps)
-	    (print
+	    (tprint
 	       (format "~a, probabilty=~a"
 		  (gst-caps-to-string caps)
 		  probability))
 	    (exit 0)))
       (tprint "1")
-      (gst-bin-add! pipeline filesrc typefind)
+      (gst-bin-add! pipeline filesrc typefind fakesink)
       (tprint "2")
-      (gst-element-link! filesrc typefind)
+      (gst-element-link! filesrc typefind fakesink)
       (gst-element-state-set! pipeline 'playing)
       (let loop ()
-	 (let ((msg (gst-bus-poll bus $gst-message-any #l1000000000)))
+	 (let ((msg (gst-bus-poll bus
+				  :types $gst-message-any
+				  :timeout #l1000000000)))
 	    (when (isa? msg gst-message)
 	       (tprint "msg=" msg)
 	       (with-access::gst-message msg (type)
--- api/gstreamer/src/Clib/bglgst.c.orig	2019-07-04 00:09:45.000000000 -0600
+++ api/gstreamer/src/Clib/bglgst.c	2019-11-18 16:03:13.117279358 -0700
@@ -22,7 +22,6 @@
 /*    Imports                                                          */
 /*---------------------------------------------------------------------*/
 BGL_RUNTIME_DECL obj_t void_star_to_obj();
-extern void bglgst_thread_init();
 extern obj_t bgl_gst_bin_elements_set( obj_t, obj_t );
 
 /*---------------------------------------------------------------------*/
@@ -43,7 +42,6 @@ extern obj_t bgl_gst_bin_elements_set( o
 /*    counting is a bad-idea).                                         */
 /*---------------------------------------------------------------------*/
 static int bglgst_use_threads = BGL_GSTREAMER_USE_THREADS;
-static obj_t bgl_gst_denv;
 
 /*---------------------------------------------------------------------*/
 /*    CHECK_PROCEDURE                                                  */
@@ -109,31 +107,6 @@ static void bgl_gst_free( gpointer ptr )
 }
 
 /*---------------------------------------------------------------------*/
-/*    static void                                                      */
-/*    bgl_gobject_alloc_init ...                                       */
-/*    -------------------------------------------------------------    */
-/*    Install the Bigloo allocation routines in replacement of the     */
-/*    default Glib ones.                                               */
-/*---------------------------------------------------------------------*/
-static void
-bgl_gobject_alloc_init() {
-   GMemVTable *vtable = alloca( sizeof( GMemVTable ) );
-
-   memset( vtable, 0, sizeof( GMemVTable ) );
-   
-#if( 0 && BGL_GC == BGL_BOEHM_GC )
-   vtable->malloc = (gpointer (*)(gsize))&GC_malloc;
-   vtable->realloc = (gpointer (*)(gpointer, gsize))&GC_realloc;
-   vtable->free = (void (*)(gpointer))&GC_free;
-#else
-   vtable->malloc = &bgl_gst_alloc;
-   vtable->realloc = &bgl_gst_realloc;
-   vtable->free = &bgl_gst_free;
-#endif
-   g_mem_set_vtable( vtable );
-}
-
-/*---------------------------------------------------------------------*/
 /*    void                                                             */
 /*    bgl_gst_init ...                                                 */
 /*---------------------------------------------------------------------*/
@@ -159,23 +132,13 @@ bgl_gst_init( obj_t args ) {
 	 args = CDR( args );
       }
 
-      /* start the Bigloo thread in charge of dealing with callbacks */
-      if( !bglgst_use_threadsp() ) {
-	 /* Use the GC for allocating glib objects */
-/* 	 bgl_gobject_alloc_init();                                     */
-      } else {
-	 /* otherwise, create the dummy gstreamer dynamic env */
-	 bglgst_thread_init();
-	 bgl_gst_denv = bgl_dup_dynamic_env( BGL_CURRENT_DYNAMIC_ENV() );
-      }
-
       /* initialize GStreamer */
       gst_init( &argc, &argv );
 
       /* WARNING: restore the previous locale that is changed by gst_init! */
       setlocale( LC_ALL, locale );
 
-      /* allocated the callback array */
+      /* allocate the callback array */
       callbacks = g_malloc( sizeof( callback_t ) * callback_length );
 
       /* bind the bigloo plugins */
@@ -307,7 +270,7 @@ bgl_g_value_to_obj( const GValue *gval,
 	 if( GST_VALUE_HOLDS_CAPS( gval ) ) {
 	    GstCaps *caps = GST_CAPS( gst_value_get_caps( gval ) );
 
-	    if( doref ) gst_object_ref( caps );
+	    if( doref ) gst_caps_ref( caps );
 	    return doobj ? bgl_gst_caps_new( caps, BTRUE ) : BUNSPEC;
 	 }
 	 
@@ -358,7 +321,7 @@ bgl_g_value_to_obj( const GValue *gval,
 	    return BUNSPEC;
 	 }
 	 
-	 if( GST_VALUE_HOLDS_DATE( gval ) ) {
+	 if( G_VALUE_HOLDS( gval, G_TYPE_DATE ) ) {
 	    fprintf( stderr, "GST_VALUE_HOLDS_DATE not implemented yet %s:%d\n",
 		     __FILE__, __LINE__ );
 	    return BUNSPEC;
@@ -370,8 +333,8 @@ bgl_g_value_to_obj( const GValue *gval,
 	    return BUNSPEC;
 	 }
 
-	 if( GST_VALUE_HOLDS_MINI_OBJECT( gval ) ) {
-	    fprintf( stderr, "GST_VALUE_HOLDS_MINI_OBJECT not implemented yet %s:%d\n",
+	 if( G_VALUE_HOLDS_BOXED( gval ) ) {
+	    fprintf( stderr, "G_VALUE_HOLDS_BOXED not implemented yet %s:%d\n",
 		     __FILE__, __LINE__ );
 	    return BUNSPEC;
 	 }
@@ -595,7 +558,7 @@ bgl_gst_registry_get_plugin_list( GstReg
 /*---------------------------------------------------------------------*/
 obj_t
 bgl_gst_element_factory_get_uri_protocols( GstElementFactory *factory ) {
-   gchar **array = gst_element_factory_get_uri_protocols( factory );
+   const gchar * const *array = gst_element_factory_get_uri_protocols( factory );
 
    if( !array ) {
       return BNIL;
@@ -991,9 +954,9 @@ bgl_gsttag_value_to_obj( const GstTagLis
 	 
 
       case G_TYPE_CHAR: {
-	 gchar c;
+	 gint c;
 
-	 gst_tag_list_get_char( list, tag, &c );
+	 gst_tag_list_get_int( list, tag, &c );
 	 
 	 return BCHAR( c );
       }
@@ -1007,14 +970,6 @@ bgl_gsttag_value_to_obj( const GstTagLis
 	 return BINT( i );
       }
 
-      case G_TYPE_LONG: {
-	 glong i;
-
-	 gst_tag_list_get_long( list, tag, &i );
-	 
-	 return make_belong( i );
-      }
-
       case G_TYPE_UINT: {
 	 guint i;
 
@@ -1023,14 +978,7 @@ bgl_gsttag_value_to_obj( const GstTagLis
 	 return make_belong( i );
       }
 
-      case G_TYPE_ULONG: {
-	 gulong i;
-
-	 gst_tag_list_get_ulong( list, tag, &i );
-	 
-	 return make_bllong( (BGL_LONGLONG_T)i );
-      }
-
+      case G_TYPE_LONG:
       case G_TYPE_INT64: {
 	 gint64 i;
 
@@ -1039,6 +987,7 @@ bgl_gsttag_value_to_obj( const GstTagLis
 	 return make_bllong( (BGL_LONGLONG_T)i );
       }
 
+      case G_TYPE_ULONG:
       case G_TYPE_UINT64: {
 	 guint64 i;
 
@@ -1088,6 +1037,43 @@ gst_tag_fun( const GstTagList *list, con
 }
 
 /*---------------------------------------------------------------------*/
+/*    obj_t                                                            */
+/*    bgl_gst_buffer_get_string ...                                    */
+/*---------------------------------------------------------------------*/
+obj_t
+bgl_gst_buffer_get_string( GstBuffer *buf )
+{
+   GstMapInfo info;
+   obj_t str;
+
+   if ( !gst_buffer_map( buf, &info, GST_MAP_READ ))
+      str = BNIL;
+   else {
+      str = string_to_bstring_len( (char *)info.data, (int)info.size );
+      gst_buffer_unmap( buf, &info );
+   }
+   return str;
+}
+
+/*---------------------------------------------------------------------*/
+/*    void                                                             */
+/*    bgl_gst_buffer_set_string ...                                    */
+/*---------------------------------------------------------------------*/
+void
+bgl_gst_buffer_set_string( GstBuffer *buf, obj_t str )
+{
+   GstMapInfo info;
+   long len = STRING_LENGTH (str);
+
+   gst_buffer_set_size( buf, (gssize)len );
+   if ( gst_buffer_map( buf, &info, GST_MAP_WRITE ))
+   {
+      memcpy( info.data, BSTRING_TO_STRING( str ), (size_t)len );
+      gst_buffer_unmap( buf, &info );
+   }
+}
+
+/*---------------------------------------------------------------------*/
 /*    static char *                                                    */
 /*    bgl_gst_message_error_parser ...                                 */
 /*---------------------------------------------------------------------*/
@@ -1130,13 +1116,7 @@ bgl_gst_message_error_string( GstMessage
 /*---------------------------------------------------------------------*/
 char *
 bgl_gst_message_info_string( GstMessage *msg ) {
-#if( BGL_GSTREAMER_HAVE_PARSE_INFO )
-   /* gstreamer is recent enought, gst_message_parse_info is bound */
    return bgl_gst_message_error_parser( msg, &gst_message_parse_info );
-#else
-   /* gstreamer is too old, return a fake info string */
-   return "no info available (gstreamer too old)";
-#endif   
 }
 
 /*---------------------------------------------------------------------*/
@@ -1219,15 +1199,11 @@ bgl_gst_message_get_src( GstMessage *msg
 /*---------------------------------------------------------------------*/
 int
 bgl_gst_message_stream_status_type( GstMessage *msg ) {
-#if( defined( GST_MESSAGE_STREAM_STATUS ) )
    GstStreamStatusType type;
    GstElement *el;
    gst_message_parse_stream_status( msg, &type, &el );
    
    return (int)type;
-#else
-   return -1;
-#endif   
 }
 
 /*---------------------------------------------------------------------*/
@@ -1267,10 +1243,9 @@ bgl_gst_element_interface_list( GstEleme
 /*---------------------------------------------------------------------*/
 BGL_LONGLONG_T
 bgl_gst_element_query_position( GstElement *el ) {
-   GstFormat format = GST_FORMAT_TIME;
    gint64 res;
    
-   if( gst_element_query_position( el, &format, &res ) )
+   if( gst_element_query_position( el, GST_FORMAT_TIME, &res ) )
       return (BGL_LONGLONG_T)res;
    else
       return (BGL_LONGLONG_T)-1;
@@ -1282,10 +1257,9 @@ bgl_gst_element_query_position( GstEleme
 /*---------------------------------------------------------------------*/
 BGL_LONGLONG_T
 bgl_gst_element_query_duration( GstElement *el ) {
-   GstFormat format = GST_FORMAT_TIME;
    gint64 res;
    
-   if( gst_element_query_duration( el, &format, &res ) ) 
+   if( gst_element_query_duration( el, GST_FORMAT_TIME, &res ) ) 
       return (BGL_LONGLONG_T)res;
    else
       return (BGL_LONGLONG_T)-1;
@@ -1349,7 +1323,7 @@ bgl_gst_structure_property_list( GstStru
 obj_t
 bgl_gst_caps_new_simple( obj_t media_type, obj_t pair, obj_t finalizer ) {
    GstCaps *caps = gst_caps_new_empty();
-   GstStructure *s = gst_structure_empty_new( BSTRING_TO_STRING( media_type ) );
+   GstStructure *s = gst_structure_new_empty( BSTRING_TO_STRING( media_type ) );
    
    while( PAIRP( pair ) ) {
       char *fid = BSTRING_TO_STRING( KEYWORD_TO_STRING( CAR( pair ) ) );
@@ -1466,27 +1440,54 @@ bgl_gst_parse_launchv( obj_t args ) {
 /*    static gboolean                                                  */
 /*    buffer_probe_call ...                                            */
 /*---------------------------------------------------------------------*/
-static gboolean
-buffer_probe_call( GstElement *el, GstBuffer *buffer, gpointer *data ) {
+static GstPadProbeReturn
+buffer_probe_call( GstPad *pad, GstPadProbeInfo *info, gpointer data ) {
    obj_t proc = (obj_t)data;
-
-   return CBOOL( PROCEDURE_ENTRY( proc )( proc,
-					  bgl_gst_buffer_new( buffer, BFALSE ),
-					  BEOA ) );
+   GstBuffer *buffer = (GstBuffer *)info->data;
+   return (CBOOL (PROCEDURE_ENTRY( proc )( proc,
+					   bgl_gst_buffer_new( buffer, BFALSE ),
+					   BEOA )))
+      ? GST_PAD_PROBE_OK
+      : GST_PAD_PROBE_DROP;
 }
    
 /*---------------------------------------------------------------------*/
 /*    int                                                              */
-/*    bgl_gst_pad_add_buffer_probe ...                                 */
+/*    bgl_gst_pad_add_probe ...                                        */
 /*---------------------------------------------------------------------*/
 int
-bgl_gst_pad_add_buffer_probe( GstPad *pad, obj_t proc ) {
+bgl_gst_pad_add_probe( GstPad *pad, GstPadProbeType mask, obj_t proc ) {
    /* protect the closure from GC reclaim */
    /* CARE: when should it be freed? */
    bgl_closure_gcmark( proc );
-   return gst_pad_add_buffer_probe( pad,
-				    G_CALLBACK( &buffer_probe_call ),
-				    (gpointer)proc );
+   return gst_pad_add_probe( pad,
+		   	     mask,
+			     buffer_probe_call,
+			     (gpointer)proc,
+		  	     NULL );
+}
+
+/*---------------------------------------------------------------------*/
+/*    gboolean                                                         */
+/*    bgl_gst_pad_set_caps ...                                         */
+/*---------------------------------------------------------------------*/
+gboolean
+bgl_gst_pad_set_caps( GstPad *pad, GstCaps *caps ) {
+   gboolean res;
+
+   if (caps != NULL && gst_caps_is_fixed (caps))
+   {
+      res = FALSE;
+   }
+   else
+   {
+      GstEvent *event = gst_event_new_caps (caps);
+      if (GST_PAD_IS_SRC (pad))
+	 res = gst_pad_push_event (pad, event);
+      else
+	 res = gst_pad_send_event (pad, event);
+   }
+   return res;
 }
 
 /*---------------------------------------------------------------------*/
@@ -1494,7 +1495,7 @@ bgl_gst_pad_add_buffer_probe( GstPad *pa
 /*    bus_sync_handler ...                                             */
 /*---------------------------------------------------------------------*/
 static GstBusSyncReply
-bus_sync_handler( GstBus *bus, GstMessage *msg, gpointer *data ) {
+bus_sync_handler( GstBus *bus, GstMessage *msg, gpointer data ) {
    obj_t proc = (obj_t)data;
    callback_t cb = g_malloc( sizeof( struct callback ) );
 
@@ -1518,6 +1519,7 @@ bgl_gst_bus_set_sync_handler( GstBus *bu
    bgl_closure_gcmark( proc );
 
    return gst_bus_set_sync_handler( bus,
-				    (GstBusSyncHandler)&bus_sync_handler,
-				    (gpointer)proc );
+				    &bus_sync_handler,
+				    (gpointer)proc,
+				    NULL );
 }
--- api/gstreamer/src/Clib/bglgst_config.h.in.orig	2019-07-04 00:09:45.000000000 -0600
+++ api/gstreamer/src/Clib/bglgst_config.h.in	2019-11-12 11:30:37.844341179 -0700
@@ -25,52 +25,4 @@
 #undef BGL_GSTREAMER_HAVE_PARSE_STREAM_STATUS
 #define BGL_GSTREAMER_HAVE_PARSE_STREAM_STATUS @GSTREAMER_HAVE_PARSE_STREAM_STATUS@
 
-/*---------------------------------------------------------------------*/
-/*    Compatiblity kit                                                 */
-/*---------------------------------------------------------------------*/
-#if( !defined( GST_VALUE_HOLDS_STRUCTURE ) )
-#  if( defined( G_VALUE_HOLDS ) && defined( GST_TYPE_STRUCTURE ) )
-#    define GST_VALUE_HOLDS_STRUCTURE( x ) \
-        (G_VALUE_HOLDS( x, GST_TYPE_STRUCTURE ))
-#  else 
-#    define GST_VALUE_HOLDS_STRUCTURE( x ) (0)
-#  endif
-#endif
-
-#if( defined( GST_MESSAGE_SRC_NAME ) )
-#  define BGL_GSTREAMER_HAVE_PARSE_INFO 1
-#else
-#  define BGL_GSTREAMER_HAVE_PARSE_INFO 0
-#  define GST_MESSAGE_ASYNC_START (GST_MESSAGE_ANY - 1)
-#  define GST_MESSAGE_ASYNC_DONE (GST_MESSAGE_ANY - 2)
-#endif
-
-#if( !defined( GST_STREAM_STATUS_TYPE_CREATE ) )
-#  define GST_STREAM_STATUS_TYPE_CREATE 1
-#endif
-
-#if( !defined( GST_STREAM_STATUS_TYPE_ENTER ) )
-#  define GST_STREAM_STATUS_TYPE_ENTER 2
-#endif
-
-#if( !defined( GST_STREAM_STATUS_TYPE_LEAVE ) )
-#  define GST_STREAM_STATUS_TYPE_LEAVE 3
-#endif
-
-#if( !defined( GST_STREAM_STATUS_TYPE_DESTROY ) )
-#  define GST_STREAM_STATUS_TYPE_DESTROY 4
-#endif
-
-#if( !defined( GST_STREAM_STATUS_TYPE_START ) )
-#  define GST_STREAM_STATUS_TYPE_START 5
-#endif
-
-#if( !defined( GST_STREAM_STATUS_TYPE_PAUSE ) )
-#  define GST_STREAM_STATUS_TYPE_PAUSE 6
-#endif
-
-#if( !defined( GST_STREAM_STATUS_TYPE_STOP ) )
-#  define GST_STREAM_STATUS_TYPE_STOP 7
-#endif
-
 #endif
--- api/gstreamer/src/Clib/bglgst.h.orig	2019-07-04 00:09:45.000000000 -0600
+++ api/gstreamer/src/Clib/bglgst.h	2019-11-13 10:19:00.334554173 -0700
@@ -73,10 +73,11 @@ extern obj_t bgl_gst_element_factory_get
 
 extern obj_t bgl_gst_caps_new_simple( obj_t, obj_t, obj_t );
 
+extern obj_t bgl_gst_buffer_get_string( GstBuffer * );
+extern void bgl_gst_buffer_set_string( GstBuffer *, obj_t );
 
-extern int bgl_gst_pad_add_buffer_probe( GstPad *, obj_t );
-/* extern obj_t bgl_gst_pad_add_data_probe( GstPad *, obj_t );         */
-/* extern obj_t bgl_gst_pad_add_event_probe( GstPad *, obj_t );        */
+extern int bgl_gst_pad_add_probe( GstPad *, GstPadProbeType, obj_t );
+extern gboolean bgl_gst_pad_set_caps( GstPad *pad, GstCaps *caps );
 
 extern obj_t bgl_gst_message_tag_list( GstMessage * );
 extern char *bgl_gst_message_error_string( GstMessage * );
@@ -86,6 +87,7 @@ extern GstState bgl_gst_message_new_stat
 extern GstState bgl_gst_message_old_state( GstMessage * );
 extern GstState bgl_gst_message_pending_state( GstMessage * );
 extern obj_t bgl_gst_message_get_src( GstMessage * );
+extern int bgl_gst_message_stream_status_type( GstMessage * );
 
 extern obj_t bgl_gst_object_property_list( GstObject * );
 extern obj_t bgl_gst_object_get_property( GstObject *, char * );
--- api/gstreamer/src/Clib/bglgst_thread.c.orig	2019-07-04 00:09:45.000000000 -0600
+++ api/gstreamer/src/Clib/bglgst_thread.c	2019-11-13 12:44:34.941223903 -0700
@@ -14,6 +14,7 @@
 #endif
 #include <gst/gst.h>
 #include <string.h>
+#include <unistd.h>
 #include "bglgst_config.h"
 #include <pthread.h>
 #if( defined( BGL_GSTREAMER_USE_THREADS ) )
@@ -32,179 +33,30 @@ extern obj_t bglpth_thread_thunk();
 void *bglpth_thread_new();
 
 /*---------------------------------------------------------------------*/
-/*    static GMutex *                                                  */
-/*    bglgst_mutex_new ...                                             */
-/*---------------------------------------------------------------------*/
-static GMutex *
-bglgst_mutex_new() {
-   GMutex *result = (GMutex *)g_new( pthread_mutex_t, 1 );
-   pthread_mutex_init( (pthread_mutex_t *)result, 0L );
-   
-   return result;
-}
-
-/*---------------------------------------------------------------------*/
-/*    int                                                              */
-/*    bglgst_mutex_lock ...                                            */
-/*---------------------------------------------------------------------*/
-static int
-bglgst_mutex_lock( pthread_mutex_t *mutex ) {
-   return pthread_mutex_lock( mutex );
-}
-
-/*---------------------------------------------------------------------*/
-/*    static gboolean                                                  */
-/*    bglgst_mutex_trylock ...                                         */
-/*---------------------------------------------------------------------*/
-static gboolean
-bglgst_mutex_trylock( GMutex *mutex ) {
-  int result = pthread_mutex_trylock( (pthread_mutex_t *)mutex );
-
-  if (result == EBUSY)
-    return FALSE;
-
-  return TRUE;
-}
-   
-/*---------------------------------------------------------------------*/
-/*    int                                                              */
-/*    bglgst_mutex_unlock ...                                          */
-/*---------------------------------------------------------------------*/
-static int
-bglgst_mutex_unlock( pthread_mutex_t *mutex ) {
-   return pthread_mutex_unlock( mutex );
-}
-
-/*---------------------------------------------------------------------*/
-/*    static void                                                      */
-/*    bglgst_mutex_free ...                                            */
-/*---------------------------------------------------------------------*/
-static void
-bglgst_mutex_free( GMutex *mutex ) {
-   pthread_mutex_destroy( (pthread_mutex_t *)mutex );
-   g_free( mutex );
-}
-
-
-/*---------------------------------------------------------------------*/
-/*    static GCond *                                                   */
-/*    bglgst_cond_new ...                                              */
-/*---------------------------------------------------------------------*/
-static GCond *
-bglgst_cond_new() {
-   GCond *result = (GCond *)g_new( pthread_cond_t, 1 );
-   pthread_cond_init( (pthread_cond_t *)result, 0L );
-   
-   return result;
-}
-
-/*---------------------------------------------------------------------*/
-/*    static int                                                       */
-/*    bglgst_pthread_cond_signal ...                                   */
-/*---------------------------------------------------------------------*/
-static int
-bglgst_pthread_cond_signal( pthread_cond_t *cond ) {
-   return pthread_cond_signal( cond );
-}
-
-/*---------------------------------------------------------------------*/
-/*    static int                                                       */
-/*    bglgst_pthread_cond_broadcast ...                                */
-/*---------------------------------------------------------------------*/
-static int
-bglgst_pthread_cond_broadcast( pthread_cond_t *cond ) {
-   return pthread_cond_broadcast( cond );
-}
-
-/*---------------------------------------------------------------------*/
-/*    static int                                                       */
-/*    bglgst_pthread_cond_wait ...                                     */
-/*---------------------------------------------------------------------*/
-static int
-bglgst_pthread_cond_wait( pthread_cond_t *cond, pthread_mutex_t *mutex ) {
-   return pthread_cond_wait( cond, mutex );
-}
-
-/*---------------------------------------------------------------------*/
-/*    static gboolean                                                  */
-/*    bglgst_cond_timed_wait ...                                       */
-/*---------------------------------------------------------------------*/
-static gboolean
-bglgst_cond_timed_wait( GCond *cond,
-			GMutex *entered_mutex,
-			GTimeVal *abs_time ) {
-#define G_NSEC_PER_SEC 1000000000
-   int result;
-   struct timespec end_time;
-   gboolean timed_out;
-
-   g_return_val_if_fail( cond != NULL, FALSE );
-   g_return_val_if_fail( entered_mutex != NULL, FALSE );
-
-   if( !abs_time ) {
-      result = pthread_cond_wait( (pthread_cond_t *)cond,
-                                  (pthread_mutex_t *)entered_mutex );
-      timed_out = FALSE;
-   } else {
-      end_time.tv_sec = abs_time->tv_sec;
-      end_time.tv_nsec = abs_time->tv_usec * (G_NSEC_PER_SEC / G_USEC_PER_SEC);
-
-      g_return_val_if_fail( end_time.tv_nsec < G_NSEC_PER_SEC, TRUE );
-
-      result = pthread_cond_timedwait( (pthread_cond_t *) cond,
-				       (pthread_mutex_t *) entered_mutex,
-				       &end_time );
-      timed_out = (result == ETIMEDOUT);
-   }
-  
-   return !timed_out;
-}
-
-/*---------------------------------------------------------------------*/
-/*    static void                                                      */
-/*    bglgst_cond_free ...                                             */
-/*---------------------------------------------------------------------*/
-static void
-bglgst_cond_free( GCond *cond ) {
-   pthread_cond_destroy( (pthread_cond_t *)cond );
-   g_free( cond );
-}
-
-/*---------------------------------------------------------------------*/
-/*    static GPrivate *                                                */
-/*    bglgst_private_new ...                                           */
+/*    GRealThread                                                      */
 /*---------------------------------------------------------------------*/
-static GPrivate *
-bglgst_private_new( GDestroyNotify destructor ) {
-  GPrivate *result = (GPrivate *)g_new( pthread_key_t, 1 );
-  pthread_key_create( (pthread_key_t *) result, destructor );
+typedef struct _GRealThread GRealThread;
+struct  _GRealThread
+{
+  GThread thread;
 
-  return result;
-}
+  gint ref_count;
+  gboolean ours;
+  gchar *name;
+  gpointer retval;
+};
 
 /*---------------------------------------------------------------------*/
-/*    static void                                                      */
-/*    bglgst_private_set ...                                           */
+/*    GThreadPosix                                                     */
 /*---------------------------------------------------------------------*/
-static void
-bglgst_private_set( GPrivate *private_key, gpointer value ) {
-   if( !private_key )
-      return;
-   
-   pthread_setspecific( *(pthread_key_t *)private_key, value );
-}
+typedef struct
+{
+  GRealThread thread;
 
-/*---------------------------------------------------------------------*/
-/*    static gpointer                                                  */
-/*    bglgst_private_get ...                                           */
-/*---------------------------------------------------------------------*/
-static gpointer
-bglgst_private_get( GPrivate *private_key ) {
-   if( !private_key )
-      return NULL;
-   
-   return (gpointer)pthread_getspecific( *(pthread_key_t *)private_key );
-}
+  pthread_t system_thread;
+  gboolean  joined;
+  GMutex    lock;
+} GThreadPosix;
 
 /*---------------------------------------------------------------------*/
 /*    static void *                                                    */
@@ -230,144 +82,62 @@ bglgst_thread_run( void *self ) {
 }
 		      
 /*---------------------------------------------------------------------*/
-/*    static void                                                      */
-/*    bglgst_thread_create ...                                         */
+/*    GRealThread *                                                    */
+/*    g_system_thread_new ...                                          */
 /*---------------------------------------------------------------------*/
-static void
-bglgst_thread_create( GThreadFunc thread_func,
-		      gpointer arg,
-		      gulong stack_size,
-		      gboolean joinable,
-		      gboolean bound,
-		      GThreadPriority priority,
-		      gpointer thread,
-		      GError **error ) {
-  pthread_attr_t attr;
-  gint ret;
-  void *self = bglpth_thread_new( MAKE_PAIR( (obj_t)thread_func, (obj_t)arg ) );
-
-  bglpth_thread_env_create( self, BFALSE );
-
-  g_return_if_fail( thread_func );
-  g_return_if_fail( priority >= G_THREAD_PRIORITY_LOW );
-  g_return_if_fail( priority <= G_THREAD_PRIORITY_URGENT );
-
-  pthread_attr_init( &attr );
-
-  if( stack_size ) {
-     /* No error check here, because some systems can't do it and
-      * we simply don't want threads to fail because of that. */
-     pthread_attr_setstacksize( &attr, stack_size );
-  }
-
-  if( bound )
-    /* No error check here, because some systems can't do it and we
-     * simply don't want threads to fail because of that. */
-    pthread_attr_setscope( &attr, PTHREAD_SCOPE_SYSTEM );
-
-  pthread_attr_setdetachstate( &attr,
-			       joinable ?
-			       PTHREAD_CREATE_JOINABLE
-			       : PTHREAD_CREATE_DETACHED );
-
-  ret = pthread_create( thread, &attr, bglgst_thread_run, self );
-
-  pthread_attr_destroy( &attr );
-
-  if( ret == EAGAIN ) {
-     g_set_error (error, G_THREAD_ERROR, G_THREAD_ERROR_AGAIN, 
-		  "Error creating thread: %s", g_strerror( ret ) );
-      return;
-  }
-
-  return;
-}
+GRealThread *
+g_system_thread_new (GThreadFunc   proxy,
+		     gulong        stack_size,
+		     const char   *name,
+		     GThreadFunc   func,
+		     gpointer      data,
+		     GError      **error)
+{
+   void *self;
+   GThreadPosix *thread;
+   GRealThread *base_thread;
+   pthread_attr_t attr;
+   gint ret;
 
-/*---------------------------------------------------------------------*/
-/*    static void                                                      */
-/*    bglgst_thread_yield ...                                          */
-/*---------------------------------------------------------------------*/
-static void
-bglgst_thread_yield() {
-   sched_yield();
-}
+   thread = g_slice_new0( GThreadPosix );
+   base_thread = (GRealThread*)thread;
+   base_thread->ref_count = 2;
+   base_thread->ours = TRUE;
+   base_thread->thread.joinable = TRUE;
+   base_thread->thread.func = func;
+   base_thread->thread.data = data;
+   base_thread->name = g_strdup( name );
 
-/*---------------------------------------------------------------------*/
-/*    static void                                                      */
-/*    bglgst_thread_join ...                                           */
-/*---------------------------------------------------------------------*/
-static void
-bglgst_thread_join( gpointer thread ) {
-   gpointer ignore;
-   pthread_join( *(pthread_t*)thread, &ignore );
-}
+   pthread_attr_init( &attr );
 
-/*---------------------------------------------------------------------*/
-/*    static void                                                      */
-/*    bglgst_thread_exit ...                                           */
-/*---------------------------------------------------------------------*/
-static void
-bglgst_thread_exit() {
-  pthread_exit( NULL );
-}
+#ifdef HAVE_PTHREAD_ATTR_SETSTACKSIZE
+   if ( stack_size ) {
+#ifdef _SC_THREAD_STACK_MIN
+      long min_stack_size = sysconf( _SC_THREAD_STACK_MIN );
+      if ( min_stack_size >= 0 )
+         stack_size = MAX( (gulong) min_stack_size, stack_size );
+#endif /* _SC_THREAD_STACK_MIN */
+      /* No error check here, because some systems can't do it and
+       * we simply don't want threads to fail because of that. */
+      pthread_attr_setstacksize( &attr, stack_size );
+   }
+#endif /* HAVE_PTHREAD_ATTR_SETSTACKSIZE */
 
+   self = bglpth_thread_new( MAKE_PAIR( (obj_t)proxy, (obj_t)thread ) );
+   bglpth_thread_env_create( self, BFALSE );
 
-/*---------------------------------------------------------------------*/
-/*    static void                                                      */
-/*    bglgst_thread_set_priority ...                                   */
-/*---------------------------------------------------------------------*/
-static void
-bglgst_thread_set_priority( gpointer thread, GThreadPriority priority ) {
-   return;
-}
+   ret = pthread_create( &thread->system_thread, &attr, bglgst_thread_run, self );
 
-/*---------------------------------------------------------------------*/
-/*    static void                                                      */
-/*    bglgst_thread_self ...                                           */
-/*---------------------------------------------------------------------*/
-static void
-bglgst_thread_self( gpointer thread ) {
-   *(pthread_t *)thread = pthread_self();
-}
+   pthread_attr_destroy( &attr );
 
-/*---------------------------------------------------------------------*/
-/*    static gboolean                                                  */
-/*    bglgst_thread_equal ...                                          */
-/*---------------------------------------------------------------------*/
-static gboolean
-bglgst_thread_equal( gpointer thread1, gpointer thread2 ) {
-  return (pthread_equal( *(pthread_t *)thread1, *(pthread_t *)thread2 ) != 0);
-}
+   if ( ret == EAGAIN ) {
+      g_set_error( error, G_THREAD_ERROR, G_THREAD_ERROR_AGAIN,
+		   "Error creating thread: %s", g_strerror( ret ));
+      g_slice_free( GThreadPosix, thread );
+      return NULL;
+   }
 
-/*---------------------------------------------------------------------*/
-/*    void                                                             */
-/*    bglgst_thread_init ...                                           */
-/*---------------------------------------------------------------------*/
-void
-bglgst_thread_init() {
-   static GThreadFunctions g_thread_functions_for_bigloo = {
-      &bglgst_mutex_new,
-      (void (*)(GMutex *))&bglgst_mutex_lock,
-      &bglgst_mutex_trylock,
-      (void (*)(GMutex *))&bglgst_mutex_unlock,
-      &bglgst_mutex_free,
-      &bglgst_cond_new,
-      (void (*)(GCond *))&bglgst_pthread_cond_signal,
-      (void (*)(GCond *))&bglgst_pthread_cond_broadcast,
-      (void (*)(GCond *, GMutex *))&bglgst_pthread_cond_wait,
-      &bglgst_cond_timed_wait,
-      &bglgst_cond_free,
-      &bglgst_private_new,
-      &bglgst_private_get,
-      &bglgst_private_set,
-      &bglgst_thread_create,
-      &bglgst_thread_yield,
-      &bglgst_thread_join,
-      &bglgst_thread_exit,
-      &bglgst_thread_set_priority,
-      &bglgst_thread_self,
-      &bglgst_thread_equal
-   };
+   g_mutex_init( &thread->lock );
 
-   g_thread_init( &g_thread_functions_for_bigloo );
+   return (GRealThread *)thread;
 }
--- api/gstreamer/src/Llib/gstbin.scm.orig	2019-07-04 00:09:45.000000000 -0600
+++ api/gstreamer/src/Llib/gstbin.scm	2019-11-20 12:18:11.408326233 -0700
@@ -16,15 +16,16 @@
 
    (include "gst.sch")
    
-   (import  __gstreamer_gsterror
+   (use	    __gstreamer_gsterror
 	    __gstreamer_gstobject
 	    __gstreamer_gstelementfactory
 	    __gstreamer_gstpluginfeature
 	    __gstreamer_gstelement
-	    __gstreamer_gstpad
 	    __gstreamer_gstcaps
 	    __gstreamer_gststructure)
 
+   (import  __gstreamer_gstpad)
+
    (export  (class gst-bin::gst-element
 	       (elements::pair-nil (default '())))
 
--- api/gstreamer/src/Llib/gstbuffer.scm.orig	2019-07-04 00:09:45.000000000 -0600
+++ api/gstreamer/src/Llib/gstbuffer.scm	2019-11-20 12:01:24.043057769 -0700
@@ -16,10 +16,9 @@
    
    (include "gst.sch")
    
-   (import  __gstreamer_gsterror
-	    __gstreamer_gstobject
-	    __gstreamer_gststructure
-	    __gstreamer_gstcaps)
+   (use	    __gstreamer_gsterror)
+
+   (import  __gstreamer_gststructure)
 
    (extern  (macro $string-to-bstring-len::bstring
 	       (::string ::long) "string_to_bstring_len")
@@ -33,25 +32,30 @@
 		read-only
 		(get (lambda (o)
 			(with-access::gst-buffer o ($builtin)
-			   ($gst-buffer-size $builtin)))))
+			   ($gst-buffer-get-size $builtin)))))
 	       (data::string
 		(get (lambda (o)
 			(with-access::gst-buffer o ($builtin)
-			   ($gst-buffer-data $builtin))))
+			   ($gst-buffer-get-string $builtin))))
 		(set (lambda (o v)
 			(with-access::gst-buffer o ($builtin)
-			   ($gst-buffer-set-data! $builtin v (string-length v)))
+			   ($gst-buffer-set-string! $builtin v))
 			o)))
-	       (caps::gst-caps
+	       (dts::llong
 		read-only
 		(get (lambda (o)
 			(with-access::gst-buffer o ($builtin)
-			   ($make-gst-caps ($gst-buffer-caps $builtin) #f)))))
+			   ($gst-buffer-dts $builtin)))))
+	       (pts::llong
+		read-only
+		(get (lambda (o)
+			(with-access::gst-buffer o ($builtin)
+			   ($gst-buffer-pts $builtin)))))
 	       (timestamp::llong
 		read-only
 		(get (lambda (o)
 			(with-access::gst-buffer o ($builtin)
-			   ($gst-buffer-timestamp $builtin)))))
+			   ($gst-buffer-dts-or-pts $builtin)))))
 	       (duration::llong
 		read-only
 		(get (lambda (o)
@@ -74,7 +78,7 @@
 ;*---------------------------------------------------------------------*/
 (define (%gst-buffer-init o::gst-buffer)
    (with-access::gst-buffer o ($builtin $finalizer)
-      (when ($gst-element-null? $builtin)
+      (when ($gst-buffer-null? $builtin)
 	 (raise (instantiate::&gst-create-error
 		   (proc '%gst-buffer-init)
 		   (msg "Illegal gst-buffer")
--- api/gstreamer/src/Llib/gstbus.scm.orig	2019-07-04 00:09:45.000000000 -0600
+++ api/gstreamer/src/Llib/gstbus.scm	2019-11-20 12:03:24.345964429 -0700
@@ -16,10 +16,10 @@
    
    (include "gst.sch")
    
-   (import  __gstreamer_gstreamer
-	    __gstreamer_gstobject
-	    __gstreamer_gstmessage
+   (use	    __gstreamer_gstobject
 	    __gstreamer_gststructure)
+
+   (import  __gstreamer_gstmessage)
    
    (export  (class gst-bus::gst-object)
 
@@ -60,8 +60,8 @@
 (define (gst-bus-post o::gst-bus msg::gst-message)
    (with-access::gst-message msg ((mbuiltin $builtin))
       (with-access::gst-bus o ((obuiltin $builtin))
-	 ($gst-message-ref! ($gst-message mbuiltin))
-	 ($gst-bus-post ($gst-bus obuiltin) ($gst-message mbuiltin)))))
+	 ($gst-message-ref! mbuiltin)
+	 ($gst-bus-post ($gst-bus obuiltin) mbuiltin))))
 
 ;*---------------------------------------------------------------------*/
 ;*    gst-bus-peek ...                                                 */
--- api/gstreamer/src/Llib/gstcaps.scm.orig	2019-07-04 00:09:45.000000000 -0600
+++ api/gstreamer/src/Llib/gstcaps.scm	2019-11-20 12:01:59.930433303 -0700
@@ -16,9 +16,9 @@
    
    (include "gst.sch")
    
-   (import  __gstreamer_gsterror
-	    __gstreamer_gstobject
-	    __gstreamer_gststructure)
+   (use	    __gstreamer_gsterror)
+
+   (import  __gstreamer_gststructure)
    
    (export  (class gst-caps
 	       (%gst-caps-init)
@@ -107,7 +107,7 @@
 	 ((not (keyword? (car a)))
 	  (bigloo-type-error 'gst-caps-new-simple 'keyword (car a)))
 	 ((null? (cdr a))
-	  (error 'gst-caps-new-simple "Miising value for attribute" (car a)))
+	  (error 'gst-caps-new-simple "Missing value for attribute" (car a)))
 	 (else
 	  (loop (cddr a))))))
 ;
@@ -142,8 +142,7 @@
 (define (gst-caps-merge! caps1 caps2)
    (with-access::gst-caps caps1 ((builtin1 $builtin))
       (with-access::gst-caps caps2 ((builtin2 $builtin))
-	 ($gst-caps-merge builtin1 builtin2)))
-   caps1)
+	 ($make-gst-caps ($gst-caps-merge builtin1 builtin2) #t))))
 
 ;*---------------------------------------------------------------------*/
 ;*    gst-caps-append-structure! ...                                   */
@@ -160,8 +159,7 @@
 (define (gst-caps-merge-structure! caps1 s)
    (with-access::gst-caps caps1 ((builtin1 $builtin))
       (with-access::gst-structure s ((builtin2 $builtin))
-	 ($gst-caps-merge-structure builtin1 builtin2)))
-   caps1)
+	 ($make-gst-caps ($gst-caps-merge-structure builtin1 builtin2) #t))))
 
 ;*---------------------------------------------------------------------*/
 ;*    gst-caps-remove-structure! ...                                   */
--- api/gstreamer/src/Llib/gstelementfactory.scm.orig	2019-07-04 00:09:45.000000000 -0600
+++ api/gstreamer/src/Llib/gstelementfactory.scm	2019-11-20 12:14:49.369942305 -0700
@@ -16,43 +16,44 @@
    
    (include "gst.sch")
    
-   (import  __gstreamer_gsterror
+   (use	    __gstreamer_gsterror
 	    __gstreamer_gstobject
-	    __gstreamer_gstpluginfeature
-	    __gstreamer_gstelement
-	    __gstreamer_gstpad
 	    __gstreamer_gstcaps
 	    __gstreamer_gststructure)
+
+   (import  __gstreamer_gstpluginfeature
+	    __gstreamer_gstelement
+	    __gstreamer_gstpad)
    
    (export  (class gst-element-factory::gst-plugin-feature
 	       (longname::string
 		  read-only
 		  (get (lambda (o)
 			  (with-access::gst-element-factory o ($builtin)
-			     ($gst-element-factory-get-longname
-				($gst-element-factory
-				   $builtin))))))
+			     ($gst-element-factory-get-metadata
+				($gst-element-factory $builtin)
+				$gst-element-metadata-long-name)))))
 	       (klass::string
 		  read-only
 		  (get (lambda (o)
 			  (with-access::gst-element-factory o ($builtin)
-			     ($gst-element-factory-get-klass
-				($gst-element-factory
-				   $builtin))))))
+			     ($gst-element-factory-get-metadata
+				($gst-element-factory $builtin)
+				$gst-element-metadata-klass)))))
 	       (description::string
 		  read-only
 		  (get (lambda (o)
 			  (with-access::gst-element-factory o ($builtin)
-			     ($gst-element-factory-get-description
-				($gst-element-factory
-				   $builtin))))))
+			     ($gst-element-factory-get-metadata
+				($gst-element-factory $builtin)
+				$gst-element-metadata-description)))))
 	       (author::string
 		  read-only
 		  (get (lambda (o)
 			  (with-access::gst-element-factory o ($builtin)
-			     ($gst-element-factory-get-author
-				($gst-element-factory
-				   $builtin))))))
+			     ($gst-element-factory-get-metadata
+				($gst-element-factory $builtin)
+				$gst-element-metadata-author)))))
 	       (uri-protocols::pair-nil
 		  read-only
 		  (get (lambda (o)
@@ -74,8 +75,8 @@
 	    (gst-element-factory-create::gst-element ::gst-element-factory . a)
 	    (gst-element-factory-find::obj ::bstring)
 	    (gst-element-factory-has-interface?::bool ::gst-element-factory ::bstring)
-	    (gst-element-factory-can-sink-caps?::bool ::gst-element-factory ::gst-caps)
-	    (gst-element-factory-can-src-caps?::bool ::gst-element-factory ::gst-caps))
+	    (gst-element-factory-can-sink-all-caps?::bool ::gst-element-factory ::gst-caps)
+	    (gst-element-factory-can-src-all-caps?::bool ::gst-element-factory ::gst-caps))
    
    (extern  (export $make-gst-element-factory "bgl_gst_element_factory_new")))
 
@@ -175,21 +176,21 @@
 	 name)))
 
 ;*---------------------------------------------------------------------*/
-;*    gst-element-factory-can-sink-caps? ...                           */
+;*    gst-element-factory-can-sink-all-caps? ...                       */
 ;*---------------------------------------------------------------------*/
-(define (gst-element-factory-can-sink-caps? factory caps)
+(define (gst-element-factory-can-sink-all-caps? factory caps)
    (with-access::gst-element-factory factory ($builtin)
       (with-access::gst-caps caps ((caps-builtin $builtin))
-	 ($gst-element-factory-can-sink-caps?
+	 ($gst-element-factory-can-sink-all-caps?
 	    ($gst-element-factory $builtin)
 	    caps-builtin))))
 
 ;*---------------------------------------------------------------------*/
-;*    gst-element-factory-can-src-caps? ...                            */
+;*    gst-element-factory-can-src-all-caps? ...                        */
 ;*---------------------------------------------------------------------*/
-(define (gst-element-factory-can-src-caps? factory caps)
+(define (gst-element-factory-can-src-all-caps? factory caps)
    (with-access::gst-element-factory factory ($builtin)
       (with-access::gst-caps caps ((caps-builtin $builtin))
-	 ($gst-element-factory-can-src-caps?
+	 ($gst-element-factory-can-src-all-caps?
 	    ($gst-element-factory $builtin)
 	    caps-builtin))))
--- api/gstreamer/src/Llib/gstelement.scm.orig	2019-07-04 00:09:45.000000000 -0600
+++ api/gstreamer/src/Llib/gstelement.scm	2019-11-20 12:13:39.875186110 -0700
@@ -16,12 +16,13 @@
 
    (include "gst.sch")
 
-   (import  __gstreamer_gsterror
+   (use	    __gstreamer_gsterror
 	    __gstreamer_gstobject
-	    __gstreamer_gstpluginfeature
 	    __gstreamer_gststructure
+	    __gstreamer_gstcaps)
+
+   (import  __gstreamer_gstpluginfeature
 	    __gstreamer_gstelementfactory
-	    __gstreamer_gstcaps
 	    __gstreamer_gstpad
 	    __gstreamer_gstreamer)
 
@@ -162,7 +163,7 @@
 	 (with-access::gst-caps caps ((caps-builtin $builtin))
 	    (unless ($gst-element-link-filtered! ($gst-element e0-builtin)
 		       ($gst-element e1-builtin)
-		       ($gst-caps caps-builtin))
+		       caps-builtin)
 	       (raise (instantiate::&gst-error
 			 (proc 'gst-element-link-filtered!)
 			 (msg "Element cannot be linked")
--- api/gstreamer/src/Llib/gstghostpad.scm.orig	2019-07-04 00:09:45.000000000 -0600
+++ api/gstreamer/src/Llib/gstghostpad.scm	2019-11-20 12:19:36.358805789 -0700
@@ -16,11 +16,12 @@
 
    (include "gst.sch")
    
-   (import  __gstreamer_gsterror
+   (use	    __gstreamer_gsterror
 	    __gstreamer_gstobject
 	    __gstreamer_gstcaps
-	    __gstreamer_gststructure
-	    __gstreamer_gstpad)
+	    __gstreamer_gststructure)
+
+   (import  __gstreamer_gstpad)
 	    
    (export  (class gst-ghost-pad::gst-pad
 	       (target::gst-pad
--- api/gstreamer/src/Llib/gstmessage.scm.orig	2019-07-04 00:09:45.000000000 -0600
+++ api/gstreamer/src/Llib/gstmessage.scm	2019-11-20 12:02:34.400833496 -0700
@@ -16,8 +16,9 @@
    
    (include "gst.sch")
    
-   (import  __gstreamer_gsterror
-	    __gstreamer_gstobject
+   (use	    __gstreamer_gsterror)
+
+   (import  __gstreamer_gstobject
 	    __gstreamer_gststructure)
 
    (export  (class gst-message
@@ -371,7 +372,9 @@
 ;*---------------------------------------------------------------------*/
 (define (gst-message-new-async-done src::gst-object)
    (with-access::gst-object src ($builtin)
-      ($make-gst-message ($gst-message-new-async-done $builtin) #t)))
+      ($make-gst-message
+	 ($gst-message-new-async-done $builtin $gst-clock-time-none) 
+	 #t)))
 
 ;*---------------------------------------------------------------------*/
 ;*    gst-message-new-latency ...                                      */
--- api/gstreamer/src/Llib/gstmm_music.scm.orig	2019-07-04 00:09:45.000000000 -0600
+++ api/gstreamer/src/Llib/gstmm_music.scm	2019-11-20 12:23:24.003731379 -0700
@@ -19,10 +19,9 @@
    
    (include "gst.sch")
    
-   (import  __gstreamer_gstreamer
+   (use	    __gstreamer_gstreamer
 	    __gstreamer_gstobject
 	    __gstreamer_gstelement
-	    __gstreamer_gstregistry
 	    __gstreamer_gstelementfactory
 	    __gstreamer_gstpluginfeature
 	    __gstreamer_gstpad
@@ -30,9 +29,10 @@
 	    __gstreamer_gstbin
 	    __gstreamer_gstcaps
 	    __gstreamer_gststructure
-	    __gstreamer_gstpipeline
-	    __gstreamer_gstelement
 	    __gstreamer_gstmessage)
+
+   (import  __gstreamer_gstregistry
+	    __gstreamer_gstpipeline)
    
    (export  (class gstmusic::music
 	       
--- api/gstreamer/src/Llib/gstpad.scm.orig	2019-07-04 00:09:45.000000000 -0600
+++ api/gstreamer/src/Llib/gstpad.scm	2019-11-20 12:15:32.902163164 -0700
@@ -16,11 +16,12 @@
 
    (include "gst.sch")
    
-   (import  __gstreamer_gsterror
+   (use	    __gstreamer_gsterror
 	    __gstreamer_gstobject
 	    __gstreamer_gstcaps
-	    __gstreamer_gststructure
-	    __gstreamer_gstelement
+	    __gstreamer_gststructure)
+
+   (import  __gstreamer_gstelement
 	    __gstreamer_gstelementfactory
 	    __gstreamer_gstpluginfeature)
 
@@ -51,7 +52,9 @@
 		  (get (lambda (o)
 			  (with-access::gst-pad o ($builtin)
 			     ($make-gst-caps
-				($gst-pad-get-caps ($gst-pad $builtin))
+				($gst-pad-query-caps
+				   ($gst-pad $builtin)
+				   ($gst-caps-nil))
 				#t))))
 		  (set (lambda (o v)
 			  (with-access::gst-pad o ($builtin)
@@ -66,11 +69,11 @@
 					 ($gst-pad $builtin))))
 				(unless ($gst-caps-null? c)
 				   ($make-gst-caps c #t)))))))
-	       (negotiated-caps
+	       (current-caps
 		  read-only
 		  (get (lambda (o)
 			  (with-access::gst-pad o ($builtin)
-			     (let ((c ($gst-pad-get-negotiated-caps
+			     (let ((c ($gst-pad-get-current-caps
 					 ($gst-pad $builtin))))
 				(unless ($gst-caps-null? c)
 				   ($make-gst-caps c #t)))))))
@@ -81,7 +84,6 @@
 			     (let ((c ($gst-pad-get-pad-template-caps
 					 ($gst-pad $builtin))))
 				(unless ($gst-caps-null? c)
-				   ($gst-caps-ref! c)
 				   ($make-gst-caps c #t))))))))
 
 	    ($make-gst-pad::obj ::$gst-pad ::obj)
@@ -90,12 +92,8 @@
 	    (gst-pad-can-link?::bool ::gst-pad ::gst-pad)
 	    (gst-pad-is-linked?::bool ::gst-pad)
 	    (gst-pad-unlink! ::gst-pad ::gst-pad)
-	    (gst-pad-add-buffer-probe!::int ::gst-pad ::procedure)
-;* 	    (gst-pad-add-data-probe!::int ::gst-pad ::procedure)       */
-;* 	    (gst-pad-add-event-probe!::int ::gst-pad ::procedure)      */
-	    (gst-pad-remove-buffer-probe! ::gst-pad ::int)
-;* 	    (gst-pad-remove-data-probe! ::gst-pad ::int)               */
-;* 	    (gst-pad-remove-event-probe! ::gst-pad ::int)              */
+	    (gst-pad-add-probe!::int ::gst-pad ::$gst-pad-probe-type ::procedure)
+	    (gst-pad-remove-probe! ::gst-pad ::int)
 
 	    ($gst-pad-direction->obj::obj link::$gst-pad-direction)
 	    ($gst-pad-presence->obj::obj link::$gst-pad-presence))
@@ -200,47 +198,18 @@
 	 ($gst-pad-unlink! ($gst-pad src-builtin) ($gst-pad sink-builtin)))))
 
 ;*---------------------------------------------------------------------*/
-;*    gst-pad-add-buffer-probe! ...                                    */
+;*    gst-pad-add-probe! ...                                           */
 ;*---------------------------------------------------------------------*/
-(define (gst-pad-add-buffer-probe! pad proc)
+(define (gst-pad-add-probe! pad mask proc)
    (with-access::gst-pad pad ($builtin)
       (if (correct-arity? proc 0)
-	  ($gst-pad-add-buffer-probe! ($gst-pad $builtin) proc)
-	  (error 'gst-pad-add-buffer-probe! "Arity 0 procedure expected" proc))))
-
-;* {*---------------------------------------------------------------------*} */
-;* {*    gst-pad-add-data-probe! ...                                      *} */
-;* {*---------------------------------------------------------------------*} */
-;* (define (gst-pad-add-data-probe! pad proc)                          */
-;*    (if (not (correct-arity? proc) 0)                                */
-;*        (error 'gst-pad-add-data-probe! "Arity 0 procedure expected" proc) */
-;*        ($gst-pad-add-data-probe! ($gst-pad (gst-pad-$builtin src)) proc))) */
-;*                                                                     */
-;* {*---------------------------------------------------------------------*} */
-;* {*    gst-pad-add-event-probe! ...                                     *} */
-;* {*---------------------------------------------------------------------*} */
-;* (define (gst-pad-add-event-probe! pad proc)                         */
-;*    (if (not (correct-arity? proc) 0)                                */
-;*        (error 'gst-pad-add-event-probe! "Arity 0 procedure expected" proc) */
-;*        ($gst-pad-add-event-probe! ($gst-pad (gst-pad-$builtin src)) proc))) */
+	  ($gst-pad-add-probe! ($gst-pad $builtin) mask proc)
+	  (error 'gst-pad-add-probe! "Arity 0 procedure expected" proc))))
 
 ;*---------------------------------------------------------------------*/
-;*    gst-pad-remove-buffer-probe! ...                                 */
+;*    gst-pad-remove-probe! ...                                        */
 ;*---------------------------------------------------------------------*/
-(define (gst-pad-remove-buffer-probe! pad index)
+(define (gst-pad-remove-probe! pad index)
    (with-access::gst-pad pad ($builtin)
-      ($gst-pad-remove-buffer-probe! ($gst-pad $builtin) index))
+      ($gst-pad-remove-probe! ($gst-pad $builtin) index))
    index)
-
-;* {*---------------------------------------------------------------------*} */
-;* {*    gst-pad-remove-data-probe! ...                                   *} */
-;* {*---------------------------------------------------------------------*} */
-;* (define (gst-pad-remove-data-probe! pad index)                      */
-;*    ($gst-pad-remove-data-probe! ($gst-pad (gst-pad-$builtin src)) index))) */
-;*                                                                     */
-;* {*---------------------------------------------------------------------*} */
-;* {*    gst-pad-remove-event-probe! ...                                  *} */
-;* {*---------------------------------------------------------------------*} */
-;* (define (gst-pad-remove-event-probe! pad index)                     */
-;*    ($gst-pad-remove-event-probe! ($gst-pad (gst-pad-$builtin src)) index))) */
-
--- api/gstreamer/src/Llib/gstpadtemplate.scm.orig	2019-07-04 00:09:45.000000000 -0600
+++ api/gstreamer/src/Llib/gstpadtemplate.scm	2019-11-20 12:20:13.134147576 -0700
@@ -14,12 +14,12 @@
 ;*---------------------------------------------------------------------*/
 (module __gstreamer_gstpadtemplate
    
-   (import  __gstreamer_gsterror
+   (use	    __gstreamer_gsterror
 	    __gstreamer_gstobject
-	    __gstreamer_gstghostpad
-	    __gstreamer_gstpad
 	    __gstreamer_gstcaps
 	    __gstreamer_gststructure)
+
+   (import  __gstreamer_gstpad)
    
    (export  (class gst-pad-template::gst-object)
 	    
--- api/gstreamer/src/Llib/gstparse.scm.orig	2019-07-04 00:09:45.000000000 -0600
+++ api/gstreamer/src/Llib/gstparse.scm	2019-11-20 12:20:53.670422058 -0700
@@ -16,15 +16,15 @@
    
    (include "gst.sch")
    
-   (import  __gstreamer_gstreamer
-	    __gstreamer_gstobject
-	    __gstreamer_gstpad
+   (use	    __gstreamer_gstobject
 	    __gstreamer_gstcaps
 	    __gstreamer_gststructure
 	    __gstreamer_gstelementfactory
 	    __gstreamer_gstpluginfeature
 	    __gstreamer_gstelement)
 
+   (import  __gstreamer_gstpad)
+
    (export  (gst-parse-launch::obj ::bstring . ::obj)
 	    (gst-parse-launchv::obj ::pair-nil)))
 
--- api/gstreamer/src/Llib/gstpipeline.scm.orig	2019-07-04 00:09:45.000000000 -0600
+++ api/gstreamer/src/Llib/gstpipeline.scm	2019-11-20 12:22:20.202873292 -0700
@@ -16,18 +16,18 @@
    
    (include "gst.sch")
    
-   (import  __gstreamer_gstreamer
-	    __gstreamer_gstobject
+   (use	    __gstreamer_gstobject
 	    __gstreamer_gstelement
 	    __gstreamer_gstelementfactory
 	    __gstreamer_gstpluginfeature
 	    __gstreamer_gstpad
-	    __gstreamer_gstbus
-	    __gstreamer_gstbin
 	    __gstreamer_gstcaps
 	    __gstreamer_gststructure
 	    __gstreamer_gstmessage)
 
+   (import  __gstreamer_gstbus
+	    __gstreamer_gstbin)
+
    (export  (class gst-pipeline::gst-bin
 	       (bus
 		  read-only
--- api/gstreamer/src/Llib/gstpluginfeature.scm.orig	2019-07-04 00:09:45.000000000 -0600
+++ api/gstreamer/src/Llib/gstpluginfeature.scm	2019-11-06 15:46:47.929194299 -0700
@@ -33,7 +33,7 @@
 		  read-only
 		  (get (lambda (o)
 			  (with-access::gst-plugin-feature o ($builtin)
-			     ($gst-plugin-feature-plugin-name
+			     ($gst-plugin-feature-get-plugin-name
 				($gst-plugin-feature $builtin))))))
 	       (rank::uint
 		  (get (lambda (o)
--- api/gstreamer/src/Llib/gstplugin.scm.orig	2019-07-04 00:09:45.000000000 -0600
+++ api/gstreamer/src/Llib/gstplugin.scm	2019-11-20 09:35:48.729494027 -0700
@@ -16,8 +16,7 @@
    
    (include "gst.sch")
    
-   (import  __gstreamer_gstreamer
-	    __gstreamer_gstobject)
+   (import  __gstreamer_gstobject)
    
    (export  (class gst-plugin::gst-object
 	       (name::string
--- api/gstreamer/src/Llib/gstreamer.scm.orig	2019-07-04 00:09:45.000000000 -0600
+++ api/gstreamer/src/Llib/gstreamer.scm	2019-11-20 12:04:15.169080074 -0700
@@ -20,35 +20,16 @@
    
    (include "gst.sch")
 
-   (import  __gstreamer_gsterror
-	    __gstreamer_gstobject
-	    __gstreamer_gststructure
-	    __gstreamer_gstcaps
-	    __gstreamer_gstbuffer
-	    __gstreamer_gsttypefind
-	    __gstreamer_gstpluginfeature
-	    __gstreamer_gstmessage
-	    __gstreamer_gstplugin
-	    __gstreamer_gstpluginfeature
-	    __gstreamer_gstpad
-	    __gstreamer_gstpadtemplate
-	    __gstreamer_gstghostpad
-	    __gstreamer_gstbus
-	    __gstreamer_plugin_bglports)
+   (use	    __gstreamer_gstobject
+	    __gstreamer_gststructure)
+
+   (import  __gstreamer_gstcaps
+	    __gstreamer_gstmessage)
    
    (with    __gstreamer_gstobject
 	    __gstreamer_gststructure
 	    __gstreamer_gstcaps
-	    __gstreamer_gstbuffer
-	    __gstreamer_gsttypefind
-	    __gstreamer_gstpluginfeature
-	    __gstreamer_gstmessage
-	    __gstreamer_gstplugin
-	    __gstreamer_gstpad
-	    __gstreamer_gstpadtemplate
-	    __gstreamer_gstghostpad
-	    __gstreamer_gstbus
-	    __gstreamer_plugin_bglports)
+	    __gstreamer_gstmessage)
 	   
    (extern (include "bglgst_config.h")
 	   (macro $configure-gstreamer-version::string "BGL_GSTREAMER_VERSION")
--- api/gstreamer/src/Llib/gstregistry.scm.orig	2019-07-04 00:09:45.000000000 -0600
+++ api/gstreamer/src/Llib/gstregistry.scm	2019-11-20 12:21:28.852792366 -0700
@@ -16,14 +16,14 @@
 
    (include "gst.sch")
 
-   (import  __gstreamer_gstreamer
-	    __gstreamer_gstobject
+   (use	    __gstreamer_gstobject
 	    __gstreamer_gstelement
-	    __gstreamer_gstpad
 	    __gstreamer_gstpluginfeature
 	    __gstreamer_gstelementfactory
 	    __gstreamer_gstcaps
-	    __gstreamer_gststructure
+	    __gstreamer_gststructure)
+
+   (import  __gstreamer_gstpad
 	    __gstreamer_gstplugin)
 
    (export  (class gst-registry::gst-object)
@@ -48,7 +48,7 @@
       (set! default-registry
 	    (instantiate::gst-registry
 	       ($builtin ($gst-registry->object
-			  ($gst-registry-get-default))))))
+			  ($gst-registry-get))))))
    default-registry)
 
 ;*---------------------------------------------------------------------*/
@@ -59,7 +59,7 @@
     (if (isa? registry gst-registry)
 	(with-access::gst-registry registry ($builtin)
 	   ($gst-registry $builtin))
-	($gst-registry-get-default))))
+	($gst-registry-get))))
 	    
 ;*---------------------------------------------------------------------*/
 ;*    gst-registry-plugin-list ...                                     */
@@ -69,7 +69,7 @@
     (if (isa? registry gst-registry)
 	(with-access::gst-registry registry ($builtin)
 	   ($gst-registry $builtin))
-	($gst-registry-get-default))))
+	($gst-registry-get))))
 
 ;*---------------------------------------------------------------------*/
 ;*    gst-registry-feature-list-by-plugin ...                          */
@@ -79,7 +79,7 @@
     (if (isa? registry gst-registry)
 	(with-access::gst-registry registry ($builtin)
 	   ($gst-registry $builtin))
-	($gst-registry-get-default))
+	($gst-registry-get))
     (cond
        ((isa? plugin gst-plugin)
 	(with-access::gst-plugin plugin (name) name))
@@ -98,7 +98,7 @@
 		  (if (isa? registry gst-registry)
 		      (with-access::gst-registry registry ($builtin)
 			 ($gst-registry $builtin))
-		      ($gst-registry-get-default))
+		      ($gst-registry-get))
 		  name)))
       (unless ($gst-plugin-null? plugin)
 	 ($make-gst-plugin plugin %gst-object-finalize!))))
@@ -111,7 +111,7 @@
 		  (if (isa? registry gst-registry)
 		      (with-access::gst-registry registry ($builtin)
 			 ($gst-registry $builtin))
-		      ($gst-registry-get-default))
+		      ($gst-registry-get))
 		  name
 		  type)))
       (unless ($gst-plugin-feature-null? feature)
--- api/gstreamer/src/Llib/gst.sch.orig	2019-07-04 00:09:45.000000000 -0600
+++ api/gstreamer/src/Llib/gst.sch	2019-11-13 14:53:17.734032009 -0700
@@ -40,9 +40,9 @@
     (infix macro $gst-buffer-nil::$gst-buffer () "0L")
     (macro $gst-buffer-new::$gst-buffer
        () "gst_buffer_new")
-    (macro $gst-buffer-new-and-alloc::$gst-buffer
-       (::int) "gst_buffer_new_alloc")
-    (macro $gst-buffer-ref!::void
+    (macro $gst-buffer-new-allocate::$gst-buffer
+       (::void* ::int ::void*) "gst_buffer_new_allocate")
+    (macro $gst-buffer-ref!::$gst-buffer
        (::$gst-buffer) "gst_buffer_ref")
     (macro $gst-buffer-unref!::void
        (::$gst-buffer) "gst_buffer_unref")
@@ -50,18 +50,22 @@
        (::$gst-buffer) "(bool_t)!")
     (macro $gst-buffer->object::$gst-object
        (::$gst-buffer) "(GstObject *)")
-    (macro $gst-buffer-size::long
-       (::$gst-buffer) "GST_BUFFER_SIZE")
-    (macro $gst-buffer-data::string
-       (::$gst-buffer) "GST_BUFFER_DATA")
-    (macro $gst-buffer-set-data!::void
-       (::$gst-buffer ::string ::int) "gst_buffer_set_data")
-    (macro $gst-buffer-timestamp::$gst-clock-time
-       (::$gst-buffer) "GST_BUFFER_TIMESTAMP")
+    (macro $gst-buffer-get-size::long
+       (::$gst-buffer) "gst_buffer_get_size")
+    (macro $gst-buffer-set-size!::void
+       (::$gst-buffer ::long) "gst_buffer_set_size")
+    (macro $gst-buffer-get-string::obj
+       (::$gst-buffer) "bgl_gst_buffer_get_string")
+    (macro $gst-buffer-set-string!::void
+       (::$gst-buffer ::obj) "bgl_gst_buffer_set_string")
+    (macro $gst-buffer-dts::$gst-clock-time
+       (::$gst-buffer) "GST_BUFFER_DTS")
+    (macro $gst-buffer-pts::$gst-clock-time
+       (::$gst-buffer) "GST_BUFFER_PTS")
+    (macro $gst-buffer-dts-or-pts::$gst-clock-time
+       (::$gst-buffer) "GST_BUFFER_DTS_OR_PTS")
     (macro $gst-buffer-duration::$gst-clock-time
        (::$gst-buffer) "GST_BUFFER_DURATION")
-    (macro $gst-buffer-caps::$gst-caps
-       (::$gst-buffer) "GST_BUFFER_CAPS")
     
      ;; gst-bus
     (type $gst-bus void* "GstBus *")
@@ -92,7 +96,7 @@
     (macro $gst-bus-wait-playing::void
        (::$gst-bus ::obj) "bgl_gst_bus_wait_playing")
 
-    ;; gst-bus-fun
+    ;; gst-bus-func
     (type $gst-bus-func void* "GstBusFunc")
 
     ;; gst-caps
@@ -104,25 +108,25 @@
        (::$gst-caps) "(GstObject *)")
     (macro $gst-caps::$gst-caps
        (::$gst-object) "GST_CAPS")
-    (macro $gst-caps-ref!::void
+    (macro $gst-caps-ref!::$gst-caps
        (::$gst-caps) "gst_caps_ref")
     (macro $gst-caps-unref!::void
        (::$gst-caps) "gst_caps_unref")
-    (macro $gst-caps-get-size::long
+    (macro $gst-caps-get-size::uint
        (::$gst-caps) "gst_caps_get_size")
     (macro $gst-caps-get-structure::$gst-structure
-       (::$gst-caps ::long) "gst_caps_get_structure")
+       (::$gst-caps ::uint) "gst_caps_get_structure")
     (macro $gst-caps-is-always-compatible?::bool
        (::$gst-caps ::$gst-caps) "gst_caps_is_always_compatible")
     (macro $gst-caps-new-simple::obj
        (::bstring ::pair-nil ::procedure) "bgl_gst_caps_new_simple")
     (macro $gst-caps-append::void
        (::$gst-caps ::$gst-caps) "gst_caps_append")
-    (macro $gst-caps-merge::void
+    (macro $gst-caps-merge::$gst-caps
        (::$gst-caps ::$gst-caps) "gst_caps_merge")
     (macro $gst-caps-append-structure::void
        (::$gst-caps ::$gst-structure) "gst_caps_append_structure")
-    (macro $gst-caps-merge-structure::void
+    (macro $gst-caps-merge-structure::$gst-caps
        (::$gst-caps ::$gst-structure) "gst_caps_merge_structure")
     (macro $gst-caps-remove-structure::void
        (::$gst-caps ::uint) "gst_caps_remove_structure")
@@ -167,7 +171,7 @@
     (macro $gst-element-set-state!::$gst-state-change-return
        (::$gst-element ::$gst-state) "gst_element_set_state")
     (macro $gst-element-get-state::$gst-state-change-return
-       (::$gst-element ::long ::long ::llong) "gst_element_get_state")
+       (::$gst-element ::long ::long ::$gst-clock-time) "gst_element_get_state")
     (macro $gst-element-add-pad!::bool
        (::$gst-element ::$gst-pad) "gst_element_add_pad")
     (macro $gst-element-get-static-pad::$gst-pad
@@ -176,6 +180,8 @@
        (::$gst-element ::string) "gst_element_get_request_pad")
     (macro $gst-element-get-compatible-pad::$gst-pad
        (::$gst-element ::$gst-pad ::$gst-caps) "gst_element_get_compatible_pad")
+    (macro $gst-element-get-start-time::$gst-clock-time
+       (::$gst-element) "gst_element_get_start_time")
     (macro $gst-element-get-base-time::$gst-clock-time
        (::$gst-element) "gst_element_get_base_time")
     (macro $gst-element-get-clock::$gst-clock
@@ -210,23 +216,33 @@
     (macro $gst-element-factory-make::$gst-element
        (::string ::string) "gst_element_factory_make")
     (infix macro $gst-element-factory-name-nil::string () "(char *)0L")
-    (macro $gst-element-factory-get-longname::string
-       (::$gst-element-factory) "(char *)gst_element_factory_get_longname")
-    (macro $gst-element-factory-get-klass::string
-       (::$gst-element-factory) "(char *)gst_element_factory_get_klass")
-    (macro $gst-element-factory-get-description::string
-       (::$gst-element-factory) "(char *)gst_element_factory_get_description")
-    (macro $gst-element-factory-get-author::string
-       (::$gst-element-factory) "(char *)gst_element_factory_get_author")
+    (macro $gst-element-factory-get-metadata::string
+       (::$gst-element-factory ::string) "(char *)gst_element_factory_get_metadata")
     (macro $gst-element-factory-get-uri-protocols::pair-nil
        (::$gst-element-factory) "bgl_gst_element_factory_get_uri_protocols")
-    (macro $gst-element-factory-can-sink-caps?::bool
-       (::$gst-element-factory ::$gst-caps) "gst_element_factory_can_sink_caps")
-    (macro $gst-element-factory-can-src-caps?::bool
-       (::$gst-element-factory ::$gst-caps) "gst_element_factory_can_src_caps")
+    (macro $gst-element-factory-can-sink-all-caps?::bool
+       (::$gst-element-factory ::$gst-caps)
+       "gst_element_factory_can_sink_all_caps")
+    (macro $gst-element-factory-can-src-all-caps?::bool
+       (::$gst-element-factory ::$gst-caps)
+       "gst_element_factory_can_src_all_caps")
     (macro $gst-element-factory-get-static-pad-templates::pair-nil
        (::$gst-element-factory) "bgl_gst_element_factory_get_static_pad_templates")
 
+    ;; gst-element-metadata
+    (macro $gst-element-metadata-author::string
+       "GST_ELEMENT_METADATA_AUTHOR")
+    (macro $gst-element-metadata-doc-uri::string
+       "GST_ELEMENT_METADATA_DOC_URI")
+    (macro $gst-element-metadata-description::string
+       "GST_ELEMENT_METADATA_DESCRIPTION")
+    (macro $gst-element-metadata-icon-name::string
+       "GST_ELEMENT_METADATA_ICON_NAME")
+    (macro $gst-element-metadata-klass::string
+       "GST_ELEMENT_METADATA_KLASS")
+    (macro $gst-element-metadata-long-name::string
+       "GST_ELEMENT_METADATA_LONGNAME")
+
     ;; gst-format
     (type $gst-format long "GstFormat")
     (macro $gst-format-undefined::$gst-format
@@ -247,7 +263,7 @@
     (infix macro $gst-ghost-pad-nil::$gst-ghost-pad () "0L")
     (macro $gst-ghost-pad-null?::bool
        (::$gst-ghost-pad) "(bool_t)!")
-    (macro $gst-ghost-pad-new::$gst-element
+    (macro $gst-ghost-pad-new::$gst-pad
        (::string ::$gst-pad) "gst_ghost_pad_new")
     (macro $gst-ghost-pad->object::$gst-object
        (::$gst-ghost-pad) "(GstObject *)")
@@ -267,7 +283,7 @@
        (::$gst-message) "(GstObject *)")
     (macro $gst-message::$gst-message
        (::$gst-object) "GST_MESSAGE")
-    (macro $gst-message-ref!::void
+    (macro $gst-message-ref!::$gst-message
        (::$gst-message) "gst_message_ref")
     (macro $gst-message-unref!::void
        (::$gst-message) "gst_message_unref")
@@ -310,7 +326,7 @@
     (macro $gst-message-new-state-dirty::$gst-message
        (::$gst-object) "gst_message_new_state_dirty")
     (macro $gst-message-new-async-done::$gst-message
-       (::$gst-object) "gst_message_new_async_done")
+       (::$gst-object ::$gst-clock-time) "gst_message_new_async_done")
     (macro $gst-message-new-latency::$gst-message
        (::$gst-object) "gst_message_new_latency")
 
@@ -354,32 +370,66 @@
        "GST_MESSAGE_SEGMENT_START")
     (macro $gst-message-segment-done::$gst-message-type
        "GST_MESSAGE_SEGMENT_DONE")
-    (macro $gst-message-duration::$gst-message-type
-       "GST_MESSAGE_DURATION")
+    (macro $gst-message-duration-changed::$gst-message-type
+       "GST_MESSAGE_DURATION_CHANGED")
     (macro $gst-message-latency::$gst-message-type
        "GST_MESSAGE_LATENCY")
     (macro $gst-message-async-start::$gst-message-type
        "GST_MESSAGE_ASYNC_START")
     (macro $gst-message-async-done::$gst-message-type
        "GST_MESSAGE_ASYNC_DONE")
+    (macro $gst-message-request-state::$gst-message-type
+       "GST_MESSAGE_REQUEST_STATE")
+    (macro $gst-message-step-start::$gst-message-type
+       "GST_MESSAGE_STEP_START")
+    (macro $gst-message-qos::$gst-message-type
+       "GST_MESSAGE_QOS")
+    (macro $gst-message-progress::$gst-message-type
+       "GST_MESSAGE_PROGRESS")
+    (macro $gst-message-toc::$gst-message-type
+       "GST_MESSAGE_TOC")
+    (macro $gst-message-reset-time::$gst-message-type
+       "GST_MESSAGE_RESET_TIME")
+    (macro $gst-message-stream-start::$gst-message-type
+       "GST_MESSAGE_STREAM_START")
+    (macro $gst-message-need-context::$gst-message-type
+       "GST_MESSAGE_NEED_CONTEXT")
+    (macro $gst-message-have-context::$gst-message-type
+       "GST_MESSAGE_HAVE_CONTEXT")
+    (macro $gst-message-extended::$gst-message-type
+       "GST_MESSAGE_EXTENDED")
+    (macro $gst-message-device-added::$gst-message-type
+       "GST_MESSAGE_DEVICE_ADDED")
+    (macro $gst-message-device-removed::$gst-message-type
+       "GST_MESSAGE_DEVICE_REMOVED")
+    (macro $gst-message-property-notify::$gst-message-type
+       "GST_MESSAGE_PROPERTY_NOTIFY")
+    (macro $gst-message-stream-collection::$gst-message-type
+       "GST_MESSAGE_STREAM_COLLECTION")
+    (macro $gst-message-streams-selected::$gst-message-type
+       "GST_MESSAGE_STREAMS_SELECTED")
+    (macro $gst-message-redirect::$gst-message-type
+       "GST_MESSAGE_REDIRECT")
+    (macro $gst-message-device-changed::$gst-message-type
+       "GST_MESSAGE_DEVICE_CHANGED")
     (macro $gst-message-any::$gst-message-type
        "GST_MESSAGE_ANY")
 
     ;; gst-stream-status-type
     (type $gst-stream-status-type long "GstStreamStatusType")
-    (macro $gst-stream-status-type-create::$gst-message-type
+    (macro $gst-stream-status-type-create::$gst-stream-status-type
        "GST_STREAM_STATUS_TYPE_CREATE")
-    (macro $gst-stream-status-type-enter::$gst-message-type
+    (macro $gst-stream-status-type-enter::$gst-stream-status-type
        "GST_STREAM_STATUS_TYPE_ENTER")
-    (macro $gst-stream-status-type-leave::$gst-message-type
+    (macro $gst-stream-status-type-leave::$gst-stream-status-type
        "GST_STREAM_STATUS_TYPE_LEAVE")
-    (macro $gst-stream-status-type-destroy::$gst-message-type
+    (macro $gst-stream-status-type-destroy::$gst-stream-status-type
        "GST_STREAM_STATUS_TYPE_DESTROY")
-    (macro $gst-stream-status-type-start::$gst-message-type
+    (macro $gst-stream-status-type-start::$gst-stream-status-type
        "GST_STREAM_STATUS_TYPE_START")
-    (macro $gst-stream-status-type-pause::$gst-message-type
+    (macro $gst-stream-status-type-pause::$gst-stream-status-type
        "GST_STREAM_STATUS_TYPE_PAUSE")
-    (macro $gst-stream-status-type-stop::$gst-message-type
+    (macro $gst-stream-status-type-stop::$gst-stream-status-type
        "GST_STREAM_STATUS_TYPE_STOP")
 
 ;*     ;; gst-mixer                                                    */
@@ -454,7 +504,7 @@
     (infix macro $gst-object-nil::$gst-object () "0L")
     (macro $gst-object-null?::bool
 	   (::$gst-object) "(bool_t)!")
-    (macro $gst-object-ref!::void
+    (macro $gst-object-ref!::$gst-object
        (::$gst-object) "gst_object_ref")
     (macro $gst-object-unref!::void
        (::$gst-object) "gst_object_unref")
@@ -476,7 +526,7 @@
     (infix macro $gst-pad-nil::$gst-pad () "0L")
     (macro $gst-pad-null?::bool
        (::$gst-pad) "(bool_t)!")
-    (macro $gst-pad-new::$gst-element
+    (macro $gst-pad-new::$gst-pad
        (::string ::$gst-pad-direction) "gst_pad_new")
     (macro $gst-pad->object::$gst-object
        (::$gst-pad) "(GstObject *)")
@@ -496,35 +546,27 @@
        (::$gst-pad) "gst_pad_is_linked")
     (macro $gst-pad-unlink!::bool
        (::$gst-pad ::$gst-pad) "gst_pad_unlink")
-    (macro $gst-pad-get-caps::$gst-caps
-       (::$gst-pad) "gst_pad_get_caps")
+    (macro $gst-pad-query-caps::$gst-caps
+       (::$gst-pad ::$gst-caps) "gst_pad_query_caps")
     (macro $gst-pad-set-caps!::bool
-       (::$gst-pad ::$gst-caps) "gst_pad_set_caps")
+       (::$gst-pad ::$gst-caps) "bgl_gst_pad_set_caps")
     (macro $gst-pad-get-allowed-caps::$gst-caps
        (::$gst-pad) "gst_pad_get_allowed_caps")
-    (macro $gst-pad-get-negotiated-caps::$gst-caps
-       (::$gst-pad) "gst_pad_get_negotiated_caps")
+    (macro $gst-pad-get-current-caps::$gst-caps
+       (::$gst-pad) "gst_pad_get_current_caps")
     (macro $gst-pad-get-pad-template-caps::$gst-caps
-       (::$gst-pad) "(GstCaps *)gst_pad_get_pad_template_caps")
-    (macro $gst-pad-add-buffer-probe!::int
-       (::$gst-pad ::procedure) "bgl_gst_pad_add_buffer_probe")
-;*     (macro $gst-pad-add-data-probe!::int                            */
-;*        (::$gst-pad ::procedure) "bgl_gst_pad_add_data_probe")       */
-;*     (macro $gst-pad-add-event-probe!::int                           */
-;*        (::$gst-pad ::procedure) "bgl_gst_pad_add_event_probe")      */
-    (macro $gst-pad-remove-buffer-probe!::void
-       (::$gst-pad ::int) "gst_pad_remove_buffer_probe")
-;*     (macro $gst-remove-add-data-probe!::int                         */
-;*        (::$gst-pad ::int) "gst_pad_remove_data_probe")              */
-;*     (macro $gst-remove-add-event-probe!::int                        */
-;*        (::$gst-pad ::int) "gst_pad_remove_event_probe")             */
+       (::$gst-pad) "gst_pad_get_pad_template_caps")
+    (macro $gst-pad-add-probe!::ulong
+       (::$gst-pad ::$gst-pad-probe-type ::procedure) "bgl_gst_pad_add_probe")
+    (macro $gst-pad-remove-probe!::void
+       (::$gst-pad ::int) "gst_pad_remove_probe")
 
     ;; gst-pad-template
     (type $gst-pad-template void* "GstPadTemplate *")
     (infix macro $gst-pad-template-nil::$gst-pad-template () "0L")
     (macro $gst-pad-template-null?::bool
        (::$gst-pad-template) "(bool_t)!")
-    (macro $gst-pad-template-new::$gst-element
+    (macro $gst-pad-template-new::$gst-pad-template
        (::string ::$gst-pad-direction ::$gst-pad-presence ::$gst-caps)
        "gst_pad_template_new")
     (macro $gst-pad-template->object::$gst-object
@@ -532,12 +574,6 @@
     (macro $gst-pad-template::$gst-pad-template
        (::$gst-object) "GST_PAD_TEMPLATE")
     
-    ;; gst-parse
-    (macro $gst-parse-launch::obj
-       (::string) "bgl_gst_parse_launch")
-    (macro $gst-parse-launchv::obj
-       (::pair-nil) "bgl_gst_parse_launchv")
-    
     ;; gst-pad-link-return
     (type $gst-pad-link-return long "GstPadLinkReturn")
     (macro $gst-pad-link-ok::$gst-pad-link-return
@@ -572,6 +608,59 @@
        "GST_PAD_SOMETIMES")
     (macro $gst-pad-request::$gst-pad-presence
        "GST_PAD_REQUEST")
+   
+    ;; gst-pad-probe-type
+    (type $gst-pad-probe-type long "GstPadProbeType")
+    (macro $gst-pad-probe-type-invalid::$gst-pad-probe-type
+       "GST_PAD_PROBE_TYPE_INVALID")
+    (macro $gst-pad-probe-type-idle::$gst-pad-probe-type
+       "GST_PAD_PROBE_TYPE_IDLE")
+    (macro $gst-pad-probe-type-BLOCK::$gst-pad-probe-type
+       "GST_PAD_PROBE_TYPE_BLOCK")
+    (macro $gst-pad-probe-type-buffer::$gst-pad-probe-type
+       "GST_PAD_PROBE_TYPE_BUFFER")
+    (macro $gst-pad-probe-type-buffer-list::$gst-pad-probe-type
+       "GST_PAD_PROBE_TYPE_BUFFER_LIST")
+    (macro $gst-pad-probe-type-event-downstream::$gst-pad-probe-type
+       "GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM")
+    (macro $gst-pad-probe-type-event-upstream::$gst-pad-probe-type
+       "GST_PAD_PROBE_TYPE_EVENT_UPSTREAM")
+    (macro $gst-pad-probe-type-event-flush::$gst-pad-probe-type
+       "GST_PAD_PROBE_TYPE_EVENT_FLUSH")
+    (macro $gst-pad-probe-type-query-downstream::$gst-pad-probe-type
+       "GST_PAD_PROBE_TYPE_QUERY_DOWNSTREAM")
+    (macro $gst-pad-probe-type-query-upstream::$gst-pad-probe-type
+       "GST_PAD_PROBE_TYPE_QUERY_UPSTREAM")
+    (macro $gst-pad-probe-type-push::$gst-pad-probe-type
+       "GST_PAD_PROBE_TYPE_PUSH")
+    (macro $gst-pad-probe-type-pull::$gst-pad-probe-type
+       "GST_PAD_PROBE_TYPE_PULL")
+    (macro $gst-pad-probe-type-blocking::$gst-pad-probe-type
+       "GST_PAD_PROBE_TYPE_BLOCKING")
+    (macro $gst-pad-probe-type-data-downstream::$gst-pad-probe-type
+       "GST_PAD_PROBE_TYPE_DATA_DOWNSTREAM")
+    (macro $gst-pad-probe-type-data-upstream::$gst-pad-probe-type
+       "GST_PAD_PROBE_TYPE_DATA_UPSTREAM")
+    (macro $gst-pad-probe-type-data-both::$gst-pad-probe-type
+       "GST_PAD_PROBE_TYPE_DATA_BOTH")
+    (macro $gst-pad-probe-type-block-downstream::$gst-pad-probe-type
+       "GST_PAD_PROBE_TYPE_BLOCK_DOWNSTREAM")
+    (macro $gst-pad-probe-type-block-upstream::$gst-pad-probe-type
+       "GST_PAD_PROBE_TYPE_BLOCK_UPSTREAM")
+    (macro $gst-pad-probe-type-event-both::$gst-pad-probe-type
+       "GST_PAD_PROBE_TYPE_EVENT_BOTH")
+    (macro $gst-pad-probe-type-query-both::$gst-pad-probe-type
+       "GST_PAD_PROBE_TYPE_QUERY_BOTH")
+    (macro $gst-pad-probe-type-all-both::$gst-pad-probe-type
+       "GST_PAD_PROBE_TYPE_ALL_BOTH")
+    (macro $gst-pad-probe-type-scheduling::$gst-pad-probe-type
+       "GST_PAD_PROBE_TYPE_SCHEDULING")
+    
+    ;; gst-parse
+    (macro $gst-parse-launch::obj
+       (::string) "bgl_gst_parse_launch")
+    (macro $gst-parse-launchv::obj
+       (::pair-nil) "bgl_gst_parse_launchv")
     
     ;; gst-pipeline
     (type $gst-pipeline void* "GstPipeline *")
@@ -588,8 +677,6 @@
        (::$gst-pipeline) "gst_pipeline_get_clock")
     (macro $gst-pipeline-set-clock!::bool
        (::$gst-pipeline ::$gst-clock) "gst_pipeline_set_clock")
-    (macro $gst-pipeline-get-last-stream-time::$gst-clock-time
-       (::$gst-pipeline) "gst_pipeline_get_last_stream_time")
     
     ;; gst-plugin
     (type $gst-plugin void* "GstPlugin *")
@@ -628,13 +715,13 @@
        (::$gst-object) "GST_PLUGIN_FEATURE")
     (macro $gst-plugin-feature-name::string
        (::$gst-plugin-feature) "(char *)gst_plugin_feature_get_name")
-    (infix macro $gst-plugin-feature-plugin-name::string
-       (::$gst-plugin-feature) "->plugin_name")
+    (macro $gst-plugin-feature-get-plugin-name::string
+       (::$gst-plugin-feature) "(char *)gst_plugin_feature_get_plugin_name")
     (macro $gst-plugin-feature-set-name!::string
        (::$gst-plugin-feature ::string) "gst_plugin_feature_set_name")
     (macro $gst-plugin-feature-rank::uint
        (::$gst-plugin-feature) "gst_plugin_feature_get_rank")
-    (macro $gst-plugin-feature-set-rank!::string
+    (macro $gst-plugin-feature-set-rank!::void
        (::$gst-plugin-feature ::uint) "gst_plugin_feature_set_rank")
     
     ;; gst-state
@@ -659,8 +746,8 @@
        (::$gst-registry) "(GstObject *)")
     (macro $gst-registry::$gst-registry
        (::$gst-object) "GST_REGISTRY")
-    (macro $gst-registry-get-default::$gst-registry
-       () "gst_registry_get_default")
+    (macro $gst-registry-get::$gst-registry
+       () "gst_registry_get")
     (macro $gst-registry-get-element-factory-list::pair-nil
        (::$gst-registry) "bgl_gst_registry_get_element_factory_list")
     (macro $gst-registry-get-feature-list-by-plugin::pair-nil
@@ -684,6 +771,18 @@
        "GST_SEEK_FLAG_KEY_UNIT")
     (macro $gst-seek-flag-segment::$gst-seek-flags
        "GST_SEEK_FLAG_SEGMENT")
+    (macro $gst-seek-flag-trickmode::$gst-seek-flags
+       "GST_SEEK_FLAG_TRICKMODE")
+    (macro $gst-seek-flag-snap-before::$gst-seek-flags
+       "GST_SEEK_FLAG_SNAP_BEFORE")
+    (macro $gst-seek-flag-snap-after::$gst-seek-flags
+       "GST_SEEK_FLAG_SNAP_AFTER")
+    (macro $gst-seek-flag-snap-nearest::$gst-seek-flags
+       "GST_SEEK_FLAG_SNAP_NEAREST")
+    (macro $gst-seek-flag-trickmode-key-units::$gst-seek-flags
+       "GST_SEEK_FLAG_TRICKMODE_KEY_UNITS")
+    (macro $gst-seek-flag-trickmode-no-audio::$gst-seek-flags
+       "GST_SEEK_FLAG_TRICKMODE_NO_AUDIO")
     
     ;; gst-state-change-return
     (type $gst-state-change-return long "GstStateChangeReturn")
@@ -701,12 +800,8 @@
     (infix macro $gst-static-pad-template-nil::$gst-static-pad-template () "0L")
     (macro $gst-static-pad-template-null?::bool
        (::$gst-static-pad-template) "(bool_t)!")
-    (macro $gst-static-pad-template->object::$gst-object
-       (::$gst-static-pad-template) "(GstObject *)")
-    (macro $gst-static-pad-template::$gst-static-pad-template
-       (::$gst-object) "GST_STATIC_PAD_TEMPLATE")
-    (infix macro $gst-static-pad-template-name-template::string
-       (::$gst-static-pad-template) "->name_template")
+    (macro $gst-static-pad-template-name-template::string
+       (::$gst-static-pad-template) "(char *)GST_PAD_TEMPLATE_NAME_TEMPLATE")
     (infix macro $gst-static-pad-template-direction::$gst-pad-direction
        (::$gst-static-pad-template) "->direction")
     (infix macro $gst-static-pad-template-presence::$gst-pad-presence
@@ -719,8 +814,8 @@
        (::$gst-structure) "(bool_t)!")
     (macro $gst-structure->object::$gst-object
        (::$gst-structure) "(GstObject *)")
-    (macro $gst-structure-empty-new::$gst-structure
-       (::string) "gst_structure_empty_new")
+    (macro $gst-structure-new-empty::$gst-structure
+       (::string) "gst_structure_new_empty")
     (macro $gst-structure::$gst-structure
        (::$gst-object) "GST_STRUCTURE")
     (macro $gst-structure-free!::void
@@ -741,8 +836,6 @@
     (infix macro $gst-type-find-nil::$gst-type-find () "0L")
     (macro $gst-type-find-null?::bool
        (::$gst-type-find) "(bool_t)!")
-    (macro $gst-type-find::$gst-type-find
-       (::$gst-object) "GST_TYPE_FIND")
 
     ;; bgl-gst-ports-src
     (type $bgl-port-src void* "BglPortSrc *")
--- api/gstreamer/src/Llib/gststructure.scm.orig	2019-07-04 00:09:45.000000000 -0600
+++ api/gstreamer/src/Llib/gststructure.scm	2019-11-20 09:39:20.047154867 -0700
@@ -16,8 +16,7 @@
    
    (include "gst.sch")
    
-   (import  __gstreamer_gsterror
-	    __gstreamer_gstobject)
+   (import  __gstreamer_gsterror)
    
    (export  (class gst-structure
 	       (%gst-structure-init)
--- api/gstreamer/src/Llib/gsttypefind.scm.orig	2019-07-04 00:09:45.000000000 -0600
+++ api/gstreamer/src/Llib/gsttypefind.scm	2019-11-20 09:40:33.703021145 -0700
@@ -16,11 +16,7 @@
 
    (include "gst.sch")
    
-   (import  __gstreamer_gsterror
-	    __gstreamer_gstobject
-	    __gstreamer_gstcaps
-	    __gstreamer_gststructure)
-	    
+   (import  __gstreamer_gsterror)
 
    (export  (class gst-type-find
 	       (%gst-type-find-init)
--- api/gstreamer/src/Misc/make_lib.scm.orig	2019-07-04 00:09:45.000000000 -0600
+++ api/gstreamer/src/Misc/make_lib.scm	2019-11-19 15:31:34.796770757 -0700
@@ -23,7 +23,6 @@
 	   __gstreamer_gstbin
 	   __gstreamer_gstbuffer
 	   __gstreamer_gstbus
-	   __gstreamer_gstghostpad
 	   __gstreamer_gstpipeline
 	   __gstreamer_gstplugin
 	   __gstreamer_gstpluginfeature
@@ -31,6 +30,7 @@
 	   __gstreamer_gstregistry
 	   __gstreamer_gstpad
 	   __gstreamer_gstpadtemplate
+	   __gstreamer_gstghostpad
 	   __gstreamer_gstmessage
 	   __gstreamer_gstcaps
 	   __gstreamer_gststructure
--- api/gstreamer/src/Plugin/bglgst_port.c.orig	2019-07-04 00:09:45.000000000 -0600
+++ api/gstreamer/src/Plugin/bglgst_port.c	2019-11-13 09:03:54.248834074 -0700
@@ -56,29 +56,14 @@ plugin_init( GstPlugin * plugin ) {
 /*---------------------------------------------------------------------*/
 gboolean
 bgl_gst_plugin_port_init() {
-#if( defined( GST_PLUGIN_DEFINE_STATIC ) )
-   GST_PLUGIN_DEFINE( PLUGIN_VERSION_MAJOR,
-		      PLUGIN_VERSION_MINOR,
-		      PLUGIN_NAME,
-		      PLUGIN_DESC,
-		      plugin_init,
-		      PLUGIN_VERSION,
-		      PLUGIN_LICENSE,
-		      PLUGIN_PACKAGE,
-		      PLUGIN_URL );
-
-   _gst_plugin_register_static( &gst_plugin_desc );
-#else      
-   gst_plugin_register_static( PLUGIN_VERSION_MAJOR,
-                               PLUGIN_VERSION_MINOR,
-                               PLUGIN_NAME,
-                               PLUGIN_DESC,
-                               plugin_init,
-                               PLUGIN_VERSION,
-                               PLUGIN_LICENSE,
-                               PLUGIN_PACKAGE,
-                               PLUGIN_URL);
-#endif
-
-   return TRUE;
+   return gst_plugin_register_static( PLUGIN_VERSION_MAJOR,
+				      PLUGIN_VERSION_MINOR,
+				      PLUGIN_NAME,
+				      PLUGIN_DESC,
+				      plugin_init,
+				      PLUGIN_VERSION,
+				      PLUGIN_LICENSE,
+				      PACKAGE,
+				      PLUGIN_PACKAGE,
+				      PLUGIN_URL );
 }
--- api/gstreamer/src/Plugin/bglgst_portsink.c.orig	2019-07-04 00:09:45.000000000 -0600
+++ api/gstreamer/src/Plugin/bglgst_portsink.c	2019-11-18 13:49:41.195774202 -0700
@@ -56,17 +56,46 @@ enum {
 /*---------------------------------------------------------------------*/
 /*    Boilerplate                                                      */
 /*---------------------------------------------------------------------*/
-#define _do_init( _ ) \
-  GST_DEBUG_CATEGORY_INIT( bgl_gst_port_sink_debug, \
-			   "bglportsink", \
-			   0, \
-			   "bglportsink element" );
 
-GST_BOILERPLATE_FULL( BglPortSink,
-		      bgl_gst_port_sink,
-		      GstBaseSink,
-		      GST_TYPE_BASE_SINK,
-		      _do_init );
+/* None of the boilerplate macros expand to a call to g_type_register_static,
+ * just g_type_register_static_simple, so we write this by hand.
+ */
+static void bgl_gst_port_sink_base_init  (gpointer klass);
+static void bgl_gst_port_sink_class_init (gpointer klass, gpointer class_data);
+static void bgl_gst_port_sink_init (GTypeInstance *instance, gpointer klass);
+
+static gpointer bgl_gst_port_sink_parent_class = NULL;
+
+GType
+bgl_gst_port_sink_get_type (void)
+{
+  static volatile gsize g_define_type_id__volatile = 0;
+
+  if (g_once_init_enter (&g_define_type_id__volatile)) {
+      static const GTypeInfo BglPortSinkTypeInfo = {
+         (guint16) sizeof (BglPortSinkClass),
+         bgl_gst_port_sink_base_init,
+         NULL, /* base_finalize */
+         bgl_gst_port_sink_class_init,
+         NULL, /* class_finalize */
+         NULL, /* class_data */
+         (guint16) sizeof (BglPortSink),
+	 0, /* n_preallocs */
+         bgl_gst_port_sink_init,
+         NULL  /* value_table */
+      };
+
+      GType g_define_type_id =
+         g_type_register_static (GST_TYPE_BASE_SINK,
+                                 g_intern_static_string ("BglPortSink"),
+                                 &BglPortSinkTypeInfo,
+                                 (GTypeFlags) 0);
+      GST_DEBUG_CATEGORY_INIT( bgl_gst_port_sink_debug, "bglportsink", 0,
+                               "bglportsink element" );
+      g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
+    }
+  return g_define_type_id__volatile;
+}
 
 /*---------------------------------------------------------------------*/
 /*    static void                                                      */
@@ -146,7 +175,8 @@ bgl_gst_port_sink_get_property( GObject
 }
 
 
-static gboolean bgl_gst_port_sink_query (GstPad * pad, GstQuery * query);
+static gboolean bgl_gst_port_sink_query (GstPad * pad, GstObject *parent,
+    GstQuery * query);
 
 static GstFlowReturn bgl_gst_port_sink_render (GstBaseSink * sink,
     GstBuffer * buffer);
@@ -160,19 +190,17 @@ static gboolean bgl_gst_port_sink_stop (
 /*---------------------------------------------------------------------*/
 static void
 bgl_gst_port_sink_base_init( gpointer g_class ) {
-   static GstElementDetails element_details = {
-      "Bigloo output-port sink",
-      "Sink",
-      "Write stream to a bigloo port",
-      "Cyprien Nicolas <Cyprien.Nicolas@sophia.inria.fr>"
-   };
    GstElementClass *element_class = GST_ELEMENT_CLASS( g_class );
 
    gst_element_class_add_pad_template(
       element_class, gst_static_pad_template_get( &sinktemplate ) );
    
-   gst_element_class_set_details(
-      element_class, &element_details );
+   gst_element_class_set_static_metadata(
+      element_class,
+      "Bigloo output-port sink",
+      "Sink",
+      "Write stream to a bigloo port",
+      "Cyprien Nicolas <Cyprien.Nicolas@sophia.inria.fr>" );
 }
 
 /*---------------------------------------------------------------------*/
@@ -180,10 +208,12 @@ bgl_gst_port_sink_base_init( gpointer g_
 /*    bgl_gst_port_sink_class_init ...                                 */
 /*---------------------------------------------------------------------*/
 static void
-bgl_gst_port_sink_class_init( BglPortSinkClass *klass ) {
+bgl_gst_port_sink_class_init( gpointer klass, gpointer class_data ) {
    GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
    GstBaseSinkClass *gstbasesink_class = GST_BASE_SINK_CLASS (klass);
 
+   bgl_gst_port_sink_parent_class = g_type_class_peek_parent (klass);
+
    gobject_class->set_property =
       GST_DEBUG_FUNCPTR( bgl_gst_port_sink_set_property );
    gobject_class->get_property =
@@ -219,11 +249,11 @@ bgl_gst_port_sink_class_init( BglPortSin
 /*    bgl_gst_port_sink_init ...                                       */
 /*---------------------------------------------------------------------*/
 static void
-bgl_gst_port_sink_init( BglPortSink *portsink, BglPortSinkClass *g_class ) {
-   GstPad *pad;
-
-   pad = GST_BASE_SINK_PAD( portsink );
+bgl_gst_port_sink_init( GTypeInstance *instance, gpointer klass ) {
+   BglPortSink *portsink = (BglPortSink *)instance;
+   GstPad *pad = GST_BASE_SINK_PAD( portsink );
 
+   GST_OBJECT_FLAG_SET (pad, GST_PAD_FLAG_NEED_PARENT);
    gst_pad_set_query_function( pad,
 			       GST_DEBUG_FUNCPTR( bgl_gst_port_sink_query ) );
 
@@ -241,11 +271,11 @@ bgl_gst_port_sink_init( BglPortSink *por
 /*    bgl_gst_port_sink_query ...                                      */
 /*---------------------------------------------------------------------*/
 static gboolean
-bgl_gst_port_sink_query( GstPad * pad, GstQuery * query ) {
+bgl_gst_port_sink_query( GstPad * pad, GstObject *parent, GstQuery * query ) {
    BglPortSink *self;
    GstFormat format;
 
-   self = BGL_GST_PORT_SINK( GST_PAD_PARENT( pad ) );
+   self = BGL_GST_PORT_SINK( parent );
 
    switch( GST_QUERY_TYPE( query ) ) {
       case GST_QUERY_POSITION:
@@ -265,7 +295,7 @@ bgl_gst_port_sink_query( GstPad * pad, G
 	 return TRUE;
 
       default:
-	 return gst_pad_query_default( pad, query );
+	 return gst_pad_query_default( pad, parent, query );
    }
 }
 
@@ -275,17 +305,20 @@ bgl_gst_port_sink_query( GstPad * pad, G
 /*---------------------------------------------------------------------*/
 static GstFlowReturn
 bgl_gst_port_sink_render( GstBaseSink *sink, GstBuffer *buffer ) {
+   GstMapInfo info;
    BglPortSink *portsink;
-   guint size;
+   gsize size;
    guint8 *data;
    gint written;
   
    portsink = BGL_GST_PORT_SINK( sink );
 
-   size = GST_BUFFER_SIZE( buffer );
-   data = GST_BUFFER_DATA( buffer );
+   if ( !gst_buffer_map( buffer, &info, GST_MAP_WRITE ) )
+      return GST_FLOW_ERROR;
+   size = info.size;
+   data = info.data;
 
-   GST_DEBUG_OBJECT( portsink, "writing %u bytes", size );
+   GST_DEBUG_OBJECT( portsink, "writing %lu bytes", info.size );
 
 redo:
    if (size > 0 && data != NULL) {
@@ -296,6 +329,7 @@ redo:
 			    ("Error while writing to port <%p>.", portsink->port),
 			    ("%s", g_strerror( errno )) );
     
+	 gst_buffer_unmap( buffer, &info );
 	 return GST_FLOW_ERROR;
       }
     
@@ -303,15 +337,17 @@ redo:
       data += written;
       portsink->bytes_written += written;
 
-      GST_DEBUG_OBJECT( portsink, "wrote %d bytes, %d left", written, size );
+      GST_DEBUG_OBJECT( portsink, "wrote %d bytes, %ld left", written, size );
 
       if (size > 0)
 	 goto redo;
 
+      gst_buffer_unmap( buffer, &info );
       return GST_FLOW_OK;
    }
   
-   return GST_FLOW_UNEXPECTED;
+   gst_buffer_unmap( buffer, &info );
+   return GST_FLOW_EOS;
 }
 
 /*---------------------------------------------------------------------*/
--- api/gstreamer/src/Plugin/bglgst_portsrc.c.orig	2019-07-04 00:09:45.000000000 -0600
+++ api/gstreamer/src/Plugin/bglgst_portsrc.c	2019-11-18 13:48:21.283140127 -0700
@@ -93,47 +93,48 @@ enum {
 
 
 /*---------------------------------------------------------------------*/
-/*    Backward gstreamer compatibility                                 */
+/*    Boilerplate                                                      */
 /*---------------------------------------------------------------------*/
-#if( !BGL_GSTREAMER_HAVE_PARSE_INFO )
-#define gst_buffer_try_new_and_alloc( s ) __gst_buffer_try_new_and_alloc( s )
-
-static GstBuffer *__gst_buffer_try_new_and_alloc( guint size ) {
-   GstBuffer *newbuf;
-   guint8 *malloc_data;
 
-   malloc_data = g_try_malloc( size );
+/* None of the boilerplate macros expand to a call to g_type_register_static,
+ * just g_type_register_static_simple, so we write this by hand.
+ */
+static void bgl_gst_port_src_base_init  (gpointer klass);
+static void bgl_gst_port_src_class_init (gpointer klass, gpointer class_data);
+static void bgl_gst_port_src_init (GTypeInstance *instance, gpointer klass);
 
-   if( G_UNLIKELY (malloc_data == NULL && size != 0) ) {
-      return NULL;
-   }
+static gpointer bgl_gst_port_src_parent_class = NULL;
 
-   /* FIXME: there's no g_type_try_create_instance() in GObject yet, so this
-    * will still abort if a new GstBuffer structure can't be allocated */
-   newbuf = gst_buffer_new();
+GType
+bgl_gst_port_src_get_type (void)
+{
+  static volatile gsize g_define_type_id__volatile = 0;
 
-   GST_BUFFER_MALLOCDATA( newbuf ) = malloc_data;
-   GST_BUFFER_DATA( newbuf ) = malloc_data;
-   GST_BUFFER_SIZE( newbuf ) = size;
+  if (g_once_init_enter (&g_define_type_id__volatile)) {
+      static const GTypeInfo BglPortSrcTypeInfo = {
+	 (guint16) sizeof (BglPortSrcClass),
+	 bgl_gst_port_src_base_init,
+	 NULL, /* base_finalize */
+	 bgl_gst_port_src_class_init,
+	 NULL, /* class_finalize */
+	 NULL, /* class_data */
+	 (guint16) sizeof (BglPortSrc),
+	 0, /* n_preallocs */
+	 bgl_gst_port_src_init,
+	 NULL  /* value_table */
+      };
 
-   return newbuf;
+      GType g_define_type_id =
+	 g_type_register_static (GST_TYPE_BASE_SRC,
+				 g_intern_static_string ("BglPortSrc"),
+				 &BglPortSrcTypeInfo,
+				 (GTypeFlags) 0);
+      GST_DEBUG_CATEGORY_INIT( bgl_gst_port_src_debug, "bglportsrc", 0,
+			       "bglportsrc element" );
+      g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
+    }
+  return g_define_type_id__volatile;
 }
-#endif
-
-/*---------------------------------------------------------------------*/
-/*    Boilerplate                                                      */
-/*---------------------------------------------------------------------*/
-#define _do_init( _ ) \
-  GST_DEBUG_CATEGORY_INIT( bgl_gst_port_src_debug, \
-			   "bglportsrc", \
-			   0, \
-			   "bglportsrc element" );
-
-GST_BOILERPLATE_FULL( BglPortSrc,
-		      bgl_gst_port_src,
-		      GstBaseSrc,
-		      GST_TYPE_BASE_SRC,
-		      _do_init );
 
 /*---------------------------------------------------------------------*/
 /*    Local functions                                                  */
@@ -309,7 +310,7 @@ bgl_gst_port_src_finalize( GObject * obj
       src->uri = 0;
    }
    
-   G_OBJECT_CLASS( parent_class )->finalize( object );
+   G_OBJECT_CLASS( bgl_gst_port_src_parent_class )->finalize( object );
 }
 
 /*---------------------------------------------------------------------*/
@@ -350,11 +351,11 @@ bgl_gst_port_src_set_property( GObject *
 	 src->dump = g_value_get_boolean( value );
 	 break;
       case PROP_CAN_ACTIVATE_PUSH:
-	 g_return_if_fail( !GST_OBJECT_FLAG_IS_SET( object, GST_BASE_SRC_STARTED) );
+	 g_return_if_fail( !GST_OBJECT_FLAG_IS_SET( object, GST_BASE_SRC_FLAG_STARTED) );
 	 GST_BASE_SRC( src )->can_activate_push = g_value_get_boolean( value );
 	 break;
       case PROP_CAN_ACTIVATE_PULL:
-	 g_return_if_fail( !GST_OBJECT_FLAG_IS_SET( object, GST_BASE_SRC_STARTED ) );
+	 g_return_if_fail( !GST_OBJECT_FLAG_IS_SET( object, GST_BASE_SRC_FLAG_STARTED ) );
 	 src->can_activate_pull = g_value_get_boolean( value );
 	 break;
       case PROP_IS_LIVE:
@@ -460,10 +461,10 @@ bgl_gst_port_src_create( GstBaseSrc *bas
 			 guint64 offset,
 			 guint length,
 			 GstBuffer **ret ) {
+   GstMapInfo info;
    BglPortSrc *src;
    GstBuffer *buf;
-   guint8 *readstr;
-   guint readlen;
+   gssize readlen;
   
    src = BGL_GST_PORT_SRC( basesrc );
    
@@ -485,7 +486,7 @@ bgl_gst_port_src_create( GstBaseSrc *bas
 
    /* Check the non emptyness of the buffer */
    if( length == 0 ) {
-      return GST_FLOW_UNEXPECTED;
+      return GST_FLOW_EOS;
    }
 
 /*    if( (src->parentsize == length) && src->parent ) {               */
@@ -503,47 +504,29 @@ bgl_gst_port_src_create( GstBaseSrc *bas
    /* The function rgc_blit_string adds and extra 0 after             */
    /* the read chars, so we have to allocate a buffer of size         */
    /* length + 1, the same thing apply in the g_malloc0 call.         */
-   if( !(buf = gst_buffer_try_new_and_alloc( length + 1 ) ) ) {
-      /* create a brand new buffer */
-      if( !(buf = gst_buffer_new()) ) {
-	 GST_ELEMENT_ERROR( src, CORE, FAILED,
-			    ("Could not allocate buffer.\n"),
-			    ("Could not allocate buffer for object %p\n", src));
+   if( !(buf = gst_buffer_new_allocate( NULL, length + 1, NULL ) ) ) {
+      GST_ELEMENT_ERROR( src, CORE, FAILED,
+			 ("Could not allocate buffer.\n"),
+			 ("Could not allocate buffer for object %p\n", src));
 	 
-	 return GST_FLOW_ERROR;
-      } else {
-	 /* allocate a char array */
-	 if( !(readstr = g_malloc0( length + 1 ) ) ) {;
-	    gst_buffer_unref( buf );
-
-	    GST_ELEMENT_ERROR( src, CORE, FAILED,
-			       ("Could not allocate char array.\n"),
-			       ("Could not allocate buffer for object %p\n", src) );
-	    return GST_FLOW_ERROR;
-	 } else {
-	    GST_BUFFER_MALLOCDATA( buf ) = readstr;
-	 }
-      }
-   } else {
-      readstr = GST_BUFFER_MALLOCDATA( buf );
-      
-/*       if( src->parent != buf ) {                                    */
-/* 	 if( src->parent ) gst_buffer_unref( src->parent );            */
-/* 	                                                               */
-/* 	 src->parentsize = length;                                     */
-/* 	 src->parent = buf;                                            */
-/* 	 gst_buffer_ref( buf );                                        */
-/*       }                                                             */
+      return GST_FLOW_ERROR;
    }
 
+   /* Get access to the buffer data */
+   if ( !gst_buffer_map( buf, &info, GST_MAP_WRITE ) ) {
+      gst_buffer_unref (buf);
+      return GST_FLOW_ERROR;
+   }
+      
 #if( defined( BGL_DEBUG ) )
    fprintf( stderr, "bgl_rgc_blit_string( %p, %p, 0, %d )\n",
-	    src->port, readstr, length );
+	    src->port, info.data, length );
 #endif
-   if( !(readlen = bgl_rgc_blit_string( src->port, readstr, 0, length )) ) {
+   if( !(readlen = bgl_rgc_blit_string( src->port, (char *)info.data, 0, length )) ) {
       /* end of file */
+      gst_buffer_unmap( buf, &info );
       gst_buffer_unref( buf );
-      return GST_FLOW_UNEXPECTED;
+      return GST_FLOW_EOS;
    }
 #if( defined( BGL_DEBUG ) )      
    fprintf( stderr, "bgl_gst_port_src_create(%s:%d)\n  readlen=%d\n  length=%d\n  offset=%d\n",
@@ -554,13 +537,14 @@ bgl_gst_port_src_create( GstBaseSrc *bas
       fprintf( stderr, "  readstr=" );
       for( i = 0; i < readlen; i +=2 ) {
 	 if( (i % 16) == 0 ) fprintf( stderr, "\n    %08x ", i  );
-	 fprintf( stderr, "%02x%02x ", readstr[ i + 1 ], readstr[ i ] );
+	 fprintf( stderr, "%02x%02x ", info.data[ i + 1 ], info.data[ i ] );
       }
       fprintf( stderr, "\n" );
    }
 #endif
 
-   GST_BUFFER_SIZE( buf ) = readlen;
+   gst_buffer_unmap( buf, &info );
+   gst_buffer_set_size( buf, readlen );
    GST_BUFFER_OFFSET( buf ) = offset;
    GST_BUFFER_OFFSET_END( buf ) = offset + readlen;
 
@@ -575,7 +559,7 @@ bgl_gst_port_src_create( GstBaseSrc *bas
       GST_LOG_OBJECT( src, "post handoff emit" );
    }
   
-   src->bytes_sent += GST_BUFFER_SIZE( buf );
+   src->bytes_sent += gst_buffer_get_size( buf );
    src->buffer_count++;
     
    *ret = buf;
@@ -585,44 +569,6 @@ bgl_gst_port_src_create( GstBaseSrc *bas
 
 
 /*---------------------------------------------------------------------*/
-/*    static void                                                      */
-/*    marshal_VOID__MINIOBJECT_OBJECT ...                              */
-/*---------------------------------------------------------------------*/
-static void
-marshal_VOID__MINIOBJECT_OBJECT( GClosure *closure,
-				 GValue *return_value,
-				 guint n_param_values,
-				 const GValue *param_values,
-				 gpointer invocation_hint,
-				 gpointer marshal_data ) {
-   typedef void (*marshalfunc_VOID__MINIOBJECT_OBJECT)
-      (gpointer obj, gpointer arg1, gpointer arg2, gpointer data2);
-   
-   marshalfunc_VOID__MINIOBJECT_OBJECT callback;
-   GCClosure *cc = (GCClosure *)closure;
-   gpointer data1, data2;
-
-   g_return_if_fail( n_param_values == 3 );
-
-   if( G_CCLOSURE_SWAP_DATA( closure ) ) {
-      data1 = closure->data;
-      data2 = g_value_peek_pointer( param_values + 0 );
-   } else {
-      data1 = g_value_peek_pointer( param_values + 0 );
-      data2 = closure->data;
-   }
-   
-   callback =
-      (marshalfunc_VOID__MINIOBJECT_OBJECT)
-      (marshal_data ? marshal_data : cc->callback);
-
-   callback( data1,
-	     gst_value_get_mini_object (param_values + 1),
-	     g_value_get_object( param_values + 2 ),
-	     data2);
-}
-
-/*---------------------------------------------------------------------*/
 /*    static gboolean                                                  */
 /*    bgl_gst_port_src_event_handler ...                               */
 /*---------------------------------------------------------------------*/
@@ -690,19 +636,17 @@ bgl_gst_port_src_get_times( GstBaseSrc *
 /*---------------------------------------------------------------------*/
 static void
 bgl_gst_port_src_base_init( gpointer g_class ) {
-   static GstElementDetails element_details = {
-      "Bigloo input-port source",
-      "Source",
-      "Get data from a Bigloo input port",
-      "Cyprien Nicolas <Cyprien.Nicolas@sophia.inria.fr>"
-   };
    GstElementClass *element_class = GST_ELEMENT_CLASS( g_class );
 
    gst_element_class_add_pad_template(
       element_class, gst_static_pad_template_get( &srctemplate ) );
    
-   gst_element_class_set_details(
-      element_class, &element_details );
+   gst_element_class_set_static_metadata(
+      element_class,
+      "Bigloo input-port source",
+      "Source",
+      "Get data from a Bigloo input port",
+      "Cyprien Nicolas <Cyprien.Nicolas@sophia.inria.fr>" );
 }
 
 /*---------------------------------------------------------------------*/
@@ -710,11 +654,13 @@ bgl_gst_port_src_base_init( gpointer g_c
 /*    bgl_gst_port_src_class_init ...                                  */
 /*---------------------------------------------------------------------*/
 static void
-bgl_gst_port_src_class_init( BglPortSrcClass * klass ) {
+bgl_gst_port_src_class_init( gpointer klass, gpointer class_data ) {
   GObjectClass *gobject_class = G_OBJECT_CLASS( klass );
   GstElementClass *gstelement_class = GST_ELEMENT_CLASS( klass );
   GstBaseSrcClass *gstbase_src_class = GST_BASE_SRC_CLASS( klass );
 
+  bgl_gst_port_src_parent_class = g_type_class_peek_parent (klass);
+
   gobject_class->finalize =
      GST_DEBUG_FUNCPTR( bgl_gst_port_src_finalize );
   gobject_class->set_property =
@@ -793,7 +739,7 @@ bgl_gst_port_src_class_init( BglPortSrcC
   bgl_gst_port_src_signals[ SIGNAL_HANDOFF ] =
       g_signal_new( "handoff", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST,
       G_STRUCT_OFFSET (BglPortSrcClass, handoff), NULL, NULL,
-      marshal_VOID__MINIOBJECT_OBJECT, G_TYPE_NONE, 2, GST_TYPE_BUFFER,
+      g_cclosure_marshal_generic, G_TYPE_NONE, 2, GST_TYPE_BUFFER,
       GST_TYPE_PAD );
 
   
@@ -829,7 +775,8 @@ bgl_gst_port_src_class_init( BglPortSrcC
 /*    bgl_gst_port_src_init ...                                        */
 /*---------------------------------------------------------------------*/
 static void
-bgl_gst_port_src_init( BglPortSrc *portsrc, BglPortSrcClass *g_class) {
+bgl_gst_port_src_init( GTypeInstance *instance, gpointer klass ) {
+   BglPortSrc *portsrc = (BglPortSrc *)instance;
    portsrc->buffer_count = 0;
    portsrc->silent = DEFAULT_SILENT;
    portsrc->signal_handoffs = DEFAULT_SIGNAL_HANDOFFS;
@@ -868,29 +815,14 @@ plugin_init( GstPlugin * plugin ) {
 /*---------------------------------------------------------------------*/
 gboolean
 bgl_gst_plugin_port_src_init() {
-#if( defined( GST_PLUGIN_DEFINE_STATIC ) )
-   GST_PLUGIN_DEFINE( GST_VERSION_MAJOR,
-		      GST_VERSION_MINOR,
-		      "bglportsrc",
-		      "Bigloo Port Plugin",
-		      plugin_init,
-		      PLUGIN_VERSION,
-		      PLUGIN_LICENSE,
-		      PLUGIN_PACKAGE,
-		      PLUGIN_URL );
-
-   _gst_plugin_register_static( &gst_plugin_desc );
-
-   return TRUE;
-#else      
-   gst_plugin_register_static( GST_VERSION_MAJOR,
-			       GST_VERSION_MINOR,
-			       "bglportsrc",
-			       "Bigloo Port Plugin",
-			       plugin_init,
-			       PLUGIN_VERSION,
-			       PLUGIN_LICENSE,
-			       PLUGIN_PACKAGE,
-			       PLUGIN_URL );
-#endif
+   return gst_plugin_register_static( GST_VERSION_MAJOR,
+				      GST_VERSION_MINOR,
+				      "bglportsrc",
+				      "Bigloo Port Plugin",
+				      plugin_init,
+				      PLUGIN_VERSION,
+				      PLUGIN_LICENSE,
+				      PACKAGE,
+				      PLUGIN_PACKAGE,
+				      PLUGIN_URL );
 }
--- autoconf/gstreamer.orig	2019-07-04 00:09:45.000000000 -0600
+++ autoconf/gstreamer	2019-09-12 13:47:36.634486388 -0600
@@ -14,7 +14,7 @@
 #*    flags                                                            */
 #*---------------------------------------------------------------------*/
 cflags=
-gstversion=0.10
+gstversion=1.0
 pkgconfig=pkg-config
 pkg=
 
@@ -122,7 +122,7 @@ new_pad (GstElement *element, GstPad *pa
   GstPad *sinkpad;
   g_print ("Dynamic pad created, linking parser/decoder\n");
 
-  sinkpad = gst_element_get_pad (decoder, "sink");
+  sinkpad = gst_element_get_static_pad (decoder, "sink");
   gst_pad_link (pad, sinkpad);
 
   gst_object_unref (sinkpad);
@@ -136,7 +136,7 @@ int main (int argc, char *argv[]) {
   loop = g_main_loop_new (NULL, FALSE);
 
   {
-     GstRegistry* gregistry = gst_registry_get_default ();
+     GstRegistry* gregistry = gst_registry_get ();
      GList *glist = gst_registry_get_feature_list( gregistry, GST_TYPE_ELEMENT_FACTORY );
      while( glist ) {
 	GstElementFactory *factory;
--- autoconf/gstreameraudio.orig	2019-07-04 00:09:45.000000000 -0600
+++ autoconf/gstreameraudio	2019-09-12 14:20:23.092542598 -0600
@@ -14,7 +14,7 @@
 #*    flags                                                            */
 #*---------------------------------------------------------------------*/
 cflags=
-gstversion=0.10
+gstversion=1.0
 pkgconfig=pkg-config
 
 #*---------------------------------------------------------------------*/