mirror of
https://github.com/xenia-project/FFmpeg.git
synced 2024-11-25 04:30:02 +00:00
Replace huge switch statement by a lookup table.
Add newline to final report. Originally committed as revision 22982 to svn://svn.mplayerhq.hu/mplayer/trunk/libswscale
This commit is contained in:
parent
940d8f7614
commit
2a80b21d38
@ -31,6 +31,7 @@
|
||||
#define srcByte 0x55
|
||||
#define dstByte 0xBB
|
||||
|
||||
#define FUNC(s,d,n) {s,d,#n,n}
|
||||
|
||||
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);
|
||||
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 failed=0;
|
||||
int srcBpp=0;
|
||||
int dstBpp=0;
|
||||
|
||||
if (!func_info[funcNum].func) break;
|
||||
|
||||
av_log(NULL, AV_LOG_INFO,".");
|
||||
memset(srcBuffer, srcByte, SIZE);
|
||||
|
||||
@ -92,179 +131,12 @@ int main(int argc, char **argv)
|
||||
|
||||
if(failed) break; //don't fill the screen with shit ...
|
||||
|
||||
switch(funcNum){
|
||||
case 0:
|
||||
srcBpp=2;
|
||||
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:
|
||||
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;
|
||||
srcBpp = func_info[funcNum].src_bpp;
|
||||
dstBpp = func_info[funcNum].dst_bpp;
|
||||
name = func_info[funcNum].name;
|
||||
|
||||
func_info[funcNum].func(src, dst, width*srcBpp);
|
||||
|
||||
}
|
||||
if(!srcBpp) break;
|
||||
|
||||
for(i=0; i<SIZE; i++){
|
||||
@ -298,6 +170,6 @@ int main(int argc, char **argv)
|
||||
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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user