From f4730e10c1abb403e793d1679b2d957cdc759fe9 Mon Sep 17 00:00:00 2001 From: nick Date: Sun, 11 Nov 2001 11:18:50 +0000 Subject: Extract parallelism from OSD stuff + MMX2 optimization. I've found that mplayer's measuring is not precise :( Here my test with using RDTSC: Old stuff: rd_tsc: 774377 rd_tsc: 765985 rd_tsc: 265309 New CPU optimized stuff: rd_tsc: 661154 rd_tsc: 641317 rd_tsc: 222448 New MMX2 optimized stuff: rd_tsc: 269544 rd_tsc: 329189 rd_tsc: 173110 git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@2824 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libvo/osd.c | 73 +++++++++++++++++++++++++++++----------------------- libvo/osd_template.c | 73 +++++++++++++++++++++++++++++----------------------- 2 files changed, 82 insertions(+), 64 deletions(-) (limited to 'libvo') diff --git a/libvo/osd.c b/libvo/osd.c index b44c56b676..fb01444f3e 100644 --- a/libvo/osd.c +++ b/libvo/osd.c @@ -76,12 +76,25 @@ void vo_draw_alpha_rgb24(int w,int h, unsigned char* src, unsigned char *srca, i return; } +#ifdef PROFILE_ME +static inline unsigned long long int read_tsc( void ) +{ + unsigned long long int retval; + __asm __volatile ("rdtsc":"=A"(retval)::"memory"); + return retval; +} +#endif + void vo_draw_alpha_rgb32(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){ int y; +#ifdef PROFILE_ME +unsigned long long v1,v2; +v1 = read_tsc(); +#endif for(y=0;y