Mercurial > mplayer.hg
view libvo/vo_md5.c @ 13168:ce046ef860da
EDL enhancement/fixes:
*Some edl's code moved from mplayer.c to edl.c (mencoder will use the
same functions)
* slighty faster
* removed MAX_EDL_ENTRIES limit (just reserve the memory we really need)
* really treat edl_records as a linked list (coz it is)
* edl now 'remembers' pending operations after a manual _seek_
* better way of handling Mute/Umute eliminates some nasty bugs
when manual seeking (scrwed up mute/unmute order, no audio after
seek, etc)
* seeking while on -edl mode now _WORKS_
Patch by Reynaldo H. Verdejo Pinochet (reynaldo at opendot dot cl)
author | rtognimp |
---|---|
date | Sat, 28 Aug 2004 00:46:05 +0000 |
parents | e5fa67e8907e |
children |
line wrap: on
line source
/* * 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 <errno.h> #include "config.h" #include "video_out.h" #include "video_out_internal.h" static vo_info_t info = { "MD5 sum", "md5", "walken", "" }; LIBVO_EXTERN (md5) extern vo_functions_t video_out_pgm; extern char vo_pgm_filename[24]; static FILE * md5_file = NULL; static char * md5_filename = NULL; static uint32_t config(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height, uint32_t fullscreen, char *title, uint32_t format) { md5_file = fopen (md5_filename?md5_filename:"md5", "w"); if (!md5_file) return -1; return video_out_pgm.config (width, height, d_width,d_height,fullscreen, title, format); } static void draw_osd(void) { } static void flip_page (void) { char buf2[100]; FILE * f; int i; video_out_pgm.flip_page(); snprintf (buf2, 100, "md5sum %s", vo_pgm_filename); f = popen (buf2, "r"); if (!f) { snprintf (buf2, 100, "md5 %s", vo_pgm_filename); f = popen(buf2, "r"); } if (f) { i = fread (buf2, 1, sizeof(buf2), f); pclose (f); fwrite (buf2, 1, i, md5_file); } remove (vo_pgm_filename); } //static uint32_t draw_slice(uint8_t * src[], uint32_t slice_num) static uint32_t draw_slice(uint8_t *image[], int stride[], int w,int h,int x,int y) { return video_out_pgm.draw_slice(image,stride,w,h,x,y); } //extern uint32_t output_pgm_frame (char * fname, uint8_t * src[]); static uint32_t draw_frame(uint8_t * src[]) { return 0; } static uint32_t query_format(uint32_t format) { return video_out_pgm.control(VOCTRL_QUERY_FORMAT, &format); } static void uninit(void) { video_out_pgm.uninit(); if (md5_file) { fflush(md5_file); fclose(md5_file); md5_file = NULL; } if (md5_filename) { free(md5_filename); md5_filename = NULL; } } static void check_events(void) { } static uint32_t preinit(const char *arg) { if(arg) md5_filename = strdup(arg); return 0; } static uint32_t control(uint32_t request, void *data, ...) { switch (request) { case VOCTRL_QUERY_FORMAT: return query_format(*((uint32_t*)data)); } return VO_NOTIMPL; }