From: Michael Niedermayer Date: Sat, 6 Aug 2005 09:46:04 +0000 (+0000) Subject: mkstemp on win32 workaround by (Ivan Wong: email, ivanwong info) X-Git-Tag: v0.5~13666 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=77b854883ea012d9262f5e159cc71af5d7e34a44;p=platform%2Fupstream%2Flibav.git mkstemp on win32 workaround by (Ivan Wong: email, ivanwong info) Originally committed as revision 4495 to svn://svn.ffmpeg.org/ffmpeg/trunk --- diff --git a/libavcodec/xvidff.c b/libavcodec/xvidff.c index 9156b2e..b287c4e 100644 --- a/libavcodec/xvidff.c +++ b/libavcodec/xvidff.c @@ -27,6 +27,9 @@ #include #include "common.h" #include "avcodec.h" +#ifdef CONFIG_WIN32 +#include +#endif /** * Buffer management macros. @@ -226,6 +229,26 @@ int ff_xvid_encode_init(AVCodecContext *avctx) { rc2pass2.version = XVID_VERSION; rc2pass2.bitrate = avctx->bit_rate; +#ifdef CONFIG_WIN32 /* Ugly work around */ + { + char *tempname; + + tempname = tempnam(".", "xvidff"); + fd = -1; + if( tempname && + (fd = open(tempname, _O_RDWR | _O_BINARY)) != -1 ) { + x->twopassfile = av_strdup(tempname); +#undef free + free(tempname); +#define free please_use_av_free + if( x->twopassfile == NULL ) { + av_log(avctx, AV_LOG_ERROR, + "XviD: Cannot allocate 2-pass buffer\n"); + return -1; + } + } + } +#else x->twopassfile = av_malloc(BUFFER_SIZE); if( x->twopassfile == NULL ) { av_log(avctx, AV_LOG_ERROR, @@ -238,6 +261,7 @@ int ff_xvid_encode_init(AVCodecContext *avctx) { strcpy(x->twopassfile, "./xvidff.XXXXXX"); fd = mkstemp(x->twopassfile); } +#endif if( fd == -1 ) { av_log(avctx, AV_LOG_ERROR, "XviD: Cannot write 2-pass pipe\n");