gstreamer1.0, gst-omx, gst0.10 vs gst1.0

jlancaster jeff_lancaster at msn.com
Fri Nov 20 08:36:34 PST 2015


Here is a better pipeline that produces and describes the underlying problem:

(BTW, I'm trying to port our gst-omx components from 0.10 to 1.0-1.6.1, one
of which is the omxbufferalloc)

GST_DEBUG="*:3,omx*:9" gst-launch-1.0 -v videotestsrc !
'video/x-raw,format=(string)NV12,width=640,height=480,framerate=(fraction)30/1'
! omxbufferalloc num-buffers=5 ! queue ! fakesink

The above pipeline works fine without the queue (curious, only one frame is
queued during preroll), with the queue omxbufferalloc (which uses
omxbufferpool) we have a preroll problem shown in the following log. Please
see the "no more buffer" warning - gst_atomic_queue_pop() attempt to pop an
already empty buffer.

Which produces the logfile:

0:00:00.165723050  4695    0x5f5a0 DEBUG                    omx
gstomx.c:2876:plugin_init: Registering element 'omxh264enc'
0:00:00.166487000  4695    0x5f5a0 DEBUG                    omx
gstomx.c:2876:plugin_init: Registering element 'omxjpegenc'
0:00:00.166712050  4695    0x5f5a0 DEBUG                    omx
gstomx.c:2876:plugin_init: Registering element 'omxscaler'
0:00:00.168384750  4695    0x5f5a0 LOG           omxbufferalloc
gstomxbufferalloc.c:147:gst_omx_buffer_alloc_init:<GstOMXBufferAlloc at 0x780d0>
initialiazing OMX buffer alloc
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
0:00:01.251212100  4695    0x2ee00 FIXME                default
gstutils.c:3766:gst_pad_create_stream_id_internal:<videotestsrc0:src>
Creating random stream-id, consider implementing a deterministic way of
creating a stream-id
/GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0.GstPad:src: caps =
"video/x-raw\,\ format\=\(string\)NV12\,\ width\=\(int\)640\,\
height\=\(int\)480\,\ framerate\=\(fraction\)30/1\,\
pixel-aspect-ratio\=\(fraction\)1/1\,\
interlace-mode\=\(string\)progressive"
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps =
"video/x-raw\,\ format\=\(string\)NV12\,\ width\=\(int\)640\,\
height\=\(int\)480\,\ framerate\=\(fraction\)30/1\,\
pixel-aspect-ratio\=\(fraction\)1/1\,\
interlace-mode\=\(string\)progressive"
/GstPipeline:pipeline0/GstOMXBufferAlloc:omxbufferalloc0.GstPad:src: caps =
"video/x-raw\,\ format\=\(string\)NV12\,\ width\=\(int\)640\,\
height\=\(int\)480\,\ framerate\=\(fraction\)30/1\,\
pixel-aspect-ratio\=\(fraction\)1/1\,\
interlace-mode\=\(string\)progressive"
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = "video/x-raw\,\
format\=\(string\)NV12\,\ width\=\(int\)640\,\ height\=\(int\)480\,\
framerate\=\(fraction\)30/1\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\
interlace-mode\=\(string\)progressive"
/GstPipeline:pipeline0/GstOMXBufferAlloc:omxbufferalloc0.GstPad:sink: caps =
"video/x-raw\,\ format\=\(string\)NV12\,\ width\=\(int\)640\,\
height\=\(int\)480\,\ framerate\=\(fraction\)30/1\,\
pixel-aspect-ratio\=\(fraction\)1/1\,\
interlace-mode\=\(string\)progressive"
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps =
"video/x-raw\,\ format\=\(string\)NV12\,\ width\=\(int\)640\,\
height\=\(int\)480\,\ framerate\=\(fraction\)30/1\,\
pixel-aspect-ratio\=\(fraction\)1/1\,\
interlace-mode\=\(string\)progressive"
0:00:01.257274950  4695    0x2ee00 DEBUG         omxbufferalloc
gstomxbufferalloc.c:227:gst_omx_buffer_alloc_propose_allocation:<omxbufferalloc0>
create new pool
0:00:01.257438650  4695    0x2ee00 DEBUG         omxbufferalloc
gstomxbufferalloc.c:174:gst_omx_buffer_alloc_allocate_buffers:<omxbufferalloc0>
allocating 5 buffers of size:460800!!
0:00:01.257704200  4695    0x2ee00 DEBUG         omxbufferalloc
gstomxbufferalloc.c:189:gst_omx_buffer_alloc_allocate_buffers:<omxbufferalloc0>
allocated outbuf:0x414dc080
0:00:01.257855950  4695    0x2ee00 DEBUG         omxbufferalloc
gstomxbufferalloc.c:189:gst_omx_buffer_alloc_allocate_buffers:<omxbufferalloc0>
allocated outbuf:0x4154c880
0:00:01.257994400  4695    0x2ee00 DEBUG         omxbufferalloc
gstomxbufferalloc.c:189:gst_omx_buffer_alloc_allocate_buffers:<omxbufferalloc0>
allocated outbuf:0x415bd080
0:00:01.258129850  4695    0x2ee00 DEBUG         omxbufferalloc
gstomxbufferalloc.c:189:gst_omx_buffer_alloc_allocate_buffers:<omxbufferalloc0>
allocated outbuf:0x4162d880
0:00:01.258265950  4695    0x2ee00 DEBUG         omxbufferalloc
gstomxbufferalloc.c:189:gst_omx_buffer_alloc_allocate_buffers:<omxbufferalloc0>
allocated outbuf:0x4170e880
0:00:01.258904650  4695    0x2ee00 DEBUG          omxbufferpool
gstomxbufferpool.c:640:gst_omx_buffer_pool_init:<GstOMXBufferPool at 0x826c0>
Initializing OMX buffer pool 0x826c0
0:00:01.259279600  4695    0x2ee00 DEBUG          omxbufferpool
gstomxbufferpool.c:656:gst_omx_buffer_pool_new:<omxbufferpool0> Created a
new OMX buffer pool 0x826c0
0:00:01.259456350  4695    0x2ee00 DEBUG          omxbufferpool
gstomxbufferpool.c:302:gst_omx_buffer_pool_set_config:<omxbufferpool0>
Configuring pool 0x826c0 min buffers:5 max buffers: 5
0:00:01.260068700  4695    0x2ee00 DEBUG          omxbufferpool
gstomxbufferpool.c:302:gst_omx_buffer_pool_set_config:<omxbufferpool0>
Configuring pool 0x826c0 min buffers:5 max buffers: 5
0:00:01.260414950  4695    0x2ee00 DEBUG          omxbufferpool
gstomxbufferpool.c:233:gst_omx_buffer_pool_start:<omxbufferpool0> XXX
priv->port->port_def.nBufferCountActual=0x5
0:00:01.260543850  4695    0x2ee00 LOG            omxbufferpool
gstomxbufferpool.c:368:gst_omx_buffer_pool_alloc_buffer:<omxbufferpool0>
allocating buffer for OMX buffer 0:0x414dc080
0:00:01.260775350  4695    0x2ee00 LOG            omxbufferpool
gstomxbufferpool.c:533:gst_omx_buffer_pool_release_buffer:<omxbufferpool0>
releasing buffer 0x98850
0:00:01.260893400  4695    0x2ee00 LOG            omxbufferpool
gstomxbufferpool.c:368:gst_omx_buffer_pool_alloc_buffer:<omxbufferpool0>
allocating buffer for OMX buffer 1:0x4154c880
0:00:01.261024750  4695    0x2ee00 LOG            omxbufferpool
gstomxbufferpool.c:533:gst_omx_buffer_pool_release_buffer:<omxbufferpool0>
releasing buffer 0x988f0
0:00:01.261133250  4695    0x2ee00 LOG            omxbufferpool
gstomxbufferpool.c:368:gst_omx_buffer_pool_alloc_buffer:<omxbufferpool0>
allocating buffer for OMX buffer 2:0x415bd080
0:00:01.261262150  4695    0x2ee00 LOG            omxbufferpool
gstomxbufferpool.c:533:gst_omx_buffer_pool_release_buffer:<omxbufferpool0>
releasing buffer 0x98990
0:00:01.261370350  4695    0x2ee00 LOG            omxbufferpool
gstomxbufferpool.c:368:gst_omx_buffer_pool_alloc_buffer:<omxbufferpool0>
allocating buffer for OMX buffer 3:0x4162d880
0:00:01.261498400  4695    0x2ee00 LOG            omxbufferpool
gstomxbufferpool.c:533:gst_omx_buffer_pool_release_buffer:<omxbufferpool0>
releasing buffer 0x98a30
0:00:01.261606950  4695    0x2ee00 LOG            omxbufferpool
gstomxbufferpool.c:368:gst_omx_buffer_pool_alloc_buffer:<omxbufferpool0>
allocating buffer for OMX buffer 4:0x4170e880
0:00:01.261734300  4695    0x2ee00 LOG            omxbufferpool
gstomxbufferpool.c:533:gst_omx_buffer_pool_release_buffer:<omxbufferpool0>
releasing buffer 0x98ad0
0:00:01.261915700  4695    0x2ee00 LOG            omxbufferpool
gstomxbufferpool.c:483:gst_omx_buffer_pool_acquire_buffer:<omxbufferpool0>
XXXX gst_atomic_queue_pop 0x98850
0:00:01.262029000  4695    0x2ee00 LOG            omxbufferpool
gstomxbufferpool.c:486:gst_omx_buffer_pool_acquire_buffer:<omxbufferpool0>
acquired buffer 0x98850
0:00:01.290327650  4695    0x2ee00 LOG            omxbufferpool
gstomxbufferpool.c:483:gst_omx_buffer_pool_acquire_buffer:<omxbufferpool0>
XXXX gst_atomic_queue_pop 0x988f0
0:00:01.290558450  4695    0x2ee00 LOG            omxbufferpool
gstomxbufferpool.c:486:gst_omx_buffer_pool_acquire_buffer:<omxbufferpool0>
acquired buffer 0x988f0
0:00:01.302348500  4695    0x2ee00 LOG            omxbufferpool
gstomxbufferpool.c:483:gst_omx_buffer_pool_acquire_buffer:<omxbufferpool0>
XXXX gst_atomic_queue_pop 0x98990
0:00:01.302491550  4695    0x2ee00 LOG            omxbufferpool
gstomxbufferpool.c:486:gst_omx_buffer_pool_acquire_buffer:<omxbufferpool0>
acquired buffer 0x98990
0:00:01.314046550  4695    0x2ee00 LOG            omxbufferpool
gstomxbufferpool.c:483:gst_omx_buffer_pool_acquire_buffer:<omxbufferpool0>
XXXX gst_atomic_queue_pop 0x98a30
0:00:01.314179500  4695    0x2ee00 LOG            omxbufferpool
gstomxbufferpool.c:486:gst_omx_buffer_pool_acquire_buffer:<omxbufferpool0>
acquired buffer 0x98a30
0:00:01.325909250  4695    0x2ee00 LOG            omxbufferpool
gstomxbufferpool.c:483:gst_omx_buffer_pool_acquire_buffer:<omxbufferpool0>
XXXX gst_atomic_queue_pop 0x98ad0
0:00:01.326043100  4695    0x2ee00 LOG            omxbufferpool
gstomxbufferpool.c:486:gst_omx_buffer_pool_acquire_buffer:<omxbufferpool0>
acquired buffer 0x98ad0
0:00:01.337765000  4695    0x2ee00 LOG            omxbufferpool
gstomxbufferpool.c:483:gst_omx_buffer_pool_acquire_buffer:<omxbufferpool0>
XXXX gst_atomic_queue_pop (nil)
0:00:01.337902750  4695    0x2ee00 WARN           omxbufferpool
gstomxbufferpool.c:489:gst_omx_buffer_pool_acquire_buffer:<omxbufferpool0>
no more buffers
0:00:01.338189400  4695    0x2ee00 WARN                 basesrc
gstbasesrc.c:2943:gst_base_src_loop:<videotestsrc0> error: Internal data
flow error.
0:00:01.338329250  4695    0x2ee00 WARN                 basesrc
gstbasesrc.c:2943:gst_base_src_loop:<videotestsrc0> error: streaming task
paused, reason error (-5)
ERROR: from element /GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0:
Internal data flow error.
Additional debug info:
gstbasesrc.c(2943): gst_base_src_loop ():
/GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0:
streaming task paused, reason error (-5)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
0:00:01.341003050  4695    0x2edb0 LOG            omxbufferpool
gstomxbufferpool.c:533:gst_omx_buffer_pool_release_buffer:<omxbufferpool0>
releasing buffer 0x98850
0:00:01.341232950  4695    0x2edb0 LOG            omxbufferpool
gstomxbufferpool.c:533:gst_omx_buffer_pool_release_buffer:<omxbufferpool0>
releasing buffer 0x988f0
0:00:01.341351600  4695    0x2edb0 LOG            omxbufferpool
gstomxbufferpool.c:533:gst_omx_buffer_pool_release_buffer:<omxbufferpool0>
releasing buffer 0x98990
0:00:01.341466700  4695    0x2edb0 LOG            omxbufferpool
gstomxbufferpool.c:533:gst_omx_buffer_pool_release_buffer:<omxbufferpool0>
releasing buffer 0x98a30
0:00:01.341580650  4695    0x2edb0 LOG            omxbufferpool
gstomxbufferpool.c:533:gst_omx_buffer_pool_release_buffer:<omxbufferpool0>
releasing buffer 0x98ad0
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = "NULL"
/GstPipeline:pipeline0/GstOMXBufferAlloc:omxbufferalloc0.GstPad:src: caps =
"NULL"
0:00:01.344816200  4695    0x5f5a0 DEBUG         omxbufferalloc
gstomxbufferalloc.c:348:gst_omx_buffer_alloc_stop:<omxbufferalloc0>
deallocating buffer 0x96518 (0x414dc080)
0:00:01.345077750  4695    0x5f5a0 DEBUG         omxbufferalloc
gstomxbufferalloc.c:348:gst_omx_buffer_alloc_stop:<omxbufferalloc0>
deallocating buffer 0x96530 (0x4154c880)
0:00:01.345240400  4695    0x5f5a0 DEBUG         omxbufferalloc
gstomxbufferalloc.c:348:gst_omx_buffer_alloc_stop:<omxbufferalloc0>
deallocating buffer 0x96548 (0x415bd080)
0:00:01.345390250  4695    0x5f5a0 DEBUG         omxbufferalloc
gstomxbufferalloc.c:348:gst_omx_buffer_alloc_stop:<omxbufferalloc0>
deallocating buffer 0x96560 (0x4162d880)
/GstPipeline:pipeline0/GstOMXBufferAlloc:omxbufferalloc0.GstPad:sink: caps =
"NULL"
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = "NULL"
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = "NULL"
0:00:01.346906700  4695    0x5f5a0 DEBUG          omxbufferpool
gstomxbufferpool.c:249:gst_omx_buffer_pool_stop:<omxbufferpool0> releasing
buffer from pool
0:00:01.347026750  4695    0x5f5a0 WARN              bufferpool
gstbufferpool.c:537:gst_buffer_pool_set_active:<omxbufferpool0> stop failed
0:00:01.347454500  4695    0x5f5a0 DEBUG          omxbufferpool
gstomxbufferpool.c:249:gst_omx_buffer_pool_stop:<omxbufferpool0> releasing
buffer from pool
0:00:01.347568600  4695    0x5f5a0 WARN              bufferpool
gstbufferpool.c:537:gst_buffer_pool_set_active:<omxbufferpool0> stop failed
0:00:01.347696900  4695    0x5f5a0 DEBUG          omxbufferpool
gstomxbufferpool.c:249:gst_omx_buffer_pool_stop:<omxbufferpool0> releasing
buffer from pool

(gst-launch-1.0:4695): GStreamer-CRITICAL **: gst_atomic_queue_pop:
assertion 'queue != NULL' failed
Caught SIGSEGV
Spinning.  Please run 'gdb gst-launch-1.0 4695' to continue debugging,
Ctrl-C to quit, or Ctrl-\ to dump core.





-----
Jeff Lancaster
--
View this message in context: http://gstreamer-devel.966125.n4.nabble.com/gstreamer1-0-gst-omx-gst0-10-vs-gst1-0-tp4674290p4674578.html
Sent from the GStreamer-devel mailing list archive at Nabble.com.


More information about the gstreamer-devel mailing list