ffmpeg | branch: master | James Almer <jamr...@gmail.com> | Wed Nov 1 20:05:09 2017 -0300| [e621b1ca646a2f268797adc3194b694a852548d2] | committer: James Almer
Merge commit '97cfe1d8bd1968143e2ba9aa46ebe9504a835e24' * commit '97cfe1d8bd1968143e2ba9aa46ebe9504a835e24': Convert all AVClass struct declarations to designated initializers. Merged-by: James Almer <jamr...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=e621b1ca646a2f268797adc3194b694a852548d2 --- libavcodec/aacenc.c | 8 ++++---- libavcodec/libfdk-aacdec.c | 5 ++++- libavcodec/libfdk-aacenc.c | 5 ++++- libavcodec/libopencore-amr.c | 5 ++++- libavcodec/libopenh264enc.c | 5 ++++- libavcodec/libvo-amrwbenc.c | 5 ++++- libavcodec/mpeg4videodec.c | 8 ++++---- libavcodec/s302m.c | 8 ++++---- libavcodec/v210dec.c | 8 ++++---- libavutil/eval.c | 9 ++++++++- libavutil/file.c | 8 ++++++-- libavutil/file_open.c | 8 ++++++-- libavutil/imgutils.c | 7 ++++--- libavutil/tests/opt.c | 6 +++--- 14 files changed, 63 insertions(+), 32 deletions(-) diff --git a/libavcodec/aacenc.c b/libavcodec/aacenc.c index 11da260742..3efcbda403 100644 --- a/libavcodec/aacenc.c +++ b/libavcodec/aacenc.c @@ -1066,10 +1066,10 @@ static const AVOption aacenc_options[] = { }; static const AVClass aacenc_class = { - "AAC encoder", - av_default_item_name, - aacenc_options, - LIBAVUTIL_VERSION_INT, + .class_name = "AAC encoder", + .item_name = av_default_item_name, + .option = aacenc_options, + .version = LIBAVUTIL_VERSION_INT, }; static const AVCodecDefault aac_encode_defaults[] = { diff --git a/libavcodec/libfdk-aacdec.c b/libavcodec/libfdk-aacdec.c index 2857b9453f..a0110da62b 100644 --- a/libavcodec/libfdk-aacdec.c +++ b/libavcodec/libfdk-aacdec.c @@ -79,7 +79,10 @@ static const AVOption fdk_aac_dec_options[] = { }; static const AVClass fdk_aac_dec_class = { - "libfdk-aac decoder", av_default_item_name, fdk_aac_dec_options, LIBAVUTIL_VERSION_INT + .class_name = "libfdk-aac decoder", + .item_name = av_default_item_name, + .option = fdk_aac_dec_options, + .version = LIBAVUTIL_VERSION_INT, }; static int get_stream_info(AVCodecContext *avctx) diff --git a/libavcodec/libfdk-aacenc.c b/libavcodec/libfdk-aacenc.c index 0e2051b468..ca0f4bf722 100644 --- a/libavcodec/libfdk-aacenc.c +++ b/libavcodec/libfdk-aacenc.c @@ -54,7 +54,10 @@ static const AVOption aac_enc_options[] = { }; static const AVClass aac_enc_class = { - "libfdk_aac", av_default_item_name, aac_enc_options, LIBAVUTIL_VERSION_INT + .class_name = "libfdk_aac", + .item_name = av_default_item_name, + .option = aac_enc_options, + .version = LIBAVUTIL_VERSION_INT, }; static const char *aac_get_error(AACENC_ERROR err) diff --git a/libavcodec/libopencore-amr.c b/libavcodec/libopencore-amr.c index 8545ffe109..d509804315 100644 --- a/libavcodec/libopencore-amr.c +++ b/libavcodec/libopencore-amr.c @@ -183,7 +183,10 @@ static const AVOption options[] = { }; static const AVClass amrnb_class = { - "libopencore_amrnb", av_default_item_name, options, LIBAVUTIL_VERSION_INT + .class_name = "libopencore_amrnb", + .item_name = av_default_item_name, + .option = options, + .version = LIBAVUTIL_VERSION_INT, }; static av_cold int amr_nb_encode_init(AVCodecContext *avctx) diff --git a/libavcodec/libopenh264enc.c b/libavcodec/libopenh264enc.c index 9c22bf4f30..1152d0036f 100644 --- a/libavcodec/libopenh264enc.c +++ b/libavcodec/libopenh264enc.c @@ -75,7 +75,10 @@ static const AVOption options[] = { }; static const AVClass class = { - "libopenh264enc", av_default_item_name, options, LIBAVUTIL_VERSION_INT + .class_name = "libvo_amrwbenc", + .item_name = av_default_item_name, + .option = options, + .version = LIBAVUTIL_VERSION_INT, }; static av_cold int svc_encode_close(AVCodecContext *avctx) diff --git a/libavcodec/libvo-amrwbenc.c b/libavcodec/libvo-amrwbenc.c index 2a15650572..f756940879 100644 --- a/libavcodec/libvo-amrwbenc.c +++ b/libavcodec/libvo-amrwbenc.c @@ -46,7 +46,10 @@ static const AVOption options[] = { }; static const AVClass amrwb_class = { - "libvo_amrwbenc", av_default_item_name, options, LIBAVUTIL_VERSION_INT + .class_name = "libvo_amrwbenc", + .item_name = av_default_item_name, + .option = options, + .version = LIBAVUTIL_VERSION_INT, }; static int get_wb_bitrate_mode(int bitrate, void *log_ctx) diff --git a/libavcodec/mpeg4videodec.c b/libavcodec/mpeg4videodec.c index 0203503599..76247c3b8c 100644 --- a/libavcodec/mpeg4videodec.c +++ b/libavcodec/mpeg4videodec.c @@ -2823,10 +2823,10 @@ static const AVOption mpeg4_options[] = { }; static const AVClass mpeg4_class = { - "MPEG4 Video Decoder", - av_default_item_name, - mpeg4_options, - LIBAVUTIL_VERSION_INT, + .class_name = "MPEG4 Video Decoder", + .item_name = av_default_item_name, + .option = mpeg4_options, + .version = LIBAVUTIL_VERSION_INT, }; AVCodec ff_mpeg4_decoder = { diff --git a/libavcodec/s302m.c b/libavcodec/s302m.c index 4350d97f0a..584b58e28e 100644 --- a/libavcodec/s302m.c +++ b/libavcodec/s302m.c @@ -212,10 +212,10 @@ static const AVOption s302m_options[] = { }; static const AVClass s302m_class = { - "SMPTE 302M Decoder", - av_default_item_name, - s302m_options, - LIBAVUTIL_VERSION_INT, + .class_name = "SMPTE 302M Decoder", + .item_name = av_default_item_name, + .option = s302m_options, + .version = LIBAVUTIL_VERSION_INT, }; AVCodec ff_s302m_decoder = { diff --git a/libavcodec/v210dec.c b/libavcodec/v210dec.c index 9af9af6797..99199ddc15 100644 --- a/libavcodec/v210dec.c +++ b/libavcodec/v210dec.c @@ -162,10 +162,10 @@ static const AVOption v210dec_options[] = { }; static const AVClass v210dec_class = { - "V210 Decoder", - av_default_item_name, - v210dec_options, - LIBAVUTIL_VERSION_INT, + .class_name = "V210 Decoder", + .item_name = av_default_item_name, + .option = v210dec_options, + .version = LIBAVUTIL_VERSION_INT, }; AVCodec ff_v210_decoder = { diff --git a/libavutil/eval.c b/libavutil/eval.c index b5f4ea2409..5da9a6d83b 100644 --- a/libavutil/eval.c +++ b/libavutil/eval.c @@ -57,7 +57,14 @@ typedef struct Parser { double *var; } Parser; -static const AVClass eval_class = { "Eval", av_default_item_name, NULL, LIBAVUTIL_VERSION_INT, offsetof(Parser,log_offset), offsetof(Parser,log_ctx) }; +static const AVClass eval_class = { + .class_name = "Eval", + .item_name = av_default_item_name, + .option = NULL, + .version = LIBAVUTIL_VERSION_INT, + .log_level_offset_offset = offsetof(Parser, log_offset), + .parent_log_context_offset = offsetof(Parser, log_ctx), +}; static const struct { double bin_val; diff --git a/libavutil/file.c b/libavutil/file.c index 7bdf6cde84..24a86c3f35 100644 --- a/libavutil/file.c +++ b/libavutil/file.c @@ -42,8 +42,12 @@ typedef struct FileLogContext { } FileLogContext; static const AVClass file_log_ctx_class = { - "FILE", av_default_item_name, NULL, LIBAVUTIL_VERSION_INT, - offsetof(FileLogContext, log_offset), offsetof(FileLogContext, log_ctx) + .class_name = "FILE", + .item_name = av_default_item_name, + .option = NULL, + .version = LIBAVUTIL_VERSION_INT, + .log_level_offset_offset = offsetof(FileLogContext, log_offset), + .parent_log_context_offset = offsetof(FileLogContext, log_ctx), }; int av_file_map(const char *filename, uint8_t **bufptr, size_t *size, diff --git a/libavutil/file_open.c b/libavutil/file_open.c index 34070d933b..258bb3074e 100644 --- a/libavutil/file_open.c +++ b/libavutil/file_open.c @@ -99,8 +99,12 @@ typedef struct FileLogContext { } FileLogContext; static const AVClass file_log_ctx_class = { - "TEMPFILE", av_default_item_name, NULL, LIBAVUTIL_VERSION_INT, - offsetof(FileLogContext, log_offset), offsetof(FileLogContext, log_ctx) + .class_name = "TEMPFILE", + .item_name = av_default_item_name, + .option = NULL, + .version = LIBAVUTIL_VERSION_INT, + .log_level_offset_offset = offsetof(FileLogContext, log_offset), + .parent_log_context_offset = offsetof(FileLogContext, log_ctx), }; int avpriv_tempfile(const char *prefix, char **filename, int log_offset, void *log_ctx) diff --git a/libavutil/imgutils.c b/libavutil/imgutils.c index 5005178804..5af4fc20a0 100644 --- a/libavutil/imgutils.c +++ b/libavutil/imgutils.c @@ -242,9 +242,10 @@ typedef struct ImgUtils { } ImgUtils; static const AVClass imgutils_class = { - .class_name = "IMGUTILS", - .item_name = av_default_item_name, - .version = LIBAVUTIL_VERSION_INT, + .class_name = "IMGUTILS", + .item_name = av_default_item_name, + .option = NULL, + .version = LIBAVUTIL_VERSION_INT, .log_level_offset_offset = offsetof(ImgUtils, log_offset), .parent_log_context_offset = offsetof(ImgUtils, log_ctx), }; diff --git a/libavutil/tests/opt.c b/libavutil/tests/opt.c index 568eb45668..f4cfa590aa 100644 --- a/libavutil/tests/opt.c +++ b/libavutil/tests/opt.c @@ -98,9 +98,9 @@ static const char *test_get_name(void *ctx) } static const AVClass test_class = { - "TestContext", - test_get_name, - test_options + .class_name = "TestContext", + .item_name = test_get_name, + .option = test_options, }; static void log_callback_help(void *ptr, int level, const char *fmt, va_list vl) ====================================================================== diff --cc libavcodec/aacenc.c index 11da260742,b7f60fb872..3efcbda403 --- a/libavcodec/aacenc.c +++ b/libavcodec/aacenc.c @@@ -1066,17 -803,12 +1066,17 @@@ static const AVOption aacenc_options[] }; static const AVClass aacenc_class = { - "AAC encoder", - av_default_item_name, - aacenc_options, - LIBAVUTIL_VERSION_INT, + .class_name = "AAC encoder", + .item_name = av_default_item_name, + .option = aacenc_options, + .version = LIBAVUTIL_VERSION_INT, }; +static const AVCodecDefault aac_encode_defaults[] = { + { "b", "0" }, + { NULL } +}; + AVCodec ff_aac_encoder = { .name = "aac", .long_name = NULL_IF_CONFIG_SMALL("AAC (Advanced Audio Coding)"), diff --cc libavcodec/libfdk-aacdec.c index 2857b9453f,637d1352a0..a0110da62b --- a/libavcodec/libfdk-aacdec.c +++ b/libavcodec/libfdk-aacdec.c @@@ -79,7 -79,10 +79,10 @@@ static const AVOption fdk_aac_dec_optio }; static const AVClass fdk_aac_dec_class = { - "libfdk-aac decoder", av_default_item_name, fdk_aac_dec_options, LIBAVUTIL_VERSION_INT + .class_name = "libfdk-aac decoder", + .item_name = av_default_item_name, + .option = fdk_aac_dec_options, - .version = LIBAVUTIL_VERSION_INT ++ .version = LIBAVUTIL_VERSION_INT, }; static int get_stream_info(AVCodecContext *avctx) diff --cc libavcodec/libopencore-amr.c index 8545ffe109,8200f6719c..d509804315 --- a/libavcodec/libopencore-amr.c +++ b/libavcodec/libopencore-amr.c @@@ -182,8 -183,11 +182,11 @@@ static const AVOption options[] = { NULL } }; -static const AVClass class = { +static const AVClass amrnb_class = { - "libopencore_amrnb", av_default_item_name, options, LIBAVUTIL_VERSION_INT + .class_name = "libopencore_amrnb", + .item_name = av_default_item_name, + .option = options, + .version = LIBAVUTIL_VERSION_INT, }; static av_cold int amr_nb_encode_init(AVCodecContext *avctx) diff --cc libavcodec/libopenh264enc.c index 9c22bf4f30,3b32790bae..1152d0036f --- a/libavcodec/libopenh264enc.c +++ b/libavcodec/libopenh264enc.c @@@ -75,7 -75,10 +75,10 @@@ static const AVOption options[] = }; static const AVClass class = { - "libopenh264enc", av_default_item_name, options, LIBAVUTIL_VERSION_INT - .class_name = "libopenh264enc", ++ .class_name = "libvo_amrwbenc", + .item_name = av_default_item_name, + .option = options, + .version = LIBAVUTIL_VERSION_INT, }; static av_cold int svc_encode_close(AVCodecContext *avctx) diff --cc libavcodec/libvo-amrwbenc.c index 2a15650572,5439d66110..f756940879 --- a/libavcodec/libvo-amrwbenc.c +++ b/libavcodec/libvo-amrwbenc.c @@@ -45,8 -45,11 +45,11 @@@ static const AVOption options[] = { NULL } }; -static const AVClass class = { +static const AVClass amrwb_class = { - "libvo_amrwbenc", av_default_item_name, options, LIBAVUTIL_VERSION_INT + .class_name = "libvo_amrwbenc", + .item_name = av_default_item_name, + .option = options, + .version = LIBAVUTIL_VERSION_INT, }; static int get_wb_bitrate_mode(int bitrate, void *log_ctx) diff --cc libavcodec/mpeg4videodec.c index 0203503599,eb1b67273b..76247c3b8c --- a/libavcodec/mpeg4videodec.c +++ b/libavcodec/mpeg4videodec.c @@@ -2816,19 -2613,6 +2816,19 @@@ static av_cold int decode_init(AVCodecC return 0; } +static const AVOption mpeg4_options[] = { + {"quarter_sample", "1/4 subpel MC", offsetof(MpegEncContext, quarter_sample), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, 0}, + {"divx_packed", "divx style packed b frames", offsetof(MpegEncContext, divx_packed), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, 0}, + {NULL} +}; + +static const AVClass mpeg4_class = { - "MPEG4 Video Decoder", - av_default_item_name, - mpeg4_options, - LIBAVUTIL_VERSION_INT, ++ .class_name = "MPEG4 Video Decoder", ++ .item_name = av_default_item_name, ++ .option = mpeg4_options, ++ .version = LIBAVUTIL_VERSION_INT, +}; + AVCodec ff_mpeg4_decoder = { .name = "mpeg4", .long_name = NULL_IF_CONFIG_SMALL("MPEG-4 part 2"), diff --cc libavcodec/s302m.c index 4350d97f0a,635f697b5c..584b58e28e --- a/libavcodec/s302m.c +++ b/libavcodec/s302m.c @@@ -201,23 -140,6 +201,23 @@@ static int s302m_decode_frame(AVCodecCo return avpkt->size; } +#define FLAGS AV_OPT_FLAG_AUDIO_PARAM|AV_OPT_FLAG_DECODING_PARAM +static const AVOption s302m_options[] = { + {"non_pcm_mode", "Chooses what to do with NON-PCM", offsetof(S302Context, non_pcm_mode), AV_OPT_TYPE_INT, {.i64 = 3}, 0, 3, FLAGS, "non_pcm_mode"}, + {"copy" , "Pass NON-PCM through unchanged" , 0, AV_OPT_TYPE_CONST, {.i64 = 0}, 0, 3, FLAGS, "non_pcm_mode"}, + {"drop" , "Drop NON-PCM" , 0, AV_OPT_TYPE_CONST, {.i64 = 1}, 0, 3, FLAGS, "non_pcm_mode"}, + {"decode_copy" , "Decode if possible else passthrough", 0, AV_OPT_TYPE_CONST, {.i64 = 2}, 0, 3, FLAGS, "non_pcm_mode"}, + {"decode_drop" , "Decode if possible else drop" , 0, AV_OPT_TYPE_CONST, {.i64 = 3}, 0, 3, FLAGS, "non_pcm_mode"}, + {NULL} +}; + +static const AVClass s302m_class = { - "SMPTE 302M Decoder", - av_default_item_name, - s302m_options, - LIBAVUTIL_VERSION_INT, ++ .class_name = "SMPTE 302M Decoder", ++ .item_name = av_default_item_name, ++ .option = s302m_options, ++ .version = LIBAVUTIL_VERSION_INT, +}; + AVCodec ff_s302m_decoder = { .name = "s302m", .long_name = NULL_IF_CONFIG_SMALL("SMPTE 302M"), diff --cc libavcodec/v210dec.c index 9af9af6797,74301fe48b..99199ddc15 --- a/libavcodec/v210dec.c +++ b/libavcodec/v210dec.c @@@ -154,20 -106,6 +154,20 @@@ static int decode_frame(AVCodecContext return avpkt->size; } +#define V210DEC_FLAGS AV_OPT_FLAG_DECODING_PARAM | AV_OPT_FLAG_VIDEO_PARAM +static const AVOption v210dec_options[] = { + {"custom_stride", "Custom V210 stride", offsetof(V210DecContext, custom_stride), AV_OPT_TYPE_INT, + {.i64 = 0}, INT_MIN, INT_MAX, V210DEC_FLAGS}, + {NULL} +}; + +static const AVClass v210dec_class = { - "V210 Decoder", - av_default_item_name, - v210dec_options, - LIBAVUTIL_VERSION_INT, ++ .class_name = "V210 Decoder", ++ .item_name = av_default_item_name, ++ .option = v210dec_options, ++ .version = LIBAVUTIL_VERSION_INT, +}; + AVCodec ff_v210_decoder = { .name = "v210", .long_name = NULL_IF_CONFIG_SMALL("Uncompressed 4:2:2 10-bit"), diff --cc libavutil/eval.c index b5f4ea2409,7d7c16e927..5da9a6d83b --- a/libavutil/eval.c +++ b/libavutil/eval.c @@@ -54,46 -49,39 +54,53 @@@ typedef struct Parser int log_offset; void *log_ctx; #define VARS 10 - double var[VARS]; + double *var; } Parser; - static const AVClass eval_class = { "Eval", av_default_item_name, NULL, LIBAVUTIL_VERSION_INT, offsetof(Parser,log_offset), offsetof(Parser,log_ctx) }; -static const AVClass class = { ++static const AVClass eval_class = { + .class_name = "Eval", + .item_name = av_default_item_name, + .option = NULL, + .version = LIBAVUTIL_VERSION_INT, + .log_level_offset_offset = offsetof(Parser, log_offset), + .parent_log_context_offset = offsetof(Parser, log_ctx), + }; -static const int8_t si_prefixes['z' - 'E' + 1] = { - ['y'-'E']= -24, - ['z'-'E']= -21, - ['a'-'E']= -18, - ['f'-'E']= -15, - ['p'-'E']= -12, - ['n'-'E']= - 9, - ['u'-'E']= - 6, - ['m'-'E']= - 3, - ['c'-'E']= - 2, - ['d'-'E']= - 1, - ['h'-'E']= 2, - ['k'-'E']= 3, - ['K'-'E']= 3, - ['M'-'E']= 6, - ['G'-'E']= 9, - ['T'-'E']= 12, - ['P'-'E']= 15, - ['E'-'E']= 18, - ['Z'-'E']= 21, - ['Y'-'E']= 24, +static const struct { + double bin_val; + double dec_val; + int8_t exp; +} si_prefixes['z' - 'E' + 1] = { + ['y'-'E']= { 8.271806125530276749e-25, 1e-24, -24 }, + ['z'-'E']= { 8.4703294725430034e-22, 1e-21, -21 }, + ['a'-'E']= { 8.6736173798840355e-19, 1e-18, -18 }, + ['f'-'E']= { 8.8817841970012523e-16, 1e-15, -15 }, + ['p'-'E']= { 9.0949470177292824e-13, 1e-12, -12 }, + ['n'-'E']= { 9.3132257461547852e-10, 1e-9, -9 }, + ['u'-'E']= { 9.5367431640625e-7, 1e-6, -6 }, + ['m'-'E']= { 9.765625e-4, 1e-3, -3 }, + ['c'-'E']= { 9.8431332023036951e-3, 1e-2, -2 }, + ['d'-'E']= { 9.921256574801246e-2, 1e-1, -1 }, + ['h'-'E']= { 1.0159366732596479e2, 1e2, 2 }, + ['k'-'E']= { 1.024e3, 1e3, 3 }, + ['K'-'E']= { 1.024e3, 1e3, 3 }, + ['M'-'E']= { 1.048576e6, 1e6, 6 }, + ['G'-'E']= { 1.073741824e9, 1e9, 9 }, + ['T'-'E']= { 1.099511627776e12, 1e12, 12 }, + ['P'-'E']= { 1.125899906842624e15, 1e15, 15 }, + ['E'-'E']= { 1.152921504606847e18, 1e18, 18 }, + ['Z'-'E']= { 1.1805916207174113e21, 1e21, 21 }, + ['Y'-'E']= { 1.2089258196146292e24, 1e24, 24 }, +}; + +static const struct { + const char *name; + double value; +} constants[] = { + { "E", M_E }, + { "PI", M_PI }, + { "PHI", M_PHI }, + { "QP2LAMBDA", FF_QP2LAMBDA }, }; double av_strtod(const char *numstr, char **tail) diff --cc libavutil/file_open.c index 34070d933b,f14ea70862..258bb3074e --- a/libavutil/file_open.c +++ b/libavutil/file_open.c @@@ -91,96 -86,3 +91,100 @@@ int avpriv_open(const char *filename, i return fd; } + +typedef struct FileLogContext { + const AVClass *class; + int log_offset; + void *log_ctx; +} FileLogContext; + +static const AVClass file_log_ctx_class = { - "TEMPFILE", av_default_item_name, NULL, LIBAVUTIL_VERSION_INT, - offsetof(FileLogContext, log_offset), offsetof(FileLogContext, log_ctx) ++ .class_name = "TEMPFILE", ++ .item_name = av_default_item_name, ++ .option = NULL, ++ .version = LIBAVUTIL_VERSION_INT, ++ .log_level_offset_offset = offsetof(FileLogContext, log_offset), ++ .parent_log_context_offset = offsetof(FileLogContext, log_ctx), +}; + +int avpriv_tempfile(const char *prefix, char **filename, int log_offset, void *log_ctx) +{ + FileLogContext file_log_ctx = { &file_log_ctx_class, log_offset, log_ctx }; + int fd = -1; +#if !HAVE_MKSTEMP + void *ptr= tempnam(NULL, prefix); + if(!ptr) + ptr= tempnam(".", prefix); + *filename = av_strdup(ptr); +#undef free + free(ptr); +#else + size_t len = strlen(prefix) + 12; /* room for "/tmp/" and "XXXXXX\0" */ + *filename = av_malloc(len); +#endif + /* -----common section-----*/ + if (!*filename) { + av_log(&file_log_ctx, AV_LOG_ERROR, "ff_tempfile: Cannot allocate file name\n"); + return AVERROR(ENOMEM); + } +#if !HAVE_MKSTEMP +# ifndef O_BINARY +# define O_BINARY 0 +# endif +# ifndef O_EXCL +# define O_EXCL 0 +# endif + fd = open(*filename, O_RDWR | O_BINARY | O_CREAT | O_EXCL, 0600); +#else + snprintf(*filename, len, "/tmp/%sXXXXXX", prefix); + fd = mkstemp(*filename); +#if defined(_WIN32) || defined (__ANDROID__) + if (fd < 0) { + snprintf(*filename, len, "./%sXXXXXX", prefix); + fd = mkstemp(*filename); + } +#endif +#endif + /* -----common section-----*/ + if (fd < 0) { + int err = AVERROR(errno); + av_log(&file_log_ctx, AV_LOG_ERROR, "ff_tempfile: Cannot open temporary file %s\n", *filename); + av_freep(filename); + return err; + } + return fd; /* success */ +} + +FILE *av_fopen_utf8(const char *path, const char *mode) +{ + int fd; + int access; + const char *m = mode; + + switch (*m++) { + case 'r': access = O_RDONLY; break; + case 'w': access = O_CREAT|O_WRONLY|O_TRUNC; break; + case 'a': access = O_CREAT|O_WRONLY|O_APPEND; break; + default : + errno = EINVAL; + return NULL; + } + while (*m) { + if (*m == '+') { + access &= ~(O_RDONLY | O_WRONLY); + access |= O_RDWR; + } else if (*m == 'b') { +#ifdef O_BINARY + access |= O_BINARY; +#endif + } else if (*m) { + errno = EINVAL; + return NULL; + } + m++; + } + fd = avpriv_open(path, access, 0666); + if (fd == -1) + return NULL; + return fdopen(fd, mode); +} diff --cc libavutil/tests/opt.c index 568eb45668,9ed9d2b6b1..f4cfa590aa --- a/libavutil/tests/opt.c +++ b/libavutil/tests/opt.c @@@ -98,16 -59,11 +98,16 @@@ static const char *test_get_name(void * } static const AVClass test_class = { - "TestContext", - test_get_name, - test_options + .class_name = "TestContext", + .item_name = test_get_name, + .option = test_options, }; +static void log_callback_help(void *ptr, int level, const char *fmt, va_list vl) +{ + vfprintf(stdout, fmt, vl); +} + int main(void) { int i; _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog