This allows compiling the Xvid rate control code without the encoder.tags/n0.11
| @@ -42,6 +42,7 @@ OBJS-$(CONFIG_GOLOMB) += golomb.o | |||||
| OBJS-$(CONFIG_H264DSP) += h264dsp.o h264idct.o | OBJS-$(CONFIG_H264DSP) += h264dsp.o h264idct.o | ||||
| OBJS-$(CONFIG_H264PRED) += h264pred.o | OBJS-$(CONFIG_H264PRED) += h264pred.o | ||||
| OBJS-$(CONFIG_HUFFMAN) += huffman.o | OBJS-$(CONFIG_HUFFMAN) += huffman.o | ||||
| OBJS-$(CONFIG_LIBXVID) += libxvid_rc.o | |||||
| OBJS-$(CONFIG_LPC) += lpc.o | OBJS-$(CONFIG_LPC) += lpc.o | ||||
| OBJS-$(CONFIG_LSP) += lsp.o | OBJS-$(CONFIG_LSP) += lsp.o | ||||
| OBJS-$(CONFIG_MDCT) += mdct_fixed.o mdct_float.o | OBJS-$(CONFIG_MDCT) += mdct_fixed.o mdct_float.o | ||||
| @@ -615,7 +616,7 @@ OBJS-$(CONFIG_LIBVPX_DECODER) += libvpxdec.o | |||||
| OBJS-$(CONFIG_LIBVPX_ENCODER) += libvpxenc.o | OBJS-$(CONFIG_LIBVPX_ENCODER) += libvpxenc.o | ||||
| OBJS-$(CONFIG_LIBX264_ENCODER) += libx264.o | OBJS-$(CONFIG_LIBX264_ENCODER) += libx264.o | ||||
| OBJS-$(CONFIG_LIBXAVS_ENCODER) += libxavs.o | OBJS-$(CONFIG_LIBXAVS_ENCODER) += libxavs.o | ||||
| OBJS-$(CONFIG_LIBXVID) += libxvidff.o libxvid_rc.o | |||||
| OBJS-$(CONFIG_LIBXVID_ENCODER) += libxvidff.o | |||||
| # parsers | # parsers | ||||
| OBJS-$(CONFIG_AAC_PARSER) += aac_parser.o aac_ac3_parser.o \ | OBJS-$(CONFIG_AAC_PARSER) += aac_parser.o aac_ac3_parser.o \ | ||||
| @@ -20,8 +20,13 @@ | |||||
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||||
| */ | */ | ||||
| #include "config.h" | |||||
| #include <xvid.h> | #include <xvid.h> | ||||
| #include <unistd.h> | #include <unistd.h> | ||||
| #if !HAVE_MKSTEMP | |||||
| #include <fcntl.h> | |||||
| #endif | |||||
| #include "avcodec.h" | #include "avcodec.h" | ||||
| #include "libxvid_internal.h" | #include "libxvid_internal.h" | ||||
| //#include "dsputil.h" | //#include "dsputil.h" | ||||
| @@ -30,6 +35,42 @@ | |||||
| #undef NDEBUG | #undef NDEBUG | ||||
| #include <assert.h> | #include <assert.h> | ||||
| /* Wrapper to work around the lack of mkstemp() on mingw. | |||||
| * Also, tries to create file in /tmp first, if possible. | |||||
| * *prefix can be a character constant; *filename will be allocated internally. | |||||
| * @return file descriptor of opened file (or -1 on error) | |||||
| * and opened file name in **filename. */ | |||||
| int ff_tempfile(const char *prefix, char **filename) { | |||||
| int fd=-1; | |||||
| #if !HAVE_MKSTEMP | |||||
| *filename = tempnam(".", prefix); | |||||
| #else | |||||
| size_t len = strlen(prefix) + 12; /* room for "/tmp/" and "XXXXXX\0" */ | |||||
| *filename = av_malloc(len); | |||||
| #endif | |||||
| /* -----common section-----*/ | |||||
| if (*filename == NULL) { | |||||
| av_log(NULL, AV_LOG_ERROR, "ff_tempfile: Cannot allocate file name\n"); | |||||
| return -1; | |||||
| } | |||||
| #if !HAVE_MKSTEMP | |||||
| fd = open(*filename, O_RDWR | O_BINARY | O_CREAT, 0444); | |||||
| #else | |||||
| snprintf(*filename, len, "/tmp/%sXXXXXX", prefix); | |||||
| fd = mkstemp(*filename); | |||||
| if (fd < 0) { | |||||
| snprintf(*filename, len, "./%sXXXXXX", prefix); | |||||
| fd = mkstemp(*filename); | |||||
| } | |||||
| #endif | |||||
| /* -----common section-----*/ | |||||
| if (fd < 0) { | |||||
| av_log(NULL, AV_LOG_ERROR, "ff_tempfile: Cannot open temporary file %s\n", *filename); | |||||
| return -1; | |||||
| } | |||||
| return fd; /* success */ | |||||
| } | |||||
| int ff_xvid_rate_control_init(MpegEncContext *s){ | int ff_xvid_rate_control_init(MpegEncContext *s){ | ||||
| char *tmp_name; | char *tmp_name; | ||||
| int fd, i; | int fd, i; | ||||
| @@ -33,9 +33,6 @@ | |||||
| #include "libavutil/mathematics.h" | #include "libavutil/mathematics.h" | ||||
| #include "libxvid_internal.h" | #include "libxvid_internal.h" | ||||
| #include "mpegvideo.h" | #include "mpegvideo.h" | ||||
| #if !HAVE_MKSTEMP | |||||
| #include <fcntl.h> | |||||
| #endif | |||||
| /** | /** | ||||
| * Buffer management macros. | * Buffer management macros. | ||||
| @@ -83,42 +80,6 @@ struct xvid_ff_pass1 { | |||||
| * rate-control plugin. | * rate-control plugin. | ||||
| */ | */ | ||||
| /* Wrapper to work around the lack of mkstemp() on mingw. | |||||
| * Also, tries to create file in /tmp first, if possible. | |||||
| * *prefix can be a character constant; *filename will be allocated internally. | |||||
| * @return file descriptor of opened file (or -1 on error) | |||||
| * and opened file name in **filename. */ | |||||
| int ff_tempfile(const char *prefix, char **filename) { | |||||
| int fd=-1; | |||||
| #if !HAVE_MKSTEMP | |||||
| *filename = tempnam(".", prefix); | |||||
| #else | |||||
| size_t len = strlen(prefix) + 12; /* room for "/tmp/" and "XXXXXX\0" */ | |||||
| *filename = av_malloc(len); | |||||
| #endif | |||||
| /* -----common section-----*/ | |||||
| if (*filename == NULL) { | |||||
| av_log(NULL, AV_LOG_ERROR, "ff_tempfile: Cannot allocate file name\n"); | |||||
| return -1; | |||||
| } | |||||
| #if !HAVE_MKSTEMP | |||||
| fd = open(*filename, O_RDWR | O_BINARY | O_CREAT, 0444); | |||||
| #else | |||||
| snprintf(*filename, len, "/tmp/%sXXXXXX", prefix); | |||||
| fd = mkstemp(*filename); | |||||
| if (fd < 0) { | |||||
| snprintf(*filename, len, "./%sXXXXXX", prefix); | |||||
| fd = mkstemp(*filename); | |||||
| } | |||||
| #endif | |||||
| /* -----common section-----*/ | |||||
| if (fd < 0) { | |||||
| av_log(NULL, AV_LOG_ERROR, "ff_tempfile: Cannot open temporary file %s\n", *filename); | |||||
| return -1; | |||||
| } | |||||
| return fd; /* success */ | |||||
| } | |||||
| /** | /** | ||||
| * Initialize the two-pass plugin and context. | * Initialize the two-pass plugin and context. | ||||
| * | * | ||||