And I just noticed I copy-pasted the text labels for my source code links backwards :-)
On Tue, Oct 7, 2014 at 3:35 PM, Justin Israel <[email protected]> wrote: > Hi all, > > I'm trying to confirm some behavior for a co-worker that is comparing jpeg > conversions from oiiotool with a previous conversion approach. > > His concern is the chroma sub-sampling that is applied to the jpegs, as > being identified using the "identify" tool provided by ImageMagick, > indicate a 4:2:0 sampling. My thoughts are that this reported information > may just be metadata and not really applicable to the image necessarily. > Anyways, the details... > > Input jpeg, via identify, reports 4:4:4: > jpeg:sampling-factor: 1x1,1x1,1x1 > > Output Jpeg from oiiotool, via identify, reports 4:2:0: > jpeg:sampling-factor: 2x2,1x1,1x1 > > The jpeg output plugin uses some fixed logic for 3 or 4 channel > > // oiio:jpegoutput.cpp#L447 > <https://github.com/LuaDist/libjpeg/blob/master/jcparam.c#L447> > if (m_spec.nchannels == 3 || m_spec.nchannels == 4) { > m_cinfo.input_components = 3; > m_cinfo.in_color_space = JCS_RGB; > > When using this color space constant, the defaults for libjpeg > are to apply a 4:4:4 (no sub sampling) > > // libjpeg:jcparam.c#L152 > <https://github.com/OpenImageIO/oiio/blob/master/src/jpeg.imageio/jpegoutput.cpp#L152> > case JCS_RGB: > cinfo->write_Adobe_marker = TRUE; /* write Adobe marker to flag RGB */ > cinfo->num_components = 3; > SET_COMP(0, 0x52 /* 'R' */, 1,1, 0, 0,0); > SET_COMP(1, 0x47 /* 'G' */, 1,1, 0, 0,0); > SET_COMP(2, 0x42 /* 'B' */, 1,1, 0, 0,0); > break; > case JCS_YCbCr: > cinfo->write_JFIF_header = TRUE; /* Write a JFIF marker */ > cinfo->num_components = 3; > /* JFIF specifies component IDs 1,2,3 */ > /* We default to 2x2 subsamples of chrominance */ > SET_COMP(0, 1, 2,2, 0, 0,0); > SET_COMP(1, 2, 1,1, 1, 1,1); > SET_COMP(2, 3, 1,1, 1, 1,1); > break; > > Can someone more versed than I in these RGB vs YCbCr spaces and > sub-sampling help clarify the actual end result on the converted jpeg > through oiio? Is this sub-sampling value reported by identify irrelevant > because of the color space being RGB? > > Thanks! > -- justin > > >
_______________________________________________ Oiio-dev mailing list [email protected] http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org
