mirror of https://github.com/mpv-player/mpv
Replace huge switch statement by a lookup table.
Add newline to final report. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@22982 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
005cb55805
commit
c32cfa90c9
|
@ -31,6 +31,7 @@
|
||||||
#define srcByte 0x55
|
#define srcByte 0x55
|
||||||
#define dstByte 0xBB
|
#define dstByte 0xBB
|
||||||
|
|
||||||
|
#define FUNC(s,d,n) {s,d,#n,n}
|
||||||
|
|
||||||
static int cpu_caps;
|
static int cpu_caps;
|
||||||
|
|
||||||
|
@ -70,12 +71,50 @@ int main(int argc, char **argv)
|
||||||
av_log(NULL, AV_LOG_INFO, "CPU capabilities forced to %x\n", cpu_caps);
|
av_log(NULL, AV_LOG_INFO, "CPU capabilities forced to %x\n", cpu_caps);
|
||||||
sws_rgb2rgb_init(cpu_caps);
|
sws_rgb2rgb_init(cpu_caps);
|
||||||
|
|
||||||
for(funcNum=0; funcNum<100; funcNum++){
|
for(funcNum=0; ; funcNum++){
|
||||||
|
struct func_info_s {
|
||||||
|
int src_bpp;
|
||||||
|
int dst_bpp;
|
||||||
|
char *name;
|
||||||
|
void (*func)(const uint8_t *src, uint8_t *dst, long src_size);
|
||||||
|
} func_info[] = {
|
||||||
|
FUNC(2, 2, rgb15to16),
|
||||||
|
FUNC(2, 3, rgb15to24),
|
||||||
|
FUNC(2, 4, rgb15to32),
|
||||||
|
FUNC(2, 3, rgb16to24),
|
||||||
|
FUNC(2, 4, rgb16to32),
|
||||||
|
FUNC(3, 2, rgb24to15),
|
||||||
|
FUNC(3, 2, rgb24to16),
|
||||||
|
FUNC(3, 4, rgb24to32),
|
||||||
|
FUNC(4, 2, rgb32to15),
|
||||||
|
FUNC(4, 2, rgb32to16),
|
||||||
|
FUNC(4, 3, rgb32to24),
|
||||||
|
FUNC(2, 2, rgb16to15),
|
||||||
|
FUNC(2, 2, rgb15tobgr15),
|
||||||
|
FUNC(2, 2, rgb15tobgr16),
|
||||||
|
FUNC(2, 3, rgb15tobgr24),
|
||||||
|
FUNC(2, 4, rgb15tobgr32),
|
||||||
|
FUNC(2, 2, rgb16tobgr15),
|
||||||
|
FUNC(2, 2, rgb16tobgr16),
|
||||||
|
FUNC(2, 3, rgb16tobgr24),
|
||||||
|
FUNC(2, 4, rgb16tobgr32),
|
||||||
|
FUNC(3, 2, rgb24tobgr15),
|
||||||
|
FUNC(3, 2, rgb24tobgr16),
|
||||||
|
FUNC(3, 3, rgb24tobgr24),
|
||||||
|
FUNC(3, 4, rgb24tobgr32),
|
||||||
|
FUNC(4, 2, rgb32tobgr15),
|
||||||
|
FUNC(4, 2, rgb32tobgr16),
|
||||||
|
FUNC(4, 3, rgb32tobgr24),
|
||||||
|
FUNC(4, 4, rgb32tobgr32),
|
||||||
|
FUNC(0, 0, NULL)
|
||||||
|
};
|
||||||
int width;
|
int width;
|
||||||
int failed=0;
|
int failed=0;
|
||||||
int srcBpp=0;
|
int srcBpp=0;
|
||||||
int dstBpp=0;
|
int dstBpp=0;
|
||||||
|
|
||||||
|
if (!func_info[funcNum].func) break;
|
||||||
|
|
||||||
av_log(NULL, AV_LOG_INFO,".");
|
av_log(NULL, AV_LOG_INFO,".");
|
||||||
memset(srcBuffer, srcByte, SIZE);
|
memset(srcBuffer, srcByte, SIZE);
|
||||||
|
|
||||||
|
@ -92,179 +131,12 @@ int main(int argc, char **argv)
|
||||||
|
|
||||||
if(failed) break; //don't fill the screen with shit ...
|
if(failed) break; //don't fill the screen with shit ...
|
||||||
|
|
||||||
switch(funcNum){
|
srcBpp = func_info[funcNum].src_bpp;
|
||||||
case 0:
|
dstBpp = func_info[funcNum].dst_bpp;
|
||||||
srcBpp=2;
|
name = func_info[funcNum].name;
|
||||||
dstBpp=2;
|
|
||||||
name="rgb15to16";
|
|
||||||
rgb15to16(src, dst, width*srcBpp);
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
srcBpp=2;
|
|
||||||
dstBpp=3;
|
|
||||||
name="rgb15to24";
|
|
||||||
rgb15to24(src, dst, width*srcBpp);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
srcBpp=2;
|
|
||||||
dstBpp=4;
|
|
||||||
name="rgb15to32";
|
|
||||||
rgb15to32(src, dst, width*srcBpp);
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
srcBpp=2;
|
|
||||||
dstBpp=3;
|
|
||||||
name="rgb16to24";
|
|
||||||
rgb16to24(src, dst, width*srcBpp);
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
srcBpp=2;
|
|
||||||
dstBpp=4;
|
|
||||||
name="rgb16to32";
|
|
||||||
rgb16to32(src, dst, width*srcBpp);
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
srcBpp=3;
|
|
||||||
dstBpp=2;
|
|
||||||
name="rgb24to15";
|
|
||||||
rgb24to15(src, dst, width*srcBpp);
|
|
||||||
break;
|
|
||||||
case 6:
|
|
||||||
srcBpp=3;
|
|
||||||
dstBpp=2;
|
|
||||||
name="rgb24to16";
|
|
||||||
rgb24to16(src, dst, width*srcBpp);
|
|
||||||
break;
|
|
||||||
case 7:
|
|
||||||
srcBpp=3;
|
|
||||||
dstBpp=4;
|
|
||||||
name="rgb24to32";
|
|
||||||
rgb24to32(src, dst, width*srcBpp);
|
|
||||||
break;
|
|
||||||
case 8:
|
|
||||||
srcBpp=4;
|
|
||||||
dstBpp=2;
|
|
||||||
name="rgb32to15";
|
|
||||||
//((*s++) << TGA_SHIFT32) | TGA_ALPHA32;
|
|
||||||
rgb32to15(src, dst, width*srcBpp);
|
|
||||||
break;
|
|
||||||
case 9:
|
|
||||||
srcBpp=4;
|
|
||||||
dstBpp=2;
|
|
||||||
name="rgb32to16";
|
|
||||||
rgb32to16(src, dst, width*srcBpp);
|
|
||||||
break;
|
|
||||||
case 10:
|
|
||||||
srcBpp=4;
|
|
||||||
dstBpp=3;
|
|
||||||
name="rgb32to24";
|
|
||||||
rgb32to24(src, dst, width*srcBpp);
|
|
||||||
break;
|
|
||||||
case 11:
|
|
||||||
srcBpp=2;
|
|
||||||
dstBpp=2;
|
|
||||||
name="rgb16to15";
|
|
||||||
rgb16to15(src, dst, width*srcBpp);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 14:
|
func_info[funcNum].func(src, dst, width*srcBpp);
|
||||||
srcBpp=2;
|
|
||||||
dstBpp=2;
|
|
||||||
name="rgb15tobgr15";
|
|
||||||
rgb15tobgr15(src, dst, width*srcBpp);
|
|
||||||
break;
|
|
||||||
case 15:
|
|
||||||
srcBpp=2;
|
|
||||||
dstBpp=2;
|
|
||||||
name="rgb15tobgr16";
|
|
||||||
rgb15tobgr16(src, dst, width*srcBpp);
|
|
||||||
break;
|
|
||||||
case 16:
|
|
||||||
srcBpp=2;
|
|
||||||
dstBpp=3;
|
|
||||||
name="rgb15tobgr24";
|
|
||||||
rgb15tobgr24(src, dst, width*srcBpp);
|
|
||||||
break;
|
|
||||||
case 17:
|
|
||||||
srcBpp=2;
|
|
||||||
dstBpp=4;
|
|
||||||
name="rgb15tobgr32";
|
|
||||||
rgb15tobgr32(src, dst, width*srcBpp);
|
|
||||||
break;
|
|
||||||
case 18:
|
|
||||||
srcBpp=2;
|
|
||||||
dstBpp=2;
|
|
||||||
name="rgb16tobgr15";
|
|
||||||
rgb16tobgr15(src, dst, width*srcBpp);
|
|
||||||
break;
|
|
||||||
case 19:
|
|
||||||
srcBpp=2;
|
|
||||||
dstBpp=2;
|
|
||||||
name="rgb16tobgr16";
|
|
||||||
rgb16tobgr16(src, dst, width*srcBpp);
|
|
||||||
break;
|
|
||||||
case 20:
|
|
||||||
srcBpp=2;
|
|
||||||
dstBpp=3;
|
|
||||||
name="rgb16tobgr24";
|
|
||||||
rgb16tobgr24(src, dst, width*srcBpp);
|
|
||||||
break;
|
|
||||||
case 21:
|
|
||||||
srcBpp=2;
|
|
||||||
dstBpp=4;
|
|
||||||
name="rgb16tobgr32";
|
|
||||||
rgb16tobgr32(src, dst, width*srcBpp);
|
|
||||||
break;
|
|
||||||
case 22:
|
|
||||||
srcBpp=3;
|
|
||||||
dstBpp=2;
|
|
||||||
name="rgb24tobgr15";
|
|
||||||
rgb24tobgr15(src, dst, width*srcBpp);
|
|
||||||
break;
|
|
||||||
case 23:
|
|
||||||
srcBpp=3;
|
|
||||||
dstBpp=2;
|
|
||||||
name="rgb24tobgr16";
|
|
||||||
rgb24tobgr16(src, dst, width*srcBpp);
|
|
||||||
break;
|
|
||||||
case 24:
|
|
||||||
srcBpp=3;
|
|
||||||
dstBpp=3;
|
|
||||||
name="rgb24tobgr24";
|
|
||||||
rgb24tobgr24(src, dst, width*srcBpp);
|
|
||||||
break;
|
|
||||||
case 25:
|
|
||||||
srcBpp=3;
|
|
||||||
dstBpp=4;
|
|
||||||
name="rgb24tobgr32";
|
|
||||||
rgb24tobgr32(src, dst, width*srcBpp);
|
|
||||||
break;
|
|
||||||
case 26:
|
|
||||||
srcBpp=4;
|
|
||||||
dstBpp=2;
|
|
||||||
name="rgb32tobgr15";
|
|
||||||
rgb32tobgr15(src, dst, width*srcBpp);
|
|
||||||
break;
|
|
||||||
case 27:
|
|
||||||
srcBpp=4;
|
|
||||||
dstBpp=2;
|
|
||||||
name="rgb32tobgr16";
|
|
||||||
rgb32tobgr16(src, dst, width*srcBpp);
|
|
||||||
break;
|
|
||||||
case 28:
|
|
||||||
srcBpp=4;
|
|
||||||
dstBpp=3;
|
|
||||||
name="rgb32tobgr24";
|
|
||||||
rgb32tobgr24(src, dst, width*srcBpp);
|
|
||||||
break;
|
|
||||||
case 29:
|
|
||||||
srcBpp=4;
|
|
||||||
dstBpp=4;
|
|
||||||
name="rgb32tobgr32";
|
|
||||||
rgb32tobgr32(src, dst, width*srcBpp);
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
|
||||||
if(!srcBpp) break;
|
if(!srcBpp) break;
|
||||||
|
|
||||||
for(i=0; i<SIZE; i++){
|
for(i=0; i<SIZE; i++){
|
||||||
|
@ -298,6 +170,6 @@ int main(int argc, char **argv)
|
||||||
else if(srcBpp) passedNum++;
|
else if(srcBpp) passedNum++;
|
||||||
}
|
}
|
||||||
|
|
||||||
av_log(NULL, AV_LOG_INFO, "%d converters passed, %d converters randomly overwrote memory\n", passedNum, failedNum);
|
av_log(NULL, AV_LOG_INFO, "\n%d converters passed, %d converters randomly overwrote memory\n", passedNum, failedNum);
|
||||||
return failedNum;
|
return failedNum;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue