gst_buffer_get getting stale data

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

gst_buffer_get getting stale data

HtGst

Hi

On gstreamer 1.4.5, running on CentOs 7.2, having problem with reading meta data attached to buffers. The following scenario is the where the problem is observed:

State 1:

Meta data is conditionally attached to outgoing buffers, i.e., only if there is valid meta, it would get attached, e.g.:

if(userdata){

                    gst_buffer_add_userdata_meta (frame->output_buffer,& userdata_meta);

Intended recipient of meta properly ignores  gst_buffer_get  call:

GstUserdataMeta *userdata_meta=gst_buffer_get_userdata_meta (input_frame->input_buffer);

      if(userdata_meta && userdata_meta->userdatameta){

          // This is not executed

      }

 

State 2:

Meta attachment condition becomes true, proper meta data are attached

Recipient properly extracts meta:

GstUserdataMeta *userdata_meta=gst_buffer_get_userdata_meta (input_frame->input_buffer);

      if(userdata_meta && userdata_meta->userdatameta){

          // This is  executed

      }

State 3:

Meta data attachment condition becomes false, no meta is attached

Recipient still extracts meta!

 

It is noted that due to buffering, it is expected that there would be a lag from the time that meta attachment condition become false to the time that recipient is expected to ignor gst_buffer_get calls. Here is what I am getting:

 

On State 2, the recipient sees: GST_INFO_OBJECT(xx,"%p %p\n”, userdata_meta, userdata_meta->userdatameta);

0:00:52.027950698 27204      0x16e6f20 INFO       xx           xx.cpp:1547:gst_xx_encode_frame:<xx> 0x7f8bde757e20 0x7f8c0826ab90

0:00:52.047961117 27204      0x16e6f20 INFO       xx          xx.cpp:1547:gst_xx_encode_frame:<xx> 0x7f8bde864ae0 0x7f8c082683f0

0:00:52.068356845 27204      0x16e6f20 INFO       xx            xx.cpp:1547:gst_xx_encode_frame:<xx> 0x7f8bdf2e8120 0x7f8c082685b0

0:00:52.087984535 27204      0x16e6f20 INFO       xx             xx.cpp:1547:gst_xx_encode_frame:<xx> 0x7f8bdf2eeea0 0x7f8c08268db0

0:00:52.107973286 27204      0x16e6f20 INFO       xx           xx.cpp:1547:gst_xx_encode_frame:<xx> 0x7f8bde76d1e0 0x7f8c080b2620

(Note that meta field address changes per call, as the meta server is allocating new memory for each meta data)

 

On State 3,  the recipient sees: GST_INFO_OBJECT(xx,"%p %p\n”, userdata_meta, userdata_meta->userdatameta);

0:00:53.528208158 27204      0x16e6f20 INFO                  xx xx.cpp:1547:gst_xx_encode_frame:<xx> 0x7f8bde8abe20 0x7f8c0bf11a40

0:00:53.547948573 27204      0x16e6f20 INFO                  xx xx.cpp:1547:gst_xx_encode_frame:<xx> 0x7f8bde845ae0 0x7f8c0bf11a40

0:00:53.567948574 27204      0x16e6f20 INFO                  xx xx.cpp:1547:gst_xx_encode_frame:<xx> 0x7f8bde74f1e0 0x7f8c0bf11a40

0:00:53.587983423 27204      0x16e6f20 INFO                  xx xx.cpp:1547:gst_xx_encode_frame:<xx> 0x7f8bde785ae0 0x7f8c0bf11a40

0:00:53.607985743 27204      0x16e6f20 INFO                  xx xx.cpp:1547:gst_xx_encode_frame:<xx> 0x7f8bde7681e0 0x7f8c0bf11a40

Note that recipient keeps reading the same stale memory location.

 

Any thoughts?

Cheers,

 

 

 


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel