Browse Source

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
tags/v0.6
Måns Rullgård 16 years ago
parent
commit
68cf92ee5e
6 changed files with 14 additions and 5 deletions
  1. +0
    -3
      ffmpeg.c
  2. +0
    -1
      ffplay.c
  3. +3
    -0
      libavcodec/beosthread.c
  4. +3
    -0
      libavcodec/os2thread.c
  5. +5
    -1
      libavcodec/pthread.c
  6. +3
    -0
      libavcodec/w32thread.c

+ 0
- 3
ffmpeg.c View File

@@ -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;


+ 0
- 1
ffplay.c View File

@@ -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);


+ 3
- 0
libavcodec/beosthread.c View File

@@ -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;


+ 3
- 0
libavcodec/os2thread.c View File

@@ -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;


+ 5
- 1
libavcodec/pthread.c View File

@@ -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;


+ 3
- 0
libavcodec/w32thread.c View File

@@ -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;


Loading…
Cancel
Save