/
package.mk
205 lines (189 loc) · 6.32 KB
/
package.mk
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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="ffmpeg"
# Current branch is: release/4.0-kodi
PKG_VERSION="4.0.4-Leia-18.4"
PKG_SHA256="e11e7594af35f36ab2711252c3d6bb106908f26605498aef4a9be2d7bc001db2"
PKG_LICENSE="LGPLv2.1+"
PKG_SITE="https://ffmpeg.org"
PKG_URL="https://github.com/xbmc/FFmpeg/archive/${PKG_VERSION}.tar.gz"
PKG_DEPENDS_TARGET="toolchain zlib bzip2 openssl speex"
PKG_LONGDESC="FFmpeg is a complete, cross-platform solution to record, convert and stream audio and video."
PKG_BUILD_FLAGS="-gold"
# Dependencies
get_graphicdrivers
if [ "$V4L2_SUPPORT" = "yes" ]; then
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET libdrm"
PKG_FFMPEG_V4L2="--enable-v4l2_m2m --enable-libdrm"
else
PKG_FFMPEG_V4L2="--disable-v4l2_m2m"
fi
if [ "$VAAPI_SUPPORT" = "yes" ]; then
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET libva"
PKG_FFMPEG_VAAPI="--enable-vaapi"
else
PKG_FFMPEG_VAAPI="--disable-vaapi"
fi
if [ "$VDPAU_SUPPORT" = "yes" -a "$DISPLAYSERVER" = "x11" ]; then
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET libvdpau"
PKG_FFMPEG_VDPAU="--enable-vdpau"
else
PKG_FFMPEG_VDPAU="--disable-vdpau"
fi
if [ "$PROJECT" = "Rockchip" ]; then
PKG_PATCH_DIRS+=" rkmpp"
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET rkmpp"
PKG_FFMPEG_RKMPP="--enable-rkmpp --enable-libdrm --enable-version3"
else
PKG_FFMPEG_RKMPP="--disable-rkmpp"
fi
if [ "$PROJECT" = "Allwinner" ]; then
PKG_PATCH_DIRS+=" v4l2-request-api"
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET libdrm systemd" # systemd is needed for libudev
PKG_FFMPEG_V4L2_REQUEST="--enable-v4l2-request --enable-libudev --enable-libdrm"
fi
if build_with_debug; then
PKG_FFMPEG_DEBUG="--enable-debug --disable-stripping"
else
PKG_FFMPEG_DEBUG="--disable-debug --enable-stripping"
fi
if [ "$PROJECT" = "RPi" ]; then
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET bcm2835-driver"
if [ "$DEVICE" = "RPi4" ]; then
PKG_PATCH_DIRS+=" rpi4-hevc"
else
PKG_PATCH_DIRS+=" rpi-hevc"
fi
fi
if target_has_feature neon; then
PKG_FFMPEG_FPU="--enable-neon"
else
PKG_FFMPEG_FPU="--disable-neon"
fi
if [ "$TARGET_ARCH" = "x86_64" ]; then
PKG_DEPENDS_TARGET+=" nasm:host"
fi
if target_has_feature "(neon|sse)"; then
PKG_DEPENDS_TARGET+=" dav1d"
PKG_FFMPEG_AV1="--enable-libdav1d"
fi
pre_configure_target() {
cd $PKG_BUILD
rm -rf .$TARGET_NAME
if [ "$PROJECT" = "RPi" ]; then
PKG_FFMPEG_LIBS="-lbcm_host -lvcos -lvchiq_arm -lmmal -lmmal_core -lmmal_util -lvcsm"
PKG_FFMPEG_RPI="--enable-rpi"
fi
}
configure_target() {
./configure --prefix="/usr" \
--cpu="$TARGET_CPU" \
--arch="$TARGET_ARCH" \
--enable-cross-compile \
--cross-prefix="$TARGET_PREFIX" \
--sysroot="$SYSROOT_PREFIX" \
--sysinclude="$SYSROOT_PREFIX/usr/include" \
--target-os="linux" \
--nm="$NM" \
--ar="$AR" \
--as="$CC" \
--cc="$CC" \
--ld="$CC" \
--host-cc="$HOST_CC" \
--host-cflags="$HOST_CFLAGS" \
--host-ldflags="$HOST_LDFLAGS" \
--extra-cflags="$CFLAGS" \
--extra-ldflags="$LDFLAGS" \
--extra-libs="$PKG_FFMPEG_LIBS" \
--disable-static \
--enable-shared \
--enable-gpl \
--disable-version3 \
--enable-nonfree \
--enable-logging \
--disable-doc \
$PKG_FFMPEG_DEBUG \
--enable-pic \
--pkg-config="$TOOLCHAIN/bin/pkg-config" \
--enable-optimizations \
--disable-extra-warnings \
--disable-programs \
--enable-avdevice \
--enable-avcodec \
--enable-avformat \
--enable-swscale \
--enable-postproc \
--enable-avfilter \
--disable-devices \
--enable-pthreads \
--enable-network \
--disable-gnutls --enable-openssl \
--disable-gray \
--enable-swscale-alpha \
--disable-small \
--enable-dct \
--enable-fft \
--enable-mdct \
--enable-rdft \
--disable-crystalhd \
$PKG_FFMPEG_V4L2 \
$PKG_FFMPEG_VAAPI \
$PKG_FFMPEG_VDPAU \
$PKG_FFMPEG_RPI \
$PKG_FFMPEG_RKMPP \
$PKG_FFMPEG_V4L2_REQUEST \
--enable-runtime-cpudetect \
--disable-hardcoded-tables \
--disable-encoders \
--enable-encoder=ac3 \
--enable-encoder=aac \
--enable-encoder=wmav2 \
--enable-encoder=mjpeg \
--enable-encoder=png \
--enable-hwaccels \
--disable-muxers \
--enable-muxer=spdif \
--enable-muxer=adts \
--enable-muxer=asf \
--enable-muxer=ipod \
--enable-muxer=mpegts \
--enable-demuxers \
--enable-parsers \
--enable-bsfs \
--enable-protocol=http \
--disable-indevs \
--disable-outdevs \
--enable-filters \
--disable-avisynth \
--enable-bzlib \
--disable-lzma \
--disable-alsa \
--disable-frei0r \
--disable-libopencore-amrnb \
--disable-libopencore-amrwb \
--disable-libopencv \
--disable-libdc1394 \
--disable-libfreetype \
--disable-libgsm \
--disable-libmp3lame \
--disable-libopenjpeg \
--disable-librtmp \
$PKG_FFMPEG_AV1 \
--enable-libspeex \
--disable-libtheora \
--disable-libvo-amrwbenc \
--disable-libvorbis \
--disable-libvpx \
--disable-libx264 \
--disable-libxavs \
--disable-libxvid \
--enable-zlib \
--enable-asm \
--disable-altivec \
$PKG_FFMPEG_FPU \
--disable-symver
}
post_makeinstall_target() {
rm -rf $INSTALL/usr/share/ffmpeg/examples
}