Some external codecs have their own code to determine the best number of threads. This number is not necessary the number of cpu cores. Thread_count will be only 0 if the codec has CODEC_CAP_AUTO_THREADS.tags/n0.10
| @@ -777,6 +777,10 @@ typedef struct RcOverride{ | |||||
| * Codec supports changed parameters at any point. | * Codec supports changed parameters at any point. | ||||
| */ | */ | ||||
| #define CODEC_CAP_PARAM_CHANGE 0x4000 | #define CODEC_CAP_PARAM_CHANGE 0x4000 | ||||
| /** | |||||
| * Codec supports avctx->thread_count == 0 (auto). | |||||
| */ | |||||
| #define CODEC_CAP_AUTO_THREADS 0x8000 | |||||
| //The following defines may change, don't expect compatibility if you use them. | //The following defines may change, don't expect compatibility if you use them. | ||||
| #define MB_TYPE_INTRA4x4 0x0001 | #define MB_TYPE_INTRA4x4 0x0001 | ||||
| @@ -592,7 +592,7 @@ AVCodec ff_libx264_encoder = { | |||||
| .init = X264_init, | .init = X264_init, | ||||
| .encode = X264_frame, | .encode = X264_frame, | ||||
| .close = X264_close, | .close = X264_close, | ||||
| .capabilities = CODEC_CAP_DELAY, | |||||
| .capabilities = CODEC_CAP_DELAY | CODEC_CAP_AUTO_THREADS, | |||||
| .long_name = NULL_IF_CONFIG_SMALL("libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10"), | .long_name = NULL_IF_CONFIG_SMALL("libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10"), | ||||
| .priv_class = &class, | .priv_class = &class, | ||||
| .defaults = x264_defaults, | .defaults = x264_defaults, | ||||
| @@ -982,6 +982,9 @@ static void validate_thread_parameters(AVCodecContext *avctx) | |||||
| } else if (avctx->codec->capabilities & CODEC_CAP_SLICE_THREADS && | } else if (avctx->codec->capabilities & CODEC_CAP_SLICE_THREADS && | ||||
| avctx->thread_type & FF_THREAD_SLICE) { | avctx->thread_type & FF_THREAD_SLICE) { | ||||
| avctx->active_thread_type = FF_THREAD_SLICE; | avctx->active_thread_type = FF_THREAD_SLICE; | ||||
| } else if (!(avctx->codec->capabilities & CODEC_CAP_AUTO_THREADS)) { | |||||
| avctx->thread_count = 1; | |||||
| avctx->active_thread_type = 0; | |||||
| } | } | ||||
| } | } | ||||
| @@ -22,7 +22,7 @@ | |||||
| #define LIBAVCODEC_VERSION_MAJOR 53 | #define LIBAVCODEC_VERSION_MAJOR 53 | ||||
| #define LIBAVCODEC_VERSION_MINOR 32 | #define LIBAVCODEC_VERSION_MINOR 32 | ||||
| #define LIBAVCODEC_VERSION_MICRO 1 | |||||
| #define LIBAVCODEC_VERSION_MICRO 2 | |||||
| #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ | #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ | ||||
| LIBAVCODEC_VERSION_MINOR, \ | LIBAVCODEC_VERSION_MINOR, \ | ||||