This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

PROCESSOR-SDK-AM62A: gstreamer v4l2src problem

Part Number: PROCESSOR-SDK-AM62A


Hi,

We are trying to acquire images from an imx390 sensor using an am62a board. When building the GStreamer pipeline, we encountered the following issues:

0:00:01.154106150  1389 0xffff4800b000 INFO               GST_EVENT gstevent.c:820:gst_event_new_caps: creating caps event video/x-raw, format=(string)UYVY, width=(int)1920, height=(int)1080, framerate=(fraction)120/1, colorimetry=(string)bt709, interlace-mode=(string)progressive
0:00:01.154396205  1389 0xffff4800b000 INFO           basetransform gstbasetransform.c:1317:gst_base_transform_setcaps:<capsfilter0> reuse caps
0:00:01.154536985  1389 0xffff4800b000 INFO               GST_EVENT gstevent.c:820:gst_event_new_caps: creating caps event video/x-raw, format=(string)UYVY, width=(int)1920, height=(int)1080, framerate=(fraction)120/1, colorimetry=(string)bt709, interlace-mode=(string)progressive
0:00:01.154664885  1389 0xffff4800b000 INFO               GST_EVENT gstevent.c:820:gst_event_new_caps: creating caps event video/x-raw, format=(string)UYVY, width=(int)1920, height=(int)1080, framerate=(fraction)120/1, colorimetry=(string)bt709, interlace-mode=(string)progressive
0:00:01.154891530  1389 0xffff4800b000 INFO                    v4l2 gstv4l2object.c:3077:gst_v4l2_object_setup_pool:<v4l2src1:src> accessing buffers via mode 5
0:00:01.155457415  1389 0xffff4800b000 INFO          v4l2bufferpool gstv4l2bufferpool.c:568:gst_v4l2_buffer_pool_set_config:<v4l2src1:pool:src> increasing minimum buffers to 2
0:00:01.155515335  1389 0xffff4800b000 INFO          v4l2bufferpool gstv4l2bufferpool.c:581:gst_v4l2_buffer_pool_set_config:<v4l2src1:pool:src> reducing maximum buffers to 32
0:00:01.155709795  1389 0xffff4800b000 WARN                    v4l2 gstv4l2object.c:4694:gst_v4l2_object_decide_allocation:<v4l2src1> error: No downstream pool to import from.
0:00:01.155751445  1389 0xffff4800b000 WARN                    v4l2 gstv4l2object.c:4694:gst_v4l2_object_decide_allocation:<v4l2src1> error: When importing DMABUF or USERPTR, we need a pool to import from
0:00:01.155818325  1389 0xffff4800b000 INFO        GST_ERROR_SYSTEM gstelement.c:2153:gst_element_message_full_with_details:<v4l2src1> posting message: No downstream pool to import from.
0:00:01.155953310  1389 0xffff4800b000 INFO        GST_ERROR_SYSTEM gstelement.c:2180:gst_element_message_full_with_details:<v4l2src1> posted error message: No downstream pool to import from.

and here is how we build the pipeline.

  capture->v4l2 = gst_element_factory_make("v4l2src", "v4l2src1");
  capture->pipeline = gst_pipeline_new("pipeline");
  capture->appsink = gst_element_factory_make("appsink", "appsink");
  capture->v4l2Caps = gst_caps_new_simple(
      "video/x-raw", "format", G_TYPE_STRING, "UYVY", "width", G_TYPE_INT,
      CAMERA_WIDTH, "height", G_TYPE_INT, CAMERA_HEIGHT, NULL);
  NM_DEBUG("create element done!\n");
  if ((NULL == capture->v4l2) || (NULL == capture->pipeline) ||
      (NULL == capture->appsink) || (NULL == capture->v4l2Caps)) {
    NM_ERROR("init faild!\n");
    return -1;
  }
  capture->bus = gst_pipeline_get_bus(GST_PIPELINE(capture->pipeline));
  capture->loop = g_main_loop_new(NULL, FALSE);
  capture->bus_watch_id =
      gst_bus_add_watch(capture->bus, onBusCall, capture->loop);
  g_object_set(capture->v4l2, "device", "/dev/video2", "io-mode", 5, NULL);
  g_object_set(capture->appsink, "emit-signals", TRUE, NULL);

by the way, the pipeline worked when we set io-mode to 0, but it cost 80% cpu, which is unacceptable for us. 

Could you tell me how to solve this problem?

Kind regards,

Lou

  • Hi Lou,

    I've tested IMX390 through command line GStreamer pipeline and it works fine for me. Below is what I used for your reference:

    # gst-launch-1.0 -v v4l2src device=/dev/video-imx390-cam0 io-mode=5 ! \
    > video/x-bayer, width=1936, height=1100, framerate=30/1, format=rggb12 ! queue leaky=2 ! \
    > tiovxisp sink_0::device=/dev/v4l-imx390-subdev0 sensor-name=SENSOR_SONY_IMX390_UB953_D3 \
    > dcc-isp-file=/opt/imaging/imx390/linear/dcc_viss.bin \
    > sink_0::dcc-2a-file=/opt/imaging/imx390/linear/dcc_2a.bin format-msb=11 ! \
    > tiovxldc dcc-file=/opt/imaging/imx390/linear/dcc_ldc.bin sensor-name=SENSOR_SONY_IMX390_UB953_D3 sink_0::pool-size=8 src::pool-size=8 ! \
    > video/x-raw, format=NV12, width=1920, height=1080, framerate=30/1 ! kmssink driver-name=tidss sync=false

    Regards,

    Jianzhong