forked from Nevcairiel/LAVFilters
-
Notifications
You must be signed in to change notification settings - Fork 0
/
build_ffmpeg.sh
126 lines (108 loc) · 3.18 KB
/
build_ffmpeg.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#!/bin/sh
arch=x86
archdir=Win32
clean_build=true
cross_prefix=
for opt in "$@"
do
case "$opt" in
x86)
;;
x64 | amd64)
arch=x86_64
archdir=x64
cross_prefix=x86_64-w64-mingw32-
;;
quick)
clean_build=false
;;
*)
echo "Unknown Option $opt"
exit 1
esac
done
make_dirs() (
mkdir -p bin_${archdir}/lib
mkdir -p bin_${archdir}d/lib
)
copy_libs() (
# install -s --strip-program=${cross_prefix}strip lib*/*-lav-*.dll ../bin_${archdir}
cp lib*/*-lav-*.dll ../bin_${archdir}
${cross_prefix}strip ../bin_${archdir}/*-lav-*.dll
cp -u lib*/*.lib ../bin_${archdir}/lib
cp lib*/*-lav-*.dll ../bin_${archdir}d
${cross_prefix}strip ../bin_${archdir}d/*-lav-*.dll
cp -u lib*/*.lib ../bin_${archdir}d/lib
)
clean() (
make distclean > /dev/null 2>&1
)
configure() (
OPTIONS="
--enable-shared \
--disable-static \
--enable-version3 \
--enable-w32threads \
--disable-demuxer=matroska \
--disable-filters \
--enable-filter=scale,yadif,w3fdif \
--disable-protocol=async,cache,concat,httpproxy,icecast,md5,subfile \
--disable-muxers \
--enable-muxer=spdif \
--disable-hwaccels \
--enable-hwaccel=h264_dxva2 \
--enable-hwaccel=hevc_dxva2 \
--enable-hwaccel=vc1_dxva2 \
--enable-hwaccel=wmv3_dxva2 \
--enable-hwaccel=mpeg2_dxva2 \
--enable-hwaccel=vp9_dxva2 \
--enable-libspeex \
--enable-libopencore-amrnb \
--enable-libopencore-amrwb \
--enable-avresample \
--enable-avisynth \
--disable-avdevice \
--disable-postproc \
--disable-swresample \
--disable-encoders \
--disable-bsfs \
--disable-devices \
--disable-programs \
--disable-debug \
--disable-doc \
--build-suffix=-lav \
--arch=${arch}"
EXTRA_CFLAGS="-fno-tree-vectorize -D_WIN32_WINNT=0x0502 -DWINVER=0x0502 -I../thirdparty/include"
EXTRA_LDFLAGS=""
if [ "${arch}" == "x86_64" ]; then
OPTIONS="${OPTIONS} --enable-cross-compile --cross-prefix=${cross_prefix} --target-os=mingw32 --pkg-config=pkg-config"
EXTRA_LDFLAGS="${EXTRA_LDFLAGS} -L../thirdparty/lib64"
else
OPTIONS="${OPTIONS} --cpu=i686"
EXTRA_CFLAGS="${EXTRA_CFLAGS} -mmmx -msse -mfpmath=sse"
EXTRA_LDFLAGS="${EXTRA_LDFLAGS} -L../thirdparty/lib32"
fi
sh configure --extra-ldflags="${EXTRA_LDFLAGS}" --extra-cflags="${EXTRA_CFLAGS}" ${OPTIONS}
)
build() (
make -j$NUMBER_OF_PROCESSORS
)
make_dirs
echo
echo Building ffmpeg in GCC ${arch} Release config...
echo
cd ffmpeg
if $clean_build ; then
clean
## run configure, redirect to file because of a msys bug
configure > config.out 2>&1
CONFIGRETVAL=$?
## show configure output
cat config.out
fi
## Only if configure succeeded, actually build
if ! $clean_build || [ ${CONFIGRETVAL} -eq 0 ]; then
build &&
copy_libs
fi
cd ..