From fe98e9b0a0ab7fae382cba26239492970e7d7253 Mon Sep 17 00:00:00 2001 From: Siggi Langauf Date: Thu, 2 May 2002 01:44:44 +0000 Subject: new logo code; xine uses a logo MRL instead of proprietary logo files. advantages of this implementation: - less (ie simpler) code - works around the wrong-coloured-logo issue (okay, .yv12.gz did as well) - logo doesn't flash between streams any more - smaller logo file (currently MPEG1 elementary stream, as that's all I could create with the GIMP. Other formats may compress even better...) - support for animated logos, even with sound CVS patchset: 1830 CVS date: 2002/05/02 01:44:44 --- misc/xine-logoconv.c | 236 --------------------------------------------------- 1 file changed, 236 deletions(-) delete mode 100644 misc/xine-logoconv.c (limited to 'misc/xine-logoconv.c') diff --git a/misc/xine-logoconv.c b/misc/xine-logoconv.c deleted file mode 100644 index 9965f7b5f..000000000 --- a/misc/xine-logoconv.c +++ /dev/null @@ -1,236 +0,0 @@ -/* - * Copyright (C) 2002 the xine project - * - * This file is part of xine, a free video player. - * - * xine 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 2 of the License, or - * (at your option) any later version. - * - * xine 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, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * xine-logoconv.c - * - * converts png (or any other file types imlib understands) to xine logos - * - * xine logo file format: - * - * int16_t width - * int16_t height - * uint8_t zlib_compressed (yuy2_data[width*height*2]) - * - * compile: - * gcc -o xine-logoconv xine-logoconv.c -L/usr/X11R6/lib -lX11 -lXext -ljpeg -lpng -ltiff -lz -lImlib - * - * usage: - * xine-logoconv logo.png - * - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include -#include -#include -#include -#include - -#include - -#define LUMARED 0.299 -#define LUMAGREEN 0.587 -#define LUMABLUE 0.114 - -static void wr16 (gzFile *fp, int i) { - - uint8_t c; - - c = i >> 8; - gzputc (fp, c); - c = i & 0xff; - gzputc (fp, c); -} - -static void save_image (char *oldname, ImlibImage *img) { - - gzFile *fp; - int32_t px, py, w, h; - char filename[1024]; - char *extension; - - w = img->rgb_width; - h = img->rgb_height; - - extension = strrchr (oldname, '.'); - if (extension) - *extension = 0; - - snprintf (filename, 1023, "%s.yv12.gz", oldname); - - if (!(fp = gzopen (filename ,"w"))) { - printf ("failed to create file '%s'\n", filename); - return; - } - - printf ("saving %d x %d logo image to %s\n", - w, h, filename); - - wr16 (fp, w); - wr16 (fp, h); - - /* - * convert yuv to yv12 - */ - - for (py=0; pyrgb_data[(px+py*w)*3]; - g = img->rgb_data[(px+py*w)*3+1]; - b = img->rgb_data[(px+py*w)*3+2]; -#else - r = img->rgb_data[(px+py*w)*3+2]; - g = img->rgb_data[(px+py*w)*3+1]; - b = img->rgb_data[(px+py*w)*3]; -#endif - - y = (LUMARED*r) + (LUMAGREEN*g) + (LUMABLUE*b); - // u = (b-y) / (2 - 2*LUMABLUE); - // v = (r-y) / (2 - 2*LUMABLUE); - u = (b-y) / (2 - 2*LUMABLUE); - v = (r-y) / (2 - 2*LUMABLUE); - - cy = y; - cu = u + 128.0; - cv = v + 128.0; - - gzwrite (fp, &cy, 1); - } - } - - for (py=0; pyrgb_data[(px+py*w)*3]; - g = img->rgb_data[(px+py*w)*3+1]; - b = img->rgb_data[(px+py*w)*3+2]; -#else - r = img->rgb_data[(px+py*w)*3+2]; - g = img->rgb_data[(px+py*w)*3+1]; - b = img->rgb_data[(px+py*w)*3]; -#endif - - y = (LUMARED*r) + (LUMAGREEN*g) + (LUMABLUE*b); - // u = (b-y) / (2 - 2*LUMABLUE); - // v = (r-y) / (2 - 2*LUMABLUE); - u = (b-y) / (2 - 2*LUMABLUE); - v = (r-y) / (2 - 2*LUMABLUE); - - cy = y; - cu = u + 128.0; - cv = v + 128.0; - - gzwrite (fp, &cu, 1); - - /* - printf ("%f %f %f => %f %f %f\n",r,g,b,y,u,v); - */ - - } - } - - for (py=0; pyrgb_data[(px+py*w)*3]; - g = img->rgb_data[(px+py*w)*3+1]; - b = img->rgb_data[(px+py*w)*3+2]; -#else - r = img->rgb_data[(px+py*w)*3+2]; - g = img->rgb_data[(px+py*w)*3+1]; - b = img->rgb_data[(px+py*w)*3]; -#endif - - y = (LUMARED*r) + (LUMAGREEN*g) + (LUMABLUE*b); - // u = (b-y) / (2 - 2*LUMABLUE); - // v = (r-y) / (2 - 2*LUMABLUE); - u = (b-y) / (2 - 2*LUMABLUE); - v = (r-y) / (2 - 2*LUMABLUE); - - cy = y; - cu = u + 128.0; - cv = v + 128.0; - - gzwrite (fp, &cv, 1); - - /* - printf ("%f %f %f => %f %f %f\n",r,g,b,y,u,v); - */ - - } - } - printf ("\ndone.\n"); - gzclose(fp); -} - -int main(int argc, char *argv[]) { - - Display *display; - ImlibData *imlib_data; - ImlibImage *img; - - if (argc != 2) { - printf ("usage: %s foo.png\n", argv[0]); - exit (1); - } - - if (!(display = XOpenDisplay (NULL))) { - printf ("failed to open X11 display\n"); - exit (1); - } - - if (!(imlib_data = Imlib_init(display))) { - printf ("failed to initialize imlib\n"); - exit(1); - } - - if (!(img = Imlib_load_image(imlib_data, argv[1]))) { - printf ("failed to load '%s'\n", argv[1]); - exit(1); - } - - Imlib_render(imlib_data, img, - img->rgb_width, - img->rgb_height); - - save_image (argv[1], img); - -} -- cgit v1.2.3