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