Users of libavcodec could break if they do not threadsafe callbacks.
Avconv and avplay still use -threads auto if not specified.
---
 avconv.c             |    4 ++++
 avplay.c             |    2 ++
 libavcodec/options.c |    2 +-
 3 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/avconv.c b/avconv.c
index e2cc4b0..866e5a2 100644
--- a/avconv.c
+++ b/avconv.c
@@ -2210,6 +2210,8 @@ static int init_input_stream(int ist_index, OutputStream 
*output_streams, int nb
             ist->st->codec->opaque         = ist;
         }
 
+        if (!av_dict_get(ist->opts, "threads", NULL, 0))
+            av_dict_set(&ist->opts, "threads", "auto", 0);
         if (avcodec_open2(ist->st->codec, codec, &ist->opts) < 0) {
             snprintf(error, error_len, "Error while opening decoder for input 
stream #%d:%d",
                     ist->file_index, ist->st->index);
@@ -2512,6 +2514,8 @@ static int transcode_init(OutputFile *output_files,
                 memcpy(ost->st->codec->subtitle_header, dec->subtitle_header, 
dec->subtitle_header_size);
                 ost->st->codec->subtitle_header_size = 
dec->subtitle_header_size;
             }
+            if (!av_dict_get(ost->opts, "threads", NULL, 0))
+                av_dict_set(&ost->opts, "threads", "auto", 0);
             if (avcodec_open2(ost->st->codec, codec, &ost->opts) < 0) {
                 snprintf(error, sizeof(error), "Error while opening encoder 
for output stream #%d:%d - maybe incorrect parameters such as bit_rate, rate, 
width or height",
                         ost->file_index, ost->index);
diff --git a/avplay.c b/avplay.c
index 4d21234..3779d6a 100644
--- a/avplay.c
+++ b/avplay.c
@@ -2194,6 +2194,8 @@ static int stream_component_open(VideoState *is, int 
stream_index)
     if (lowres) avctx->flags  |= CODEC_FLAG_EMU_EDGE;
     if (fast)   avctx->flags2 |= CODEC_FLAG2_FAST;
 
+    if (!av_dict_get(opts, "threads", NULL, 0))
+        av_dict_set(&opts, "threads", "auto", 0);
     if (!codec ||
         avcodec_open2(avctx, codec, &opts) < 0)
         return -1;
diff --git a/libavcodec/options.c b/libavcodec/options.c
index 00d80e0..4661fbd 100644
--- a/libavcodec/options.c
+++ b/libavcodec/options.c
@@ -372,7 +372,7 @@ static const AVOption options[]={
 {"float", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_AA_FLOAT }, INT_MIN, INT_MAX, 
V|D, "aa"},
 #endif
 {"qns", "quantizer noise shaping", OFFSET(quantizer_noise_shaping), 
AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E},
-{"threads", NULL, OFFSET(thread_count), AV_OPT_TYPE_INT, {.dbl = 0 }, 0, 
INT_MAX, V|E|D, "threads"},
+{"threads", NULL, OFFSET(thread_count), AV_OPT_TYPE_INT, {.dbl = 1 }, 0, 
INT_MAX, V|E|D, "threads"},
 {"auto", "detect a good number of threads", 0, AV_OPT_TYPE_CONST, {.dbl = 0 }, 
INT_MIN, INT_MAX, V|E|D, "threads"},
 {"me_threshold", "motion estimaton threshold", OFFSET(me_threshold), 
AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E},
 {"mb_threshold", "macroblock threshold", OFFSET(mb_threshold), 
AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E},
-- 
1.7.8.3

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to