|
|
|
@ -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; |
|
|
|
|
} |
|
|
|
|