mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-24 13:56:33 +02:00
mkstemp on win32 workaround by (Ivan Wong: email, ivanwong info)
Originally committed as revision 4495 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
6987c58a0a
commit
77b854883e
@ -27,6 +27,9 @@
|
||||
#include <unistd.h>
|
||||
#include "common.h"
|
||||
#include "avcodec.h"
|
||||
#ifdef CONFIG_WIN32
|
||||
#include <fcntl.h>
|
||||
#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");
|
||||
|
Loading…
x
Reference in New Issue
Block a user