[FFmpeg-devel] [RFC]lavc/mjpegenc_common: Fix aspect ratio
Moritz Barsnick
barsnick at gmx.net
Mon Dec 10 10:29:41 EET 2018
On Mon, Dec 10, 2018 at 02:54:54 +0100, Carl Eugen Hoyos wrote:
> I hope somebody can prove me wrong!
Not sure, see below.
> This would need a slightly more sophisticated update to the decoder.
Because it is also presumed incorrect?
> put_bits(p, 16, 0x0102);
> put_bits(p, 8, 0); /* units type: 0 - aspect ratio */
> - put_bits(p, 16, sar.num);
> put_bits(p, 16, sar.den);
> + put_bits(p, 16, sar.num);
> put_bits(p, 8, 0); /* thumbnail width */
If a 640x480 (640 x dimension, 480 y dimension) image has a SAR of 4/3,
4 (or the x dimension) is its numerator, 3 (or the y dimension) is its
denominator.
The spec (and Wikipedia) says:
units (1 byte) Units for the X and Y densities.
units = 0: no units, X and Y specify the pixel aspect ratio
units = 1: X and Y are dots per inch
units = 2: X and Y are dots per cm
Xdensity (2 bytes) Horizontal pixel density
Ydensity (2 bytes) Vertical pixel density
So Xdensity and Ydensity should be (e.g.) 4 and 3 in this case, which
are sar.num and sar.den (judging by the struct's field names),
respectively.
It seems to me that that is what the original implementation does.
What is yours and Ulf's interpretation?
Cheers,
Moritz
More information about the ffmpeg-devel
mailing list