<div dir="ltr"><div dir="ltr" class="gmail_msg">I noticed this warning fly by:<br><br>gst-libs/gst/vanc/Makefile.am:17: warning: variable 'libgstvanc_@GST_API_VERSION@la_SOURCES' is defined but no program or<br class="gmail_msg">gst-libs/gst/vanc/Makefile.am:17: library has 'libgstvanc_@GST_API_VERSION@la' as canonical name (possible typo)<br class="gmail_msg"><br></div><div class="gmail_msg">How does it know that?  Could that be part of my problem?<br><br></div><div class="gmail_msg">John<br class="gmail_msg"></div><br class="gmail_msg"><div class="gmail_quote gmail_msg"><div dir="ltr" class="gmail_msg">On Mon, Oct 10, 2016 at 4:46 PM John P Poet <<a href="mailto:jppoet@gmail.com" class="gmail_msg" target="_blank">jppoet@gmail.com</a>> wrote:<br class="gmail_msg"></div><blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="gmail_msg"><div dir="ltr" class="gmail_msg"><div class="gmail_msg"><div class="gmail_msg"><div class="gmail_msg"><div class="gmail_msg"><div class="gmail_msg"><div class="gmail_msg"><div class="gmail_msg">I am writing a new meta lib, and have been battling trying to solve:<br class="gmail_msg"><br class="gmail_msg"><b class="gmail_msg">```</b><br class="gmail_msg"><span style="font-family:monospace" class="gmail_msg">$ gst-inspect-1.0 decklinkvideosrc<br class="gmail_msg"><br class="gmail_msg">(gst-plugin-scanner:10063): GStreamer-WARNING **: Failed to load plugin '/opt/gst/lib/gstreamer-1.0/</span><span style="font-family:monospace" class="gmail_msg">libgstdecklink.so': /opt/gst/lib/gstreamer-1.0/</span><span style="font-family:monospace" class="gmail_msg">libgstdecklink.so: undefined symbol: vanc_meta_get_info</span><br class="gmail_msg"><b class="gmail_msg">```</b><br class="gmail_msg"><br class="gmail_msg"></div>What is interesting about this, is that the exact same library/header/c file defines:<br class="gmail_msg"><b class="gmail_msg">```</b><br class="gmail_msg"><span style="font-family:monospace" class="gmail_msg">VANCMeta * gst_buffer_add_vanc_meta (GstBuffer * buffer,<br class="gmail_msg">                              </span><span style="font-family:monospace" class="gmail_msg">       gint did, gint dbn_sdid,<br class="gmail_msg">                              </span><span style="font-family:monospace" class="gmail_msg">       uint16_t * data, gsize size,<br class="gmail_msg">                              </span><span style="font-family:monospace" class="gmail_msg">       uint16_t checksum);</span><br class="gmail_msg"><b class="gmail_msg">```</b><br class="gmail_msg"><br class="gmail_msg"></div>And that function links/runs prefectly when used in decklinkvideosrc.  It is only when adding a call to <br class="gmail_msg"><b class="gmail_msg">```</b><br class="gmail_msg"><span style="font-family:monospace" class="gmail_msg">const  GstMetaInfo *vanc_meta_get_info (void);</span><br class="gmail_msg"><b class="gmail_msg">```</b><br class="gmail_msg"><br class="gmail_msg"></div>That I get that undefined symbol error.  I have been beating my head against this for a couple of days, so I hope a fresh pair of eyes will spot what I am doing wrong.<br class="gmail_msg"><br class="gmail_msg"></div>The relevant parts are:<br class="gmail_msg"><br class="gmail_msg"></div><span style="font-family:monospace" class="gmail_msg">gstvancmeta.h<br class="gmail_msg"></span>```<span style="font-family:monospace" class="gmail_msg"><br class="gmail_msg">#ifndef _GST_VANC_META_H_<br class="gmail_msg">#define _GST_VANC_META_H_<br class="gmail_msg"><br class="gmail_msg">#ifdef __cplusplus<br class="gmail_msg">extern "C"<br class="gmail_msg">{<br class="gmail_msg">#endif<br class="gmail_msg"><br class="gmail_msg">#include <gst/gst.h><br class="gmail_msg">#include <stdint.h></span><br class="gmail_msg"><span style="font-family:monospace" class="gmail_msg"><br class="gmail_msg">...<br class="gmail_msg"><br class="gmail_msg">/* implementation */<br class="gmail_msg">const  GstMetaInfo *vanc_meta_get_info (void);<br class="gmail_msg">#define GST_VANC_META_INFO (vanc_meta_get_info ())<br class="gmail_msg"><br class="gmail_msg">VANCMeta * gst_buffer_add_vanc_meta (GstBuffer * buffer,<br class="gmail_msg">                              </span><span style="font-family:monospace" class="gmail_msg">       gint did, gint dbn_sdid,<br class="gmail_msg">                              </span><span style="font-family:monospace" class="gmail_msg">       uint16_t * data, gsize size,<br class="gmail_msg">                              </span><span style="font-family:monospace" class="gmail_msg">       uint16_t checksum);<br class="gmail_msg"><br class="gmail_msg"></span>...<br class="gmail_msg"><b class="gmail_msg">```</b><span style="font-family:monospace" class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"></span></div><span style="font-family:monospace" class="gmail_msg">gstvancmeta.c<br class="gmail_msg"></span><b class="gmail_msg">```</b><span style="font-family:monospace" class="gmail_msg"><br class="gmail_msg">#include "gstvancmeta.h"<br class="gmail_msg">...<br class="gmail_msg"><br class="gmail_msg">const GstMetaInfo<br class="gmail_msg">  *vanc_meta_get_info (void)<br class="gmail_msg">{<br class="gmail_msg">  static const GstMetaInfo *meta_info = NULL;<br class="gmail_msg"><br class="gmail_msg">  if (g_once_init_enter (&meta_info)) {<br class="gmail_msg">    const GstMetaInfo *mi = gst_meta_register (VANC_META_API_TYPE,<br class="gmail_msg">                              </span><span style="font-family:monospace" class="gmail_msg">                 "VANCMeta",<br class="gmail_msg">                              </span><span style="font-family:monospace" class="gmail_msg">                 sizeof (VANCMeta),<br class="gmail_msg">                              </span><span style="font-family:monospace" class="gmail_msg">                 vanc_meta_init,<br class="gmail_msg">                              </span><span style="font-family:monospace" class="gmail_msg">                 vanc_meta_free,<br class="gmail_msg">                              </span><span style="font-family:monospace" class="gmail_msg">                 vanc_meta_transform);<br class="gmail_msg">    g_once_init_leave (&meta_info, mi);<br class="gmail_msg">  }<br class="gmail_msg">  return meta_info;<br class="gmail_msg">}<br class="gmail_msg"><br class="gmail_msg">VANCMeta *<br class="gmail_msg">  gst_buffer_add_vanc_meta (GstBuffer * buffer,<br class="gmail_msg">                            gint did, gint dbn_sdid,<br class="gmail_msg">                            uint16_t * data, gsize size,<br class="gmail_msg">                            uint16_t checksum)<br class="gmail_msg">{<br class="gmail_msg">  VANCMeta *vmeta;<br class="gmail_msg"><br class="gmail_msg">  g_return_val_if_fail (GST_IS_BUFFER (buffer), NULL);<br class="gmail_msg"><br class="gmail_msg">  vmeta = (VANCMeta *) gst_buffer_add_meta (buffer,<br class="gmail_msg">                              </span><span style="font-family:monospace" class="gmail_msg">             GST_VANC_META_INFO, NULL);<br class="gmail_msg">...<br class="gmail_msg">  return vmeta;<br class="gmail_msg">}</span><br class="gmail_msg"><b class="gmail_msg">```</b><br class="gmail_msg"><br class="gmail_msg"></div>And then I call them from code in gstdecklinkvideosrc.cpp, for example:<br class="gmail_msg"><b class="gmail_msg">```</b><br class="gmail_msg"><span style="font-family:monospace" class="gmail_msg">static void packetizeComponentAncillary(</span><span style="font-family:monospace" class="gmail_msg">GstDecklinkVideoSrc *self,<br class="gmail_msg">                              </span><span style="font-family:monospace" class="gmail_msg">          std::vector<uint16_t> &data,<br class="gmail_msg">                              </span><span style="font-family:monospace" class="gmail_msg">          GstBuffer * buffer)<br class="gmail_msg">{<br class="gmail_msg">   const GstMetaInfo *vanc_info = vanc_meta_get_info ();<br class="gmail_msg"> ...<br class="gmail_msg">    if (usableVANC(did, dbn_sdid)) {<br class="gmail_msg">      gst_buffer_add_vanc_meta (buffer, did, dbn_sdid, &data[idx + 6],<br class="gmail_msg">                               data_count, chksum_e);<br class="gmail_msg">      GST_WARNING_OBJECT (self, "VANC meta added");<br class="gmail_msg">    }<br class="gmail_msg">  }<br class="gmail_msg">}</span><br class="gmail_msg"><b class="gmail_msg">```</b><br class="gmail_msg"><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">I only add the call to vanc_meta_get_info () there just to see if it would link, since it does not in gst-libav.  It does not either place.  In gstdecklink it is linking the .la file, and in gst-libav it is linking the .so file.<br class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">I will attach the full patch in case it helps.<br class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Thank you,<br class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">John<br class="gmail_msg"></div></div></div></blockquote></div></div>