<?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 Re: Fixed IPP crash problems.  If only Intel provided something in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861493#M7768</link>
    <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="margin-top: 5px; width: 100%;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/336498"&gt;Vladimir Dudnik (Intel)&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt;&lt;BR /&gt;Well let's try to improve the things together. If you canrefer me to the specific examples of bad written phrases in documentation I will submit this as a bug report to product bug tracker. Of course you also may do thisthrough &lt;A href="https://community.intel.com/premier.intel.com"&gt;Intel Premier Support&lt;/A&gt; channel.&lt;BR /&gt;&lt;BR /&gt;It is also not clear for me how do you conclude IPPI_INTER_SUPER does not work? Did you notice a code example in ippiman.pdf file on page 937 (I am referring to the documents available in Inel Compiler 11.1 beta).&lt;BR /&gt;&lt;BR /&gt;While English is not my native language I hope engineers may understand each other in the most of cases. Although there are native english speaking persons who provide support on this forum.&lt;BR /&gt;&lt;BR /&gt;Regarding step calculation I just provided comment in your another post. If you took attention to ippiMalloc description you may notice that this fuction do align memory buffer it allocates and so it returns step for this 2D memory buffer. Soyou have to use this instead of replacing it with your own value whichdoes not take into account actual aligment done at allocation.&lt;BR /&gt;&lt;BR /&gt;What exactly document do you mean saying it does not adequately explain borders? I am still hoping chapter 2 "Inte IPP Concepts" of Image processing Manual (ippiman.pdf) is quite well in explanation of these basic things.&lt;BR /&gt;&lt;BR /&gt;Vladimir&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;&lt;BR /&gt;I am making the assumption that your released product is complete in terms of the way it is documented; "beta" documentation references are out of scope for us given we are trying to produce a production grade solution based on your products.&lt;/P&gt;
&lt;P&gt;The IPP generated step calculation, when fed back to IPP API's produces incorrect results for small bitmaps. It would also be helpful to have some guidance on mixingIPP data buffers with other libraries such as GDI+ and OpenGL textures.&lt;BR /&gt;&lt;BR /&gt;I appreciate the intent Vladimir. It's all good. Just be thankful you don't have to read my French.&lt;/P&gt;</description>
    <pubDate>Fri, 10 Apr 2009 20:08:01 GMT</pubDate>
    <dc:creator>noemata</dc:creator>
    <dc:date>2009-04-10T20:08:01Z</dc:date>
    <item>
      <title>Fixed IPP crash problems.  If only Intel provided something like this as an example.  This covers many use cases (resize, filter, etc.).  Would have saved me half a day of trial and error.</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861489#M7764</link>
      <description>// Authored by: Mario Pintaric&lt;BR /&gt;&lt;BR /&gt;// ippTest.cpp : Defines the entry point for the console application.&lt;BR /&gt;//&lt;BR /&gt;&lt;BR /&gt;#include "stdafx.h"&lt;BR /&gt;&lt;BR /&gt;#include &lt;WINDOWS.H&gt;&lt;BR /&gt;#include &lt;COMDEF.H&gt;&lt;BR /&gt;#include &lt;GDIPLUS.H&gt;&lt;BR /&gt;&lt;BR /&gt;#pragma comment(lib, "gdiplus")&lt;BR /&gt;&lt;BR /&gt;#include "ipp.h"&lt;BR /&gt;&lt;BR /&gt;#pragma comment(lib, "ippcore.lib")&lt;BR /&gt;#pragma comment(lib, "ippi.lib")&lt;BR /&gt;&lt;BR /&gt;using namespace Gdiplus;&lt;BR /&gt;&lt;BR /&gt;class GdiplusInit &lt;BR /&gt;{&lt;BR /&gt;public: &lt;BR /&gt;GdiplusInit() &lt;BR /&gt;{&lt;BR /&gt;GdiplusStartup(&amp;amp;gdiplusToken, &amp;amp;gdiplusStartupInput, NULL); &lt;BR /&gt;} &lt;BR /&gt;~GdiplusInit() &lt;BR /&gt;{&lt;BR /&gt;GdiplusShutdown(gdiplusToken); &lt;BR /&gt;} &lt;BR /&gt;protected: &lt;BR /&gt;private: &lt;BR /&gt;GdiplusStartupInput gdiplusStartupInput; &lt;BR /&gt;ULONG_PTR gdiplusToken; &lt;BR /&gt;}; &lt;BR /&gt;&lt;BR /&gt;GdiplusInit InitGDIPlus;&lt;BR /&gt;&lt;BR /&gt;int GetEncoderClsid(const WCHAR* format, CLSID* pClsid)&lt;BR /&gt;{&lt;BR /&gt;UINT num = 0; // number of image encoders&lt;BR /&gt;UINT size = 0; // size of the image encoder array&lt;BR /&gt;// in bytes&lt;BR /&gt;Gdiplus::ImageCodecInfo* pImageCodecInfo = NULL;&lt;BR /&gt;&lt;BR /&gt;Gdiplus::GetImageEncodersSize(&amp;amp;num, &amp;amp;size);&lt;BR /&gt;if(size == 0)&lt;BR /&gt;return -1;&lt;BR /&gt;&lt;BR /&gt;pImageCodecInfo = (Gdiplus::ImageCodecInfo*)(malloc(size));&lt;BR /&gt;if(pImageCodecInfo == NULL)&lt;BR /&gt;return -1;&lt;BR /&gt;&lt;BR /&gt;GetImageEncoders(num, size, pImageCodecInfo);&lt;BR /&gt;&lt;BR /&gt;for(UINT j = 0; j &amp;lt; num; ++j)&lt;BR /&gt;{&lt;BR /&gt;if( wcscmp(pImageCodecInfo&lt;J&gt;.MimeType, format) == 0 )&lt;BR /&gt;{&lt;BR /&gt;*pClsid = pImageCodecInfo&lt;J&gt;.Clsid;&lt;BR /&gt;free(pImageCodecInfo);&lt;BR /&gt;return j; // Success&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;free(pImageCodecInfo);&lt;BR /&gt;return -1;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;IppStatus GaussBmp(Ipp8u *pSrc, IppiSize srcSize, int nChannels, IppiMaskSize op)&lt;BR /&gt;{&lt;BR /&gt;Ipp8u *pad;&lt;BR /&gt;int nPad, step;&lt;BR /&gt;IppiSize padSize;&lt;BR /&gt;Ipp8u *pBorderOffset;&lt;BR /&gt;IppStatus status = ippStsNoMemErr;&lt;BR /&gt;&lt;BR /&gt;// Set mask operation. Intel IPP docs do not provide an adequate explanation of border value condition handling.&lt;BR /&gt;// Overall, the docs are riddled with mistakes, poor grammar and incomplete explanations.&lt;BR /&gt;if ( op == ippMskSize3x3 )&lt;BR /&gt;{&lt;BR /&gt;nPad = 3;&lt;BR /&gt;}&lt;BR /&gt;else if ( op == ippMskSize5x5 )&lt;BR /&gt;{&lt;BR /&gt;nPad = 5; // Crashes when set to 5. Why???&lt;BR /&gt;}&lt;BR /&gt;else&lt;BR /&gt;return ippStsNotSupportedModeErr;&lt;BR /&gt;&lt;BR /&gt;// Calculate padded and filtered bitmap sizes.&lt;BR /&gt;padSize.width = srcSize.width + (2 * nPad);&lt;BR /&gt;padSize.height = srcSize.height + (2 * nPad);&lt;BR /&gt;&lt;BR /&gt;// Allocate padded bitmap that will contain replicated border of source bitmap and corresponding filter target bitmap.&lt;BR /&gt;if (nChannels == 1)&lt;BR /&gt;{&lt;BR /&gt;pad = ippiMalloc_8u_C1(padSize.width, padSize.height, &amp;amp;step);&lt;BR /&gt;}&lt;BR /&gt;else if (nChannels == 3)&lt;BR /&gt;{&lt;BR /&gt;pad = ippiMalloc_8u_C3(padSize.width, padSize.height, &amp;amp;step);&lt;BR /&gt;}&lt;BR /&gt;else if (nChannels == 4)&lt;BR /&gt;{&lt;BR /&gt;pad = ippiMalloc_8u_AC4(padSize.width, padSize.height, &amp;amp;step);&lt;BR /&gt;}&lt;BR /&gt;else&lt;BR /&gt;return ippStsNotSupportedModeErr;&lt;BR /&gt;&lt;BR /&gt;if ( !pad )&lt;BR /&gt;goto Fault;&lt;BR /&gt;&lt;BR /&gt;// Note: Intel IPP seems to incorrectly caclulate the step value!!! Why??? Especially bad for small bitmap sizes (&amp;lt; 10 bytes wide)&lt;BR /&gt;step = padSize.width * nChannels;&lt;BR /&gt;&lt;BR /&gt;if (nChannels == 1)&lt;BR /&gt;{&lt;BR /&gt;status = ippiCopyReplicateBorder_8u_C1R(pSrc, srcSize.width * nChannels, srcSize, pad, step, padSize, nPad, nPad);&lt;BR /&gt;}&lt;BR /&gt;else if (nChannels == 3)&lt;BR /&gt;{&lt;BR /&gt;status = ippiCopyReplicateBorder_8u_C3R(pSrc, srcSize.width * nChannels, srcSize, pad, step, padSize, nPad, nPad);&lt;BR /&gt;}&lt;BR /&gt;else if (nChannels == 4)&lt;BR /&gt;{&lt;BR /&gt;status = ippiCopyReplicateBorder_8u_AC4R(pSrc, srcSize.width * nChannels, srcSize, pad, step, padSize, nPad, nPad);&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;if ( status )&lt;BR /&gt;goto Fault;&lt;BR /&gt;&lt;BR /&gt;// The docs do not provide any clarity on the need to do this. None of the samples I've seen suggest this is required.&lt;BR /&gt;// Half a day blown because of poor documentation!&lt;BR /&gt;pBorderOffset = &amp;amp;pad[(padSize.width * nPad * nChannels) + (nPad * nChannels)];&lt;BR /&gt;&lt;BR /&gt;if (nChannels == 1)&lt;BR /&gt;{&lt;BR /&gt;status = ippiFilterGauss_8u_C1R(pBorderOffset, step, pSrc, srcSize.width * nChannels, srcSize, op);&lt;BR /&gt;}&lt;BR /&gt;else if (nChannels == 3)&lt;BR /&gt;{&lt;BR /&gt;status = ippiFilterGauss_8u_C3R(pBorderOffset, step, pSrc, srcSize.width * nChannels, srcSize, op);&lt;BR /&gt;}&lt;BR /&gt;else if (nChannels == 4)&lt;BR /&gt;{&lt;BR /&gt;status = ippiFilterGauss_8u_AC4R(pBorderOffset, step, pSrc, srcSize.width * nChannels, srcSize, op);&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;if ( status )&lt;BR /&gt;goto Fault;&lt;BR /&gt;&lt;BR /&gt;Fault:&lt;BR /&gt;if ( pad )&lt;BR /&gt;ippiFree(pad);&lt;BR /&gt;&lt;BR /&gt;return status;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;int _tmain(int argc, _TCHAR* argv[])&lt;BR /&gt;{&lt;BR /&gt;const IppLibraryVersion* ippVersion = ippiGetLibVersion();&lt;BR /&gt;&lt;BR /&gt;printf("IPP: [ %s %s ]\n", ippVersion-&amp;gt;Name, ippVersion-&amp;gt;Version);&lt;BR /&gt;&lt;BR /&gt;Bitmap inBmp(L"bg.bmp");&lt;BR /&gt;&lt;BR /&gt;if ( inBmp.GetLastStatus() == Ok )&lt;BR /&gt;{&lt;BR /&gt;PixelFormat fmt = inBmp.GetPixelFormat();&lt;BR /&gt;&lt;BR /&gt;if ( PixelFormat24bppRGB == fmt )&lt;BR /&gt;{&lt;BR /&gt;BitmapData InData, growData, shrinkData;&lt;BR /&gt;&lt;BR /&gt;int growwidth = inBmp.GetWidth() * 4;&lt;BR /&gt;int growheight = inBmp.GetHeight() * 4;&lt;BR /&gt;&lt;BR /&gt;int shrinkwidth = growwidth / 8;&lt;BR /&gt;int shrinkheight = growheight / 8;&lt;BR /&gt;&lt;BR /&gt;Bitmap growBmp(growwidth, growheight, PixelFormat24bppRGB);&lt;BR /&gt;Bitmap shrinkBmp(shrinkwidth, shrinkheight, PixelFormat24bppRGB);&lt;BR /&gt;&lt;BR /&gt;inBmp.LockBits(0, ImageLockModeRead, PixelFormat24bppRGB, &amp;amp;InData);&lt;BR /&gt;growBmp.LockBits(0, ImageLockModeWrite, PixelFormat24bppRGB, &amp;amp;growData);&lt;BR /&gt;shrinkBmp.LockBits(0, ImageLockModeWrite, PixelFormat24bppRGB, &amp;amp;shrinkData);&lt;BR /&gt;&lt;BR /&gt;IppStatus status;&lt;BR /&gt;IppiSize inSize = { inBmp.GetWidth(), inBmp.GetHeight() };&lt;BR /&gt;IppiRect inRect = { 0, 0, inBmp.GetWidth(), inBmp.GetHeight() };&lt;BR /&gt;IppiSize shrinkSize = { shrinkwidth, shrinkheight }; &lt;BR /&gt;IppiRect shrinkRect = { 0, 0, shrinkwidth, shrinkheight };&lt;BR /&gt;IppiSize growSize = { growwidth, growheight }; &lt;BR /&gt;IppiRect growRect = { 0, 0, growwidth, growheight };&lt;BR /&gt;&lt;BR /&gt;double xgrowFactor = growwidth / (double)inBmp.GetWidth();&lt;BR /&gt;double ygrowFactor = growheight / (double)inBmp.GetHeight();&lt;BR /&gt;double xshrinkFactor = shrinkwidth / (double)growwidth;&lt;BR /&gt;double yshrinkFactor = shrinkheight / (double)growheight;&lt;BR /&gt;double xShift = 0.0;&lt;BR /&gt;double yShift = 0.0;&lt;BR /&gt;int nChannel = 3;&lt;BR /&gt;&lt;BR /&gt;int bufferSize = 0;&lt;BR /&gt;Ipp8u *pshrinkBuffer = NULL, *pgrowBuffer = NULL;&lt;BR /&gt;&lt;BR /&gt;// IPPI_INTER_NN&lt;BR /&gt;// IPPI_INTER_LINEAR&lt;BR /&gt;// IPPI_INTER_CUBIC&lt;BR /&gt;// IPPI_INTER_CUBIC2P_BSPLINE&lt;BR /&gt;// IPPI_INTER_CUBIC2P_CATMULLROM&lt;BR /&gt;// IPPI_INTER_CUBIC2P_B05C03&lt;BR /&gt;// IPPI_INTER_SUPER&lt;BR /&gt;// IPPI_INTER_LANCZOS&lt;BR /&gt;int interpolation = IPPI_INTER_LANCZOS; // Is this the best IPP has to offer when downsampling?&lt;BR /&gt;&lt;BR /&gt;// Note: docs imply IPPI_INTER_SUPER is supported by ippiResizeSqrPixel, but it is not???&lt;BR /&gt;status = ippiResizeSqrPixelGetBufSize(shrinkSize, nChannel, interpolation, &amp;amp;bufferSize);&lt;BR /&gt;&lt;BR /&gt;if ( status )&lt;BR /&gt;goto Fault;&lt;BR /&gt;&lt;BR /&gt;pshrinkBuffer = (Ipp8u *)ippMalloc(bufferSize);&lt;BR /&gt;&lt;BR /&gt;if ( !pshrinkBuffer )&lt;BR /&gt;goto Fault;&lt;BR /&gt;&lt;BR /&gt;status = ippiResizeSqrPixelGetBufSize(growSize, nChannel, interpolation, &amp;amp;bufferSize);&lt;BR /&gt;&lt;BR /&gt;if ( status )&lt;BR /&gt;goto Fault;&lt;BR /&gt;&lt;BR /&gt;pgrowBuffer = (Ipp8u *)ippMalloc(bufferSize);&lt;BR /&gt;&lt;BR /&gt;if ( !pgrowBuffer )&lt;BR /&gt;goto Fault;&lt;BR /&gt;&lt;BR /&gt;status = ippiResizeSqrPixel_8u_C3R((Ipp8u*)InData.Scan0, inSize, inBmp.GetWidth() * nChannel, inRect, (Ipp8u*)growData.Scan0, growwidth * nChannel, growRect, xgrowFactor, ygrowFactor, 0, 0, interpolation, pgrowBuffer);&lt;BR /&gt;&lt;BR /&gt;if ( status )&lt;BR /&gt;goto Fault;&lt;BR /&gt;&lt;BR /&gt;// Blur upscaled bitmap so that we downscale more smoothly.&lt;BR /&gt;status = GaussBmp((Ipp8u*)growData.Scan0, growSize, nChannel, ippMskSize5x5);&lt;BR /&gt;&lt;BR /&gt;if ( status )&lt;BR /&gt;goto Fault;&lt;BR /&gt;&lt;BR /&gt;// Blur some more ...&lt;BR /&gt;status = GaussBmp((Ipp8u*)growData.Scan0, growSize, nChannel, ippMskSize5x5);&lt;BR /&gt;&lt;BR /&gt;if ( status )&lt;BR /&gt;goto Fault;&lt;BR /&gt;&lt;BR /&gt;// Sadly, Photoshop does a way better job. To my eyes, it's at least twice as good.&lt;BR /&gt;// To equal its quality we need to pull a couple more tricks before getting to here.&lt;BR /&gt;status = ippiResizeSqrPixel_8u_C3R((Ipp8u*)growData.Scan0, growSize, growBmp.GetWidth() * nChannel, growRect, (Ipp8u*)shrinkData.Scan0, shrinkwidth * nChannel, shrinkRect, xshrinkFactor, yshrinkFactor, 0, 0, interpolation, pshrinkBuffer);&lt;BR /&gt;&lt;BR /&gt;Fault:&lt;BR /&gt;if ( status == ippStsInterpolationErr )&lt;BR /&gt;printf("Invalid interpolation mode!\n");&lt;BR /&gt;&lt;BR /&gt;if ( pshrinkBuffer )&lt;BR /&gt;ippFree(pshrinkBuffer);&lt;BR /&gt;&lt;BR /&gt;if ( pgrowBuffer )&lt;BR /&gt;ippFree(pgrowBuffer);&lt;BR /&gt;&lt;BR /&gt;inBmp.UnlockBits(&amp;amp;InData);&lt;BR /&gt;growBmp.UnlockBits(&amp;amp;growData);&lt;BR /&gt;shrinkBmp.UnlockBits(&amp;amp;shrinkData);&lt;BR /&gt;&lt;BR /&gt;if ( status == ippStsNoErr )&lt;BR /&gt;{&lt;BR /&gt;CLSID clsidBMP;&lt;BR /&gt;&lt;BR /&gt;GetEncoderClsid(L"image/bmp", &amp;amp;clsidBMP);&lt;BR /&gt;&lt;BR /&gt;growBmp.Save(L"grow.bmp", &amp;amp;clsidBMP);&lt;BR /&gt;shrinkBmp.Save(L"shrink.bmp", &amp;amp;clsidBMP);&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;return 0;&lt;BR /&gt;}&lt;BR /&gt;&lt;/J&gt;&lt;/J&gt;&lt;/GDIPLUS.H&gt;&lt;/COMDEF.H&gt;&lt;/WINDOWS.H&gt;</description>
      <pubDate>Fri, 10 Apr 2009 18:52:46 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861489#M7764</guid>
      <dc:creator>noemata</dc:creator>
      <dc:date>2009-04-10T18:52:46Z</dc:date>
    </item>
    <item>
      <title>Re: Fixed IPP crash problems.  If only Intel provided something</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861490#M7765</link>
      <description>&lt;DIV style="margin: 0px; height: auto;"&gt;&lt;/DIV&gt;
That's good! BTW, sometime looking through function description before use may help to save time for trial and errors.&lt;BR /&gt;&lt;BR /&gt;Anyway I'm glad you solve the issue&lt;BR /&gt;&lt;BR /&gt;Regards,&lt;BR /&gt; Vladimir&lt;BR /&gt;</description>
      <pubDate>Fri, 10 Apr 2009 19:05:05 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861490#M7765</guid>
      <dc:creator>Vladimir_Dudnik</dc:creator>
      <dc:date>2009-04-10T19:05:05Z</dc:date>
    </item>
    <item>
      <title>Re: Fixed IPP crash problems.  If only Intel provided something</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861491#M7766</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="margin-top: 5px; width: 100%;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/336498"&gt;Vladimir Dudnik (Intel)&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt;That's good! BTW, sometime looking through function description before use may help to save time for trial and errors.&lt;BR /&gt;&lt;BR /&gt;Anyway I'm glad you solve the issue&lt;BR /&gt;&lt;BR /&gt;Regards,&lt;BR /&gt; Vladimir&lt;BR /&gt;&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;BR /&gt;There are a number of issues highlighted by this code. IPP step size is incorrectly caclulated for small bitmap sizes. I'm not entirely sure why theincorrectly cacluated IPPvalue works for larger bitmaps, though the fix shown here seems to work in all cases.&lt;BR /&gt;&lt;BR /&gt;The docs do not adequately explain border handling considerations.&lt;BR /&gt;&lt;BR /&gt;Why is IPPI_INTER_SUPER not supported by the ippiResizeSqrPixelGetBufSize() function? You made reference to it in other posts as being one of the valid options.&lt;BR /&gt;&lt;BR /&gt;Lastly, the provided Intel documentation needs an overhaul. I hate to say it Vladimir ... but the English languageis a second class citizen here. Since English is the language of discourse, I would expect nothing less than first caliber diction from those supporting this forum and writing the IPP documentation.&lt;BR /&gt;</description>
      <pubDate>Fri, 10 Apr 2009 19:20:45 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861491#M7766</guid>
      <dc:creator>noemata</dc:creator>
      <dc:date>2009-04-10T19:20:45Z</dc:date>
    </item>
    <item>
      <title>Re: Fixed IPP crash problems.  If only Intel provided something</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861492#M7767</link>
      <description>&lt;DIV style="margin: 0px; height: auto;"&gt;&lt;/DIV&gt;
&lt;BR /&gt;Well let's try to improve the things together. If you canrefer me to the specific examples of bad written phrases in documentation I will submit this as a bug report to product bug tracker. Of course you also may do thisthrough &lt;A href="https://community.intel.com/premier.intel.com"&gt;Intel Premier Support&lt;/A&gt; channel.&lt;BR /&gt;&lt;BR /&gt;It is also not clear for me how do you conclude IPPI_INTER_SUPER does not work? Did you notice a code example in ippiman.pdf file on page 937 (I am referring to the documents available in Inel Compiler 11.1 beta).&lt;BR /&gt;&lt;BR /&gt;While English is not my native language I hope engineers may understand each other in the most of cases. Although there are native english speaking persons who provide support on this forum.&lt;BR /&gt;&lt;BR /&gt;Regarding step calculation I just provided comment in your another post. If you took attention to ippiMalloc description you may notice that this fuction do align memory buffer it allocates and so it returns step for this 2D memory buffer. Soyou have to use this instead of replacing it with your own value whichdoes not take into account actual aligment done at allocation.&lt;BR /&gt;&lt;BR /&gt;What exactly document do you mean saying it does not adequately explain borders? I am still hoping chapter 2 "Inte IPP Concepts" of Image processing Manual (ippiman.pdf) is quite well in explanation of these basic things.&lt;BR /&gt;&lt;BR /&gt;Vladimir</description>
      <pubDate>Fri, 10 Apr 2009 19:44:29 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861492#M7767</guid>
      <dc:creator>Vladimir_Dudnik</dc:creator>
      <dc:date>2009-04-10T19:44:29Z</dc:date>
    </item>
    <item>
      <title>Re: Fixed IPP crash problems.  If only Intel provided something</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861493#M7768</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="margin-top: 5px; width: 100%;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/336498"&gt;Vladimir Dudnik (Intel)&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt;&lt;BR /&gt;Well let's try to improve the things together. If you canrefer me to the specific examples of bad written phrases in documentation I will submit this as a bug report to product bug tracker. Of course you also may do thisthrough &lt;A href="https://community.intel.com/premier.intel.com"&gt;Intel Premier Support&lt;/A&gt; channel.&lt;BR /&gt;&lt;BR /&gt;It is also not clear for me how do you conclude IPPI_INTER_SUPER does not work? Did you notice a code example in ippiman.pdf file on page 937 (I am referring to the documents available in Inel Compiler 11.1 beta).&lt;BR /&gt;&lt;BR /&gt;While English is not my native language I hope engineers may understand each other in the most of cases. Although there are native english speaking persons who provide support on this forum.&lt;BR /&gt;&lt;BR /&gt;Regarding step calculation I just provided comment in your another post. If you took attention to ippiMalloc description you may notice that this fuction do align memory buffer it allocates and so it returns step for this 2D memory buffer. Soyou have to use this instead of replacing it with your own value whichdoes not take into account actual aligment done at allocation.&lt;BR /&gt;&lt;BR /&gt;What exactly document do you mean saying it does not adequately explain borders? I am still hoping chapter 2 "Inte IPP Concepts" of Image processing Manual (ippiman.pdf) is quite well in explanation of these basic things.&lt;BR /&gt;&lt;BR /&gt;Vladimir&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;&lt;BR /&gt;I am making the assumption that your released product is complete in terms of the way it is documented; "beta" documentation references are out of scope for us given we are trying to produce a production grade solution based on your products.&lt;/P&gt;
&lt;P&gt;The IPP generated step calculation, when fed back to IPP API's produces incorrect results for small bitmaps. It would also be helpful to have some guidance on mixingIPP data buffers with other libraries such as GDI+ and OpenGL textures.&lt;BR /&gt;&lt;BR /&gt;I appreciate the intent Vladimir. It's all good. Just be thankful you don't have to read my French.&lt;/P&gt;</description>
      <pubDate>Fri, 10 Apr 2009 20:08:01 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861493#M7768</guid>
      <dc:creator>noemata</dc:creator>
      <dc:date>2009-04-10T20:08:01Z</dc:date>
    </item>
    <item>
      <title>Re: Fixed IPP crash problems.  If only Intel provided something</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861494#M7769</link>
      <description>&lt;DIV style="margin:0px;"&gt;&lt;/DIV&gt;
&lt;BR /&gt;Well, I just made an assumption you use IPP 6.1 beta from Intel Parallel Composer beta.You may accessIPP 6.0producton the &lt;A href="http://software.intel.com/en-us/intel-ipp/"&gt;IPP Home page&lt;/A&gt;.&lt;BR /&gt;&lt;BR /&gt;IPP generated step itself can't cause incorrect results regardless of image size. I'm sure the reason is some other mistake in IPP function use.&lt;BR /&gt;&lt;BR /&gt;Did you take a look at &lt;A href="http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-samples-license-agreement/"&gt;IPP samples&lt;/A&gt;? We provide plenty of different applications in source code to demonstrate how to use IPP functions or how to build different media codecs based on IPP functions.&lt;BR /&gt;&lt;BR /&gt;Regards,&lt;BR /&gt; Vladimir</description>
      <pubDate>Fri, 10 Apr 2009 20:34:41 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861494#M7769</guid>
      <dc:creator>Vladimir_Dudnik</dc:creator>
      <dc:date>2009-04-10T20:34:41Z</dc:date>
    </item>
    <item>
      <title>Re: Fixed IPP crash problems.  If only Intel provided something</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861495#M7770</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="width: 100%; margin-top: 5px;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/336498"&gt;Vladimir Dudnik (Intel)&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt; &lt;BR /&gt;Well, I just made an assumption you use IPP 6.1 beta from Intel Parallel Composer beta.You may accessIPP 6.0producton the &lt;A href="http://software.intel.com/en-us/intel-ipp/"&gt;IPP Home page&lt;/A&gt;.&lt;BR /&gt;&lt;BR /&gt;IPP generated step itself can't cause incorrect results regardless of image size. I'm sure the reason is some other mistake in IPP function use.&lt;BR /&gt;&lt;BR /&gt;Did you take a look at &lt;A href="http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-samples-license-agreement/"&gt;IPP samples&lt;/A&gt;? We provide plenty of different applications in source code to demonstrate how to use IPP functions or how to build different media codecs based on IPP functions.&lt;BR /&gt;&lt;BR /&gt;Regards,&lt;BR /&gt; Vladimir&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;BR /&gt;
&lt;DIV&gt;Nope, Vladimir, this is definitely a bug in the IPP. It's really bad in v 6.0 (causing extremely strange bitmaps to be produced), but the strange thing is, it's not as bad in v 5.3 update 3. I've had to backtrack to the v 5.3 version of the ipp because of this bug.&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;&lt;/DIV&gt;
&lt;DIV&gt;I'm using sampling code that's coming from the ipp documentation; for instance:&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;bool CGenerate2xSubsample::Reduce_2D_Intel(eReductionType inWhichReduction, &lt;BR /&gt; Ipp32f *In, int NxIn, int NyIn,&lt;BR /&gt; Ipp32f *Out, int NxOut, int NyOut)&lt;BR /&gt;{&lt;BR /&gt; WriteMammoLogFileString("tttReduce 2d startedn");&lt;BR /&gt; IppiSize size  = {NxIn,NyIn};&lt;BR /&gt; IppiRect srect = {0,0,NxIn,NyIn};&lt;BR /&gt; IppiRect drect = {0,0,NxOut,NyOut};&lt;BR /&gt; int bufsize;&lt;BR /&gt; Ipp8u* buf;&lt;BR /&gt; IppStatus status = ippStsNoErr;&lt;BR /&gt; /* calculation of work buffer size */&lt;BR /&gt; int theType = IPPI_INTER_NN;&lt;BR /&gt; switch (inWhichReduction){&lt;BR /&gt; case EReduceNearest:&lt;BR /&gt; theType = IPPI_INTER_NN;&lt;BR /&gt; break;&lt;BR /&gt; case EReduceLinear:&lt;BR /&gt; theType = IPPI_INTER_LINEAR;&lt;BR /&gt; break;&lt;BR /&gt; case EReduceCubic:&lt;BR /&gt; theType = IPPI_INTER_CUBIC;&lt;BR /&gt; break;&lt;BR /&gt; case EReduceLanczos:&lt;BR /&gt; theType = IPPI_INTER_LANCZOS;&lt;BR /&gt; break;&lt;BR /&gt; case EReduceCubicBSpline:&lt;BR /&gt; theType = IPPI_INTER_CUBIC2P_BSPLINE;&lt;BR /&gt; break;&lt;BR /&gt; case EReduceCubicCatMullrom:&lt;BR /&gt; theType = IPPI_INTER_CUBIC2P_CATMULLROM;&lt;BR /&gt; break;&lt;BR /&gt; case EReduceSuper:&lt;BR /&gt; theType = IPPI_INTER_SUPER;&lt;BR /&gt; break;&lt;BR /&gt; }&lt;BR /&gt; ippiResizeGetBufSize( srect, drect, 1, theType, &amp;amp;bufsize ); &lt;BR /&gt; /* memory allocate */&lt;BR /&gt; buf = ippsMalloc_8u( bufsize );&lt;BR /&gt; if( NULL != buf )&lt;BR /&gt; status = ippiResizeSqrPixel_32f_C1R(&lt;BR /&gt; In, size, NxIn*sizeof(Ipp32f), srect,&lt;BR /&gt; Out, NxOut*sizeof(Ipp32f), drect,&lt;BR /&gt; ((float)NxOut)/((float)NxIn), ((float)NyOut)/((float)NyIn),&lt;BR /&gt; 0, 0, theType, buf );&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt; /* memory free */&lt;BR /&gt; if( NULL != buf ) ippsFree( buf );&lt;BR /&gt; WriteMammoLogFileString("tttReduce 2d donen");&lt;BR /&gt;&lt;BR /&gt; if (status == ippStsNoErr)&lt;BR /&gt; return true;&lt;BR /&gt; else return false;&lt;BR /&gt;}&lt;BR /&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;&lt;/DIV&gt;
&lt;DIV&gt;That code, and the upsampling variation, fails catastrophically when the bitmap size gets to about 3 or lower on either side for a bitmap. In v 5.3, the resulting bitmap is definitely wrong, but it's not catastrophically wrong-- in v 6.0, the produced bitmap contains values that are in the negative 8 million range from a range of 0-65535. In fact, the exact same code in v 5.3 is relatively well behaved, but the code in v 6 causes serious machine-dependent stability problems as well.&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;&lt;/DIV&gt;
&lt;DIV&gt;I don't know if it's a problem in the documentation or not, but it seems that there's a general haziness about whether to use ippiMalloc_32f_C1 or ippsMalloc_32f for single channel data. For instance, if I use ippsMalloc_32f, then I just use the ippi functions by specifying the step size to be the number of columns * sizeof(type). I'm guessing that that assumption fails here?&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;&lt;/DIV&gt;</description>
      <pubDate>Fri, 10 Apr 2009 23:48:19 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861495#M7770</guid>
      <dc:creator>Mark_Roden</dc:creator>
      <dc:date>2009-04-10T23:48:19Z</dc:date>
    </item>
    <item>
      <title>Re: Fixed IPP crash problems.  If only Intel provided something</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861496#M7771</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="margin-top: 5px; width: 100%;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/405548"&gt;Mark Roden&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt;
&lt;DIV style="margin:0px;"&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;DIV&gt;Nope, Vladimir, this is definitely a bug in the IPP. It's really bad in v 6.0 (causing extremely strange bitmaps to be produced), but the strange thing is, it's not as bad in v 5.3 update 3. I've had to backtrack to the v 5.3 version of the ipp because of this bug.&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;&lt;/DIV&gt;
&lt;DIV&gt;I'm using sampling code that's coming from the ipp documentation; for instance:&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;bool CGenerate2xSubsample::Reduce_2D_Intel(eReductionType inWhichReduction, &lt;BR /&gt;Ipp32f *In, int NxIn, int NyIn,&lt;BR /&gt;Ipp32f *Out, int NxOut, int NyOut)&lt;BR /&gt;{&lt;BR /&gt;WriteMammoLogFileString("tttReduce 2d startedn");&lt;BR /&gt;IppiSize size = {NxIn,NyIn};&lt;BR /&gt;IppiRect srect = {0,0,NxIn,NyIn};&lt;BR /&gt;IppiRect drect = {0,0,NxOut,NyOut};&lt;BR /&gt;int bufsize;&lt;BR /&gt;Ipp8u* buf;&lt;BR /&gt;IppStatus status = ippStsNoErr;&lt;BR /&gt;/* calculation of work buffer size */&lt;BR /&gt;int theType = IPPI_INTER_NN;&lt;BR /&gt;switch (inWhichReduction){&lt;BR /&gt;case EReduceNearest:&lt;BR /&gt;theType = IPPI_INTER_NN;&lt;BR /&gt;break;&lt;BR /&gt;case EReduceLinear:&lt;BR /&gt;theType = IPPI_INTER_LINEAR;&lt;BR /&gt;break;&lt;BR /&gt;case EReduceCubic:&lt;BR /&gt;theType = IPPI_INTER_CUBIC;&lt;BR /&gt;break;&lt;BR /&gt;case EReduceLanczos:&lt;BR /&gt;theType = IPPI_INTER_LANCZOS;&lt;BR /&gt;break;&lt;BR /&gt;case EReduceCubicBSpline:&lt;BR /&gt;theType = IPPI_INTER_CUBIC2P_BSPLINE;&lt;BR /&gt;break;&lt;BR /&gt;case EReduceCubicCatMullrom:&lt;BR /&gt;theType = IPPI_INTER_CUBIC2P_CATMULLROM;&lt;BR /&gt;break;&lt;BR /&gt;case EReduceSuper:&lt;BR /&gt;theType = IPPI_INTER_SUPER;&lt;BR /&gt;break;&lt;BR /&gt;}&lt;BR /&gt;ippiResizeGetBufSize( srect, drect, 1, theType, &amp;amp;bufsize ); &lt;BR /&gt;/* memory allocate */&lt;BR /&gt;buf = ippsMalloc_8u( bufsize );&lt;BR /&gt;if( NULL != buf )&lt;BR /&gt;status = ippiResizeSqrPixel_32f_C1R(&lt;BR /&gt;In, size, NxIn*sizeof(Ipp32f), srect,&lt;BR /&gt;Out, NxOut*sizeof(Ipp32f), drect,&lt;BR /&gt;((float)NxOut)/((float)NxIn), ((float)NyOut)/((float)NyIn),&lt;BR /&gt;0, 0, theType, buf );&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;/* memory free */&lt;BR /&gt;if( NULL != buf ) ippsFree( buf );&lt;BR /&gt;WriteMammoLogFileString("tttReduce 2d donen");&lt;BR /&gt;&lt;BR /&gt;if (status == ippStsNoErr)&lt;BR /&gt;return true;&lt;BR /&gt;else return false;&lt;BR /&gt;}&lt;BR /&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;&lt;/DIV&gt;
&lt;DIV&gt;That code, and the upsampling variation, fails catastrophically when the bitmap size gets to about 3 or lower on either side for a bitmap. In v 5.3, the resulting bitmap is definitely wrong, but it's not catastrophically wrong-- in v 6.0, the produced bitmap contains values that are in the negative 8 million range from a range of 0-65535. In fact, the exact same code in v 5.3 is relatively well behaved, but the code in v 6 causes serious machine-dependent stability problems as well.&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;&lt;/DIV&gt;
&lt;DIV&gt;I don't know if it's a problem in the documentation or not, but it seems that there's a general haziness about whether to use ippiMalloc_32f_C1 or ippsMalloc_32f for single channel data. For instance, if I use ippsMalloc_32f, then I just use the ippi functions by specifying the step size to be the number of columns * sizeof(type). I'm guessing that that assumption fails here?&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;&lt;/DIV&gt;
&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;BR /&gt;The issue as identified in my code sample and a previous one I posted that operates on a smallish bitmap is the step value calculaton made by IPP. If you substitute the correct value rather than the one calculated by the IPP malloc functions, the other API's perform as expected. There are even instances where IPP will crash your app if you use its step value calculations. At some point Vladamir will eventually listen, I'm sure of that.&lt;BR /&gt;&lt;BR /&gt;Some of the underlying tech of IPPis VERY good indeed. That's why we're using it. I've decided to look at the obfuscations of the IPP docs and the failings of some of the APIsas a good thing. It will prevent many from doing anything useful with the API thus giving the few that get past it an advantage.&lt;BR /&gt;</description>
      <pubDate>Sat, 11 Apr 2009 11:38:15 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861496#M7771</guid>
      <dc:creator>noemata</dc:creator>
      <dc:date>2009-04-11T11:38:15Z</dc:date>
    </item>
    <item>
      <title>Re: Fixed IPP crash problems.  If only Intel provided something</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861497#M7772</link>
      <description>&lt;DIV style="margin:0px;"&gt;&lt;/DIV&gt;
&lt;BR /&gt;The issue is not in calculation of step in IPP. The problem is that you ignore actual data layout in your code and assume there is no padding in bitmap data you obtain through Windows API.&lt;BR /&gt;&lt;BR /&gt;Vladimir&lt;BR /&gt;&lt;BR /&gt;</description>
      <pubDate>Mon, 13 Apr 2009 18:17:07 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861497#M7772</guid>
      <dc:creator>Vladimir_Dudnik</dc:creator>
      <dc:date>2009-04-13T18:17:07Z</dc:date>
    </item>
    <item>
      <title>Re: Fixed IPP crash problems.  If only Intel provided something</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861498#M7773</link>
      <description>&lt;DIV style="margin: 0px; height: auto;"&gt;&lt;/DIV&gt;
To whom it may concern,&lt;BR /&gt;&lt;BR /&gt;This discussion alsowas recorded to IPP KB. Please see &lt;BR /&gt;&lt;A href="http://software.intel.com/en-us/articles/resize-function-ippiresizesqrpixel-crashed-for-small-image/"&gt;http://software.intel.com/en-us/articles/resize-function-ippiresizesqrpixel-crashed-for-small-image/&lt;/A&gt; and it includes one ippiResizeSqrPixelC sample code. &lt;BR /&gt;&lt;BR /&gt;Best Regards, &lt;BR /&gt;Ying &lt;BR /&gt;</description>
      <pubDate>Tue, 14 Apr 2009 03:22:54 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861498#M7773</guid>
      <dc:creator>Ying_H_Intel</dc:creator>
      <dc:date>2009-04-14T03:22:54Z</dc:date>
    </item>
    <item>
      <title>Re: Fixed IPP crash problems.  If only Intel provided something</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861499#M7774</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="width: 100%; margin-top: 5px;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/336498"&gt;Vladimir Dudnik (Intel)&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt; &lt;BR /&gt;The issue is not in calculation of step in IPP. The problem is that you ignore actual data layout in your code and assume there is no padding in bitmap data you obtain through Windows API.&lt;BR /&gt;&lt;BR /&gt;Vladimir&lt;BR /&gt;&lt;BR /&gt;&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;BR /&gt;&lt;BR /&gt;
&lt;DIV&gt;yes-- because I'm not using a bitmap, I'm using an array of floats that I've declared not to have any padding on them. So, I'm right to make the assumption, because I know exactly how my memory is declared.&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;&lt;/DIV&gt;
&lt;DIV&gt;Guess I'll just have to override the given function with one that works for small arrays.&lt;/DIV&gt;</description>
      <pubDate>Fri, 17 Apr 2009 01:38:02 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861499#M7774</guid>
      <dc:creator>Mark_Roden</dc:creator>
      <dc:date>2009-04-17T01:38:02Z</dc:date>
    </item>
    <item>
      <title>Re: Fixed IPP crash problems.  If only Intel provided something</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861500#M7775</link>
      <description>&lt;DIV style="margin:0px;"&gt;&lt;/DIV&gt;
Hello,&lt;BR /&gt;&lt;BR /&gt;regardless of what you are going to override you have to use IPP function with correct and valid parameters. In case of correct usage IPP functions will work with array of any size.&lt;BR /&gt;&lt;BR /&gt;Regards,&lt;BR /&gt; Vladimir&lt;BR /&gt;</description>
      <pubDate>Fri, 17 Apr 2009 12:56:46 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861500#M7775</guid>
      <dc:creator>Vladimir_Dudnik</dc:creator>
      <dc:date>2009-04-17T12:56:46Z</dc:date>
    </item>
    <item>
      <title>Re: Fixed IPP crash problems.  If only Intel provided something</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861501#M7776</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="width: 100%; margin-top: 5px;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/336498"&gt;Vladimir Dudnik (Intel)&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt; Hello,&lt;BR /&gt;&lt;BR /&gt;regardless of what you are going to override you have to use IPP function with correct and valid parameters. In case of correct usage IPP functions will work with array of any size.&lt;BR /&gt;&lt;BR /&gt;Regards,&lt;BR /&gt; Vladimir&lt;BR /&gt;&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;BR /&gt;
&lt;DIV&gt;So, what was incorrect in my usage? If I have an image with smaller than 4 pixels on an edge, the above function and it's sister to go in the opposite direction produce bogus and random results. I'd really like to get those working...&lt;/DIV&gt;</description>
      <pubDate>Mon, 20 Apr 2009 22:15:58 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861501#M7776</guid>
      <dc:creator>Mark_Roden</dc:creator>
      <dc:date>2009-04-20T22:15:58Z</dc:date>
    </item>
    <item>
      <title>Re: Fixed IPP crash problems.  If only Intel provided something</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861502#M7777</link>
      <description>&lt;DIV style="margin: 0px; height: auto;"&gt;&lt;/DIV&gt;
I thought I provided corrected sample. Do you find any issues with this code (archive resize.zip)?&lt;BR /&gt;&lt;BR /&gt;Regards,&lt;BR /&gt; Vladimir&lt;BR /&gt;</description>
      <pubDate>Tue, 21 Apr 2009 11:33:13 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861502#M7777</guid>
      <dc:creator>Vladimir_Dudnik</dc:creator>
      <dc:date>2009-04-21T11:33:13Z</dc:date>
    </item>
    <item>
      <title>Re: Fixed IPP crash problems.  If only Intel provided something</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861503#M7778</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="width: 100%; margin-top: 5px;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/336498"&gt;Vladimir Dudnik (Intel)&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt; I thought I provided corrected sample. Do you find any issues with this code (archive resize.zip)?&lt;BR /&gt;&lt;BR /&gt;Regards,&lt;BR /&gt; Vladimir&lt;BR /&gt;&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;BR /&gt;
&lt;DIV&gt;Yeah, that sample doesn't help.&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;&lt;/DIV&gt;
&lt;DIV&gt;Make some code with some floats, say a 10x10, and then shrink it gradually to 1x1. Watch the random values that appear if you try to grow back up to 10x10 from, say, 2x4. But it must be in float space! I don't care about ipp8u images.&lt;/DIV&gt;</description>
      <pubDate>Wed, 29 Apr 2009 23:19:04 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861503#M7778</guid>
      <dc:creator>Mark_Roden</dc:creator>
      <dc:date>2009-04-29T23:19:04Z</dc:date>
    </item>
    <item>
      <title>Re: Fixed IPP crash problems.  If only Intel provided something</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861504#M7779</link>
      <description>&lt;DIV style="margin:0px;"&gt;Hi Mark,&lt;BR /&gt;&lt;BR /&gt;
&lt;P align="left"&gt;Very thanks for an example. Yes, really, we had an &lt;SPAN style="color: #0000ff;"&gt;error :(&lt;BR /&gt;&lt;/SPAN&gt;It will be corrected in following release.&lt;BR /&gt;Now I recommend to you the workaround - to change interpolation type &lt;SPAN style="color: #ff0000;"&gt;to increase very small source images&lt;/SPAN&gt;:&lt;/P&gt;
&lt;P align="left"&gt; if (size.NxIn &amp;lt; 6 || size.NyIn &amp;lt; 6) {&lt;BR /&gt; if (theType == IPPI_INTER_LANCZOS)&lt;BR /&gt; theType = IPPI_INTER_CUBIC;&lt;BR /&gt; if (size.NxIn &amp;lt; 4 || size.NyIn &amp;lt; 4) {&lt;BR /&gt; if ((theType == IPPI_INTER_CUBIC) ||&lt;BR /&gt; (theType == IPPI_INTER_CUBIC2P_BSPLINE) ||&lt;BR /&gt; (theType == IPPI_INTER_CUBIC2P_CATMULLROM) ||&lt;BR /&gt; (theType == IPPI_INTER_CUBIC2P_B05C03))&lt;BR /&gt; theType = IPPI_INTER_LINEAR;&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt;&lt;BR /&gt;I think that it's quite correct for such small sizes.&lt;/P&gt;
&lt;P align="left"&gt;Thanks,&lt;BR /&gt;Yuri&lt;/P&gt;
&lt;/DIV&gt;</description>
      <pubDate>Tue, 05 May 2009 08:51:18 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861504#M7779</guid>
      <dc:creator>Yuri_Tikhomirov__Int</dc:creator>
      <dc:date>2009-05-05T08:51:18Z</dc:date>
    </item>
    <item>
      <title>Re: Fixed IPP crash problems.  If only Intel provided something</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861505#M7780</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="width: 100%; margin-top: 5px;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Hi Yuri,&lt;/DIV&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;&lt;/DIV&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Thanks much for looking into this, and I'm looking forward to the fix.&lt;/DIV&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;&lt;/DIV&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Linear will probably be fine; I'd think that it would make a difference to have the different styles on the smaller sizes of the pyramids.&lt;/DIV&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;&lt;/DIV&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;(incidentally, what about having a templateable pyramid, instead of one that's ipp8u? That way I could just use the ipp32f version for the images I need)&lt;/DIV&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;&lt;/DIV&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Thanks again!&lt;/DIV&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Mark&lt;/DIV&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;&lt;/DIV&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;&lt;/DIV&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/19685"&gt;Yuri Tikhomirov (Intel)&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt;
&lt;DIV style="margin:0px;"&gt;Hi Mark,&lt;BR /&gt;&lt;BR /&gt;
&lt;P align="left"&gt;Very thanks for an example. Yes, really, we had an &lt;SPAN style="color: #0000ff;"&gt;error :(&lt;BR /&gt;&lt;/SPAN&gt;It will be corrected in following release.&lt;BR /&gt;Now I recommend to you the workaround - to change interpolation type &lt;SPAN style="color: #ff0000;"&gt;to increase very small source images&lt;/SPAN&gt;:&lt;/P&gt;
&lt;P align="left"&gt;if (size.NxIn &amp;lt; 6 || size.NyIn &amp;lt; 6) {&lt;BR /&gt; if (theType == IPPI_INTER_LANCZOS)&lt;BR /&gt; theType = IPPI_INTER_CUBIC;&lt;BR /&gt; if (size.NxIn &amp;lt; 4 || size.NyIn &amp;lt; 4) {&lt;BR /&gt; if ((theType == IPPI_INTER_CUBIC) ||&lt;BR /&gt; (theType == IPPI_INTER_CUBIC2P_BSPLINE) ||&lt;BR /&gt; (theType == IPPI_INTER_CUBIC2P_CATMULLROM) ||&lt;BR /&gt; (theType == IPPI_INTER_CUBIC2P_B05C03))&lt;BR /&gt; theType = IPPI_INTER_LINEAR;&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt;&lt;BR /&gt;I think that it's quite correct for such small sizes.&lt;/P&gt;
&lt;P align="left"&gt;Thanks,&lt;BR /&gt;Yuri&lt;/P&gt;
&lt;/DIV&gt;
&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;BR /&gt;</description>
      <pubDate>Thu, 07 May 2009 02:33:39 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861505#M7780</guid>
      <dc:creator>Mark_Roden</dc:creator>
      <dc:date>2009-05-07T02:33:39Z</dc:date>
    </item>
    <item>
      <title>Re: Fixed IPP crash problems.  If only Intel provided something</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861506#M7781</link>
      <description>&lt;DIV style="margin:0px;"&gt;&lt;/DIV&gt;
Hi Mark,&lt;BR /&gt;&lt;BR /&gt;you probably may try ippiPyramidLayerDown/Up functions from ipp computer vision library (ippcv). These functions support Ipp32f data type&lt;BR /&gt;&lt;BR /&gt;Regards,&lt;BR /&gt; Vladimir&lt;BR /&gt;</description>
      <pubDate>Thu, 07 May 2009 11:50:52 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861506#M7781</guid>
      <dc:creator>Vladimir_Dudnik</dc:creator>
      <dc:date>2009-05-07T11:50:52Z</dc:date>
    </item>
    <item>
      <title>Re: Fixed IPP crash problems.  If only Intel provided something</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861507#M7782</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="width: 100%; margin-top: 5px;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/336498"&gt;Vladimir Dudnik (Intel)&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt; Hi Mark,&lt;BR /&gt;&lt;BR /&gt;you probably may try ippiPyramidLayerDown/Up functions from ipp computer vision library (ippcv). These functions support Ipp32f data type&lt;BR /&gt;&lt;BR /&gt;Regards,&lt;BR /&gt; Vladimir&lt;BR /&gt;&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;BR /&gt;&lt;/DIV&gt;
&lt;DIV&gt;Hi Vladimir,&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;&lt;/DIV&gt;
&lt;DIV&gt;After rereading the documentation, I see what you're saying. Specifically, looking at example 14-6 in the ippi documentation has an example with float-space pyramids. There appears to be some hackeration to get the structure to fit into the IppiPyramid structure, which itself has a pointer to the Ipp8u type but not the Ipp32f type. Definitely doable, but certainly not clean. I'll take a look at it, but if those functions just end up calling the interpolation code (and why wouldn't they? Unless there's repetitive code in here...), then they'll probably have the same problems.&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;&lt;/DIV&gt;
&lt;DIV&gt;Mark&lt;/DIV&gt;</description>
      <pubDate>Mon, 11 May 2009 21:04:51 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861507#M7782</guid>
      <dc:creator>Mark_Roden</dc:creator>
      <dc:date>2009-05-11T21:04:51Z</dc:date>
    </item>
    <item>
      <title>Re: Fixed IPP crash problems.  If only Intel provided something</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861508#M7783</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="margin-top: 5px; width: 100%;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/19685"&gt;Yuri Tikhomirov (Intel)&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt;
&lt;DIV style="margin:0px;"&gt;Hi Mark,&lt;BR /&gt;&lt;BR /&gt;
&lt;P align="left"&gt;Very thanks for an example. Yes, really, we had an &lt;SPAN style="color: #0000ff;"&gt;error :(&lt;BR /&gt;&lt;/SPAN&gt;It will be corrected in following release.&lt;BR /&gt;Now I recommend to you the workaround - to change interpolation type &lt;SPAN style="color: #ff0000;"&gt;to increase very small source images&lt;/SPAN&gt;:&lt;/P&gt;
&lt;P align="left"&gt; if (size.NxIn &amp;lt; 6 || size.NyIn &amp;lt; 6) {&lt;BR /&gt; if (theType == IPPI_INTER_LANCZOS)&lt;BR /&gt; theType = IPPI_INTER_CUBIC;&lt;BR /&gt; if (size.NxIn &amp;lt; 4 || size.NyIn &amp;lt; 4) {&lt;BR /&gt; if ((theType == IPPI_INTER_CUBIC) ||&lt;BR /&gt; (theType == IPPI_INTER_CUBIC2P_BSPLINE) ||&lt;BR /&gt; (theType == IPPI_INTER_CUBIC2P_CATMULLROM) ||&lt;BR /&gt; (theType == IPPI_INTER_CUBIC2P_B05C03))&lt;BR /&gt; theType = IPPI_INTER_LINEAR;&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt;&lt;BR /&gt;I think that it's quite correct for such small sizes.&lt;/P&gt;
&lt;P align="left"&gt;Thanks,&lt;BR /&gt;Yuri&lt;/P&gt;
&lt;/DIV&gt;
&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;BR /&gt;An udpate about this bug: it was fixed in the IPP 6.1 update 2 release.</description>
      <pubDate>Wed, 18 Nov 2009 09:09:29 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Fixed-IPP-crash-problems-If-only-Intel-provided-something-like/m-p/861508#M7783</guid>
      <dc:creator>Chao_Y_Intel</dc:creator>
      <dc:date>2009-11-18T09:09:29Z</dc:date>
    </item>
  </channel>
</rss>

