[Bug 734223] glimagesink: last-sample property useless for planar YUV formats

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Thu Sep 4 04:07:37 PDT 2014


https://bugzilla.gnome.org/show_bug.cgi?id=734223
  GStreamer | gst-plugins-bad | git

--- Comment #7 from Matthew Waters <ystreet00 at gmail.com> 2014-09-04 11:07:30 UTC ---
It seems as thought the convert-sample machinery ends up making a copy of the
memory.  As we only copy the GPU side memory, the original data is lost for the
memory used to download.

Looking at basesrc, it makes the buffer writable to mark a discontinuity.

(gdb) bt
#0  _gl_mem_copy (src=0x7fffe0725250, offset=0, size=172800) at
gstglmemory.c:844
#1  0x00007ffff7b0008f in gst_buffer_copy_into (dest=0x7fffe0725250,
src=0x2a300, flags=(unknown: 172800), offset=0, 
    size=0) at gstbuffer.c:457
#2  0x00007ffff7b004d0 in _gst_buffer_copy (buffer=0x7fffe07047e0) at
gstbuffer.c:517
#3  0x00007ffff7b2bb08 in gst_mini_object_make_writable
(mini_object=0x7fffe07047e0) at gstminiobject.c:322
#4  0x00007ffff56ca7f2 in gst_base_src_loop (pad=0x804b10) at gstbasesrc.c:2829
#5  0x00007ffff7b5dc47 in gst_task_func (task=0x82f170) at gsttask.c:317
#6  0x00007ffff75b5218 in g_thread_pool_thread_proxy (data=<optimized out>) at
gthreadpool.c:307
#7  0x00007ffff75b4895 in g_thread_proxy (data=0x834050) at gthread.c:764
#8  0x00007ffff732f124 in start_thread () from /usr/lib/libpthread.so.0
#9  0x00007ffff70634bd in clone () from /usr/lib/libc.so.6
(gdb) p *(GstPad *)0x804b10
$4 = {object = {object = {g_type_instance = {g_class = 0x60cbe0}, ref_count =
1, qdata = 0x0}, lock = {p = 0x6551f0, 
      i = {6640112, 0}}, name = 0x655220 "src", parent = 0x7f7e60, flags = 256,
control_bindings = 0x0, 

[snip]

(gdb) p *(GstElement *)0x7f7e60
$5 = {object = {object = {g_type_instance = {g_class = 0x6fe140}, ref_count =
1, qdata = 0x0}, lock = {p = 0x655090, 
      i = {6639760, 0}}, name = 0x6febd0 "appsrc0", parent = 0x7fffe06ec290,

[snip]

(gdb) t a a bt

Thread 13 (Thread 0x7fffc3752700 (LWP 20961)):
#0  _gl_mem_copy (src=0x7fffe0725250, offset=0, size=172800) at
gstglmemory.c:844
#1  0x00007ffff7b0008f in gst_buffer_copy_into (dest=0x7fffe0725250,
src=0x2a300, flags=(unknown: 172800), offset=0, 
    size=0) at gstbuffer.c:457
#2  0x00007ffff7b004d0 in _gst_buffer_copy (buffer=0x7fffe07047e0) at
gstbuffer.c:517
#3  0x00007ffff7b2bb08 in gst_mini_object_make_writable
(mini_object=0x7fffe07047e0) at gstminiobject.c:322
#4  0x00007ffff56ca7f2 in gst_base_src_loop (pad=0x804b10) at gstbasesrc.c:2829
#5  0x00007ffff7b5dc47 in gst_task_func (task=0x82f170) at gsttask.c:317
#6  0x00007ffff75b5218 in g_thread_pool_thread_proxy (data=<optimized out>) at
gthreadpool.c:307
#7  0x00007ffff75b4895 in g_thread_proxy (data=0x834050) at gthread.c:764
#8  0x00007ffff732f124 in start_thread () from /usr/lib/libpthread.so.0
#9  0x00007ffff70634bd in clone () from /usr/lib/libc.so.6

[snip]

Thread 1 (Thread 0x7ffff7fc0700 (LWP 20764)):
#0  0x00007ffff705a8e1 in ppoll () from /usr/lib/libc.so.6
#1  0x00007ffff7b42a62 in gst_poll_wait (set=0x7fd190, timeout=4) at
gstpoll.c:1248
#2  0x00007ffff7b05707 in gst_bus_timed_pop_filtered (bus=0x7bd490,
timeout=25000000000, types=2097154) at gstbus.c:542
#3  0x00007ffff5916647 in gst_video_convert_sample (sample=0x7fd4a0,
to_caps=0x7fffe06ec290, timeout=140737488343008, 
    error=0xffffffffffffffff) at convertframe.c:303
#4  0x00007ffff644223e in gst_play_sink_convert_sample (playsink=0x8351e0,
caps=0x7fd450) at gstplaysink.c:3956
#5  0x00007ffff666cdf0 in ffi_call_unix64 () from /usr/lib/libffi.so.6
#6  0x00007ffff666c861 in ffi_call () from /usr/lib/libffi.so.6
#7  0x00007ffff78894b4 in g_cclosure_marshal_generic (closure=0x7c7000,
return_gvalue=0x7fffffffd870, 
    n_param_values=<optimized out>, param_values=<optimized out>,
invocation_hint=<optimized out>, 
    marshal_data=0x7ffff642f200 <gst_play_bin_convert_sample>) at
gclosure.c:1445
#8  0x00007ffff7888cc5 in g_closure_invoke (closure=0x7c7000,
return_value=0x7fffffffd870, n_param_values=2, 
    param_values=0x7fffffffd7a0, invocation_hint=0x7fffffffd740) at
gclosure.c:768
---Type <return> to continue, or q <return> to quit---
#9  0x00007ffff789a262 in signal_emit_unlocked_R (node=<optimized out>,
detail=detail at entry=0, 
    instance=instance at entry=0x7f5b40,
emission_return=emission_return at entry=0x7fffffffd870, 
    instance_and_params=instance_and_params at entry=0x7fffffffd7a0) at
gsignal.c:3589
#10 0x00007ffff78a2c8d in g_signal_emit_valist (instance=<optimized out>,
signal_id=<optimized out>, 
    detail=<optimized out>, var_args=<optimized out>) at gsignal.c:3317
#11 0x00007ffff78a387a in g_signal_emit_by_name (instance=0x8351e0, 
    detailed_signal=0x1 <error: Cannot access memory at address 0x1>) at
gsignal.c:3403
#12 0x0000000000400d37 in main (argc=2, argv=0x7fffffffdc28) at
convert_frame.c:30

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list