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
This commit is contained in:
parent
5fcb865b75
commit
68cf92ee5e
3
ffmpeg.c
3
ffmpeg.c
@ -2931,7 +2931,6 @@ static void opt_input_file(const char *filename)
|
|||||||
for(i=0;i<ic->nb_streams;i++) {
|
for(i=0;i<ic->nb_streams;i++) {
|
||||||
AVStream *st = ic->streams[i];
|
AVStream *st = ic->streams[i];
|
||||||
AVCodecContext *enc = st->codec;
|
AVCodecContext *enc = st->codec;
|
||||||
if(thread_count>1)
|
|
||||||
avcodec_thread_init(enc, thread_count);
|
avcodec_thread_init(enc, thread_count);
|
||||||
switch(enc->codec_type) {
|
switch(enc->codec_type) {
|
||||||
case CODEC_TYPE_AUDIO:
|
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;
|
bitstream_filters[nb_output_files][oc->nb_streams - 1]= video_bitstream_filters;
|
||||||
video_bitstream_filters= NULL;
|
video_bitstream_filters= NULL;
|
||||||
|
|
||||||
if(thread_count>1)
|
|
||||||
avcodec_thread_init(st->codec, thread_count);
|
avcodec_thread_init(st->codec, thread_count);
|
||||||
|
|
||||||
video_enc = st->codec;
|
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;
|
bitstream_filters[nb_output_files][oc->nb_streams - 1]= audio_bitstream_filters;
|
||||||
audio_bitstream_filters= NULL;
|
audio_bitstream_filters= NULL;
|
||||||
|
|
||||||
if(thread_count>1)
|
|
||||||
avcodec_thread_init(st->codec, thread_count);
|
avcodec_thread_init(st->codec, thread_count);
|
||||||
|
|
||||||
audio_enc = st->codec;
|
audio_enc = st->codec;
|
||||||
|
1
ffplay.c
1
ffplay.c
@ -1722,7 +1722,6 @@ static int stream_component_open(VideoState *is, int stream_index)
|
|||||||
enc->skip_loop_filter= skip_loop_filter;
|
enc->skip_loop_filter= skip_loop_filter;
|
||||||
enc->error_recognition= error_recognition;
|
enc->error_recognition= error_recognition;
|
||||||
enc->error_concealment= error_concealment;
|
enc->error_concealment= error_concealment;
|
||||||
if (thread_count > 1)
|
|
||||||
avcodec_thread_init(enc, thread_count);
|
avcodec_thread_init(enc, thread_count);
|
||||||
|
|
||||||
set_context_opts(enc, avcodec_opts[enc->codec_type], 0);
|
set_context_opts(enc, avcodec_opts[enc->codec_type], 0);
|
||||||
|
@ -123,6 +123,9 @@ int avcodec_thread_init(AVCodecContext *s, int thread_count){
|
|||||||
|
|
||||||
s->thread_count= thread_count;
|
s->thread_count= thread_count;
|
||||||
|
|
||||||
|
if (thread_count <= 1)
|
||||||
|
return 0;
|
||||||
|
|
||||||
assert(!s->thread_opaque);
|
assert(!s->thread_opaque);
|
||||||
c= av_mallocz(sizeof(ThreadContext)*thread_count);
|
c= av_mallocz(sizeof(ThreadContext)*thread_count);
|
||||||
s->thread_opaque= c;
|
s->thread_opaque= c;
|
||||||
|
@ -116,6 +116,9 @@ int avcodec_thread_init(AVCodecContext *s, int thread_count){
|
|||||||
|
|
||||||
s->thread_count= thread_count;
|
s->thread_count= thread_count;
|
||||||
|
|
||||||
|
if (thread_count <= 1)
|
||||||
|
return 0;
|
||||||
|
|
||||||
assert(!s->thread_opaque);
|
assert(!s->thread_opaque);
|
||||||
c= av_mallocz(sizeof(ThreadContext)*thread_count);
|
c= av_mallocz(sizeof(ThreadContext)*thread_count);
|
||||||
s->thread_opaque= c;
|
s->thread_opaque= c;
|
||||||
|
@ -145,6 +145,11 @@ int avcodec_thread_init(AVCodecContext *avctx, int thread_count)
|
|||||||
int i;
|
int i;
|
||||||
ThreadContext *c;
|
ThreadContext *c;
|
||||||
|
|
||||||
|
avctx->thread_count = thread_count;
|
||||||
|
|
||||||
|
if (thread_count <= 1)
|
||||||
|
return 0;
|
||||||
|
|
||||||
c = av_mallocz(sizeof(ThreadContext));
|
c = av_mallocz(sizeof(ThreadContext));
|
||||||
if (!c)
|
if (!c)
|
||||||
return -1;
|
return -1;
|
||||||
@ -156,7 +161,6 @@ int avcodec_thread_init(AVCodecContext *avctx, int thread_count)
|
|||||||
}
|
}
|
||||||
|
|
||||||
avctx->thread_opaque = c;
|
avctx->thread_opaque = c;
|
||||||
avctx->thread_count = thread_count;
|
|
||||||
c->current_job = 0;
|
c->current_job = 0;
|
||||||
c->job_count = 0;
|
c->job_count = 0;
|
||||||
c->job_size = 0;
|
c->job_size = 0;
|
||||||
|
@ -131,6 +131,9 @@ int avcodec_thread_init(AVCodecContext *s, int thread_count){
|
|||||||
|
|
||||||
s->thread_count= thread_count;
|
s->thread_count= thread_count;
|
||||||
|
|
||||||
|
if (thread_count <= 1)
|
||||||
|
return 0;
|
||||||
|
|
||||||
assert(!s->thread_opaque);
|
assert(!s->thread_opaque);
|
||||||
c= av_mallocz(sizeof(ThreadContext)*thread_count);
|
c= av_mallocz(sizeof(ThreadContext)*thread_count);
|
||||||
s->thread_opaque= c;
|
s->thread_opaque= c;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user