19 |
* along with this program; if not, write to the Free Software |
* along with this program; if not, write to the Free Software |
20 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
21 |
* |
* |
22 |
* $Id: xvid_bench.c,v 1.27 2005-11-03 05:44:07 Skal Exp $ |
* $Id: xvid_bench.c,v 1.28 2006-06-05 21:30:49 Skal Exp $ |
23 |
* |
* |
24 |
****************************************************************************/ |
****************************************************************************/ |
25 |
|
|
557 |
} |
} |
558 |
} |
} |
559 |
|
|
560 |
|
#undef ENTER |
561 |
|
#undef LEAVE |
562 |
|
#undef TEST_MB |
563 |
|
#undef TEST_MB2 |
564 |
|
|
565 |
/********************************************************************* |
/********************************************************************* |
566 |
* test transfer |
* test transfer |
567 |
*********************************************************************/ |
*********************************************************************/ |
1705 |
} |
} |
1706 |
#endif |
#endif |
1707 |
} |
} |
1708 |
|
|
1709 |
|
/********************************************************************* |
1710 |
|
* test some YUV func |
1711 |
|
*********************************************************************/ |
1712 |
|
|
1713 |
|
#define ENTER \ |
1714 |
|
for(i=0; i<(int)sizeof(Dst0); ++i) Dst0[0][i] = 0; \ |
1715 |
|
t = gettime_usec(); \ |
1716 |
|
emms(); |
1717 |
|
|
1718 |
|
#define LEAVE \ |
1719 |
|
emms(); \ |
1720 |
|
t = (gettime_usec() - t) / nb_tests; \ |
1721 |
|
iCrc = calc_crc((uint8_t*)Dst0, sizeof(Dst0), CRC32_INITIAL) |
1722 |
|
|
1723 |
|
#define TEST_YUYV(FUNC, S) \ |
1724 |
|
ENTER \ |
1725 |
|
for(tst=0; tst<nb_tests; ++tst) (FUNC)(Dst0[0], S*WIDTH, Src0[0], Src0[1], Src0[2], WIDTH, WIDTH/2, WIDTH, HEIGHT, 0); \ |
1726 |
|
LEAVE |
1727 |
|
|
1728 |
|
#define WIDTH 64 |
1729 |
|
#define HEIGHT 64 |
1730 |
|
void test_yuv() |
1731 |
|
{ |
1732 |
|
const int nb_tests = 200*speed_ref; |
1733 |
|
CPU *cpu; |
1734 |
|
uint8_t Src0[3][WIDTH*HEIGHT]; |
1735 |
|
uint8_t Dst0[4][WIDTH*HEIGHT]; |
1736 |
|
int i, j; |
1737 |
|
double t; |
1738 |
|
int tst, iCrc; |
1739 |
|
|
1740 |
|
colorspace_init(); |
1741 |
|
ieee_reseed(1); |
1742 |
|
for(i=0; i<(int)sizeof(Src0); ++i) Src0[0][i] = ieee_rand(0,255); |
1743 |
|
|
1744 |
|
printf( "\n === test YUV ===\n" ); |
1745 |
|
|
1746 |
|
init_cpu(&cpu_list[0]); |
1747 |
|
TEST_YUYV(yv12_to_yuyv_c, 4); |
1748 |
|
printf(" yv12_to_yuyv_c %.3f usec crc32=0x%08x %s\n", |
1749 |
|
t, iCrc, (iCrc!=0xeb1a0b0a)?"| ERROR": "" ); |
1750 |
|
TEST_YUYV(yv12_to_uyvy_c, 4); |
1751 |
|
printf(" yv12_to_uyvy_c %.3f usec crc32=0x%08x %s\n", |
1752 |
|
t, iCrc, (iCrc!=0x6e82f55b)?"| ERROR": "" ); |
1753 |
|
|
1754 |
|
#ifdef ARCH_IS_IA32 |
1755 |
|
init_cpu(&cpu_list[1]); |
1756 |
|
TEST_YUYV(yv12_to_yuyv_mmx, 4); |
1757 |
|
printf(" yv12_to_yuyv_mmx %.3f usec crc32=0x%08x %s\n", |
1758 |
|
t, iCrc, (iCrc!=0xeb1a0b0a)?"| ERROR": "" ); |
1759 |
|
|
1760 |
|
TEST_YUYV(yv12_to_uyvy_mmx, 4); |
1761 |
|
printf(" yv12_to_uyvy_mmx %.3f usec crc32=0x%08x %s\n", |
1762 |
|
t, iCrc, (iCrc!=0x6e82f55b)?"| ERROR": "" ); |
1763 |
|
#endif |
1764 |
|
|
1765 |
|
#ifdef ARCH_IS_PPC |
1766 |
|
init_cpu(&cpu_list[1]); |
1767 |
|
TEST_YUYV(yv12_to_yuyv_altivec_c, 4); |
1768 |
|
printf(" yv12_to_yuyv_altivec_c %.3f usec crc32=0x%08x %s\n", |
1769 |
|
t, iCrc, (iCrc!=0xeb1a0b0a)?"| ERROR": "" ); |
1770 |
|
|
1771 |
|
TEST_YUYV(yv12_to_uyvy_altivec_c, 4); |
1772 |
|
printf(" yv12_to_uyvy_altivec_c %.3f usec crc32=0x%08x %s\n", |
1773 |
|
t, iCrc, (iCrc!=0x6e82f55b)?"| ERROR": "" ); |
1774 |
|
#endif |
1775 |
|
printf( " --- \n" ); |
1776 |
|
} |
1777 |
|
#undef WIDTH |
1778 |
|
#undef HEIGHT |
1779 |
|
#undef ENTER |
1780 |
|
#undef LEAVE |
1781 |
|
|
1782 |
/*********************************************************************/ |
/*********************************************************************/ |
1783 |
|
|
1784 |
static uint32_t __inline log2bin_v1(uint32_t value) |
static uint32_t __inline log2bin_v1(uint32_t value) |
2014 |
if (what==0 || what==11) test_log2bin(); |
if (what==0 || what==11) test_log2bin(); |
2015 |
if (what==0 || what==12) test_gcd(); |
if (what==0 || what==12) test_gcd(); |
2016 |
if (what==0 || what==13) test_compiler(); |
if (what==0 || what==13) test_compiler(); |
2017 |
|
if (what==0 || what==14) test_yuv(); |
2018 |
|
|
2019 |
|
|
2020 |
if (what==7) { |
if (what==7) { |