V4L/JFIF/MJPG Y'CbCr

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



Just a follow up on the previous discusson on Y'CbCr representations
used:

V4L (bttv), JFIF (.jpg) and MJPG (.avi) all use Y'CbCr, but JFIF differs
from the other two in that it uses full-scale Y'CbCr rather than CCIR
601 "headroom" Y'CbCr.

The difference between full-scale and CCIR 601 "headroom" Y'CbCr is in
the value ranges. Full-scale (JFIF) Y'CbCr has Y', Cb and Cr all 0-255,
whereas CCIR 601 (V4L, MJPG) Y'CbCr has Y' 16-235, and Cb, Cr both
16-240. The center "0" value for Cb, Cr is always 128. For the sake of
completeness, Y'PbPr has Y' 0.0-1.0 and Pb, Pr both -0.5-+0.5.

Therefore V4L "YUV" data can be directly passed to libjpeg as Y'CbCr to
compress to MJPG .avi frames. To create still image JFIF .jpg files, you
should either pass V4L RGB data to libjpeg, and have the library do the
RGB->Y'CbCr (full-scale) conversion, or if you want to pass Y'CbCr data
directly to the library you'd have to preconvert the V4L YUV data by
"stretching" it from CCIR 601 "headroom" to "full-scale" Y'CbCr.

Ben





[Index of Archives]     [Linux DVB]     [Video Disk Recorder]     [Asterisk]     [Photo]     [DCCP]     [Netdev]     [Xorg]     [Util Linux NG]     [Xfree86]     [Free Photo Albums]     [Fedora Users]     [Fedora Women]     [ALSA Users]     [ALSA Devel]     [Linux USB]

Powered by Linux