[FFmpeg-devel] [PATCH] lavc: make compilation of frame_thread_encoder.o optional.
Ronald S. Bultje
rsbultje at gmail.com
Wed Mar 13 05:24:08 CET 2013
From: "Ronald S. Bultje" <rsbultje at gmail.com>
Only compile if CONFIG_ENCODERS is enabled, i.e. if at least one
encoder is to be compiled. This prevents it from being includes in
a decoder-only build.
---
libavcodec/Makefile | 12 +++++++++---
libavcodec/utils.c | 8 +++++---
2 files changed, 14 insertions(+), 6 deletions(-)
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index 69f9b83..3b4bba4 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -771,9 +771,15 @@ OBJS-$(CONFIG_REMOVE_EXTRADATA_BSF) += remove_extradata_bsf.o
OBJS-$(CONFIG_TEXT2MOVSUB_BSF) += movsub_bsf.o
# thread libraries
-OBJS-$(HAVE_PTHREADS) += pthread.o frame_thread_encoder.o
-OBJS-$(HAVE_W32THREADS) += pthread.o frame_thread_encoder.o
-OBJS-$(HAVE_OS2THREADS) += pthread.o frame_thread_encoder.o
+OBJS-$(HAVE_PTHREADS) += pthread.o
+OBJS-$(HAVE_W32THREADS) += pthread.o
+OBJS-$(HAVE_OS2THREADS) += pthread.o
+
+ifdef CONFIG_ENCODERS
+OBJS-$(HAVE_PTHREADS) += frame_thread_encoder.o
+OBJS-$(HAVE_W32THREADS) += frame_thread_encoder.o
+OBJS-$(HAVE_OS2THREADS) += frame_thread_encoder.o
+endif
SKIPHEADERS += %_tablegen.h \
%_tables.h \
diff --git a/libavcodec/utils.c b/libavcodec/utils.c
index 13f8d0f..90b02b8 100644
--- a/libavcodec/utils.c
+++ b/libavcodec/utils.c
@@ -1126,7 +1126,7 @@ int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *code
if (!HAVE_THREADS)
av_log(avctx, AV_LOG_WARNING, "Warning: not compiled with thread support, using thread emulation\n");
- if (HAVE_THREADS) {
+ if (HAVE_THREADS && CONFIG_ENCODERS) {
ff_unlock_avcodec(); //we will instanciate a few encoders thus kick the counter to prevent false detection of a problem
ret = ff_frame_thread_encoder_init(avctx, options ? *options : NULL);
ff_lock_avcodec(avctx);
@@ -1688,7 +1688,8 @@ int attribute_align_arg avcodec_encode_video2(AVCodecContext *avctx,
*got_packet_ptr = 0;
- if(HAVE_THREADS && avctx->internal->frame_thread_encoder && (avctx->active_thread_type&FF_THREAD_FRAME))
+ if(HAVE_THREADS && CONFIG_ENCODERS &&
+ avctx->internal->frame_thread_encoder && (avctx->active_thread_type&FF_THREAD_FRAME))
return ff_thread_video_encode_frame(avctx, avpkt, frame, got_packet_ptr);
if ((avctx->flags&CODEC_FLAG_PASS1) && avctx->stats_out)
@@ -2263,7 +2264,8 @@ av_cold int avcodec_close(AVCodecContext *avctx)
if (avcodec_is_open(avctx)) {
FramePool *pool = avctx->internal->pool;
int i;
- if (HAVE_THREADS && avctx->internal->frame_thread_encoder && avctx->thread_count > 1) {
+ if (HAVE_THREADS && CONFIG_ENCODERS &&
+ avctx->internal->frame_thread_encoder && avctx->thread_count > 1) {
ff_unlock_avcodec();
ff_frame_thread_encoder_free(avctx);
ff_lock_avcodec(avctx);
--
1.7.11.3
More information about the ffmpeg-devel
mailing list