Set thread_count in the decoder before to open it.

This is safer since avcodec_open() may initialize some structure using
the thread_count default value which will be changed later, causing
potential security / stability issues.

Also do not explicitely set the thread_count value in the decoder,
since this is already done by avcodec_thread_init().

See the thread:
"[FFmpeg-devel] [PATCH] Make ffplay define in the encoder the number of threads *before* to open it",
started in date 2008-03-08.

Originally committed as revision 20954 to svn://svn.ffmpeg.org/ffmpeg/trunk
release/0.6
Stefano Sabatini 15 years ago
parent a8beb22f4d
commit de4898a229
  1. 5
      ffplay.c

@ -1722,6 +1722,8 @@ 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);
set_context_opts(enc, avcodec_opts[enc->codec_type], 0); set_context_opts(enc, avcodec_opts[enc->codec_type], 0);
@ -1746,9 +1748,6 @@ static int stream_component_open(VideoState *is, int stream_index)
is->audio_src_fmt= SAMPLE_FMT_S16; is->audio_src_fmt= SAMPLE_FMT_S16;
} }
if(thread_count>1)
avcodec_thread_init(enc, thread_count);
enc->thread_count= thread_count;
ic->streams[stream_index]->discard = AVDISCARD_DEFAULT; ic->streams[stream_index]->discard = AVDISCARD_DEFAULT;
switch(enc->codec_type) { switch(enc->codec_type) {
case CODEC_TYPE_AUDIO: case CODEC_TYPE_AUDIO:

Loading…
Cancel
Save