mirror of
https://github.com/mpv-player/mpv
synced 2025-02-23 10:55:27 +01:00
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:
parent
6d367acbdd
commit
735c81a0f5
@ -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);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user