GstMeta buffers

John P Poet jppoet at gmail.com
Thu Sep 29 22:21:39 UTC 2016


In the example for creating a new meta info type:

https://gstreamer.freedesktop.org/data/doc/gstreamer/head/pwg/html/section-allocation-meta.html

It says

> Lastly, you implement a gst_buffer_add_*_meta() that adds the metadata
implementation to a buffer and sets the values of the metadata.

And the example just show assigning values to local variables in the
structure.  It does not show any memory allocation, so I assume that is not
necessary.  In that structure I would like it to hold a c++ class:

struct _VANCMeta {
  GstMeta       meta;
  AncillaryPacket packet;
};

AncillaryPacket would have various methods as well as data.  Will that
work, or do I need to use more "base" types in my metadata structure?
There are only a few data elements in there, so just having those elements
in the VANCMeta struct would be easy, but it would be nice to have the
methods automatically available by whatever reads the metadata.

If I do need to just have 'simple' data types, and one of those types is an
array of uint16_t, is there a preferred way of allocating the memory for
it?  I assume I would use a GArray rather than a GstBuffer, right?   Or
would I just use a basic C style array of uint16_t?

struct _VANCMeta {
  GstMeta       meta;

  // primary data id.
  int data_id;
  // data block number (type 1), or secondary data id (type 2).
  int dbn_sdid;
  // number of words of data.
  int data_count;
  // actual data.
  uint16_t* buf;
};

I would like to understand how the memory is deallocated after the life of
the struct is over.  Who is responsible for that deallocation, and how do
they know how to deallocate the memory?

Thanks,

John
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20160929/319734a4/attachment.html>


More information about the gstreamer-devel mailing list