GstMeta buffers
John P Poet
jppoet at gmail.com
Thu Sep 29 22:26:28 UTC 2016
I forgot to ask another related question. When reading Ancillary data
embedded in the frame for a Decklink source, there can be multiple VANC
packets in a a single frame. Do I need to combine those into a single
GstMeta object, or can I have several _VANCMeta objects attached to a video
frame buffer? If I can have several, do I need to do anything special to
maintain serialization, so they are parsed in the correct order?
Thanks,
John
On Thu, Sep 29, 2016 at 4:21 PM John P Poet <jppoet at gmail.com> wrote:
> 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/68ad5df8/attachment.html>
More information about the gstreamer-devel
mailing list