<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic UIC decoder: some problem from Readdata()? in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/UIC-decoder-some-problem-from-Readdata/m-p/849586#M6397</link>
    <description>&lt;P&gt;Hello: I implemented UIC decoder to my application. A number of decoder's interface has been implemented(such as jpegdec.Init(), jpegdec.AttachStream(), jpegdec.ReadHeader(), jpegdec.SetParams(), jpegdec.ReadData() ). &lt;BR /&gt;I can see the program got correct image size, sampling rate from ReadHeader().&lt;BR /&gt;In my program final part, I created a data buffer with size (image Height*Width*Sampling Rate). I copy the depressed image data--Buffer().DataPtr() from Readdata() to my buffer, the program is crush. It seems problem from jpegdec.ReadData(). I post my function below, please give some help, thank you all&lt;BR /&gt;&lt;BR /&gt;FunctToReadJPEG()&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt; int i;&lt;/P&gt;
&lt;P&gt; int du = 0;&lt;/P&gt;
&lt;P&gt; int dd_factor;&lt;/P&gt;
&lt;P&gt; int comment_size;&lt;/P&gt;
&lt;P&gt; Ipp8u* comment;&lt;/P&gt;
&lt;P&gt; Image imageCn;&lt;/P&gt;
&lt;P&gt; ExcStatus status;&lt;/P&gt;
&lt;P&gt; JPEGDecoder jpegdec;&lt;/P&gt;
&lt;P&gt; ImageDataPtr dataPtr;&lt;/P&gt;
&lt;P&gt; ImageDataOrder dataOrder;&lt;/P&gt;
&lt;P&gt; ImageColorSpec colorSpec;&lt;/P&gt;
&lt;P&gt; ImageSamplingGeometry geometry;&lt;/P&gt;
&lt;P&gt; PARAMS_JPEG param;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; param.nthreads = 1;&lt;/P&gt;
&lt;P&gt; param.use_qdct = 1;&lt;/P&gt;
&lt;P&gt; param.dct_scale = JD_1_1;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; param.color = JC_UNKNOWN;&lt;/P&gt;
&lt;P&gt; param.huffman_opt = 0;&lt;/P&gt;
&lt;P&gt; param.mode = JPEG_BASELINE;&lt;/P&gt;
&lt;P&gt; param.point_transform = 0;&lt;/P&gt;
&lt;P&gt; param.predictor = 1;&lt;/P&gt;
&lt;P&gt; param.quality = 75;&lt;/P&gt;
&lt;P&gt; param.restart_interval = 0;&lt;/P&gt;
&lt;P&gt; param.sampling = JS_444;&lt;/P&gt;
&lt;P&gt; param.dct_scale = JD_1_1;&lt;/P&gt;
&lt;P&gt; param.use_qdct = 1;&lt;/P&gt;
&lt;P&gt; param.comment_size = sizeof(param.comment);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; jpegdec.SetNOfThreads(param.nthreads);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; status = jpegdec.Init();&lt;/P&gt;
&lt;P&gt; if(ExcStatusOk != status)&lt;/P&gt;
&lt;P&gt; return JPEG_ERR_INTERNAL;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; CStdFileInput in;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; BaseStream::TStatus statusStream;&lt;/P&gt;
&lt;P&gt; statusStream = in.Open("c:\\test.jpg");&lt;/P&gt;
&lt;P&gt; if(BaseStream::StatusOk != statusStream)&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt; return 0;&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt; status = jpegdec.AttachStream(in);&lt;/P&gt;
&lt;P&gt; if(ExcStatusOk != status)&lt;/P&gt;
&lt;P&gt; return JPEG_ERR_INTERNAL;//UIC end&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; status = jpegdec.ReadHeader(colorSpec,geometry);//got image size 400X100, sampling rate 3 correctly&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; if(ExcStatusOk != status)&lt;/P&gt;
&lt;P&gt; return JPEG_ERR_INTERNAL;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; m_nPlateWidth = geometry.RefGridRect().Width();&lt;/P&gt;
&lt;P&gt; m_nPlateHeight = geometry.RefGridRect().Height();&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; param.mode = jpegdec.Mode();&lt;/P&gt;
&lt;P&gt; param.color = GetColor(colorSpec.EnumColorSpace());&lt;/P&gt;
&lt;P&gt; param.sampling = GetSampling(geometry.EnumSampling());&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; jpegdec.Comment(&amp;amp;comment, &amp;amp;comment_size);&lt;/P&gt;
&lt;P&gt; if(comment_size != 0)&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt; param.comment_size = IPP_MIN(comment_size,MAX_JPEG_COMMENT_BUF);&lt;/P&gt;
&lt;P&gt; ippsCopy_8u(comment,param.comment,param.comment_size);&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt; else&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt; param.comment[0] = '\0';&lt;/P&gt;
&lt;P&gt; param.comment_size = 0;&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; int nOfComponents = geometry.NOfComponents();&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; if(JPEG_BASELINE == param.mode || JPEG_PROGRESSIVE == param.mode)&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt; switch(param.dct_scale)&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt; case JD_1_1: dd_factor = 1; break;&lt;/P&gt;
&lt;P&gt; case JD_1_2: dd_factor = 2; break;&lt;/P&gt;
&lt;P&gt; case JD_1_4: dd_factor = 4; break;&lt;/P&gt;
&lt;P&gt; case JD_1_8: dd_factor = 8; break;&lt;/P&gt;
&lt;P&gt; default:&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt; param.dct_scale = JD_1_1;&lt;/P&gt;
&lt;P&gt; dd_factor = 1;&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt; else&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt; param.dct_scale = JD_1_1;&lt;/P&gt;
&lt;P&gt; dd_factor = 1;&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; JPEGDecoderParams jparam;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; jparam.SetDCTScaleFactor(param.dct_scale);&lt;/P&gt;
&lt;P&gt; jparam.SetDCTType(param.use_qdct);&lt;/P&gt;
&lt;P&gt; jpegdec.SetParams(jparam);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; if(param.dct_scale != JD_1_1)&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt; Rect refgrid;&lt;/P&gt;
&lt;P&gt; Point origin;&lt;/P&gt;
&lt;P&gt; RectSize size;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; origin.SetX(0);&lt;/P&gt;
&lt;P&gt; origin.SetY(0);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; switch (param.dct_scale)&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt; case JD_1_2:&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt; size.SetWidth ((geometry.RefGridRect().Width() + 1) &amp;gt;&amp;gt; 1);&lt;/P&gt;
&lt;P&gt; size.SetHeight((geometry.RefGridRect().Height() + 1) &amp;gt;&amp;gt; 1);&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt; break;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; case JD_1_4:&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt; size.SetWidth ((geometry.RefGridRect().Width() + 3) &amp;gt;&amp;gt; 2);&lt;/P&gt;
&lt;P&gt; size.SetHeight((geometry.RefGridRect().Height() + 3) &amp;gt;&amp;gt; 2);&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt; break;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; case JD_1_8:&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt; size.SetWidth ((geometry.RefGridRect().Width() + 7) &amp;gt;&amp;gt; 3);&lt;/P&gt;
&lt;P&gt; size.SetHeight((geometry.RefGridRect().Height() + 7) &amp;gt;&amp;gt; 3);&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt; break;&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; refgrid.SetOrigin(origin);&lt;/P&gt;
&lt;P&gt; refgrid.SetSize(size);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; geometry.SetRefGridRect(refgrid);&lt;/P&gt;
&lt;P&gt; geometry.ReAlloc(nOfComponents);&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; if(colorSpec.DataRange()-&amp;gt;BitDepth() + 1 &amp;lt;= 8)&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt; dataOrder.SetDataType(T8u);&lt;/P&gt;
&lt;P&gt; du = sizeof(Ipp8u);&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt; else&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt; dataOrder.SetDataType(T16u);&lt;/P&gt;
&lt;P&gt; du = sizeof(Ipp16u);&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; dataOrder.ReAlloc(Interleaved, nOfComponents);&lt;/P&gt;
&lt;P&gt; dataOrder.PixelStep()[0] = nOfComponents;&lt;/P&gt;
&lt;P&gt; dataOrder.LineStep() [0] = ((geometry.RefGridRect().Width() * nOfComponents *du+ 3) &amp;amp; ~3);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; imageCn.ColorSpec().ReAlloc(nOfComponents);&lt;/P&gt;
&lt;P&gt; imageCn.ColorSpec().SetColorSpecMethod(Enumerated);&lt;/P&gt;
&lt;P&gt; imageCn.ColorSpec().SetComponentToColorMap(Direct);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; for(i = 0; i &amp;lt; nOfComponents; i++)&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt; if(colorSpec.DataRange()-&amp;gt;BitDepth() + 1 &amp;lt;= 8)&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt;  imageCn.ColorSpec().DataRange()&lt;I&gt;.SetAsRange8u(255);&lt;/I&gt;&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt; else&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt;  imageCn.ColorSpec().DataRange()&lt;I&gt;.SetAsRange16u(1 &amp;lt;&amp;lt; colorSpec.DataRange()-&amp;gt;BitDepth());&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;  }&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; ImageEnumColorSpace in_color;&lt;/P&gt;
&lt;P&gt; ImageEnumColorSpace out_color;&lt;/P&gt;
&lt;P&gt; in_color = colorSpec.EnumColorSpace();&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; switch(nOfComponents)&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt; case 1: out_color = (in_color == Unknown) ? Unknown : Grayscale; break;&lt;/P&gt;
&lt;P&gt; case 3: out_color = (in_color == Unknown) ? Unknown : RGB; break;&lt;/P&gt;
&lt;P&gt; case 4: out_color = (in_color == Unknown) ? Unknown : CMYK; break;&lt;/P&gt;
&lt;P&gt; default: out_color = Unknown; break;&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; imageCn.ColorSpec().SetEnumColorSpace(out_color);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; int r;&lt;/P&gt;
&lt;P&gt; IppiSize size;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; size.width = geometry.RefGridRect().Width();&lt;/P&gt;
&lt;P&gt; size.height = geometry.RefGridRect().Height();&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; CIppImage image;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; r = image.Alloc(size, nOfComponents, colorSpec.DataRange()-&amp;gt;BitDepth() + 1, 1);&lt;/P&gt;
&lt;P&gt; if(0 != r)&lt;/P&gt;
&lt;P&gt; return JPEG_ERR_ALLOC;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; image.Color(GetColor(out_color));&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; if(image.Precision() &amp;lt;= 8)&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt;  dataPtr.p8u = image;&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt; else&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt;  dataPtr.p16s = image;&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; imageCn.Buffer().Attach(&amp;amp;dataPtr,dataOrder,geometry);&lt;/P&gt;
&lt;P&gt; status = jpegdec.SetParams(imageCn.ColorSpec(),imageCn.Buffer().BufferFormat().SamplingGeometry());&lt;/P&gt;
&lt;P&gt; if(ExcStatusOk != status)&lt;/P&gt;
&lt;P&gt; return JPEG_ERR_INTERNAL;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; status = jpegdec.ReadData(imageCn.Buffer().DataPtr(),dataOrder);&lt;/P&gt;
&lt;P&gt; if(ExcStatusOk != status)&lt;/P&gt;
&lt;P&gt; return JPEG_ERR_INTERNAL;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; /* ********************************************************&lt;BR /&gt; after readheader() and readData(), I created TempBuf&lt;/P&gt;
&lt;P&gt; and copy the depressed image data imageCn.Buffer().DataPtr() to TempBuf, but program crash&lt;BR /&gt;**************************************************************/&lt;/P&gt;
&lt;P&gt; BYTE *TempBuf;&lt;/P&gt;
&lt;P&gt; TempBuf = new BYTE [size.height*size.width *3 ];//3 is sampling rate&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; for (int nY = 0; nY &amp;lt; size.height ; nY ++)&lt;/P&gt;
&lt;P&gt; for (int nX = 0; nX &amp;lt; size.width ; nX ++)&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt; memcpy(TempBuf + nY * size.width * 3 + nX * 3, imageCn.Buffer().DataPtr() + nY * size.width * 3 + nX * 3, 3);&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;BR /&gt;&lt;BR /&gt;</description>
    <pubDate>Tue, 21 Jul 2009 20:59:31 GMT</pubDate>
    <dc:creator>fanguts</dc:creator>
    <dc:date>2009-07-21T20:59:31Z</dc:date>
    <item>
      <title>UIC decoder: some problem from Readdata()?</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/UIC-decoder-some-problem-from-Readdata/m-p/849586#M6397</link>
      <description>&lt;P&gt;Hello: I implemented UIC decoder to my application. A number of decoder's interface has been implemented(such as jpegdec.Init(), jpegdec.AttachStream(), jpegdec.ReadHeader(), jpegdec.SetParams(), jpegdec.ReadData() ). &lt;BR /&gt;I can see the program got correct image size, sampling rate from ReadHeader().&lt;BR /&gt;In my program final part, I created a data buffer with size (image Height*Width*Sampling Rate). I copy the depressed image data--Buffer().DataPtr() from Readdata() to my buffer, the program is crush. It seems problem from jpegdec.ReadData(). I post my function below, please give some help, thank you all&lt;BR /&gt;&lt;BR /&gt;FunctToReadJPEG()&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt; int i;&lt;/P&gt;
&lt;P&gt; int du = 0;&lt;/P&gt;
&lt;P&gt; int dd_factor;&lt;/P&gt;
&lt;P&gt; int comment_size;&lt;/P&gt;
&lt;P&gt; Ipp8u* comment;&lt;/P&gt;
&lt;P&gt; Image imageCn;&lt;/P&gt;
&lt;P&gt; ExcStatus status;&lt;/P&gt;
&lt;P&gt; JPEGDecoder jpegdec;&lt;/P&gt;
&lt;P&gt; ImageDataPtr dataPtr;&lt;/P&gt;
&lt;P&gt; ImageDataOrder dataOrder;&lt;/P&gt;
&lt;P&gt; ImageColorSpec colorSpec;&lt;/P&gt;
&lt;P&gt; ImageSamplingGeometry geometry;&lt;/P&gt;
&lt;P&gt; PARAMS_JPEG param;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; param.nthreads = 1;&lt;/P&gt;
&lt;P&gt; param.use_qdct = 1;&lt;/P&gt;
&lt;P&gt; param.dct_scale = JD_1_1;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; param.color = JC_UNKNOWN;&lt;/P&gt;
&lt;P&gt; param.huffman_opt = 0;&lt;/P&gt;
&lt;P&gt; param.mode = JPEG_BASELINE;&lt;/P&gt;
&lt;P&gt; param.point_transform = 0;&lt;/P&gt;
&lt;P&gt; param.predictor = 1;&lt;/P&gt;
&lt;P&gt; param.quality = 75;&lt;/P&gt;
&lt;P&gt; param.restart_interval = 0;&lt;/P&gt;
&lt;P&gt; param.sampling = JS_444;&lt;/P&gt;
&lt;P&gt; param.dct_scale = JD_1_1;&lt;/P&gt;
&lt;P&gt; param.use_qdct = 1;&lt;/P&gt;
&lt;P&gt; param.comment_size = sizeof(param.comment);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; jpegdec.SetNOfThreads(param.nthreads);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; status = jpegdec.Init();&lt;/P&gt;
&lt;P&gt; if(ExcStatusOk != status)&lt;/P&gt;
&lt;P&gt; return JPEG_ERR_INTERNAL;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; CStdFileInput in;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; BaseStream::TStatus statusStream;&lt;/P&gt;
&lt;P&gt; statusStream = in.Open("c:\\test.jpg");&lt;/P&gt;
&lt;P&gt; if(BaseStream::StatusOk != statusStream)&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt; return 0;&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt; status = jpegdec.AttachStream(in);&lt;/P&gt;
&lt;P&gt; if(ExcStatusOk != status)&lt;/P&gt;
&lt;P&gt; return JPEG_ERR_INTERNAL;//UIC end&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; status = jpegdec.ReadHeader(colorSpec,geometry);//got image size 400X100, sampling rate 3 correctly&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; if(ExcStatusOk != status)&lt;/P&gt;
&lt;P&gt; return JPEG_ERR_INTERNAL;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; m_nPlateWidth = geometry.RefGridRect().Width();&lt;/P&gt;
&lt;P&gt; m_nPlateHeight = geometry.RefGridRect().Height();&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; param.mode = jpegdec.Mode();&lt;/P&gt;
&lt;P&gt; param.color = GetColor(colorSpec.EnumColorSpace());&lt;/P&gt;
&lt;P&gt; param.sampling = GetSampling(geometry.EnumSampling());&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; jpegdec.Comment(&amp;amp;comment, &amp;amp;comment_size);&lt;/P&gt;
&lt;P&gt; if(comment_size != 0)&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt; param.comment_size = IPP_MIN(comment_size,MAX_JPEG_COMMENT_BUF);&lt;/P&gt;
&lt;P&gt; ippsCopy_8u(comment,param.comment,param.comment_size);&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt; else&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt; param.comment[0] = '\0';&lt;/P&gt;
&lt;P&gt; param.comment_size = 0;&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; int nOfComponents = geometry.NOfComponents();&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; if(JPEG_BASELINE == param.mode || JPEG_PROGRESSIVE == param.mode)&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt; switch(param.dct_scale)&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt; case JD_1_1: dd_factor = 1; break;&lt;/P&gt;
&lt;P&gt; case JD_1_2: dd_factor = 2; break;&lt;/P&gt;
&lt;P&gt; case JD_1_4: dd_factor = 4; break;&lt;/P&gt;
&lt;P&gt; case JD_1_8: dd_factor = 8; break;&lt;/P&gt;
&lt;P&gt; default:&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt; param.dct_scale = JD_1_1;&lt;/P&gt;
&lt;P&gt; dd_factor = 1;&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt; else&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt; param.dct_scale = JD_1_1;&lt;/P&gt;
&lt;P&gt; dd_factor = 1;&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; JPEGDecoderParams jparam;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; jparam.SetDCTScaleFactor(param.dct_scale);&lt;/P&gt;
&lt;P&gt; jparam.SetDCTType(param.use_qdct);&lt;/P&gt;
&lt;P&gt; jpegdec.SetParams(jparam);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; if(param.dct_scale != JD_1_1)&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt; Rect refgrid;&lt;/P&gt;
&lt;P&gt; Point origin;&lt;/P&gt;
&lt;P&gt; RectSize size;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; origin.SetX(0);&lt;/P&gt;
&lt;P&gt; origin.SetY(0);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; switch (param.dct_scale)&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt; case JD_1_2:&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt; size.SetWidth ((geometry.RefGridRect().Width() + 1) &amp;gt;&amp;gt; 1);&lt;/P&gt;
&lt;P&gt; size.SetHeight((geometry.RefGridRect().Height() + 1) &amp;gt;&amp;gt; 1);&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt; break;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; case JD_1_4:&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt; size.SetWidth ((geometry.RefGridRect().Width() + 3) &amp;gt;&amp;gt; 2);&lt;/P&gt;
&lt;P&gt; size.SetHeight((geometry.RefGridRect().Height() + 3) &amp;gt;&amp;gt; 2);&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt; break;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; case JD_1_8:&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt; size.SetWidth ((geometry.RefGridRect().Width() + 7) &amp;gt;&amp;gt; 3);&lt;/P&gt;
&lt;P&gt; size.SetHeight((geometry.RefGridRect().Height() + 7) &amp;gt;&amp;gt; 3);&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt; break;&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; refgrid.SetOrigin(origin);&lt;/P&gt;
&lt;P&gt; refgrid.SetSize(size);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; geometry.SetRefGridRect(refgrid);&lt;/P&gt;
&lt;P&gt; geometry.ReAlloc(nOfComponents);&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; if(colorSpec.DataRange()-&amp;gt;BitDepth() + 1 &amp;lt;= 8)&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt; dataOrder.SetDataType(T8u);&lt;/P&gt;
&lt;P&gt; du = sizeof(Ipp8u);&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt; else&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt; dataOrder.SetDataType(T16u);&lt;/P&gt;
&lt;P&gt; du = sizeof(Ipp16u);&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; dataOrder.ReAlloc(Interleaved, nOfComponents);&lt;/P&gt;
&lt;P&gt; dataOrder.PixelStep()[0] = nOfComponents;&lt;/P&gt;
&lt;P&gt; dataOrder.LineStep() [0] = ((geometry.RefGridRect().Width() * nOfComponents *du+ 3) &amp;amp; ~3);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; imageCn.ColorSpec().ReAlloc(nOfComponents);&lt;/P&gt;
&lt;P&gt; imageCn.ColorSpec().SetColorSpecMethod(Enumerated);&lt;/P&gt;
&lt;P&gt; imageCn.ColorSpec().SetComponentToColorMap(Direct);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; for(i = 0; i &amp;lt; nOfComponents; i++)&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt; if(colorSpec.DataRange()-&amp;gt;BitDepth() + 1 &amp;lt;= 8)&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt;  imageCn.ColorSpec().DataRange()&lt;I&gt;.SetAsRange8u(255);&lt;/I&gt;&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt; else&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt;  imageCn.ColorSpec().DataRange()&lt;I&gt;.SetAsRange16u(1 &amp;lt;&amp;lt; colorSpec.DataRange()-&amp;gt;BitDepth());&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;  }&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; ImageEnumColorSpace in_color;&lt;/P&gt;
&lt;P&gt; ImageEnumColorSpace out_color;&lt;/P&gt;
&lt;P&gt; in_color = colorSpec.EnumColorSpace();&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; switch(nOfComponents)&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt; case 1: out_color = (in_color == Unknown) ? Unknown : Grayscale; break;&lt;/P&gt;
&lt;P&gt; case 3: out_color = (in_color == Unknown) ? Unknown : RGB; break;&lt;/P&gt;
&lt;P&gt; case 4: out_color = (in_color == Unknown) ? Unknown : CMYK; break;&lt;/P&gt;
&lt;P&gt; default: out_color = Unknown; break;&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; imageCn.ColorSpec().SetEnumColorSpace(out_color);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; int r;&lt;/P&gt;
&lt;P&gt; IppiSize size;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; size.width = geometry.RefGridRect().Width();&lt;/P&gt;
&lt;P&gt; size.height = geometry.RefGridRect().Height();&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; CIppImage image;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; r = image.Alloc(size, nOfComponents, colorSpec.DataRange()-&amp;gt;BitDepth() + 1, 1);&lt;/P&gt;
&lt;P&gt; if(0 != r)&lt;/P&gt;
&lt;P&gt; return JPEG_ERR_ALLOC;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; image.Color(GetColor(out_color));&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; if(image.Precision() &amp;lt;= 8)&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt;  dataPtr.p8u = image;&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt; else&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt;  dataPtr.p16s = image;&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; imageCn.Buffer().Attach(&amp;amp;dataPtr,dataOrder,geometry);&lt;/P&gt;
&lt;P&gt; status = jpegdec.SetParams(imageCn.ColorSpec(),imageCn.Buffer().BufferFormat().SamplingGeometry());&lt;/P&gt;
&lt;P&gt; if(ExcStatusOk != status)&lt;/P&gt;
&lt;P&gt; return JPEG_ERR_INTERNAL;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; status = jpegdec.ReadData(imageCn.Buffer().DataPtr(),dataOrder);&lt;/P&gt;
&lt;P&gt; if(ExcStatusOk != status)&lt;/P&gt;
&lt;P&gt; return JPEG_ERR_INTERNAL;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; /* ********************************************************&lt;BR /&gt; after readheader() and readData(), I created TempBuf&lt;/P&gt;
&lt;P&gt; and copy the depressed image data imageCn.Buffer().DataPtr() to TempBuf, but program crash&lt;BR /&gt;**************************************************************/&lt;/P&gt;
&lt;P&gt; BYTE *TempBuf;&lt;/P&gt;
&lt;P&gt; TempBuf = new BYTE [size.height*size.width *3 ];//3 is sampling rate&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt; for (int nY = 0; nY &amp;lt; size.height ; nY ++)&lt;/P&gt;
&lt;P&gt; for (int nX = 0; nX &amp;lt; size.width ; nX ++)&lt;/P&gt;
&lt;P&gt; {&lt;/P&gt;
&lt;P&gt; memcpy(TempBuf + nY * size.width * 3 + nX * 3, imageCn.Buffer().DataPtr() + nY * size.width * 3 + nX * 3, 3);&lt;/P&gt;
&lt;P&gt; }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;BR /&gt;&lt;BR /&gt;</description>
      <pubDate>Tue, 21 Jul 2009 20:59:31 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/UIC-decoder-some-problem-from-Readdata/m-p/849586#M6397</guid>
      <dc:creator>fanguts</dc:creator>
      <dc:date>2009-07-21T20:59:31Z</dc:date>
    </item>
    <item>
      <title>Re: UIC decoder: some problem from Readdata()?</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/UIC-decoder-some-problem-from-Readdata/m-p/849587#M6398</link>
      <description>&lt;DIV style="margin:0px;"&gt;&lt;/DIV&gt;
memory allocated for UIC Image object may get padded at each row to get 32-bit alignment. The right way to copy pixel data from UIC Image object would be using ippiCopy function for appropriate bit-depth and number of channels. This will require you to get image step (aka pitch) info from UIC Image&lt;BR /&gt;&lt;BR /&gt;Regards,&lt;BR /&gt; Vladimir&lt;BR /&gt;</description>
      <pubDate>Thu, 23 Jul 2009 18:36:08 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/UIC-decoder-some-problem-from-Readdata/m-p/849587#M6398</guid>
      <dc:creator>Vladimir_Dudnik</dc:creator>
      <dc:date>2009-07-23T18:36:08Z</dc:date>
    </item>
  </channel>
</rss>

