Setting a framerate on raw MJPEG

Michal Čudrnák michal at megaslice.uk
Mon Apr 6 13:34:00 UTC 2020


On 1.14.5, I’m trying to process a raw MJPEG file without metadata and need to set a framerate. It looks like this should be possible (see https://github.com/GStreamer/gst-plugins-bad/blob/1.14.5/gst/jpegformat/gstjpegparse.c#L177 <https://github.com/GStreamer/gst-plugins-bad/blob/1.14.5/gst/jpegformat/gstjpegparse.c#L177>) but the following doesn’t work for me:

$ GST_DEBUG=jpegparse:6 gst-launch-1.0 -ve filesrc location=src.mjpeg ! 'image/jpeg,framerate=5/1' ! jpegparse ! 'image/jpeg,framerate=5/1' ! fakesink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
0:00:00.160314200  2362   0x55a4575d40 DEBUG              jpegparse gstjpegparse.c:253:gst_jpeg_parse_get_image_length: Parsing jpeg image data (65536 bytes)
0:00:00.160466154  2362   0x55a4575d40 DEBUG              jpegparse gstjpegparse.c:257:gst_jpeg_parse_get_image_length: Parse state: offset=0, resync=0, entropy len=0
0:00:00.160541985  2362   0x55a4575d40 DEBUG              jpegparse gstjpegparse.c:321:gst_jpeg_parse_get_image_length: 0x00000002: tag c0, frame_len=17
0:00:00.160610816  2362   0x55a4575d40 DEBUG              jpegparse gstjpegparse.c:321:gst_jpeg_parse_get_image_length: 0x00000015: tag db, frame_len=132
0:00:00.160677314  2362   0x55a4575d40 DEBUG              jpegparse gstjpegparse.c:321:gst_jpeg_parse_get_image_length: 0x0000009b: tag c4, frame_len=418
0:00:00.160742645  2362   0x55a4575d40 DEBUG              jpegparse gstjpegparse.c:321:gst_jpeg_parse_get_image_length: 0x0000023f: tag da, frame_len=12
0:00:00.160802435  2362   0x55a4575d40 DEBUG              jpegparse gstjpegparse.c:331:gst_jpeg_parse_get_image_length: 0x0000023f: finding entropy segment length
0:00:00.160935139  2362   0x55a4575d40 DEBUG              jpegparse gstjpegparse.c:350:gst_jpeg_parse_get_image_length: entropy segment length=4224 => frame_len=4236
0:00:00.160994637  2362   0x55a4575d40 DEBUG              jpegparse gstjpegparse.c:296:gst_jpeg_parse_get_image_length: 0x000012cd: EOI marker
0:00:00.161475413  2362   0x55a4575d40 LOG                jpegparse gstjpegparse.c:818:gst_jpeg_parse_handle_frame:<jpegparse0> parsed image of size 4815
0:00:00.161570202  2362   0x55a4575d40 DEBUG              jpegparse gstjpegparse.c:640:gst_jpeg_parse_read_header:<jpegparse0> marker = d8
0:00:00.161608118  2362   0x55a4575d40 DEBUG              jpegparse gstjpegparse.c:640:gst_jpeg_parse_read_header:<jpegparse0> marker = c0
0:00:00.161658283  2362   0x55a4575d40 DEBUG              jpegparse gstjpegparse.c:454:gst_jpeg_parse_sof:<jpegparse0> Header parsed
0:00:00.161714864  2362   0x55a4575d40 DEBUG              jpegparse gstjpegparse.c:719:gst_jpeg_parse_set_new_caps:<jpegparse0> setting caps on srcpad (hdr_ok=1, have_fps=0)
0:00:00.161874693  2362   0x55a4575d40 DEBUG              jpegparse gstjpegparse.c:750:gst_jpeg_parse_set_new_caps:<jpegparse0> setting downstream caps on jpegparse0:src to image/jpeg, parsed=(boolean)true, format=(string)UYVY, width=(int)192, height=(int)192, framerate=(fraction)1/1
/GstPipeline:pipeline0/GstJpegParse:jpegparse0.GstPad:src: caps = image/jpeg, parsed=(boolean)true, format=(string)UYVY, width=(int)192, height=(int)192, framerate=(fraction)1/1
ERROR: from element /GstPipeline:pipeline0/GstJpegParse:jpegparse0: Internal data stream error.
Additional debug info:
gstbaseparse.c(3611): gst_base_parse_loop (): /GstPipeline:pipeline0/GstJpegParse:jpegparse0:
streaming stopped, reason not-negotiated (-4)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...

It seems the srcpad on jpegparse will only accept a framerate 1/1. Also note that have_fps=0 in the debug output, contrary to my expectations.

Can anyone help?

Cheers
Michal
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20200406/db6944fd/attachment-0001.htm>


More information about the gstreamer-devel mailing list