Commit b4d44a45 authored by Janne Grunau's avatar Janne Grunau

threads: introduce CODEC_CAP_AUTO_THREADS and add it to libx264

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.
parent febd0222
...@@ -777,6 +777,10 @@ typedef struct RcOverride{ ...@@ -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 = { ...@@ -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) ...@@ -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 @@ ...@@ -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, \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment