Hi,all!
I work on the ics 4.0.3 and omap4 .I use the gstreamer and gst-openmax to encode the h264 file. the command is "gst-launch -v filesrc location=/mnt/ext_sdcard/nv12.yuv ! videoparse width=1280 height=720 ! omx_h264enc ! avimux ! filesink location=/mnt/sdcard/test10.avi sync=false --gst-debug=omx:5".
1) Now the encoder will be blocked when the request_buffer function (in gstomx_port.c) be called. I find that the port queue length = 0.so Is the number of buffer which from the filesrc put into the omx_h264enc is zero case the blocked or the omx_h264enc encoder get the buffer but can not return them to queue case the state?
static OMX_BUFFERHEADERTYPE *
request_buffer (GOmxPort *port)
{
ERROR (port, "===> queue len=%d", port->queue->length);
return async_queue_pop (port->queue);
}
external/gst-openmax/omx/gstomx_base_filter.c:627:pad_chain:<omxh264enc0>[00m begin: size=4423680, state=3, CoreState=0
0:00:08.218475342 [333m 1454[00m 0x1f84c8 [36mDEBUG [00m [00m omx external/gst-openmax/omx/gstomx_port.c:1243:g_omx_port_send:[00m <omxh264enc0:in:0> external/gst-openmax/omx/gstomx_port.c(1243)-g_omx_port_send BUFFERMMMM check it
0:00:08.218536377 [333m 1454[00m 0x1f84c8 [31;01mERROR [00m [00m omx external/gst-openmax/omx/gstomx_port.c:663:request_buffer:[00m <omxh264enc0:in:0> ===> queue len=0
2) I find the async_queue_push/async_queue_pop function . Are they the function to push buffer into queue and pop buffer from queue? so the request_buffer was called by g_omx_port_send and call async_queue_pop get the buffer from the queue of port.I think the g_omx_port _send which call by the openmax sinkpad and will send the buffer to openmax compent and the g_omx_port_recv gets the bufer from openmax .Is it right?
Thank you very much.
BR.
Aaron