On Thu, Mar 24, 2016 at 02:31:38PM +0100, Ico Doornekamp wrote: > Original mail and my own followup on ffmpeg-user earlier today: > > I have a device sending out a MJPEG/RTP stream on a low quality setting. > Decoding and displaying the video with libavformat results in a washed > out, low contrast, greyish image. Playing the same stream with VLC results > in proper color representation. > > Screenshots for comparison: > > http://zevv.nl/div/libav/shot-ffplay.jpg > http://zevv.nl/div/libav/shot-vlc.jpg > > A pcap capture of a few seconds of video and SDP file for playing the > stream are available at > > http://zevv.nl/div/libav/mjpeg.pcap > http://zevv.nl/div/libav/mjpeg.sdp > > I believe the problem might be in the calculation of the quantization > tables in the function create_default_qtables(), the attached patch > solves the issue for me. > > The problem is that the argument 'q' is of the type uint8_t. According to the > JPEG standard, if 1 <= q <= 50, the scale factor 'S' should be 5000 / Q. > Because the create_default_qtables() reuses the variable 'q' to store the > result of this calculation, for small values of q < 19, q wil subsequently > overflow and give wrong results in the calculated quantization tables. The > patch below uses a new variable 'S' (same name as in RFC2435) with the proper > range to store the result of the division.
patch applied thanks [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Avoid a single point of failure, be that a person or equipment.
signature.asc
Description: Digital signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel