Link Copied
[cpp]int i;
CStdFileInput fi;
JPEGDecoder jpegdec;
ExcStatus status;
if( !BaseStream::IsOk(fi.Open(argv[1])) )
return 1;
status = jpegdec.Init();
if(ExcStatusOk != status)
return 1;
status = jpegdec.AttachStream(fi);
if(ExcStatusOk != status)
return 1;
ImageColorSpec colorSpec;
ImageSamplingGeometry geometry;
status = jpegdec.ReadHeader(colorSpec,geometry);
if(ExcStatusOk != status)
return 1;
Image imageCn;
ImageDataOrder dataOrder;
int nOfComponents = geometry.NOfComponents();
if(colorSpec.DataRange()->BitDepth() + 1 <= 8)
dataOrder.SetDataType(T8u);
else
dataOrder.SetDataType(T16u);
dataOrder.ReAlloc(Interleaved, nOfComponents);
dataOrder.PixelStep()[0] = nOfComponents;
dataOrder.LineStep() [0] = AlignStep(geometry.RefGridRect().Width() * nOfComponents);
geometry.SetEnumSampling(S444);
imageCn.Buffer().ReAlloc(dataOrder, geometry);
imageCn.ColorSpec().ReAlloc(nOfComponents);
imageCn.ColorSpec().SetColorSpecMethod(Enumerated);
imageCn.ColorSpec().SetComponentToColorMap(Direct);
for(i = 0; i < nOfComponents; i++)
{
if(colorSpec.DataRange()->BitDepth() + 1 <= 8)
imageCn.ColorSpec().DataRange().SetAsRange8u(255);
else
imageCn.ColorSpec().DataRange().SetAsRange16u(1 <<
colorSpec.DataRange()->BitDepth());
}
imageCn.ColorSpec().SetEnumColorSpace(RGB);
status = jpegdec.SetParams(imageCn.ColorSpec(),imageCn.Buffer().BufferFormat().SamplingGeometry());
if(ExcStatusOk != status)
return 1;
status = jpegdec.ReadData(imageCn.Buffer().DataPtr(),dataOrder);
if(ExcStatusOk != status)
return 1;[/cpp]
Hi,
There is no direct conversion function, this is the way to convert JPEG image to YUY2 422.
STEP 1: JPEG image (YCbCr, 411) to RGB 444;
STEP 2: convert RGB 444 to YUY2 422
Detail description about color conversion function in the reference manual.
Regards,
Naveen Gv
For more complete information about compiler optimizations, see our Optimization Notice.