Remove colourspace-conversion stuff from rtjpeg, we have functions to do that

better and it doesn't belong in that file anyway.


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28885 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
reimar 2009-03-08 13:10:21 +00:00
parent 6d367acbdd
commit 735c81a0f5
1 changed files with 0 additions and 384 deletions

View File

@ -3411,387 +3411,3 @@ static int RTjpeg_mcompress8(__s8 *sp, unsigned char *bp, __u16 lmask)
#endif
return (sp-sb);
}
static void RTjpeg_color_init(void)
{
}
#define KcrR 76284
#define KcrG 53281
#define KcbG 25625
#define KcbB 132252
#define Ky 76284
static void RTjpeg_yuv422rgb(__u8 *buf, __u8 *rgb, int stride)
{
int tmp;
int i, j;
__s32 y, crR, crG, cbG, cbB;
__u8 *bufcr, *bufcb, *bufy, *bufoute;
int yskip;
yskip=RTjpeg_width;
bufcb=&buf[RTjpeg_width*RTjpeg_height];
bufcr=&buf[RTjpeg_width*RTjpeg_height+(RTjpeg_width*RTjpeg_height)/2];
bufy=&buf[0];
bufoute=rgb;
for(i=0; i<(RTjpeg_height); i++)
{
for(j=0; j<RTjpeg_width; j+=2)
{
crR=(*bufcr-128)*KcrR;
crG=(*(bufcr++)-128)*KcrG;
cbG=(*bufcb-128)*KcbG;
cbB=(*(bufcb++)-128)*KcbB;
y=(bufy[j]-16)*Ky;
tmp=(y+crR)>>16;
*(bufoute++)=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(y-crG-cbG)>>16;
*(bufoute++)=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(y+cbB)>>16;
*(bufoute++)=(tmp>255)?255:((tmp<0)?0:tmp);
y=(bufy[j+1]-16)*Ky;
tmp=(y+crR)>>16;
*(bufoute++)=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(y-crG-cbG)>>16;
*(bufoute++)=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(y+cbB)>>16;
*(bufoute++)=(tmp>255)?255:((tmp<0)?0:tmp);
}
bufy+=yskip;
}
}
static void RTjpeg_yuv420rgb(__u8 *buf, __u8 *rgb, int stride)
{
int tmp;
int i, j;
__s32 y, crR, crG, cbG, cbB;
__u8 *bufcr, *bufcb, *bufy, *bufoute, *bufouto;
int oskip, yskip;
if(stride==0)
oskip=RTjpeg_width*3;
else
oskip=2*stride-RTjpeg_width*3;
yskip=RTjpeg_width;
bufcb=&buf[RTjpeg_width*RTjpeg_height];
bufcr=&buf[RTjpeg_width*RTjpeg_height+(RTjpeg_width*RTjpeg_height)/4];
bufy=&buf[0];
bufoute=rgb;
bufouto=rgb+RTjpeg_width*3;
for(i=0; i<(RTjpeg_height>>1); i++)
{
for(j=0; j<RTjpeg_width; j+=2)
{
crR=(*bufcr-128)*KcrR;
crG=(*(bufcr++)-128)*KcrG;
cbG=(*bufcb-128)*KcbG;
cbB=(*(bufcb++)-128)*KcbB;
y=(bufy[j]-16)*Ky;
tmp=(y+crR)>>16;
*(bufoute++)=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(y-crG-cbG)>>16;
*(bufoute++)=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(y+cbB)>>16;
*(bufoute++)=(tmp>255)?255:((tmp<0)?0:tmp);
y=(bufy[j+1]-16)*Ky;
tmp=(y+crR)>>16;
*(bufoute++)=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(y-crG-cbG)>>16;
*(bufoute++)=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(y+cbB)>>16;
*(bufoute++)=(tmp>255)?255:((tmp<0)?0:tmp);
y=(bufy[j+yskip]-16)*Ky;
tmp=(y+crR)>>16;
*(bufouto++)=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(y-crG-cbG)>>16;
*(bufouto++)=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(y+cbB)>>16;
*(bufouto++)=(tmp>255)?255:((tmp<0)?0:tmp);
y=(bufy[j+1+yskip]-16)*Ky;
tmp=(y+crR)>>16;
*(bufouto++)=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(y-crG-cbG)>>16;
*(bufouto++)=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(y+cbB)>>16;
*(bufouto++)=(tmp>255)?255:((tmp<0)?0:tmp);
}
bufoute+=oskip;
bufouto+=oskip;
bufy+=yskip<<1;
}
}
static void RTjpeg_yuvrgb32(__u8 *buf, __u8 *rgb, int stride)
{
int tmp;
int i, j;
__s32 y, crR, crG, cbG, cbB;
__u8 *bufcr, *bufcb, *bufy, *bufoute, *bufouto;
int oskip, yskip;
if(stride==0)
oskip=RTjpeg_width*4;
else
oskip = 2*stride-RTjpeg_width*4;
yskip=RTjpeg_width;
bufcb=&buf[RTjpeg_width*RTjpeg_height];
bufcr=&buf[RTjpeg_width*RTjpeg_height+(RTjpeg_width*RTjpeg_height)/2];
bufy=&buf[0];
bufoute=rgb;
bufouto=rgb+RTjpeg_width*4;
for(i=0; i<(RTjpeg_height>>1); i++)
{
for(j=0; j<RTjpeg_width; j+=2)
{
crR=(*bufcr-128)*KcrR;
crG=(*(bufcr++)-128)*KcrG;
cbG=(*bufcb-128)*KcbG;
cbB=(*(bufcb++)-128)*KcbB;
y=(bufy[j]-16)*Ky;
tmp=(y+cbB)>>16;
*(bufoute++)=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(y-crG-cbG)>>16;
*(bufoute++)=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(y+crR)>>16;
*(bufoute++)=(tmp>255)?255:((tmp<0)?0:tmp);
bufoute++;
y=(bufy[j+1]-16)*Ky;
tmp=(y+cbB)>>16;
*(bufoute++)=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(y-crG-cbG)>>16;
*(bufoute++)=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(y+crR)>>16;
*(bufoute++)=(tmp>255)?255:((tmp<0)?0:tmp);
bufoute++;
y=(bufy[j+yskip]-16)*Ky;
tmp=(y+cbB)>>16;
*(bufouto++)=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(y-crG-cbG)>>16;
*(bufouto++)=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(y+crR)>>16;
*(bufouto++)=(tmp>255)?255:((tmp<0)?0:tmp);
bufouto++;
y=(bufy[j+1+yskip]-16)*Ky;
tmp=(y+cbB)>>16;
*(bufouto++)=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(y-crG-cbG)>>16;
*(bufouto++)=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(y+crR)>>16;
*(bufouto++)=(tmp>255)?255:((tmp<0)?0:tmp);
bufouto++;
}
bufoute+=oskip;
bufouto+=oskip;
bufy+=yskip<<1;
}
}
static void RTjpeg_yuvrgb24(__u8 *buf, __u8 *rgb, int stride)
{
int tmp;
int i, j;
__s32 y, crR, crG, cbG, cbB;
__u8 *bufcr, *bufcb, *bufy, *bufoute, *bufouto;
int oskip, yskip;
if(stride==0)
oskip=RTjpeg_width*3;
else
oskip=2*stride - RTjpeg_width*3;
yskip=RTjpeg_width;
bufcb=&buf[RTjpeg_width*RTjpeg_height];
bufcr=&buf[RTjpeg_width*RTjpeg_height+(RTjpeg_width*RTjpeg_height)/4];
bufy=&buf[0];
bufoute=rgb;
bufouto=rgb+RTjpeg_width*3;
for(i=0; i<(RTjpeg_height>>1); i++)
{
for(j=0; j<RTjpeg_width; j+=2)
{
crR=(*bufcr-128)*KcrR;
crG=(*(bufcr++)-128)*KcrG;
cbG=(*bufcb-128)*KcbG;
cbB=(*(bufcb++)-128)*KcbB;
y=(bufy[j]-16)*Ky;
tmp=(y+cbB)>>16;
*(bufoute++)=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(y-crG-cbG)>>16;
*(bufoute++)=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(y+crR)>>16;
*(bufoute++)=(tmp>255)?255:((tmp<0)?0:tmp);
y=(bufy[j+1]-16)*Ky;
tmp=(y+cbB)>>16;
*(bufoute++)=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(y-crG-cbG)>>16;
*(bufoute++)=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(y+crR)>>16;
*(bufoute++)=(tmp>255)?255:((tmp<0)?0:tmp);
y=(bufy[j+yskip]-16)*Ky;
tmp=(y+cbB)>>16;
*(bufouto++)=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(y-crG-cbG)>>16;
*(bufouto++)=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(y+crR)>>16;
*(bufouto++)=(tmp>255)?255:((tmp<0)?0:tmp);
y=(bufy[j+1+yskip]-16)*Ky;
tmp=(y+cbB)>>16;
*(bufouto++)=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(y-crG-cbG)>>16;
*(bufouto++)=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(y+crR)>>16;
*(bufouto++)=(tmp>255)?255:((tmp<0)?0:tmp);
}
bufoute+=oskip;
bufouto+=oskip;
bufy+=yskip<<1;
}
}
static void RTjpeg_yuvrgb16(__u8 *buf, __u8 *rgb, int stride)
{
int tmp;
int i, j;
__s32 y, crR, crG, cbG, cbB;
__u8 *bufcr, *bufcb, *bufy, *bufoute, *bufouto;
int oskip, yskip;
unsigned char r, g, b;
if(stride==0)
oskip=RTjpeg_width*2;
else
oskip=2*stride-RTjpeg_width*2;
yskip=RTjpeg_width;
bufcb=&buf[RTjpeg_width*RTjpeg_height];
bufcr=&buf[RTjpeg_width*RTjpeg_height+(RTjpeg_width*RTjpeg_height)/4];
bufy=&buf[0];
bufoute=rgb;
bufouto=rgb+RTjpeg_width*2;
for(i=0; i<(RTjpeg_height>>1); i++)
{
for(j=0; j<RTjpeg_width; j+=2)
{
crR=(*bufcr-128)*KcrR;
crG=(*(bufcr++)-128)*KcrG;
cbG=(*bufcb-128)*KcbG;
cbB=(*(bufcb++)-128)*KcbB;
y=(bufy[j]-16)*Ky;
tmp=(y+cbB)>>16;
b=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(y-crG-cbG)>>16;
g=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(y+crR)>>16;
r=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(int)((int)b >> 3);
tmp|=(int)(((int)g >> 2) << 5);
tmp|=(int)(((int)r >> 3) << 11);
*(bufoute++)=tmp&0xff;
*(bufoute++)=tmp>>8;
y=(bufy[j+1]-16)*Ky;
tmp=(y+cbB)>>16;
b=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(y-crG-cbG)>>16;
g=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(y+crR)>>16;
r=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(int)((int)b >> 3);
tmp|=(int)(((int)g >> 2) << 5);
tmp|=(int)(((int)r >> 3) << 11);
*(bufoute++)=tmp&0xff;
*(bufoute++)=tmp>>8;
y=(bufy[j+yskip]-16)*Ky;
tmp=(y+cbB)>>16;
b=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(y-crG-cbG)>>16;
g=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(y+crR)>>16;
r=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(int)((int)b >> 3);
tmp|=(int)(((int)g >> 2) << 5);
tmp|=(int)(((int)r >> 3) << 11);
*(bufouto++)=tmp&0xff;
*(bufouto++)=tmp>>8;
y=(bufy[j+1+yskip]-16)*Ky;
tmp=(y+cbB)>>16;
b=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(y-crG-cbG)>>16;
g=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(y+crR)>>16;
r=(tmp>255)?255:((tmp<0)?0:tmp);
tmp=(int)((int)b >> 3);
tmp|=(int)(((int)g >> 2) << 5);
tmp|=(int)(((int)r >> 3) << 11);
*(bufouto++)=tmp&0xff;
*(bufouto++)=tmp>>8;
}
bufoute+=oskip;
bufouto+=oskip;
bufy+=yskip<<1;
}
}
/* fix stride */
static void RTjpeg_yuvrgb8(__u8 *buf, __u8 *rgb, int stride)
{
memcpy(rgb, buf, RTjpeg_width*RTjpeg_height);
}