diff options
author | Måns Rullgård <mans@mansr.com> | 2010-01-20 22:55:50 +0000 |
---|---|---|
committer | Måns Rullgård <mans@mansr.com> | 2010-01-20 22:55:50 +0000 |
commit | 68cf92ee5e08331d6237a836adc74b4007fab4e9 (patch) | |
tree | 940d14641a23b82d9953953457338b1e9d2e11eb | |
parent | 5fcb865b7525f4ba6d601008bc6a2fb28be5af1e (diff) | |
download | ffmpeg-68cf92ee5e08331d6237a836adc74b4007fab4e9.tar.gz |
Always call avcodec_thread_init()
The various avcodec_thread_init() functions are updated to return
immediately after setting avctx->thread_count. This allows -threads 0
to pass through to codecs. It also simplifies the usage for apps
using libavcodec.
Originally committed as revision 21358 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | ffmpeg.c | 3 | ||||
-rw-r--r-- | ffplay.c | 1 | ||||
-rw-r--r-- | libavcodec/beosthread.c | 3 | ||||
-rw-r--r-- | libavcodec/os2thread.c | 3 | ||||
-rw-r--r-- | libavcodec/pthread.c | 6 | ||||
-rw-r--r-- | libavcodec/w32thread.c | 3 |
6 files changed, 14 insertions, 5 deletions
@@ -2931,7 +2931,6 @@ static void opt_input_file(const char *filename) for(i=0;i<ic->nb_streams;i++) { AVStream *st = ic->streams[i]; AVCodecContext *enc = st->codec; - if(thread_count>1) avcodec_thread_init(enc, thread_count); switch(enc->codec_type) { case CODEC_TYPE_AUDIO: @@ -3066,7 +3065,6 @@ static void new_video_stream(AVFormatContext *oc) bitstream_filters[nb_output_files][oc->nb_streams - 1]= video_bitstream_filters; video_bitstream_filters= NULL; - if(thread_count>1) avcodec_thread_init(st->codec, thread_count); video_enc = st->codec; @@ -3212,7 +3210,6 @@ static void new_audio_stream(AVFormatContext *oc) bitstream_filters[nb_output_files][oc->nb_streams - 1]= audio_bitstream_filters; audio_bitstream_filters= NULL; - if(thread_count>1) avcodec_thread_init(st->codec, thread_count); audio_enc = st->codec; @@ -1722,7 +1722,6 @@ static int stream_component_open(VideoState *is, int stream_index) enc->skip_loop_filter= skip_loop_filter; enc->error_recognition= error_recognition; enc->error_concealment= error_concealment; - if (thread_count > 1) avcodec_thread_init(enc, thread_count); set_context_opts(enc, avcodec_opts[enc->codec_type], 0); diff --git a/libavcodec/beosthread.c b/libavcodec/beosthread.c index e2fd97777d..290e48c93f 100644 --- a/libavcodec/beosthread.c +++ b/libavcodec/beosthread.c @@ -123,6 +123,9 @@ int avcodec_thread_init(AVCodecContext *s, int thread_count){ s->thread_count= thread_count; + if (thread_count <= 1) + return 0; + assert(!s->thread_opaque); c= av_mallocz(sizeof(ThreadContext)*thread_count); s->thread_opaque= c; diff --git a/libavcodec/os2thread.c b/libavcodec/os2thread.c index edebc9a6c8..76dc0d56bc 100644 --- a/libavcodec/os2thread.c +++ b/libavcodec/os2thread.c @@ -116,6 +116,9 @@ int avcodec_thread_init(AVCodecContext *s, int thread_count){ s->thread_count= thread_count; + if (thread_count <= 1) + return 0; + assert(!s->thread_opaque); c= av_mallocz(sizeof(ThreadContext)*thread_count); s->thread_opaque= c; diff --git a/libavcodec/pthread.c b/libavcodec/pthread.c index 556e546188..60c82cd715 100644 --- a/libavcodec/pthread.c +++ b/libavcodec/pthread.c @@ -145,6 +145,11 @@ int avcodec_thread_init(AVCodecContext *avctx, int thread_count) int i; ThreadContext *c; + avctx->thread_count = thread_count; + + if (thread_count <= 1) + return 0; + c = av_mallocz(sizeof(ThreadContext)); if (!c) return -1; @@ -156,7 +161,6 @@ int avcodec_thread_init(AVCodecContext *avctx, int thread_count) } avctx->thread_opaque = c; - avctx->thread_count = thread_count; c->current_job = 0; c->job_count = 0; c->job_size = 0; diff --git a/libavcodec/w32thread.c b/libavcodec/w32thread.c index bae09704a8..4b8145729e 100644 --- a/libavcodec/w32thread.c +++ b/libavcodec/w32thread.c @@ -131,6 +131,9 @@ int avcodec_thread_init(AVCodecContext *s, int thread_count){ s->thread_count= thread_count; + if (thread_count <= 1) + return 0; + assert(!s->thread_opaque); c= av_mallocz(sizeof(ThreadContext)*thread_count); s->thread_opaque= c; |