Bug 1295886 - P10. Add a FLAC only option to ffvpx. r?gerald draft
authorJean-Yves Avenard <jyavenard@mozilla.com>
Wed, 01 Nov 2017 19:01:59 +0100
changeset 692021 3f99943651e6051b3dea42c544b136a4bbf2c506
parent 692020 fa82ebf7bdd553dc264d2b43a7bf5888909bbaef
child 692022 d5ae5844497c7a3b24c7f3639c6dece31d1e5354
push id87364
push userbmo:jyavenard@mozilla.com
push dateThu, 02 Nov 2017 09:52:27 +0000
reviewersgerald
bugs1295886
milestone58.0a1
Bug 1295886 - P10. Add a FLAC only option to ffvpx. r?gerald Remove the VP8 and VP9 decoder and the subsequently unused functions. This drops the size to libmozavcodec to around 1MB down from 4MB. MozReview-Commit-ID: Ge57fauG35L
media/ffvpx/libavcodec/moz.build
media/ffvpx/libavutil/moz.build
old-configure.in
--- a/media/ffvpx/libavcodec/moz.build
+++ b/media/ffvpx/libavcodec/moz.build
@@ -7,69 +7,73 @@
 # Due to duplicate file names, we compile libavutil/x86 in its own
 # moz.build file.
 if CONFIG['FFVPX_ASFLAGS']:
     DIRS += ['x86']
 
 SharedLibrary('mozavcodec')
 SOURCES += [
     'allcodecs.c',
-    'audioconvert.c',
     'avpacket.c',
-    'avpicture.c',
-    'bitstream.c',
-    'bitstream_filter.c',
     'bitstream_filters.c',
     'bsf.c',
     'codec_desc.c',
     'decode.c',
     'dummy_funcs.c',
     'flac.c',
     'flacdata.c',
     'flacdec.c',
     'flacdsp.c',
-    'golomb.c',
-    'h264pred.c',
-    'imgconvert.c',
-    'log2_tab.c',
-    'mathtables.c',
     'null_bsf.c',
     'options.c',
     'parser.c',
     'profiles.c',
     'pthread.c',
     'pthread_frame.c',
     'pthread_slice.c',
-    'qsv_api.c',
-    'raw.c',
-    'resample.c',
-    'resample2.c',
-    'reverse.c',
     'utils.c',
-    'videodsp.c',
     'vorbis_parser.c',
-    'vp56rac.c',
-    'vp8.c',
-    'vp8_parser.c',
-    'vp8dsp.c',
-    'vp9.c',
-    'vp9_parser.c',
-    'vp9block.c',
-    'vp9data.c',
-    'vp9dsp.c',
-    'vp9dsp_10bpp.c',
-    'vp9dsp_12bpp.c',
-    'vp9dsp_8bpp.c',
-	'vp9lpf.c',
-	'vp9mvs.c',
-	'vp9prob.c',
-	'vp9recon.c',
     'xiph.c'
 ]
 
+if not CONFIG['MOZ_FFVPX_FLACONLY']:
+    SOURCES += [
+        'audioconvert.c',
+        'avpicture.c',
+        'bitstream.c',
+        'bitstream_filter.c',
+        'golomb.c',
+        'h264pred.c',
+        'imgconvert.c',
+        'log2_tab.c',
+        'mathtables.c',
+        'qsv_api.c',
+        'raw.c',
+        'resample.c',
+        'resample2.c',
+        'reverse.c',
+        'videodsp.c',
+        'vp56rac.c',
+        'vp8.c',
+        'vp8_parser.c',
+        'vp8dsp.c',
+        'vp9.c',
+        'vp9_parser.c',
+        'vp9block.c',
+        'vp9data.c',
+        'vp9dsp.c',
+        'vp9dsp_10bpp.c',
+        'vp9dsp_12bpp.c',
+        'vp9dsp_8bpp.c',
+        'vp9lpf.c',
+        'vp9mvs.c',
+        'vp9prob.c',
+        'vp9recon.c'
+    ]
+
 SYMBOLS_FILE = 'avcodec.symbols'
 NoVisibilityFlags()
 
 USE_LIBS += [
      'mozavutil'
 ]
 
 if CONFIG['OS_TARGET'] != 'WINNT':
--- a/media/ffvpx/libavutil/moz.build
+++ b/media/ffvpx/libavutil/moz.build
@@ -6,56 +6,59 @@
 
 # Due to duplicate file names, we compile libavutil/x86 in its own
 # moz.build file.
 if CONFIG['FFVPX_ASFLAGS']:
     DIRS += ['x86']
 
 SharedLibrary('mozavutil')
 SOURCES += [
-    'adler32.c',
     'atomic.c',
     'avstring.c',
-    'base64.c',
     'bprint.c',
     'buffer.c',
     'channel_layout.c',
-    'color_utils.c',
     'cpu.c',
     'crc.c',
     'dict.c',
     'dummy_funcs.c',
     'error.c',
     'eval.c',
     'fifo.c',
     'fixed_dsp.c',
     'float_dsp.c',
     'frame.c',
     'imgutils.c',
-    'integer.c',
-    'intmath.c',
-    'lls.c',
     'log.c',
-    'log2_tab.c',
     'mathematics.c',
     'mem.c',
     'opt.c',
     'parseutils.c',
     'pixdesc.c',
-    'pixelutils.c',
     'rational.c',
     'reverse.c',
     'samplefmt.c',
     'slicethread.c',
-    'threadmessage.c',
     'time.c',
-    'timecode.c',
-    'utils.c',
+    'utils.c'
 ]
 
+if not CONFIG['MOZ_FFVPX_FLACONLY']:
+    SOURCES += [
+        'adler32.c',
+        'base64.c',
+        'color_utils.c',
+        'integer.c',
+        'intmath.c',
+        'lls.c',
+        'pixelutils.c',
+        'threadmessage.c',
+        'timecode.c'
+    ]
+
 SYMBOLS_FILE =  'avutil.symbols'
 NoVisibilityFlags()
 
 OS_LIBS += CONFIG['REALTIME_LIBS']
 if CONFIG['OS_TARGET'] != 'WINNT':
     OS_LIBS += ['m']
 
 include("../ffvpxcommon.mozbuild")
--- a/old-configure.in
+++ b/old-configure.in
@@ -3209,35 +3209,40 @@ elif test -n "$MOZ_LIBAV_FFT" -a "${CPU_
   AC_MSG_WARN([No assembler or assembly support for libav-fft.  Using unoptimized C routines.])
 fi
 
 dnl ========================================================
 dnl = FFmpeg's ffvpx configuration
 dnl ========================================================
 
 MOZ_FFVPX=
+MOZ_FFVPX_FLACONLY=
 case "$CPU_ARCH" in
   x86)
       MOZ_FFVPX=1
   ;;
   x86_64)
       MOZ_FFVPX=1
   ;;
   arm*)
       MOZ_FFVPX=1
+      MOZ_FFVPX_FLACONLY=1
   ;;
 esac
 
 dnl Use same conditional as MOZ_LIBAV_FFT to enable FFmpeg's ffvpx assembly decoder.
 if test -n "$MOZ_LIBAV_FFT"; then
   FFVPX_ASFLAGS=$LIBAV_FFT_ASFLAGS
 fi
 if test -n "$MOZ_FFVPX"; then
   AC_DEFINE(MOZ_FFVPX)
 fi
+if test -n "$MOZ_FFVPX_FLACONLY"; then
+  AC_DEFINE(MOZ_FFVPX_FLACONLY)
+fi
 
 dnl ========================================================
 dnl = Enable compilation of specific extension modules
 dnl ========================================================
 
 MOZ_ARG_ENABLE_STRING(extensions,
 [  --enable-extensions     Enable extensions],
 [ for option in `echo $enableval | sed 's/,/ /g'`; do
@@ -4803,16 +4808,17 @@ AC_SUBST(USE_N32)
 AC_SUBST(CC_VERSION)
 AC_SUBST(NS_ENABLE_TSF)
 AC_SUBST(WIN32_CONSOLE_EXE_LDFLAGS)
 AC_SUBST(WIN32_GUI_EXE_LDFLAGS)
 
 AC_SUBST(MOZ_VORBIS)
 AC_SUBST(MOZ_TREMOR)
 AC_SUBST(MOZ_FFVPX)
+AC_SUBST(MOZ_FFVPX_FLACONLY)
 AC_SUBST_LIST(FFVPX_ASFLAGS)
 AC_SUBST(VPX_USE_YASM)
 AC_SUBST_LIST(VPX_ASFLAGS)
 AC_SUBST(VPX_AS_CONVERSION)
 AC_SUBST(VPX_X86_ASM)
 AC_SUBST(VPX_ARM_ASM)
 AC_SUBST(LIBJPEG_TURBO_USE_YASM)
 AC_SUBST_LIST(LIBJPEG_TURBO_ASFLAGS)