agsantos | dd6a62a | 2021-03-29 17:13:27 -0400 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | set +x |
| 3 | set +e |
| 4 | DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) |
| 5 | cd $DIR/../../build/ffmpeg |
| 6 | FFMPEGCONF=' |
| 7 | --toolchain=msvc |
| 8 | --target-os=win32' |
| 9 | |
| 10 | #disable everything |
| 11 | FFMPEGCONF+=' |
| 12 | --disable-everything |
| 13 | --disable-programs |
| 14 | --disable-d3d11va |
| 15 | --disable-dxva2 |
| 16 | --disable-postproc |
| 17 | --disable-filters |
| 18 | --enable-zlib' |
| 19 | |
| 20 | FFMPEGCONF+=' |
| 21 | --enable-cross-compile |
| 22 | --enable-gpl |
| 23 | --enable-swscale |
| 24 | --enable-protocols |
| 25 | --enable-bsfs' |
| 26 | |
| 27 | #enable muxers/demuxers |
| 28 | FFMPEGCONF+=' |
| 29 | --enable-demuxers |
| 30 | --enable-muxers' |
| 31 | |
| 32 | #enable parsers |
| 33 | FFMPEGCONF+=' |
| 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 |
| 43 | FFMPEGCONF+=' |
| 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 |
| 68 | FFMPEGCONF+=' |
| 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 |
| 104 | FFMPEGCONF+=' |
| 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 |
| 113 | FFMPEGCONF+=' |
| 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 | |
| 127 | if [ "$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 |
| 142 | elif [ "$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 |
| 189 | fi |
| 190 | rm -rf $OUTDIR |
| 191 | mkdir -p $OUTDIR |
| 192 | cd $OUTDIR |
| 193 | pwd |
| 194 | FFMPEGCONF=$(echo $FFMPEGCONF | sed -e "s/[[:space:]]\+/ /g") |
| 195 | set -x |
| 196 | set -e |
| 197 | ../../../configure $FFMPEGCONF --extra-cflags="${EXTRACFLAGS}" --extra-ldflags="${EXTRALDFLAGS}" --prefix="${PREFIX}" |
| 198 | make -j8 install |
| 199 | cd ../../.. |
| 200 | |