Mercurial > mplayer.hg
changeset 14145:9c47f90ad94a
fix leak with -fixed-vo, allow concatenating
author | reimar |
---|---|
date | Sun, 12 Dec 2004 15:17:53 +0000 |
parents | 1fcb18e39ef9 |
children | dd7713e9c00b |
files | ChangeLog libvo/vo_yuv4mpeg.c |
diffstat | 2 files changed, 21 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Sat Dec 11 23:59:36 2004 +0000 +++ b/ChangeLog Sun Dec 12 15:17:53 2004 +0000 @@ -45,7 +45,8 @@ * support for mixer channel selection in the ALSA audio output driver * jpeg video output driver now supports output to multiple directories * audio output driver for the polypaudio sound server - * yuv4mpeg video output now has a file= suboption. + * yuv4mpeg video output now has a file= suboption, can now be used with + -fixed-vo to concatenate files having same width, height and fps Decoders: * "experimental" support for 20 and 24 bit LPCM (DVD-Audio)
--- a/libvo/vo_yuv4mpeg.c Sat Dec 11 23:59:36 2004 +0000 +++ b/libvo/vo_yuv4mpeg.c Sun Dec 12 15:17:53 2004 +0000 @@ -51,8 +51,9 @@ LIBVO_EXTERN (yuv4mpeg) -static int image_width; -static int image_height; +static int image_width = 0; +static int image_height = 0; +static float image_fps = 0; static uint8_t *image = NULL; static uint8_t *image_y = NULL; @@ -80,8 +81,19 @@ uint32_t d_height, uint32_t fullscreen, char *title, uint32_t format) { + if (image_width == width && image_height == height && + image_fps == vo_fps && vo_config_count) + return 0; + if (vo_config_count) { + mp_msg(MSGT_VO, MSGL_WARN, + "Video formats differ (w:%i=>%i, h:%i=>%i, fps:%f=>%f), " + "restarting output.\n", + image_width, width, image_height, height, image_fps, vo_fps); + uninit(); + } image_height = height; image_width = width; + image_fps = vo_fps; using_format = format; if (Y4M_IS_INTERLACED) @@ -146,7 +158,7 @@ /* At least the interlacing is ok now */ fprintf(yuv_out, "YUV4MPEG2 W%d H%d F%ld:%ld I%c A0:0\n", - image_width, image_height, (long)(vo_fps * 1000000.0), + image_width, image_height, (long)(image_fps * 1000000.0), (long)1000000, config_interlace); fflush(yuv_out); @@ -448,6 +460,7 @@ return 0; } +// WARNING: config(...) also uses this static void uninit(void) { if(image) @@ -469,6 +482,9 @@ if (yuv_filename) free(yuv_filename); yuv_filename = NULL; + image_width = 0; + image_height = 0; + image_fps = 0; }