Hi,
I am calling ippTranspose with the following parameters (and valid buffer pointers of course):
void *pSrc = <input buffer>; void *pDst = <output buffer>; int iWidth = 640; int iHeight = 480; int iSrcStep = iWidth * 3; int iDstStep = iHeight * 3; int iSrcOffset = iSrcStep * (iHeight - 1); int iSrcStepT = -iSrcStep; IppiSize sizeSrc = { iWidth, iHeight }; ippiTranspose_8u_C3R((Ipp8u*)pSrc + iSrcOffset, iSrcStepT, (Ipp8u*)pDst, iDstStep, sizeSrc);
It crashes here:
050BD325 add esi,ecx 050BD327 add edi,3 050BD32A sub ebx,1 050BD32D je _p8_owniTranspose_8u_C3R+51h (50BD2E1h) 050BD32F jmp _p8_owniTranspose_8u_C3R+7Ah (50BD30Ah) 050BD331 sub ebx,9 050BD334 jl _p8_owniTranspose_8u_C3R+116h (50BD3A6h)> 050BD336 movd xmm0,dword ptr [esi] 050BD33A movd xmm1,dword ptr [ecx+esi] 050BD33F movd xmm2,dword ptr [esi+ecx*2] 050BD344 movd xmm3,dword ptr [ebp+esi] 050BD34A movd xmm4,dword ptr [esi+ecx*4] 050BD34F lea esi,[esi+ecx*4] 050BD352 punpckldq xmm0,xmm1 050BD356 punpckldq xmm2,xmm3
It looks like it processes the first source line (which is actually the last) and then ESI points to the next line after the last line instead of respecting the given source step to the next line before the last line.
Am I doing something wrong or is this a bug?
IPP version is 8.1 U1 (included with C++ Composer XE 2013 SP1 U4).