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.
---
libavcodec/avcodec.h | 4 ++++
libavcodec/libx264.c | 2 +-
libavcodec/pthread.c | 3 +++
libavcodec/version.h | 2 +-
4 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
index 4f24f72..b139a8a 100644
--- a/libavcodec/avcodec.h
+++ b/libavcodec/avcodec.h
@@ -777,6 +777,10 @@ typedef struct RcOverride{
* Codec supports changed parameters at any point.
*/
#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.
#define MB_TYPE_INTRA4x4 0x0001
diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c
index c525808..9b34795 100644
--- a/libavcodec/libx264.c
+++ b/libavcodec/libx264.c
@@ -592,7 +592,7 @@ AVCodec ff_libx264_encoder = {
.init = X264_init,
.encode = X264_frame,
.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"),
.priv_class = &class,
.defaults = x264_defaults,
diff --git a/libavcodec/pthread.c b/libavcodec/pthread.c
index 400abf4..54a0eb3 100644
--- a/libavcodec/pthread.c
+++ b/libavcodec/pthread.c
@@ -982,6 +982,9 @@ static void validate_thread_parameters(AVCodecContext
*avctx)
} else if (avctx->codec->capabilities & CODEC_CAP_SLICE_THREADS &&
avctx->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;
}
}
diff --git a/libavcodec/version.h b/libavcodec/version.h
index e6226cb..1317ef0 100644
--- a/libavcodec/version.h
+++ b/libavcodec/version.h
@@ -22,7 +22,7 @@
#define LIBAVCODEC_VERSION_MAJOR 53
#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, \
LIBAVCODEC_VERSION_MINOR, \
--
1.7.8.1
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel