summaryrefslogtreecommitdiffstats
path: root/logotool/rgb2yuv.c
diff options
context:
space:
mode:
Diffstat (limited to 'logotool/rgb2yuv.c')
-rw-r--r--logotool/rgb2yuv.c111
1 files changed, 0 insertions, 111 deletions
diff --git a/logotool/rgb2yuv.c b/logotool/rgb2yuv.c
deleted file mode 100644
index b3f2143..0000000
--- a/logotool/rgb2yuv.c
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * logotool - tool to modify logo images with simple compression
- * Copyright (C) 2007
- * esteve <esteve@eslack.org>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-
-
-void RGBtoYUV(unsigned short in565, unsigned char *yuv)
-{
- /* 2 bytes, 565
- * RRRRR GGGGGG BBBBB
- */
-
- int i;
- i = (in565>>8)&0xFF;
- in565 = (in565<<8)&0xFF00;
- in565 |= i;
-
- int rgb[3];
-
- rgb[0] = (in565>>11)&0x1F;
- rgb[1] = (in565>>5)&0x3F;
- rgb[2] = (in565)&0x1F;
-
- rgb[0] = (rgb[0]<<3) | 0x7;
- rgb[1] = (rgb[1]<<2) | 0x3;
- rgb[2] = (rgb[2]<<3) | 0x7;
-
- /*yuv[0] = 0.299*rgb[0] + 0.587*rgb[1] + 0.114*rgb[2];
- yuv[1] = (rgb[2]-yuv[0])*0.565 + 128;
- yuv[2] = (rgb[0]-yuv[0])*0.713 + 128;*/
-
- yuv[0] = (0.257 * rgb[0]) + (0.504 * rgb[1]) + (0.098 * rgb[2]) + 16;
- yuv[1] = 128 - (0.148 * rgb[0]) - (0.291 * rgb[1]) + (0.439 * rgb[2]);
- yuv[2] = 128 + (0.439 * rgb[0]) - (0.368 * rgb[1]) - (0.071 * rgb[2]);
-}
-// mplayer caca.yuv -demuxer rawvideo -rawvideo fps=1:w=416:h=70 //:i420
-
-
-int rgb2yuv(char *from, char *to, int width, int height)
-{
- int fd=open (from, O_RDONLY );
- int fout= open ( to, O_CREAT| O_WRONLY , 0660 );
- int fsize;
- unsigned char* src;
- unsigned char* dstY;
- unsigned char* dstU;
- unsigned char* dstV;
- unsigned char YUV[3];
- unsigned short inP;
- int i,j;
-
- if (fd == -1) {
- printf("cannot open %s\n", from);
- return 0;
- }
- if (fout == -1) {
- printf("cannot open %s\n", to);
- return 0;
- }
- fsize = lseek ( fd, 0,SEEK_END);
- fsize = lseek ( fd, 0,SEEK_CUR);
- lseek ( fd,0, SEEK_SET);
-
- src=malloc ( fsize );
- dstY=malloc ( (fsize/2) );
- dstU=malloc ( (fsize/2) );
- dstV=malloc ( (fsize/2) );
-
-
- for ( i = 0 ; i < fsize; i+=2 ) {
- read ( fd, &inP, 2 );
- RGBtoYUV ( inP, YUV );
- dstY[i>>1]=YUV[0];
- dstU[i>>1]=YUV[1];
- dstV[i>>1]=YUV[2];
- }
-
- for ( i = 0 ; i < (fsize/2); i++ )
- write ( fout,&dstY[i], 1);
-
- for ( i = 0 ; i < height ; i+=2 )
- for ( j = 0; j < width ; j +=2 )
- write ( fout,&dstU[j+(i*width)], 1);
-
- for ( i = 0 ; i < height ; i+=2 )
- for ( j = 0; j < width ; j +=2 )
- write ( fout,&dstV[j+(i*width)], 1);
- return 1;
-}