[FFmpeg-devel] [PATCH] lavc: make compilation of frame_thread_encoder.o optional.

Ronald S. Bultje rsbultje at gmail.com
Thu Mar 14 05:59:33 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.
---
 configure           | 3 +++
 libavcodec/Makefile | 8 +++++---
 libavcodec/utils.c  | 8 +++++---
 3 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/configure b/configure
index 4afe0dc..8443db4 100755
--- a/configure
+++ b/configure
@@ -1511,6 +1511,7 @@ CONFIG_EXTRA="
     audio_frame_queue
     dsputil
     error_resilience
+    frame_thread_encoder
     gcrypt
     golomb
     gplv3
@@ -1671,6 +1672,7 @@ log2_deps="!msvcrt"
 # subsystems
 dct_select="rdft"
 error_resilience_select="dsputil"
+frame_thread_encoder_deps="encoders threads"
 mdct_select="fft"
 rdft_select="fft"
 mpegaudio_select="mpegaudiodsp"
@@ -4239,6 +4241,7 @@ case $target_os in
 esac
 
 enabled_any $THREADS_LIST      && enable threads
+enable frame_thread_encoder
 
 enabled asm || { arch=c; disable $ARCH_LIST $ARCH_EXT_LIST; }
 
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index 69f9b83..f5e7951 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -771,9 +771,11 @@ 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
+
+OBJS-$(CONFIG_FRAME_THREAD_ENCODER)    += frame_thread_encoder.o
 
 SKIPHEADERS                            += %_tablegen.h                  \
                                           %_tables.h                    \
diff --git a/libavcodec/utils.c b/libavcodec/utils.c
index 13f8d0f..02494e0 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 (CONFIG_FRAME_THREAD_ENCODER) {
         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(CONFIG_FRAME_THREAD_ENCODER &&
+       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 (CONFIG_FRAME_THREAD_ENCODER &&
+            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