Commit ee841447 authored by michael's avatar michael

cleanup


git-svn-id: file:///var/local/repositories/mplayer/trunk/postproc@9500 b3059339-0415-0410-9bf9-f77b7e298cf2
parent 0f5e3e59
...@@ -1764,7 +1764,7 @@ static int yvu9toyv12Wrapper(SwsContext *c, uint8_t* src[], int srcStride[], int ...@@ -1764,7 +1764,7 @@ static int yvu9toyv12Wrapper(SwsContext *c, uint8_t* src[], int srcStride[], int
/** /**
* bring pointers in YUV order instead of YVU * bring pointers in YUV order instead of YVU
*/ */
inline void sws_orderYUV(int format, uint8_t * sortedP[], int sortedStride[], uint8_t * p[], int stride[]){ inline static void sws_orderYUV(int format, uint8_t * sortedP[], int sortedStride[], uint8_t * p[], int stride[]){
if(format == IMGFMT_YV12 || format == IMGFMT_YVU9 if(format == IMGFMT_YV12 || format == IMGFMT_YVU9
|| format == IMGFMT_444P || format == IMGFMT_422P || format == IMGFMT_411P){ || format == IMGFMT_444P || format == IMGFMT_422P || format == IMGFMT_411P){
sortedP[0]= p[0]; sortedP[0]= p[0];
...@@ -1797,16 +1797,8 @@ inline void sws_orderYUV(int format, uint8_t * sortedP[], int sortedStride[], ui ...@@ -1797,16 +1797,8 @@ inline void sws_orderYUV(int format, uint8_t * sortedP[], int sortedStride[], ui
} }
/* unscaled copy like stuff (assumes nearly identical formats) */ /* unscaled copy like stuff (assumes nearly identical formats) */
static int simpleCopy(SwsContext *c, uint8_t* srcParam[], int srcStrideParam[], int srcSliceY, static int simpleCopy(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
int srcSliceH, uint8_t* dstParam[], int dstStrideParam[]){ int srcSliceH, uint8_t* dst[], int dstStride[]){
int srcStride[3];
int dstStride[3];
uint8_t *src[3];
uint8_t *dst[3];
sws_orderYUV(c->srcFormat, src, srcStride, srcParam, srcStrideParam);
sws_orderYUV(c->dstFormat, dst, dstStride, dstParam, dstStrideParam);
if(isPacked(c->srcFormat)) if(isPacked(c->srcFormat))
{ {
...@@ -2382,11 +2374,18 @@ SwsContext *sws_getContext(int srcW, int srcH, int srcFormat, int dstW, int dstH ...@@ -2382,11 +2374,18 @@ SwsContext *sws_getContext(int srcW, int srcH, int srcFormat, int dstW, int dstH
/** /**
* swscale warper, so we dont need to export the SwsContext * swscale warper, so we dont need to export the SwsContext
*/ */
int sws_scale(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, int sws_scale(SwsContext *c, uint8_t* srcParam[], int srcStrideParam[], int srcSliceY,
int srcSliceH, uint8_t* dst[], int dstStride[]){ int srcSliceH, uint8_t* dstParam[], int dstStrideParam[]){
int srcStride[3];
int dstStride[3];
uint8_t *src[3];
uint8_t *dst[3];
sws_orderYUV(c->srcFormat, src, srcStride, srcParam, srcStrideParam);
sws_orderYUV(c->dstFormat, dst, dstStride, dstParam, dstStrideParam);
//printf("sws: slice %d %d\n", srcSliceY, srcSliceH);
return c->swScale(c, src, srcStride, srcSliceY, srcSliceH, dst, dstStride); return c->swScale(c, src, srcStride, srcSliceY, srcSliceH, dst, dstStride);
} }
//FIXME order YV12/I420 here
/** /**
* returns a normalized gaussian curve used to filter stuff * returns a normalized gaussian curve used to filter stuff
......
...@@ -26,6 +26,10 @@ typedef int (*SwsFunc)(struct SwsContext *context, uint8_t* src[], int srcStride ...@@ -26,6 +26,10 @@ typedef int (*SwsFunc)(struct SwsContext *context, uint8_t* src[], int srcStride
/* this struct should be aligned on at least 32-byte boundary */ /* this struct should be aligned on at least 32-byte boundary */
typedef struct SwsContext{ typedef struct SwsContext{
/**
*
* Note the src,dst,srcStride,dstStride will be copied, in the sws_scale() warper so they can freely be modified here
*/
SwsFunc swScale; SwsFunc swScale;
int srcW, srcH, dstH; int srcW, srcH, dstH;
int chrSrcW, chrSrcH, chrDstW, chrDstH; int chrSrcW, chrSrcH, chrDstW, chrDstH;
...@@ -119,7 +123,6 @@ typedef struct SwsContext{ ...@@ -119,7 +123,6 @@ typedef struct SwsContext{
} SwsContext; } SwsContext;
//FIXME check init (where 0) //FIXME check init (where 0)
inline void sws_orderYUV(int format, uint8_t * sortedP[], int sortedStride[], uint8_t * p[], int stride[]);
SwsFunc yuv2rgb_get_func_ptr (SwsContext *c); SwsFunc yuv2rgb_get_func_ptr (SwsContext *c);
int yuv2rgb_c_init_tables (SwsContext *c, const int inv_table[4], int fullRange, int brightness, int contrast, int saturation); int yuv2rgb_c_init_tables (SwsContext *c, const int inv_table[4], int fullRange, int brightness, int contrast, int saturation);
......
...@@ -1585,7 +1585,7 @@ static inline void RENAME(bgr32ToY)(uint8_t *dst, uint8_t *src, int width) ...@@ -1585,7 +1585,7 @@ static inline void RENAME(bgr32ToY)(uint8_t *dst, uint8_t *src, int width)
{ {
int b= ((uint32_t*)src)[i]&0xFF; int b= ((uint32_t*)src)[i]&0xFF;
int g= (((uint32_t*)src)[i]>>8)&0xFF; int g= (((uint32_t*)src)[i]>>8)&0xFF;
int r= ((uint32_t*)src)[i]>>16; int r= (((uint32_t*)src)[i]>>16)&0xFF;
dst[i]= ((RY*r + GY*g + BY*b + (33<<(RGB2YUV_SHIFT-1)) )>>RGB2YUV_SHIFT); dst[i]= ((RY*r + GY*g + BY*b + (33<<(RGB2YUV_SHIFT-1)) )>>RGB2YUV_SHIFT);
} }
...@@ -1946,7 +1946,7 @@ static inline void RENAME(rgb32ToY)(uint8_t *dst, uint8_t *src, int width) ...@@ -1946,7 +1946,7 @@ static inline void RENAME(rgb32ToY)(uint8_t *dst, uint8_t *src, int width)
{ {
int r= ((uint32_t*)src)[i]&0xFF; int r= ((uint32_t*)src)[i]&0xFF;
int g= (((uint32_t*)src)[i]>>8)&0xFF; int g= (((uint32_t*)src)[i]>>8)&0xFF;
int b= ((uint32_t*)src)[i]>>16; int b= (((uint32_t*)src)[i]>>16)&0xFF;
dst[i]= ((RY*r + GY*g + BY*b + (33<<(RGB2YUV_SHIFT-1)) )>>RGB2YUV_SHIFT); dst[i]= ((RY*r + GY*g + BY*b + (33<<(RGB2YUV_SHIFT-1)) )>>RGB2YUV_SHIFT);
} }
...@@ -2502,8 +2502,8 @@ FUNNY_UV_CODE ...@@ -2502,8 +2502,8 @@ FUNNY_UV_CODE
} }
} }
static int RENAME(swScale)(SwsContext *c, uint8_t* srcParam[], int srcStrideParam[], int srcSliceY, static int RENAME(swScale)(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
int srcSliceH, uint8_t* dstParam[], int dstStrideParam[]){ int srcSliceH, uint8_t* dst[], int dstStride[]){
/* load a few things into local vars to make the code more readable? and faster */ /* load a few things into local vars to make the code more readable? and faster */
const int srcW= c->srcW; const int srcW= c->srcW;
...@@ -2548,21 +2548,14 @@ static int RENAME(swScale)(SwsContext *c, uint8_t* srcParam[], int srcStridePara ...@@ -2548,21 +2548,14 @@ static int RENAME(swScale)(SwsContext *c, uint8_t* srcParam[], int srcStridePara
int chrBufIndex= c->chrBufIndex; int chrBufIndex= c->chrBufIndex;
int lastInLumBuf= c->lastInLumBuf; int lastInLumBuf= c->lastInLumBuf;
int lastInChrBuf= c->lastInChrBuf; int lastInChrBuf= c->lastInChrBuf;
int srcStride[3];
int dstStride[3];
uint8_t *src[3];
uint8_t *dst[3];
sws_orderYUV(c->srcFormat, src, srcStride, srcParam, srcStrideParam);
sws_orderYUV(c->dstFormat, dst, dstStride, dstParam, dstStrideParam);
if(isPacked(c->srcFormat)){ if(isPacked(c->srcFormat)){
src[0]= src[0]=
src[1]= src[1]=
src[2]= srcParam[0]; src[2]= src[0];
srcStride[0]= srcStride[0]=
srcStride[1]= srcStride[1]=
srcStride[2]= srcStrideParam[0]; srcStride[2]= srcStride[0];
} }
srcStride[1]<<= c->vChrDrop; srcStride[1]<<= c->vChrDrop;
srcStride[2]<<= c->vChrDrop; srcStride[2]<<= c->vChrDrop;
......
...@@ -262,13 +262,10 @@ const int32_t Inverse_Table_6_9[8][4] = { ...@@ -262,13 +262,10 @@ const int32_t Inverse_Table_6_9[8][4] = {
dst_2[6*i+3] = b[Y]; dst_2[6*i+4] = g[Y]; dst_2[6*i+5] = r[Y]; dst_2[6*i+3] = b[Y]; dst_2[6*i+4] = g[Y]; dst_2[6*i+5] = r[Y];
#define PROLOG(func_name, dst_type) \ #define PROLOG(func_name, dst_type) \
static int func_name(SwsContext *c, uint8_t* srcParam[], int srcStrideParam[], int srcSliceY, \ static int func_name(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, \
int srcSliceH, uint8_t* dst[], int dstStride[]){\ int srcSliceH, uint8_t* dst[], int dstStride[]){\
uint8_t *src[3];\
int srcStride[3];\
int y;\ int y;\
\ \
sws_orderYUV(c->srcFormat, src, srcStride, srcParam, srcStrideParam);\
if(c->srcFormat == IMGFMT_422P){\ if(c->srcFormat == IMGFMT_422P){\
srcStride[1] *= 2;\ srcStride[1] *= 2;\
srcStride[2] *= 2;\ srcStride[2] *= 2;\
......
...@@ -33,12 +33,8 @@ ...@@ -33,12 +33,8 @@
#include "../libvo/img_format.h" //FIXME try to reduce dependency of such stuff #include "../libvo/img_format.h" //FIXME try to reduce dependency of such stuff
#include "swscale.h" #include "swscale.h"
static int mlib_YUV2ARGB420_32(SwsContext *c, uint8_t* srcParam[], int srcStrideParam[], int srcSliceY, static int mlib_YUV2ARGB420_32(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
int srcSliceH, uint8_t* dst[], int dstStride[]){ int srcSliceH, uint8_t* dst[], int dstStride[]){
uint8_t *src[3];
int srcStride[3];
sws_orderYUV(c->srcFormat, src, srcStride, srcParam, srcStrideParam);
if(c->srcFormat == IMGFMT_422P){ if(c->srcFormat == IMGFMT_422P){
srcStride[1] *= 2; srcStride[1] *= 2;
srcStride[2] *= 2; srcStride[2] *= 2;
...@@ -51,12 +47,8 @@ static int mlib_YUV2ARGB420_32(SwsContext *c, uint8_t* srcParam[], int srcStride ...@@ -51,12 +47,8 @@ static int mlib_YUV2ARGB420_32(SwsContext *c, uint8_t* srcParam[], int srcStride
return srcSliceH; return srcSliceH;
} }
static int mlib_YUV2ABGR420_32(SwsContext *c, uint8_t* srcParam[], int srcStrideParam[], int srcSliceY, static int mlib_YUV2ABGR420_32(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
int srcSliceH, uint8_t* dst[], int dstStride[]){ int srcSliceH, uint8_t* dst[], int dstStride[]){
uint8_t *src[3];
int srcStride[3];
sws_orderYUV(c->srcFormat, src, srcStride, srcParam, srcStrideParam);
if(c->srcFormat == IMGFMT_422P){ if(c->srcFormat == IMGFMT_422P){
srcStride[1] *= 2; srcStride[1] *= 2;
srcStride[2] *= 2; srcStride[2] *= 2;
...@@ -69,12 +61,8 @@ static int mlib_YUV2ABGR420_32(SwsContext *c, uint8_t* srcParam[], int srcStride ...@@ -69,12 +61,8 @@ static int mlib_YUV2ABGR420_32(SwsContext *c, uint8_t* srcParam[], int srcStride
return srcSliceH; return srcSliceH;
} }
static int mlib_YUV2RGB420_24(SwsContext *c, uint8_t* srcParam[], int srcStrideParam[], int srcSliceY, static int mlib_YUV2RGB420_24(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
int srcSliceH, uint8_t* dst[], int dstStride[]){ int srcSliceH, uint8_t* dst[], int dstStride[]){
uint8_t *src[3];
int srcStride[3];
sws_orderYUV(c->srcFormat, src, srcStride, srcParam, srcStrideParam);
if(c->srcFormat == IMGFMT_422P){ if(c->srcFormat == IMGFMT_422P){
srcStride[1] *= 2; srcStride[1] *= 2;
srcStride[2] *= 2; srcStride[2] *= 2;
......
...@@ -123,13 +123,10 @@ ...@@ -123,13 +123,10 @@
"punpcklbw %%mm5, %%mm2;" /* G7 G6 G5 G4 G3 G2 G1 G0 */\ "punpcklbw %%mm5, %%mm2;" /* G7 G6 G5 G4 G3 G2 G1 G0 */\
static inline int 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 srcSliceH, uint8_t* dst[], int dstStride[]){
int srcStride[3];
uint8_t *src[3];
int y, h_size; int y, h_size;
sws_orderYUV(c->srcFormat, src, srcStride, srcParam, srcStrideParam);
if(c->srcFormat == IMGFMT_422P){ if(c->srcFormat == IMGFMT_422P){
srcStride[1] *= 2; srcStride[1] *= 2;
srcStride[2] *= 2; srcStride[2] *= 2;
...@@ -221,13 +218,10 @@ YUV2RGB ...@@ -221,13 +218,10 @@ YUV2RGB
return srcSliceH; return srcSliceH;
} }
static inline int 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 srcSliceH, uint8_t* dst[], int dstStride[]){
int srcStride[3];
uint8_t *src[3];
int y, h_size; int y, h_size;
sws_orderYUV(c->srcFormat, src, srcStride, srcParam, srcStrideParam);
if(c->srcFormat == IMGFMT_422P){ if(c->srcFormat == IMGFMT_422P){
srcStride[1] *= 2; srcStride[1] *= 2;
srcStride[2] *= 2; srcStride[2] *= 2;
...@@ -313,13 +307,10 @@ YUV2RGB ...@@ -313,13 +307,10 @@ YUV2RGB
return srcSliceH; return srcSliceH;
} }
static inline int 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 srcSliceH, uint8_t* dst[], int dstStride[]){
int srcStride[3];
uint8_t *src[3];
int y, h_size; int y, h_size;
sws_orderYUV(c->srcFormat, src, srcStride, srcParam, srcStrideParam);
if(c->srcFormat == IMGFMT_422P){ if(c->srcFormat == IMGFMT_422P){
srcStride[1] *= 2; srcStride[1] *= 2;
srcStride[2] *= 2; srcStride[2] *= 2;
...@@ -462,13 +453,10 @@ YUV2RGB ...@@ -462,13 +453,10 @@ YUV2RGB
return srcSliceH; return srcSliceH;
} }
static inline int 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 srcSliceH, uint8_t* dst[], int dstStride[]){
int srcStride[3];
uint8_t *src[3];
int y, h_size; int y, h_size;
sws_orderYUV(c->srcFormat, src, srcStride, srcParam, srcStrideParam);
if(c->srcFormat == IMGFMT_422P){ if(c->srcFormat == IMGFMT_422P){
srcStride[1] *= 2; srcStride[1] *= 2;
srcStride[2] *= 2; srcStride[2] *= 2;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment