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