blob: b6ec0d90d4cb20134a964bbd069b58c440304e5e [file] [log] [blame]
agsantosdd6a62a2021-03-29 17:13:27 -04001#!/bin/bash
2set +x
3set +e
4DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
5cd $DIR/../../build/ffmpeg
6FFMPEGCONF='
7 --toolchain=msvc
8 --target-os=win32'
9
10#disable everything
11FFMPEGCONF+='
12 --disable-everything
13 --disable-programs
14 --disable-d3d11va
15 --disable-dxva2
16 --disable-postproc
17 --disable-filters
18 --enable-zlib'
19
20FFMPEGCONF+='
21 --enable-cross-compile
22 --enable-gpl
23 --enable-swscale
24 --enable-protocols
25 --enable-bsfs'
26
27#enable muxers/demuxers
28FFMPEGCONF+='
29 --enable-demuxers
30 --enable-muxers'
31
32#enable parsers
33FFMPEGCONF+='
34 --enable-parser=h263
35 --enable-parser=h264
36 --enable-parser=hevc
37 --enable-parser=mpeg4video
38 --enable-parser=vp8
39 --enable-parser=vp9
40 --enable-parser=opus'
41
42#encoders/decoders
43FFMPEGCONF+='
44 --enable-libopus
45 --enable-encoder=libopus
46 --enable-decoder=libopus
47 --enable-encoder=adpcm_g722
48 --enable-decoder=adpcm_g722
49 --enable-encoder=pcm_alaw
50 --enable-decoder=pcm_alaw
51 --enable-encoder=pcm_mulaw
52 --enable-decoder=pcm_mulaw
53 --enable-libx264
54 --enable-encoder=libx264
55 --enable-decoder=h264
56 --enable-encoder=rawvideo
57 --enable-decoder=rawvideo
58 --enable-encoder=mpeg4
59 --enable-decoder=mpeg4
60 --enable-encoder=h263
61 --enable-encoder=h263p
62 --enable-decoder=h263
63 --enable-encoder=mjpeg
64 --enable-decoder=mjpeg
65 --enable-decoder=mjpegb'
66
67# decoders for ringtones and audio streaming
68FFMPEGCONF+='
69 --enable-decoder=flac
70 --enable-decoder=vorbis
71 --enable-decoder=aac
72 --enable-decoder=ac3
73 --enable-decoder=eac3
74 --enable-decoder=mp3
75 --enable-decoder=pcm_u24be
76 --enable-decoder=pcm_u24le
77 --enable-decoder=pcm_u32be
78 --enable-decoder=pcm_u32le
79 --enable-decoder=pcm_u8
80 --enable-decoder=pcm_f16le
81 --enable-decoder=pcm_f24le
82 --enable-decoder=pcm_f32be
83 --enable-decoder=pcm_f32le
84 --enable-decoder=pcm_f64be
85 --enable-decoder=pcm_f64le
86 --enable-decoder=pcm_s16be
87 --enable-decoder=pcm_s16be_planar
88 --enable-decoder=pcm_s16le
89 --enable-decoder=pcm_s16le_planar
90 --enable-decoder=pcm_s24be
91 --enable-decoder=pcm_s24le
92 --enable-decoder=pcm_s24le_planar
93 --enable-decoder=pcm_s32be
94 --enable-decoder=pcm_s32le
95 --enable-decoder=pcm_s32le_planar
96 --enable-decoder=pcm_s64be
97 --enable-decoder=pcm_s64le
98 --enable-decoder=pcm_s8
99 --enable-decoder=pcm_s8_planar
100 --enable-decoder=pcm_u16be
101 --enable-decoder=pcm_u16le'
102
103#encoders/decoders for images
104FFMPEGCONF+='
105 --enable-encoder=jpegls
106 --enable-decoder=jpegls
107 --enable-encoder=ljpeg
108 --enable-decoder=jpeg2000
109 --enable-encoder=png
110 --enable-decoder=png'
111
112#filters
113FFMPEGCONF+='
114 --enable-filter=scale
115 --enable-filter=overlay
116 --enable-filter=format
117 --enable-filter=fps
118 --enable-filter=transpose
119 --enable-filter=rotate
120 --enable-filter=negate
121 --enable-filter=lut
122 --enable-filter=alphamerge
123 --enable-filter=boxblur
124 --enable-filter=colorkey
125 --enable-filter=split'
126
127if [ "$1" == "uwp" ]; then
128 EXTRACFLAGS='-MD -DWINAPI_FAMILY=WINAPI_FAMILY_APP -D_WIN32_WINNT=0x0A00 -I../../../../../msvc/include -I../../../../../msvc/include/opus'
129 if [ "$2" == "x64" ]; then
130 echo "configure and make ffmpeg for UWP-x64..."
131 EXTRALDFLAGS='-APPCONTAINER WindowsApp.lib libopus.lib libx264.lib libzlib.lib -LIBPATH:../../../../../msvc/lib/x64'
132 FFMPEGCONF+=' --arch=x86_64'
133 PREFIX=../../../Build/Windows10/x64
134 OUTDIR=Output/Windows10/x64
135 elif [ "$2" == "x86" ]; then
136 echo "configure and make ffmpeg for UWP-x86..."
137 EXTRALDFLAGS='-APPCONTAINER WindowsApp.lib libopus.lib libx264.lib libzlib.lib -LIBPATH:../../../../../msvc/lib/x86'
138 FFMPEGCONF+=' --arch=x86'
139 PREFIX=../../../Build/Windows10/x86
140 OUTDIR=Output/Windows10/x86
141 fi
142elif [ "$1" == "win32" ]; then
143 EXTRACFLAGS='-MD -D_WINDLL -I../../../../../msvc/include -I../../../../../msvc/include/opus -I../../../../../msvc/include/vpx -I../../../../../msvc/include/ffnvcodec -I../../../../../msvc/include/mfx'
144 FFMPEGCONF+='
145 --enable-libvpx
146 --enable-encoder=libvpx_vp8
147 --enable-decoder=vp8
148 --enable-decoder=vp9'
149 FFMPEGCONF+='
150 --enable-indev=dshow
151 --enable-indev=gdigrab
152 --enable-dxva2'
153 FFMPEGCONF+='
154 --enable-ffnvcodec
155 --enable-cuvid
156 --enable-nvdec
157 --enable-nvenc
158 --enable-hwaccel=h264_nvdec
159 --enable-hwaccel=hevc_nvdec
160 --enable-hwaccel=vp8_nvdec
161 --enable-hwaccel=mjpeg_nvdec
162 --enable-encoder=h264_nvenc
163 --enable-encoder=hevc_nvenc'
164 FFMPEGCONF+='
165 --enable-libmfx
166 --enable-encoder=h264_qsv
167 --enable-encoder=hevc_qsv
168 --enable-encoder=mjpeg_qsv
169 --enable-decoder=vp8_qsv
170 --enable-decoder=h264_qsv
171 --enable-decoder=hevc_qsv
172 --enable-decoder=mjpeg_qsv
173 --enable-decoder=vp9_qsv
174 --enable-filter=scale_qsv
175 --enable-filter=overlay_qsv'
176 if [ "$2" == "x64" ]; then
177 echo "configure and make ffmpeg for win32-x64..."
178 EXTRALDFLAGS='-APPCONTAINER:NO -MACHINE:x64 Ole32.lib Kernel32.lib Gdi32.lib User32.lib Strmiids.lib Advapi32.lib OleAut32.lib Shlwapi.lib Vfw32.lib Secur32.lib Advapi32.lib libopus.lib libx264.lib libvpx.lib libmfx.lib libzlib.lib -LIBPATH:../../../../../msvc/lib/x64'
179 FFMPEGCONF+=' --arch=x86_64'
180 PREFIX=../../../Build/win32/x64
181 OUTDIR=Output/win32/x64
182 elif [ "$2" == "x86" ]; then
183 echo "configure and make ffmpeg for win32-x86..."
184 EXTRALDFLAGS='-APPCONTAINER:NO -MACHINE:x86 Ole32.lib Kernel32.lib Gdi32.lib User32.lib Strmiids.lib OleAut32.lib Shlwapi.lib Vfw32.lib Secur32.lib Advapi32.lib libopus.lib libx264.lib libvpx.lib libmfx.lib libzlib.lib -LIBPATH:../../../../../msvc/lib/x86'
185 FFMPEGCONF+=' --arch=x86'
186 PREFIX=../../../Build/win32/x86
187 OUTDIR=Output/win32/x86
188 fi
189fi
190rm -rf $OUTDIR
191mkdir -p $OUTDIR
192cd $OUTDIR
193pwd
194FFMPEGCONF=$(echo $FFMPEGCONF | sed -e "s/[[:space:]]\+/ /g")
195set -x
196set -e
197../../../configure $FFMPEGCONF --extra-cflags="${EXTRACFLAGS}" --extra-ldflags="${EXTRALDFLAGS}" --prefix="${PREFIX}"
198make -j8 install
199cd ../../..
200