Mercurial > mplayer.hg
changeset 2572:f2353173d52c
c optimizations (array is faster than pointer) (16bpp variants tested and 2% faster)
author | michael |
---|---|
date | Tue, 30 Oct 2001 21:33:01 +0000 |
parents | 13608ff3d1e6 |
children | 9009b6d24296 |
files | postproc/swscale.c postproc/swscale_template.c |
diffstat | 2 files changed, 18 insertions(+), 36 deletions(-) [+] |
line wrap: on
line diff
--- a/postproc/swscale.c Tue Oct 30 21:22:28 2001 +0000 +++ b/postproc/swscale.c Tue Oct 30 21:33:01 2001 +0000 @@ -506,18 +506,15 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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
--- a/postproc/swscale_template.c Tue Oct 30 21:22:28 2001 +0000 +++ b/postproc/swscale_template.c Tue Oct 30 21:33:01 2001 +0000 @@ -506,18 +506,15 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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