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