"punpcklbw %%mm5, %%mm2;" /* G7 G6 G5 G4 G3 G2 G1 G0 */\
-static inline void RENAME(yuv420_rgb16)(SwsContext *c, uint8_t* srcParam[], int srcStrideParam[], int srcSliceY,
+static inline int RENAME(yuv420_rgb16)(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
int srcSliceH, uint8_t* dst[], int dstStride[]){
- int srcStride[3];
- uint8_t *src[3];
int y, h_size;
- sws_orderYUV(c->srcFormat, src, srcStride, srcParam, srcStrideParam);
if(c->srcFormat == IMGFMT_422P){
srcStride[1] *= 2;
srcStride[2] *= 2;
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];
- int index= -h_size/2;
+ long index= -h_size/2;
b5Dither= dither8[y&1];
g6Dither= dither4[y&1];
MOVNTQ " %%mm5, 8 (%1);" /* store pixel 4-7 */
- "addl $16, %1 \n\t"
- "addl $4, %0 \n\t"
+ "add $16, %1 \n\t"
+ "add $4, %0 \n\t"
" js 1b \n\t"
: "+r" (index), "+r" (_image)
}
__asm__ __volatile__ (EMMS);
+
+ return srcSliceH;
}
-static inline void RENAME(yuv420_rgb15)(SwsContext *c, uint8_t* srcParam[], int srcStrideParam[], int srcSliceY,
+static inline int RENAME(yuv420_rgb15)(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
int srcSliceH, uint8_t* dst[], int dstStride[]){
- int srcStride[3];
- uint8_t *src[3];
int y, h_size;
- sws_orderYUV(c->srcFormat, src, srcStride, srcParam, srcStrideParam);
if(c->srcFormat == IMGFMT_422P){
srcStride[1] *= 2;
srcStride[2] *= 2;
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];
- int index= -h_size/2;
+ long index= -h_size/2;
b5Dither= dither8[y&1];
g6Dither= dither4[y&1];
MOVNTQ " %%mm5, 8 (%1);" /* store pixel 4-7 */
- "addl $16, %1 \n\t"
- "addl $4, %0 \n\t"
+ "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)
}
__asm__ __volatile__ (EMMS);
+ return srcSliceH;
}
-static inline void RENAME(yuv420_rgb24)(SwsContext *c, uint8_t* srcParam[], int srcStrideParam[], int srcSliceY,
+static inline int RENAME(yuv420_rgb24)(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
int srcSliceH, uint8_t* dst[], int dstStride[]){
- int srcStride[3];
- uint8_t *src[3];
int y, h_size;
- sws_orderYUV(c->srcFormat, src, srcStride, srcParam, srcStrideParam);
if(c->srcFormat == IMGFMT_422P){
srcStride[1] *= 2;
srcStride[2] *= 2;
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];
- int index= -h_size/2;
+ long index= -h_size/2;
/* this mmx assembly code deals with SINGLE scan line at a time, it convert 8
pixels in each iteration */
"pxor %%mm4, %%mm4 \n\t"
#endif
- "addl $24, %1 \n\t"
- "addl $4, %0 \n\t"
+ "add $24, %1 \n\t"
+ "add $4, %0 \n\t"
" js 1b \n\t"
: "+r" (index), "+r" (_image)
}
__asm__ __volatile__ (EMMS);
+ return srcSliceH;
}
-static inline void RENAME(yuv420_rgb32)(SwsContext *c, uint8_t* srcParam[], int srcStrideParam[], int srcSliceY,
+static inline int RENAME(yuv420_rgb32)(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
int srcSliceH, uint8_t* dst[], int dstStride[]){
- int srcStride[3];
- uint8_t *src[3];
int y, h_size;
- sws_orderYUV(c->srcFormat, src, srcStride, srcParam, srcStrideParam);
if(c->srcFormat == IMGFMT_422P){
srcStride[1] *= 2;
srcStride[2] *= 2;
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];
- int index= -h_size/2;
+ long index= -h_size/2;
/* this mmx assembly code deals with SINGLE scan line at a time, it convert 8
pixels in each iteration */
"pxor %%mm4, %%mm4;" /* zero mm4 */
"movq 8 (%5, %0, 2), %%mm6;" /* Load 8 Y Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 */
- "addl $32, %1 \n\t"
- "addl $4, %0 \n\t"
+ "add $32, %1 \n\t"
+ "add $4, %0 \n\t"
" js 1b \n\t"
: "+r" (index), "+r" (_image)
}
__asm__ __volatile__ (EMMS);
+ return srcSliceH;
}