• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# FFmpeg build configure
2
3#!/bin/bash
4
5FFMPEG_PATH=$1
6FFMPEG_OUT_PATH=$2
7
8FF_CONFIG_OPTIONS="
9    --disable-lzma
10    --disable-stripping
11    --disable-asm
12    --disable-programs
13    --disable-doc
14    --disable-debug
15    --disable-avdevice
16    --disable-avfilter
17    --disable-avresample
18    --disable-postproc
19    --disable-bsfs
20    --disable-iconv
21    --disable-xlib
22    --disable-zlib
23    --disable-cuvid
24    --disable-cuda
25    --disable-libxcb
26    --disable-libxcb_shape
27    --disable-libxcb_shm
28    --disable-libxcb_xfixes
29    --disable-sdl2
30    --disable-hwaccels
31    --disable-protocols
32    --disable-bzlib
33    --disable-vaapi
34    --disable-vdpau
35    --enable-protocol=file,http,tcp,httpproxy,g726_16_dynamic,g726_24_dynamic,g726_32_dynamic,g726_40_dynamic,qt_rtp_aud,qt_rtp_vid,quicktime_rtp_aud,quicktime_rtp_vid
36    --disable-muxers
37    --disable-demuxers
38    --enable-demuxer=matroska,mov,avi,flv,mpegts,mpegtsraw,mpegps,ivf
39    --enable-demuxer=m4v,h263,ingenient,mjpeg,mpegvideo,rawvideo
40    --enable-demuxer=mp3,wav,aac,ape,flac,amr,ogg,dsf,iff
41    --enable-demuxer=pcm_alaw,pcm_f32be,pcm_f32le,pcm_f64be,pcm_f64le,pcm_mulaw,pcm_s16be,pcm_s16le,pcm_s24be,pcm_s24le,pcm_s32be,pcm_s32le,pcm_s8,pcm_u16be,pcm_u16le,pcm_u24be,pcm_u24le,pcm_u32be,pcm_u32le,pcm_u8,sln,adx,g722,gsm,loas
42    --disable-parsers
43    --enable-parser=h263,h264,mjpeg,mpeg4video,mpegvideo,vp3,vp8,vp9
44    --enable-parser=adx,aac,aac_latm,flac,g729,gsm,mpegaudio,opus,vorbis
45    --disable-encoders
46    --disable-decoders
47    --enable-encoder=a64multi,a64multi5,amv
48    --enable-decoder=h263,h263p,h264,libopenh264,h264_mediacodec,h264_mmal,h264_vda,h264_vdpau,mjpeg,rawvideo
49    --enable-decoder=mpeg1_vdpau,mpeg1video,mpeg2_mmal,mpeg2video,mpeg4,mpeg4_mmal,mpeg4_vdpau,mpeg4_mediacodec,mpeg_vdpau,mpeg_xvmc,mpegvideo
50    --enable-decoder=vp8,vp9,libvpx_vp8,libvpx_vp9,vp8_mediacodec,vp9_mediacodec
51    --enable-decoder=pcm_alaw,pcm_alaw_at,pcm_bluray,pcm_dvd,pcm_f32be,pcm_f32le,pcm_f64be,pcm_f64le,pcm_lxf,pcm_mulaw,pcm_mulaw_at,pcm_s16be,pcm_s16be_planar,pcm_s16le,pcm_s16le_planar,adpcm_ima_dat4,adpcm_mtaf
52    --enable-encoder=pcm_s24be,pcm_s24daud,pcm_s24le,pcm_s24le_planar,pcm_s32be,pcm_s32le,pcm_s32le_planar,pcm_s8,pcm_s8_planar,pcm_u16be,pcm_u16le,pcm_u24be,pcm_u24le,pcm_u32be,pcm_u32le,pcm_u8,pcm_s16le,pcm_s16le_planar,pcm_s64be,pcm_s64le,pcm_vidc,adpcm_g726,adpcm_g7261e,ssa,ass,srt,subrip,text
53    --enable-decoder=mp1,mp1_at,mp1float,mp2,mp2float,mp2_at,mp3,mp3adu,mp3adufloat,mp3float,mp3on4,mp3on4float,mp3_at
54    --enable-decoder=aac,aac_at,aac_fixed,aac_latm,alac,alac_at,als,amrnb,libopencore_amrnb,amr_nb_at,amrwb,libopencore_amrwb,ape,flac,vorbis,libvorbis,libopus,opus
55    --enable-encoder=aac,aac_at,aac_fixed,aac_latm
56    --enable-decoder=adpcm_4xm,adpcm_adx,adpcm_afc,adpcm_aica,adpcm_ct,adpcm_dtk,adpcm_g722,adpcm_g726,adpcm_g726le
57    --enable-decoder=adpcm_ima_amv,adpcm_ima_apc,adpcm_ima_iss,adpcm_ima_oki,adpcm_ima_rad
58    --enable-decoder=adpcm_ima_wav,adpcm_psx,adpcm_sbpro_2,adpcm_sbpro_3,adpcm_sbpro_4,adpcm_thp,adpcm_thp_le,adpcm_xa,adpcm_yamaha
59    --enable-decoder=g723_1,g729,gsm,libgsm
60    --enable-decoder=dsd_lsbf,dsd_msbf,dsd_msbf_planar,dsd_lsbf_planar
61    --enable-muxer=ac3,rtsp,matroska,matroska_audio,mjpeg,mlp,mmf,mov,mp2,mp4,mpeg1system,mpeg1vcd,mpeg1video,mpeg2dvd,mpeg2svcd,mpeg2video,mpeg2vob,oga,ogg,ogv,opus,psp,rawvideo,sbc,segment,stream_segment,singlejpeg,spx,swf,tg2,tgp,truehd,vc1,w64,wav,webm,webm_dash_manifest,webm_chunk
62    --enable-demuxer=ac3,eac3,adf,sdf,img2,rtpdec,img,rtp,amrnb,amrwb,aptx,aptx_hd,vcl,au,bintext,bit,codec2,codec2raw,data,g726,g726le,idf,image2,image2pipe,mlp,mmf,truehd,v210,v210x,vobsub,w64,xbin,vc1
63    --enable-decoder=rtpdec,rtp,g726_16_dynamic,g726_24_dynamic,g726_32_dynamic,g726_40_dynamic,g7261e_16_dynamic,g7261e_24_dynamic,g726le_32_dynamic,g726le_40_dynamic,amv,asv1,asv2,aura,avrp,ayuv,cyuv,eightsvx_exp,eightsvx_fib,ffvhuff,hymt,iff_ilbm,mszh,mvc1,mvc2,pam,pbm,pgm,pgmyuv,ppm,r10k,r210,theora,thp,v408,vc1image,vp4,vp7,wmv3,wmv3image,aptx,aptx_hd,eac3,gsm_ms,iac,imc,mlp,sonic,truehd,wmav1,wmav2,pcm_f16le,pcm_f24le,pcm_s8,pcm_s8_planar,pcm_24be,pcm_s24daud,pcm_s24be,pcm_s24le,pcm_s24le_planar,pcm_s32be,pcm_s32le,pcm_s32le_planar,pcm_s64be,pcm_s64le,pcm_u8,pcm_u16be,pcm_u16le,pcm_u24be,pcm_u24le,pcm_u32be,pcm_u32le,pcm_vidc,ssa,ass,pjs,srt,stl,subrip,subviewer1,text,vplayer,bintext,xbin,idf,vp5,vp6,dirac,diracdsp
64    --enable-encoder=asv1,asv2,avrp,ayuv,ffvhuff,mjpeg,mpeg4,opus,pbm,pgm,pgmyuv,ppm,r10k,r210,v408,aptx,aptx_hd,mlp,sonic,sonic_ls,truehd,wmav1,wmav2,pcm_alaw,pcm_f32be,pcm_f32le,pcm_f64be,pcm_f64le,pcm_mulaw,s8,s8_planar,pcm_s16be,pcm_s16be_planar,pcm_s24be,pcm_s24daud,pcm_s24le,pcm_s24le_planar,pcm_s32be,pcm_s32le,pcm_s32le_planar,adpcm_g726le,dvvideo,dvaudio,h263
65    --enable-parser=rv30,rv40
66"
67
68FF_CONFIG_OPTIONS=`echo $FF_CONFIG_OPTIONS`
69
70${FFMPEG_PATH}/configure ${FF_CONFIG_OPTIONS}
71sed -i 's/HAVE_SYSCTL 1/HAVE_SYSCTL 0/g' config.h
72sed -i 's/HAVE_SYSCTL=yes/!HAVE_SYSCTL=yes/g' ./ffbuild/config.mak
73sed -i 's/HAVE_GLOB 1/HAVE_GLOB 0/g' config.h
74sed -i 's/HAVE_GLOB=yes/!HAVE_GLOB=yes/g' config.h
75sed -i 's/HAVE_GMTIME_R 1/HAVE_GMTIME_R 0/g' config.h
76sed -i 's/HAVE_LOCALTIME_R 1/HAVE_LOCALTIME_R 0/g' config.h
77sed -i 's/HAVE_PTHREAD_CANCEL 1/HAVE_PTHREAD_CANCEL 0/g' config.h
78sed -i 's/HAVE_VALGRIND_VALGRIND_H 1/HAVE_VALGRIND_VALGRIND_H 0/g' config.h
79
80tmp_file=".tmpfile"
81## remove invalid restrict define
82sed 's/#define av_restrict restrict/#define av_restrict/' ./config.h >$tmp_file
83mv $tmp_file ./config.h
84
85## replace original FFMPEG_CONFIGURATION define with $FF_CONFIG_OPTIONS
86sed '/^#define FFMPEG_CONFIGURATION/d' ./config.h >$tmp_file
87mv $tmp_file ./config.h
88total_line=`wc -l ./config.h | cut -d' ' -f 1`
89tail_line=`expr $total_line - 3`
90head -3 config.h > $tmp_file
91echo "#define FFMPEG_CONFIGURATION \"${FF_CONFIG_OPTIONS}\"" >> $tmp_file
92tail -$tail_line config.h >> $tmp_file
93mv $tmp_file ./config.h
94
95rm -f config.err
96
97## rm BUILD_ROOT information
98sed '/^BUILD_ROOT=/d' ./ffbuild/config.mak > $tmp_file
99rm -f ./ffbuild/config.mak
100mv $tmp_file ./ffbuild/config.mak
101
102## rm amr-eabi-gcc
103sed '/^CC=arm-eabi-gcc/d' ./ffbuild/config.mak > $tmp_file
104rm -f ./ffbuild/config.mak
105mv $tmp_file ./ffbuild/config.mak
106
107## rm amr-eabi-gcc
108sed '/^AS=arm-eabi-gcc/d' ./ffbuild/config.mak > $tmp_file
109rm -f ./ffbuild/config.mak
110mv $tmp_file ./ffbuild/config.mak
111
112
113## rm amr-eabi-gcc
114sed '/^LD=arm-eabi-gcc/d' ./ffbuild/config.mak > $tmp_file
115rm -f ./ffbuild/config.mak
116mv $tmp_file ./ffbuild/config.mak
117
118## rm amr-eabi-gcc
119sed '/^DEPCC=arm-eabi-gcc/d' ./ffbuild/config.mak > $tmp_file
120rm -f ./ffbuild/config.mak
121mv $tmp_file ./ffbuild/config.mak
122
123sed -i 's/restrict restrict/restrict /g' config.h
124
125sed -i '/getenv(x)/d' config.h
126sed -i 's/HAVE_DOS_PATHS 0/HAVE_DOS_PATHS 1/g' config.h
127
128mv config.h ${FFMPEG_OUT_PATH}/config.h
129mv ./ffbuild/config.mak ${FFMPEG_OUT_PATH}/config.mak
130mv -f libavcodec ${FFMPEG_OUT_PATH}
131mv -f libavformat ${FFMPEG_OUT_PATH}
132mv -f libavutil ${FFMPEG_OUT_PATH}
133mv -f libavdevice ${FFMPEG_OUT_PATH}
134mv -f libavfilter ${FFMPEG_OUT_PATH}
135rm -rf ./ffbuild
136
137## other work need to be done manually
138cat <<!EOF
139#####################################################
140                    ****NOTICE****
141You need to modify the file config.mak and delete
142all full path string in macro:
143SRC_PATH, SRC_PATH_BARE, BUILD_ROOT, LDFLAGS.
144Please refer to the old version of config.mak to
145check how to modify it.
146#####################################################
147!EOF
148