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.

SK-AM62A-LP: Gstreamer application to monitor framerate

Part Number: SK-AM62A-LP

Tool/software:

Hello,

I've been working on designing a gstreamer application using the Go wrapper library go-gst that will constantly monitor the framerate of a running stream and take actions to restart the stream if the framerate gets below a certain level. I'm new to writing gstreamer applications and have so far been running into errors with everything that I have tried while referencing gstreamer and other examples. It seems like using the identity plugin and reading the handoff buffer PTS would be a lightweight way to achieve monitoring the framerate (i.e. it could monitor every frame). In my pipeline the TI plugins are used in this way:
"tiovxisp sink_0::device=/dev/v4l-subdev4 sensor-name=SENSOR_ONSEMI_AR0234 dcc-isp-file=/opt/imaging/ar0234/linear/dcc_viss_10b_1920x1200.bin sink_0::dcc-2a-file=/opt/imaging/ar0234/linear/dcc_2a_10b_1920x1200.bin format-msb=9 sink_0::pool-size=8 src_0::pool-size=8"
and
"v4l2h264enc extra-controls='enc,h264_i_frame_period=8'"

I've been unable to successfully use what equates to the gst_parse_launch() function mostly due to the parsing the parameters in the above plugins from what I can tell looking at GST_DEBUG prints.

I was wondering if there an example gstreamer application (C code is fine) that could be provided that uses the tiovxisp and v4l2h264enc plugins?

Perhaps the ElementFactory method for creating a pipeline is more conducive for this use case?

Also, if there is a better way to achieve this I would also be interested in learning about a different method.

Thank you,
Steve

  • Well, of course, after I posted this I was able to finally work my way through what ended up being a couple syntax errors in the gstreamer pipeline I was providing the gst_parse_launch() function. The TI related plugins provided in the original post seem to be able to parse correctly, notably after removing any single or double quotes (i.e. use v4l2h264enc extra-controls=enc,h264_i_frame_period=8 instead). These cause issues for the parser function but unfortunately this wasn't very clear to me from the GST_DEBUG prints.

    I'm still interested if there is a better way to monitor framerate if there is any insight available about that.

    Thank you,
    Steve

  • Steve,

    You can probably use the gst parser script that comes along with our SDK to see what element in the pipeline causes the latency and due to which you might be seeing framerate issues. Also have you tried to play around other extra controls of encoder (reducing the bitrate, level etc ) and see if there is any improvement in quality or framerates.

    Please share the gstreamer pipeline that you are trying to run along with the gstreamer tracer log to analyze and support you better.

    Best Regards,

    Suren

  • Hello Suren,

    I am familiar with the gst parser script and I had taken a look at it but it wasn't something I felt that I could utilize for my purpose of just monitoring framerate. I'm not actually having a problem establishing the framerate and quality I expect so I haven't adjusted the extra controls. I was mostly interested in feedback regarding a methodologies for monitoring (which you mentioned using tracers). I think using identity in the pipeline is working pretty well for my purposes so far at least though.

    Thank you,

    Steve