Mercurial > mplayer.hg
diff libvo/vo_pgm.c @ 1:3b5f5d1c5041
Initial revision
author | arpi_esp |
---|---|
date | Sat, 24 Feb 2001 20:28:24 +0000 |
parents | |
children | 2184c8945d42 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libvo/vo_pgm.c Sat Feb 24 20:28:24 2001 +0000 @@ -0,0 +1,115 @@ +#define DISP + +/* + * video_out_pgm.c, pgm interface + * + * + * Copyright (C) 1996, MPEG Software Simulation Group. All Rights Reserved. + * + * Hacked into mpeg2dec by + * + * Aaron Holtzman <aholtzma@ess.engr.uvic.ca> + * + * 15 & 16 bpp support added by Franck Sicard <Franck.Sicard@solsoft.fr> + * + * Xv image suuport by Gerd Knorr <kraxel@goldbach.in-berlin.de> + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "config.h" +#include "video_out.h" +#include "video_out_internal.h" + +LIBVO_EXTERN (pgm) + +static vo_info_t vo_info = +{ + "PGM file", + "pgm", + "walken", + "" +}; + +static int image_width; +static int image_height; +static char header[1024]; +static int framenum = -2; + +static uint32_t +init(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height, uint32_t fullscreen, char *title, uint32_t format) +{ + image_height = height; + image_width = width; + + sprintf (header, "P5\n\n%d %d\n255\n", width, height*3/2); + + return 0; +} + +static const vo_info_t* +get_info(void) +{ + return &vo_info; +} + +static void flip_page (void) +{ +} + +static uint32_t draw_slice(uint8_t *image[], int stride[], int w,int h,int x,int y) +//static uint32_t draw_slice(uint8_t * src[], uint32_t slice_num) +{ + return 0; +} + +uint32_t output_pgm_frame (char * fname, uint8_t * src[]) +{ + FILE * f; + int i; + + f = fopen (fname, "wb"); + if (f == NULL) return 1; + fwrite (header, strlen (header), 1, f); + fwrite (src[0], image_width, image_height, f); + for (i = 0; i < image_height/2; i++) { + fwrite (src[1]+i*image_width/2, image_width/2, 1, f); + fwrite (src[2]+i*image_width/2, image_width/2, 1, f); + } + fclose (f); + + return 0; +} + +static uint32_t draw_frame(uint8_t * src[]) +{ + char buf[100]; + + if (++framenum < 0) + return 0; + + sprintf (buf, "%d.pgm", framenum); + return output_pgm_frame (buf, src); +} + +static uint32_t +query_format(uint32_t format) +{ + switch(format){ + case IMGFMT_YV12: +// case IMGFMT_RGB|24: +// case IMGFMT_BGR|24: + return 1; + } + return 0; +} + +static void +uninit(void) +{ +} + + +