grayscale jpeg and rtpjpegpay

Jan Rübel ruebel at vrmagic.com
Tue Jan 10 01:47:03 PST 2012


Hi !

I have a question concerning rtpjpegpay.

Why is there no support for grayscale images in the payloader? 
The jpeg standard allows grayscale images and e.g. jpegenc can also create them (<http://class.ee.iastate.edu/ee528/Reading%20material/JPEG_File_Format.pdf>). However, the rtpjpegpay element does not accept them as can be seen from the pipeline below. 

Is it just not yet implemented or would it violate the rtp standard for jpeg (<http://tools.ietf.org/html/rfc2435>)?
The SOF header of such images has a length of 11, while in RFC 2435 (and in rtpjpegpay) the SOF header length seems to be fixed to 17.

What would be an alternative way to stream  grayscale jpeg?

Best regards
Jan

PS: Here's the pipeline that produces the error:

gst-launch --gst-debug=rtpjpegpay:5 gstrtpbin name=r videotestsrc ! video/x-raw-yuv ! jpegenc ! rtpjpegpay ! r.send_rtp_sink_0 r.send_rtp_src_0 ! udpsink host=10.0.0.127 port=5000 r.send_rtcp_src_0 ! udpsink port=5001 sync=false async=false udpsrc port=5002 ! r.recv_rtcp_sink_0

Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
0:00:00.113285000  4992   023BC850 LOG               rtpjpegpay gstrtpjpegpay.c:633:gst_rtp_jpeg_pay_handle_buffer:<rtpjpegpay0> got buffer size 6848,
 timestamp 0:00:00.000000000
0:00:00.113285000  4992   023BC850 LOG               rtpjpegpay gstrtpjpegpay.c:642:gst_rtp_jpeg_pay_handle_buffer:<rtpjpegpay0> checking from offset 0
0:00:00.114262000  4992   023BC850 LOG               rtpjpegpay gstrtpjpegpay.c:593:gst_rtp_jpeg_pay_scan_marker: found d8 marker at offset 1
0:00:00.114262000  4992   023BC850 LOG               rtpjpegpay gstrtpjpegpay.c:669:gst_rtp_jpeg_pay_handle_buffer:<rtpjpegpay0> SOI found
0:00:00.115238000  4992   023BC850 LOG               rtpjpegpay gstrtpjpegpay.c:642:gst_rtp_jpeg_pay_handle_buffer:<rtpjpegpay0> checking from offset 2
0:00:00.115238000  4992   023BC850 LOG               rtpjpegpay gstrtpjpegpay.c:593:gst_rtp_jpeg_pay_scan_marker: found e0 marker at offset 3
0:00:00.116215000  4992   023BC850 LOG               rtpjpegpay gstrtpjpegpay.c:647:gst_rtp_jpeg_pay_handle_buffer:<rtpjpegpay0> skipping marker
0:00:00.117192000  4992   023BC850 LOG               rtpjpegpay gstrtpjpegpay.c:642:gst_rtp_jpeg_pay_handle_buffer:<rtpjpegpay0> checking from offset 20
0:00:00.117192000  4992   023BC850 LOG               rtpjpegpay gstrtpjpegpay.c:593:gst_rtp_jpeg_pay_scan_marker: found db marker at offset 21
0:00:00.118168000  4992   023BC850 LOG               rtpjpegpay gstrtpjpegpay.c:656:gst_rtp_jpeg_pay_handle_buffer: DQT found
0:00:00.118168000  4992   023BC850 LOG               rtpjpegpay gstrtpjpegpay.c:384:gst_rtp_jpeg_pay_read_quant_table: read quant table 0, tab_size 64, prec 00
0:00:00.119145000  4992   023BC850 LOG               rtpjpegpay gstrtpjpegpay.c:642:gst_rtp_jpeg_pay_handle_buffer:<rtpjpegpay0> checking from offset 89
0:00:00.119145000  4992   023BC850 LOG               rtpjpegpay gstrtpjpegpay.c:593:gst_rtp_jpeg_pay_scan_marker: found c0 marker at offset 90
0:00:00.120121000  4992   023BC850 WARN              rtpjpegpay gstrtpjpegpay.c:515:gst_rtp_jpeg_pay_read_sof:<rtpjpegpay0> error: Wrong SOF length 11.
ERROR: from element /GstPipeline:pipeline0/GstRtpJPEGPay:rtpjpegpay0: Wrong SOF length 11.
Additional debug info:
..\..\..\..\..\Source\gst-plugins-good\gst\rtp\gstrtpjpegpay.c(515): gst_rtp_jpeg_pay_read_sof (): /GstPipeline:pipeline0/GstRtpJPEGPay:rtpjpegpay0
Execution ended after 9766000 ns.
Setting pipeline to PAUSED ...
0:00:00.121098000 Setting pipeline to READY ...
 4992   023BC850 LOG               rtpjpegpay gstrtpjpegpay.c:633:gst_rtp_jpeg_pay_handle_buffer:<rtpjpegpay0> got buffer size 6884, timestamp 0:00:00.033333333
0:00:00.122075000  4992   023BC850 LOG               rtpjpegpay gstrtpjpegpay.c:642:gst_rtp_jpeg_pay_handle_buffer:<rtpjpegpay0> checking from offset 0
0:00:00.123051000  4992   023BC850 LOG               rtpjpegpay gstrtpjpegpay.c:593:gst_rtp_jpeg_pay_scan_marker: found d8 marker at offset 1
0:00:00.123051000  4992   023BC850 LOG               rtpjpegpay gstrtpjpegpay.c:669:gst_rtp_jpeg_pay_handle_buffer:<rtpjpegpay0> SOI found
0:00:00.124028000  4992   023BC850 LOG               rtpjpegpay gstrtpjpegpay.c:642:gst_rtp_jpeg_pay_handle_buffer:<rtpjpegpay0> checking from offset 2
0:00:00.125004000  4992   023BC850 LOG               rtpjpegpay gstrtpjpegpay.c:593:gst_rtp_jpeg_pay_scan_marker: found e0 marker at offset 3
0:00:00.125004000  4992   023BC850 LOG               rtpjpegpay gstrtpjpegpay.c:647:gst_rtp_jpeg_pay_handle_buffer:<rtpjpegpay0> skipping marker
0:00:00.125981000  4992   023BC850 LOG               rtpjpegpay gstrtpjpegpay.c:642:gst_rtp_jpeg_pay_handle_buffer:<rtpjpegpay0> checking from offset 20
0:00:00.125981000  4992   023BC850 LOG               rtpjpegpay gstrtpjpegpay.c:593:gst_rtp_jpeg_pay_scan_marker: found db marker at offset 21
0:00:00.126958000  4992   023BC850 LOG               rtpjpegpay gstrtpjpegpay.c:656:gst_rtp_jpeg_pay_handle_buffer: DQT found
0:00:00.126958000  4992   023BC850 LOG               rtpjpegpay gstrtpjpegpay.c:384:gst_rtp_jpeg_pay_read_quant_table: read quant table 0, tab_size 64, prec 00
0:00:00.127934000  4992   023BC850 LOG               rtpjpegpay gstrtpjpegpay.c:642:gst_rtp_jpeg_pay_handle_buffer:<rtpjpegpay0> checking from offset 89
0:00:00.127934000  4992   023BC850 LOG               rtpjpegpay gstrtpjpegpay.c:593:gst_rtp_jpeg_pay_scan_marker: found c0 marker at offset 90
0:00:00.128911000  4992   023BC850 WARN              rtpjpegpay gstrtpjpegpay.c:515:gst_rtp_jpeg_pay_read_sof:<rtpjpegpay0> error: Wrong SOF length 11.
Setting pipeline to NULL ...
Freeing pipeline ...



More information about the gstreamer-devel mailing list