summaryrefslogtreecommitdiffstats
path: root/postproc
diff options
context:
space:
mode:
authormichael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-10-30 21:33:01 +0000
committermichael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-10-30 21:33:01 +0000
commit16699f54b565c9a74e35477fb5dafc374e662023 (patch)
tree2afdbf3ec7519be4ea87f0e3f06aadf09d05c1b7 /postproc
parentbac8e0b06cf8ed73c3ed672ab1070e29dae27fd7 (diff)
downloadmpv-16699f54b565c9a74e35477fb5dafc374e662023.tar.bz2
mpv-16699f54b565c9a74e35477fb5dafc374e662023.tar.xz
c optimizations (array is faster than pointer) (16bpp variants tested and 2% faster)
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@2573 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'postproc')
-rw-r--r--postproc/swscale.c27
-rw-r--r--postproc/swscale_template.c27
2 files changed, 18 insertions, 36 deletions
diff --git a/postproc/swscale.c b/postproc/swscale.c
index 0139a9cd31..9749f66b93 100644
--- a/postproc/swscale.c
+++ b/postproc/swscale.c
@@ -506,18 +506,15 @@ static inline void yuv2yuv(uint16_t *buf0, uint16_t *buf1, uint16_t *uvbuf0, uin
for(i=0;i<dstw;i++)
{
- ((uint8_t*)dest)[0] = (buf0[i]*yalpha1+buf1[i]*yalpha)>>19;
- dest++;
+ ((uint8_t*)dest)[i] = (buf0[i]*yalpha1+buf1[i]*yalpha)>>19;
}
if(uvalpha != -1)
{
for(i=0; i<dstw/2; i++)
{
- ((uint8_t*)uDest)[0] = (uvbuf0[i]*uvalpha1+uvbuf1[i]*uvalpha)>>19;
- ((uint8_t*)vDest)[0] = (uvbuf0[i+2048]*uvalpha1+uvbuf1[i+2048]*uvalpha)>>19;
- uDest++;
- vDest++;
+ ((uint8_t*)uDest)[i] = (uvbuf0[i]*uvalpha1+uvbuf1[i]*uvalpha)>>19;
+ ((uint8_t*)vDest)[i] = (uvbuf0[i+2048]*uvalpha1+uvbuf1[i+2048]*uvalpha)>>19;
}
}
}
@@ -704,11 +701,10 @@ FULL_YSCALEYUV2RGB
int U=((uvbuf0[i]*uvalpha1+uvbuf1[i]*uvalpha)>>19);
int V=((uvbuf0[i+2048]*uvalpha1+uvbuf1[i+2048]*uvalpha)>>19);
- ((uint16_t*)dest)[0] =
+ ((uint16_t*)dest)[i] =
(clip_table[(Y + yuvtab_40cf[U]) >>13]>>3) |
((clip_table[(Y + yuvtab_1a1e[V] + yuvtab_0c92[U]) >>13]<<3)&0x07E0) |
((clip_table[(Y + yuvtab_3343[V]) >>13]<<8)&0xF800);
- dest+=2;
}
}
else if(dstbpp==15)
@@ -719,11 +715,10 @@ FULL_YSCALEYUV2RGB
int U=((uvbuf0[i]*uvalpha1+uvbuf1[i]*uvalpha)>>19);
int V=((uvbuf0[i+2048]*uvalpha1+uvbuf1[i+2048]*uvalpha)>>19);
- ((uint16_t*)dest)[0] =
+ ((uint16_t*)dest)[i] =
(clip_table[(Y + yuvtab_40cf[U]) >>13]>>3) |
((clip_table[(Y + yuvtab_1a1e[V] + yuvtab_0c92[U]) >>13]<<2)&0x03E0) |
((clip_table[(Y + yuvtab_3343[V]) >>13]<<7)&0x7C00);
- dest+=2;
}
}
#endif
@@ -814,11 +809,10 @@ FULL_YSCALEYUV2RGB
int U=((uvbuf0[i/2]*uvalpha1+uvbuf1[i/2]*uvalpha)>>19);
int V=((uvbuf0[i/2+2048]*uvalpha1+uvbuf1[i/2+2048]*uvalpha)>>19);
- ((uint16_t*)dest)[0] =
+ ((uint16_t*)dest)[i] =
(clip_table[(Y + yuvtab_40cf[U]) >>13]>>3) |
((clip_table[(Y + yuvtab_1a1e[V] + yuvtab_0c92[U]) >>13]<<3)&0x07E0) |
((clip_table[(Y + yuvtab_3343[V]) >>13]<<8)&0xF800);
- dest+=2;
}
}
else if(dstbpp==15)
@@ -829,11 +823,10 @@ FULL_YSCALEYUV2RGB
int U=((uvbuf0[i/2]*uvalpha1+uvbuf1[i/2]*uvalpha)>>19);
int V=((uvbuf0[i/2+2048]*uvalpha1+uvbuf1[i/2+2048]*uvalpha)>>19);
- ((uint16_t*)dest)[0] =
+ ((uint16_t*)dest)[i] =
(clip_table[(Y + yuvtab_40cf[U]) >>13]>>3) |
((clip_table[(Y + yuvtab_1a1e[V] + yuvtab_0c92[U]) >>13]<<2)&0x03E0) |
((clip_table[(Y + yuvtab_3343[V]) >>13]<<7)&0x7C00);
- dest+=2;
}
}
#endif
@@ -993,11 +986,10 @@ static inline void yuv2rgb1(uint16_t *buf0, uint16_t *buf1, uint16_t *uvbuf0, ui
int U=((uvbuf0[i/2]*uvalpha1+uvbuf1[i/2]*uvalpha)>>19);
int V=((uvbuf0[i/2+2048]*uvalpha1+uvbuf1[i/2+2048]*uvalpha)>>19);
- ((uint16_t*)dest)[0] =
+ ((uint16_t*)dest)[i] =
(clip_table[(Y + yuvtab_40cf[U]) >>13]>>3) |
((clip_table[(Y + yuvtab_1a1e[V] + yuvtab_0c92[U]) >>13]<<3)&0x07E0) |
((clip_table[(Y + yuvtab_3343[V]) >>13]<<8)&0xF800);
- dest+=2;
}
}
else if(dstbpp==15)
@@ -1008,11 +1000,10 @@ static inline void yuv2rgb1(uint16_t *buf0, uint16_t *buf1, uint16_t *uvbuf0, ui
int U=((uvbuf0[i/2]*uvalpha1+uvbuf1[i/2]*uvalpha)>>19);
int V=((uvbuf0[i/2+2048]*uvalpha1+uvbuf1[i/2+2048]*uvalpha)>>19);
- ((uint16_t*)dest)[0] =
+ ((uint16_t*)dest)[i] =
(clip_table[(Y + yuvtab_40cf[U]) >>13]>>3) |
((clip_table[(Y + yuvtab_1a1e[V] + yuvtab_0c92[U]) >>13]<<2)&0x03E0) |
((clip_table[(Y + yuvtab_3343[V]) >>13]<<7)&0x7C00);
- dest+=2;
}
}
#endif
diff --git a/postproc/swscale_template.c b/postproc/swscale_template.c
index 0139a9cd31..9749f66b93 100644
--- a/postproc/swscale_template.c
+++ b/postproc/swscale_template.c
@@ -506,18 +506,15 @@ static inline void yuv2yuv(uint16_t *buf0, uint16_t *buf1, uint16_t *uvbuf0, uin
for(i=0;i<dstw;i++)
{
- ((uint8_t*)dest)[0] = (buf0[i]*yalpha1+buf1[i]*yalpha)>>19;
- dest++;
+ ((uint8_t*)dest)[i] = (buf0[i]*yalpha1+buf1[i]*yalpha)>>19;
}
if(uvalpha != -1)
{
for(i=0; i<dstw/2; i++)
{
- ((uint8_t*)uDest)[0] = (uvbuf0[i]*uvalpha1+uvbuf1[i]*uvalpha)>>19;
- ((uint8_t*)vDest)[0] = (uvbuf0[i+2048]*uvalpha1+uvbuf1[i+2048]*uvalpha)>>19;
- uDest++;
- vDest++;
+ ((uint8_t*)uDest)[i] = (uvbuf0[i]*uvalpha1+uvbuf1[i]*uvalpha)>>19;
+ ((uint8_t*)vDest)[i] = (uvbuf0[i+2048]*uvalpha1+uvbuf1[i+2048]*uvalpha)>>19;
}
}
}
@@ -704,11 +701,10 @@ FULL_YSCALEYUV2RGB
int U=((uvbuf0[i]*uvalpha1+uvbuf1[i]*uvalpha)>>19);
int V=((uvbuf0[i+2048]*uvalpha1+uvbuf1[i+2048]*uvalpha)>>19);
- ((uint16_t*)dest)[0] =
+ ((uint16_t*)dest)[i] =
(clip_table[(Y + yuvtab_40cf[U]) >>13]>>3) |
((clip_table[(Y + yuvtab_1a1e[V] + yuvtab_0c92[U]) >>13]<<3)&0x07E0) |
((clip_table[(Y + yuvtab_3343[V]) >>13]<<8)&0xF800);
- dest+=2;
}
}
else if(dstbpp==15)
@@ -719,11 +715,10 @@ FULL_YSCALEYUV2RGB
int U=((uvbuf0[i]*uvalpha1+uvbuf1[i]*uvalpha)>>19);
int V=((uvbuf0[i+2048]*uvalpha1+uvbuf1[i+2048]*uvalpha)>>19);
- ((uint16_t*)dest)[0] =
+ ((uint16_t*)dest)[i] =
(clip_table[(Y + yuvtab_40cf[U]) >>13]>>3) |
((clip_table[(Y + yuvtab_1a1e[V] + yuvtab_0c92[U]) >>13]<<2)&0x03E0) |
((clip_table[(Y + yuvtab_3343[V]) >>13]<<7)&0x7C00);
- dest+=2;
}
}
#endif
@@ -814,11 +809,10 @@ FULL_YSCALEYUV2RGB
int U=((uvbuf0[i/2]*uvalpha1+uvbuf1[i/2]*uvalpha)>>19);
int V=((uvbuf0[i/2+2048]*uvalpha1+uvbuf1[i/2+2048]*uvalpha)>>19);
- ((uint16_t*)dest)[0] =
+ ((uint16_t*)dest)[i] =
(clip_table[(Y + yuvtab_40cf[U]) >>13]>>3) |
((clip_table[(Y + yuvtab_1a1e[V] + yuvtab_0c92[U]) >>13]<<3)&0x07E0) |
((clip_table[(Y + yuvtab_3343[V]) >>13]<<8)&0xF800);
- dest+=2;
}
}
else if(dstbpp==15)
@@ -829,11 +823,10 @@ FULL_YSCALEYUV2RGB
int U=((uvbuf0[i/2]*uvalpha1+uvbuf1[i/2]*uvalpha)>>19);
int V=((uvbuf0[i/2+2048]*uvalpha1+uvbuf1[i/2+2048]*uvalpha)>>19);
- ((uint16_t*)dest)[0] =
+ ((uint16_t*)dest)[i] =
(clip_table[(Y + yuvtab_40cf[U]) >>13]>>3) |
((clip_table[(Y + yuvtab_1a1e[V] + yuvtab_0c92[U]) >>13]<<2)&0x03E0) |
((clip_table[(Y + yuvtab_3343[V]) >>13]<<7)&0x7C00);
- dest+=2;
}
}
#endif
@@ -993,11 +986,10 @@ static inline void yuv2rgb1(uint16_t *buf0, uint16_t *buf1, uint16_t *uvbuf0, ui
int U=((uvbuf0[i/2]*uvalpha1+uvbuf1[i/2]*uvalpha)>>19);
int V=((uvbuf0[i/2+2048]*uvalpha1+uvbuf1[i/2+2048]*uvalpha)>>19);
- ((uint16_t*)dest)[0] =
+ ((uint16_t*)dest)[i] =
(clip_table[(Y + yuvtab_40cf[U]) >>13]>>3) |
((clip_table[(Y + yuvtab_1a1e[V] + yuvtab_0c92[U]) >>13]<<3)&0x07E0) |
((clip_table[(Y + yuvtab_3343[V]) >>13]<<8)&0xF800);
- dest+=2;
}
}
else if(dstbpp==15)
@@ -1008,11 +1000,10 @@ static inline void yuv2rgb1(uint16_t *buf0, uint16_t *buf1, uint16_t *uvbuf0, ui
int U=((uvbuf0[i/2]*uvalpha1+uvbuf1[i/2]*uvalpha)>>19);
int V=((uvbuf0[i/2+2048]*uvalpha1+uvbuf1[i/2+2048]*uvalpha)>>19);
- ((uint16_t*)dest)[0] =
+ ((uint16_t*)dest)[i] =
(clip_table[(Y + yuvtab_40cf[U]) >>13]>>3) |
((clip_table[(Y + yuvtab_1a1e[V] + yuvtab_0c92[U]) >>13]<<2)&0x03E0) |
((clip_table[(Y + yuvtab_3343[V]) >>13]<<7)&0x7C00);
- dest+=2;
}
}
#endif