blob: 6783c7cc3335d9ab641263404ff093d8779e9b42 [file] [log] [blame]
#!/bin/bash
set +x
set +e
DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
cd $DIR/../../build/ffmpeg
FFMPEGCONF='
--toolchain=msvc
--target-os=win32'
#disable everything
FFMPEGCONF+='
--disable-everything
--disable-programs
--disable-d3d11va
--disable-dxva2
--disable-postproc
--disable-filters
--enable-zlib'
FFMPEGCONF+='
--enable-cross-compile
--enable-gpl
--enable-swscale
--enable-protocols
--enable-bsfs'
#enable muxers/demuxers
FFMPEGCONF+='
--enable-demuxers
--enable-muxers'
#enable parsers
FFMPEGCONF+='
--enable-parser=h263
--enable-parser=h264
--enable-parser=hevc
--enable-parser=mpeg4video
--enable-parser=vp8
--enable-parser=vp9
--enable-parser=opus'
#encoders/decoders
FFMPEGCONF+='
--enable-libopus
--enable-encoder=libopus
--enable-decoder=libopus
--enable-encoder=adpcm_g722
--enable-decoder=adpcm_g722
--enable-encoder=pcm_alaw
--enable-decoder=pcm_alaw
--enable-encoder=pcm_mulaw
--enable-decoder=pcm_mulaw
--enable-libx264
--enable-encoder=libx264
--enable-decoder=h264
--enable-encoder=rawvideo
--enable-decoder=rawvideo
--enable-encoder=mpeg4
--enable-decoder=mpeg4
--enable-encoder=h263
--enable-encoder=h263p
--enable-decoder=h263
--enable-encoder=mjpeg
--enable-decoder=mjpeg
--enable-decoder=mjpegb'
# decoders for ringtones and audio streaming
FFMPEGCONF+='
--enable-decoder=flac
--enable-decoder=vorbis
--enable-decoder=aac
--enable-decoder=ac3
--enable-decoder=eac3
--enable-decoder=mp3
--enable-decoder=pcm_u24be
--enable-decoder=pcm_u24le
--enable-decoder=pcm_u32be
--enable-decoder=pcm_u32le
--enable-decoder=pcm_u8
--enable-decoder=pcm_f16le
--enable-decoder=pcm_f24le
--enable-decoder=pcm_f32be
--enable-decoder=pcm_f32le
--enable-decoder=pcm_f64be
--enable-decoder=pcm_f64le
--enable-decoder=pcm_s16be
--enable-decoder=pcm_s16be_planar
--enable-decoder=pcm_s16le
--enable-decoder=pcm_s16le_planar
--enable-decoder=pcm_s24be
--enable-decoder=pcm_s24le
--enable-decoder=pcm_s24le_planar
--enable-decoder=pcm_s32be
--enable-decoder=pcm_s32le
--enable-decoder=pcm_s32le_planar
--enable-decoder=pcm_s64be
--enable-decoder=pcm_s64le
--enable-decoder=pcm_s8
--enable-decoder=pcm_s8_planar
--enable-decoder=pcm_u16be
--enable-decoder=pcm_u16le'
#encoders/decoders for images
FFMPEGCONF+='
--enable-encoder=jpegls
--enable-decoder=jpegls
--enable-encoder=ljpeg
--enable-decoder=jpeg2000
--enable-encoder=png
--enable-decoder=png
--enable-encoder=gif
--enable-decoder=gif'
FFMPEGCONF+='
--enable-muxer=mp4
--enable-muxer=gif
--enable-demuxer=image_gif_pipe
--enable-muxer=image_gif_pipe
--enable-demuxer=gif'
#filters
FFMPEGCONF+='
--enable-filter=scale
--enable-filter=overlay
--enable-filter=format
--enable-filter=fps
--enable-filter=transpose
--enable-filter=pad
--enable-filter=drawbox
--enable-filter=split
--enable-filter=drawtext
--enable-libfreetype
--enable-filter=rotate
--enable-filter=loop
--enable-filter=setpts
--enable-filter=movie'
if [ "$1" == "uwp" ]; then
EXTRACFLAGS='-MD -DWINAPI_FAMILY=WINAPI_FAMILY_APP -D_WIN32_WINNT=0x0A00 -I../../../../../msvc/include -I../../../../../msvc/include/opus -I../../../../../msvc/include/freetype'
if [ "$2" == "x64" ]; then
echo "configure and make ffmpeg for UWP-x64..."
EXTRALDFLAGS='-APPCONTAINER WindowsApp.lib libopus.lib libx264.lib freetype.lib libzlib.lib -LIBPATH:../../../../../msvc/lib/x64'
FFMPEGCONF+=' --arch=x86_64'
PREFIX=../../../Build/Windows10/x64
OUTDIR=Output/Windows10/x64
elif [ "$2" == "x86" ]; then
echo "configure and make ffmpeg for UWP-x86..."
EXTRALDFLAGS='-APPCONTAINER WindowsApp.lib libopus.lib libx264.lib freetype.lib libzlib.lib -LIBPATH:../../../../../msvc/lib/x86'
FFMPEGCONF+=' --arch=x86'
PREFIX=../../../Build/Windows10/x86
OUTDIR=Output/Windows10/x86
fi
elif [ "$1" == "win32" ]; then
EXTRACFLAGS='-MD -D_WINDLL -I../../../../../msvc/include -I../../../../../msvc/include/opus -I../../../../../msvc/include/vpx -I../../../../../msvc/include/ffnvcodec -I../../../../../msvc/include/mfx -I../../../../../msvc/include/freetype'
FFMPEGCONF+='
--enable-libvpx
--enable-encoder=libvpx_vp8
--enable-decoder=vp8
--enable-decoder=vp9'
FFMPEGCONF+='
--enable-indev=dshow
--enable-indev=gdigrab
--enable-dxva2'
FFMPEGCONF+='
--enable-ffnvcodec
--enable-cuvid
--enable-nvdec
--enable-nvenc
--enable-hwaccel=h264_nvdec
--enable-hwaccel=hevc_nvdec
--enable-hwaccel=vp8_nvdec
--enable-hwaccel=mjpeg_nvdec
--enable-encoder=h264_nvenc
--enable-encoder=hevc_nvenc'
FFMPEGCONF+='
--enable-libmfx
--enable-encoder=h264_qsv
--enable-encoder=hevc_qsv
--enable-encoder=mjpeg_qsv
--enable-decoder=vp8_qsv
--enable-decoder=h264_qsv
--enable-decoder=hevc_qsv
--enable-decoder=mjpeg_qsv
--enable-decoder=vp9_qsv
--enable-filter=scale_qsv
--enable-filter=overlay_qsv'
if [ "$2" == "x64" ]; then
echo "configure and make ffmpeg for win32-x64..."
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 freetype.lib libzlib.lib -LIBPATH:../../../../../msvc/lib/x64'
FFMPEGCONF+=' --arch=x86_64'
PREFIX=../../../Build/win32/x64
OUTDIR=Output/win32/x64
elif [ "$2" == "x86" ]; then
echo "configure and make ffmpeg for win32-x86..."
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 freetype.lib libzlib.lib -LIBPATH:../../../../../msvc/lib/x86'
FFMPEGCONF+=' --arch=x86'
PREFIX=../../../Build/win32/x86
OUTDIR=Output/win32/x86
fi
fi
rm -rf $OUTDIR
mkdir -p $OUTDIR
cd $OUTDIR
pwd
FFMPEGCONF=$(echo $FFMPEGCONF | sed -e "s/[[:space:]]\+/ /g")
set -x
set -e
../../../configure $FFMPEGCONF --extra-cflags="${EXTRACFLAGS}" --extra-ldflags="${EXTRALDFLAGS}" --prefix="${PREFIX}"
make -j8 install
cd ../../..