X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libswscale%2Fyuv2rgb_template.c;h=c38c3f67ebd3353f0e8b85864529e261a645cc66;hb=c3527cc973d872e63ef7d8a9395515e70306e236;hp=0a5eddf117c067acc6b090167ba133ad214e0a54;hpb=cabc90c2ce56ef56da0ad56500846ff6593d3210;p=ffmpeg diff --git a/libswscale/yuv2rgb_template.c b/libswscale/yuv2rgb_template.c index 0a5eddf117c..c38c3f67ebd 100644 --- a/libswscale/yuv2rgb_template.c +++ b/libswscale/yuv2rgb_template.c @@ -2,7 +2,6 @@ * yuv2rgb_mmx.c, Software YUV to RGB converter with Intel MMX "technology" * * Copyright (C) 2000, Silicon Integrated System Corp. - * All Rights Reserved. * * Author: Olie Lho * @@ -138,10 +137,10 @@ static inline int RENAME(yuv420_rgb16)(SwsContext *c, uint8_t* src[], int srcStr //printf("%X %X %X %X %X %X %X %X %X %X\n", (int)&c->redDither, (int)&b5Dither, (int)src[0], (int)src[1], (int)src[2], (int)dst[0], //srcStride[0],srcStride[1],srcStride[2],dstStride[0]); for (y= 0; y>1)*srcStride[1]; - uint8_t *_pv = src[2] + (y>>1)*srcStride[2]; + uint8_t *image = dst[0] + (y+srcSliceY)*dstStride[0]; + uint8_t *py = src[0] + y*srcStride[0]; + uint8_t *pu = src[1] + (y>>1)*srcStride[1]; + uint8_t *pv = src[2] + (y>>1)*srcStride[2]; long index= -h_size/2; b5Dither= dither8[y&1]; @@ -207,8 +206,8 @@ YUV2RGB "add $4, %0 \n\t" " js 1b \n\t" - : "+r" (index), "+r" (_image) - : "r" (_pu - index), "r" (_pv - index), "r"(&c->redDither), "r" (_py - 2*index) + : "+r" (index), "+r" (image) + : "r" (pu - index), "r" (pv - index), "r"(&c->redDither), "r" (py - 2*index) ); } @@ -233,10 +232,10 @@ static inline int RENAME(yuv420_rgb15)(SwsContext *c, uint8_t* src[], int srcStr //printf("%X %X %X %X %X %X %X %X %X %X\n", (int)&c->redDither, (int)&b5Dither, (int)src[0], (int)src[1], (int)src[2], (int)dst[0], //srcStride[0],srcStride[1],srcStride[2],dstStride[0]); for (y= 0; y>1)*srcStride[1]; - uint8_t *_pv = src[2] + (y>>1)*srcStride[2]; + uint8_t *image = dst[0] + (y+srcSliceY)*dstStride[0]; + uint8_t *py = src[0] + y*srcStride[0]; + uint8_t *pu = src[1] + (y>>1)*srcStride[1]; + uint8_t *pv = src[2] + (y>>1)*srcStride[2]; long index= -h_size/2; b5Dither= dither8[y&1]; @@ -297,8 +296,8 @@ YUV2RGB "add $16, %1 \n\t" "add $4, %0 \n\t" " js 1b \n\t" - : "+r" (index), "+r" (_image) - : "r" (_pu - index), "r" (_pv - index), "r"(&c->redDither), "r" (_py - 2*index) + : "+r" (index), "+r" (image) + : "r" (pu - index), "r" (pv - index), "r"(&c->redDither), "r" (py - 2*index) ); } @@ -321,10 +320,10 @@ static inline int RENAME(yuv420_rgb24)(SwsContext *c, uint8_t* src[], int srcStr __asm__ __volatile__ ("pxor %mm4, %mm4;" /* zero mm4 */ ); for (y= 0; y>1)*srcStride[1]; - uint8_t *_pv = src[2] + (y>>1)*srcStride[2]; + uint8_t *image = dst[0] + (y+srcSliceY)*dstStride[0]; + uint8_t *py = src[0] + y*srcStride[0]; + uint8_t *pu = src[1] + (y>>1)*srcStride[1]; + uint8_t *pv = src[2] + (y>>1)*srcStride[2]; long index= -h_size/2; /* this mmx assembly code deals with SINGLE scan line at a time, it convert 8 @@ -443,8 +442,8 @@ YUV2RGB "add $4, %0 \n\t" " js 1b \n\t" - : "+r" (index), "+r" (_image) - : "r" (_pu - index), "r" (_pv - index), "r"(&c->redDither), "r" (_py - 2*index) + : "+r" (index), "+r" (image) + : "r" (pu - index), "r" (pv - index), "r"(&c->redDither), "r" (py - 2*index) ); } @@ -467,10 +466,10 @@ static inline int RENAME(yuv420_rgb32)(SwsContext *c, uint8_t* src[], int srcStr __asm__ __volatile__ ("pxor %mm4, %mm4;" /* zero mm4 */ ); for (y= 0; y>1)*srcStride[1]; - uint8_t *_pv = src[2] + (y>>1)*srcStride[2]; + uint8_t *image = dst[0] + (y+srcSliceY)*dstStride[0]; + uint8_t *py = src[0] + y*srcStride[0]; + uint8_t *pu = src[1] + (y>>1)*srcStride[1]; + uint8_t *pv = src[2] + (y>>1)*srcStride[2]; long index= -h_size/2; /* this mmx assembly code deals with SINGLE scan line at a time, it convert 8 @@ -529,8 +528,8 @@ YUV2RGB "add $4, %0 \n\t" " js 1b \n\t" - : "+r" (index), "+r" (_image) - : "r" (_pu - index), "r" (_pv - index), "r"(&c->redDither), "r" (_py - 2*index) + : "+r" (index), "+r" (image) + : "r" (pu - index), "r" (pv - index), "r"(&c->redDither), "r" (py - 2*index) ); }