summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Bryan2018-02-08 22:33:49 -0600
committerJesse Bryan2018-02-08 22:33:49 -0600
commit7dfea84a5ceb01af7bdd1309691ec7f7f79e0cb3 (patch)
tree1aba6dc70fe2e1118e0b505bdd6f593fd1ad53a7
downloadaur-7dfea84a5ceb01af7bdd1309691ec7f7f79e0cb3.tar.gz
initial commit
-rw-r--r--.SRCINFO113
-rw-r--r--LICENSE9
-rw-r--r--PKGBUILD178
-rw-r--r--ffmpeg-full-rkmpp-build-fix.patch78
-rw-r--r--ffmpeg-full-rkmpp-remove-stream-start.patch83
5 files changed, 461 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..8d0f2c89f5f5
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,113 @@
+pkgbase = ffmpeg-full3.4
+ pkgdesc = FFmpeg 3.4, designed to fix linking issues with packages that require this version of FFmpeg.
+ pkgver = 3.4.1
+ pkgrel = 1
+ url = https://ffmpeg.org/
+ arch = x86_64
+ license = custom: nonfree and unredistributable
+ makedepends = nasm
+ makedepends = opencl-headers
+ makedepends = blackmagic-decklink-sdk
+ makedepends = libmfx
+ depends = glibc
+ depends = alsa-lib
+ depends = jack
+ depends = libpng
+ depends = bzip2
+ depends = frei0r-plugins
+ depends = libgcrypt
+ depends = gmp
+ depends = gnutls
+ depends = ladspa
+ depends = libass
+ depends = libbluray
+ depends = libcaca
+ depends = celt
+ depends = libcdio-paranoia
+ depends = libdc1394
+ depends = libavc1394
+ depends = libfdk-aac
+ depends = fontconfig
+ depends = freetype2
+ depends = fribidi
+ depends = libgme
+ depends = gsm
+ depends = libiec61883
+ depends = libmodplug
+ depends = lame
+ depends = opencore-amr
+ depends = opencv
+ depends = openjpeg2
+ depends = opus
+ depends = pulseaudio
+ depends = librsvg
+ depends = rubberband
+ depends = rtmpdump
+ depends = smbclient
+ depends = snappy
+ depends = libsoxr
+ depends = speex
+ depends = libssh
+ depends = tesseract
+ depends = libtheora
+ depends = twolame
+ depends = v4l-utils
+ depends = vid.stab
+ depends = libvorbis
+ depends = libvpx
+ depends = wavpack
+ depends = libwebp
+ depends = libx264.so
+ depends = x265
+ depends = libxcb
+ depends = xvidcore
+ depends = libxml2
+ depends = zimg
+ depends = zeromq
+ depends = zvbi
+ depends = xz
+ depends = openal
+ depends = opencl-icd-loader
+ depends = mesa
+ depends = openssl
+ depends = sdl2
+ depends = libx11
+ depends = zlib
+ depends = libomxil-bellagio
+ depends = libva
+ depends = libdrm
+ depends = libvdpau
+ depends = chromaprint-fftw
+ depends = libbs2b
+ depends = flite1
+ depends = libilbc
+ depends = kvazaar
+ depends = openh264
+ depends = libopenmpt-svn
+ depends = sndio
+ depends = shine
+ depends = vo-amrwbenc
+ depends = xavs
+ depends = libmysofa
+ depends = rockchip-mpp
+ provides = libavutil.so=55
+ provides = libavcodec.so=57
+ provides = libavformat.so=57
+ provides = libavdevice.so=57
+ provides = libavfilter.so=6
+ provides = libavresample.so=3
+ provides = libswscale.so=4
+ provides = libswresample.so=2
+ provides = libpostproc.so=54
+ source = https://ffmpeg.org/releases/ffmpeg-3.4.1.tar.xz
+ source = ffmpeg-full-rkmpp-build-fix.patch
+ source = ffmpeg-full-rkmpp-remove-stream-start.patch
+ source = LICENSE
+ sha256sums = 5a77278a63741efa74e26bf197b9bb09ac6381b9757391b922407210f0f991c0
+ sha256sums = 142923fd02851343bfbfd31b201ba014dced8a8c8898373c72d71d30d59f5851
+ sha256sums = cac8577126c3e49f8c915fa289f3f5aa624dc55f897b8b7a5613191bcfa9c097
+ sha256sums = 04a7176400907fd7db0d69116b99de49e582a6e176b3bfb36a03e50a4cb26a36
+ optdepends_x86_64 = intel-media-sdk: for Intel QSV support (experimental)
+
+pkgname = ffmpeg-full3.4
+
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 000000000000..b0bb658ca78c
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,9 @@
+This software is nonfree and unredistributable.
+
+The end-user must compile this software for himself in order to be allowed to use it.
+
+This software cannot be redistributed.
+
+This software cannot be used commercially.
+
+Due to the libraries used to compile this software, the resulting binaries and libraries are under a complex and restrictive license mix.
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..51a436d71623
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,178 @@
+# Maintainer: Jesse Bryan <jesse@winneon.moe>
+pkgname=ffmpeg-full3.4
+pkgver=3.4.1
+pkgrel=1
+pkgdesc="FFmpeg 3.4, designed to fix linking issues with packages that require this version of FFmpeg."
+arch=("x86_64")
+url="https://ffmpeg.org/"
+license=("custom: nonfree and unredistributable")
+depends=(
+ # official repositories:
+ "glibc" "alsa-lib" "jack" "libpng"
+ "bzip2" "frei0r-plugins" "libgcrypt" "gmp" "gnutls" "ladspa" "libass"
+ "libbluray" "libcaca" "celt" "libcdio-paranoia" "libdc1394" "libavc1394"
+ "libfdk-aac" "fontconfig" "freetype2" "fribidi" "libgme" "gsm" "libiec61883"
+ "libmodplug" "lame" "opencore-amr" "opencv" "openjpeg2" "opus" "pulseaudio"
+ "librsvg" "rubberband" "rtmpdump" "smbclient" "snappy" "libsoxr" "speex"
+ "libssh" "tesseract" "libtheora" "twolame" "v4l-utils" "vid.stab" "libvorbis"
+ "libvpx" "wavpack" "libwebp" "libx264.so" "x265" "libxcb" "xvidcore" "libxml2"
+ "zimg" "zeromq" "zvbi" "xz" "openal" "opencl-icd-loader" "mesa" "openssl"
+ "sdl2" "libx11" "zlib" "libomxil-bellagio" "libva" "libdrm" "libvdpau"
+ # AUR:
+ "chromaprint-fftw" "libbs2b" "flite1" "libilbc" "kvazaar" "openh264"
+ "libopenmpt-svn" "sndio" "shine" "vo-amrwbenc" "xavs" "libmysofa" "rockchip-mpp"
+)
+optdepends_x86_64=(
+ # AUR:
+ "intel-media-sdk: for Intel QSV support (experimental)"
+)
+makedepends=(
+ # official repositories:
+ "nasm" "opencl-headers"
+ # AUR:
+ "blackmagic-decklink-sdk" "libmfx"
+)
+provides=(
+ "libavutil.so=55" "libavcodec.so=57" "libavformat.so=57" "libavdevice.so=57"
+ "libavfilter.so=6" "libavresample.so=3" "libswscale.so=4" "libswresample.so=2"
+ "libpostproc.so=54"
+)
+source=("https://ffmpeg.org/releases/ffmpeg-${pkgver}.tar.xz"
+ "ffmpeg-full-rkmpp-build-fix.patch"
+ "ffmpeg-full-rkmpp-remove-stream-start.patch"
+ "LICENSE"
+)
+sha256sums=("5a77278a63741efa74e26bf197b9bb09ac6381b9757391b922407210f0f991c0"
+ "142923fd02851343bfbfd31b201ba014dced8a8c8898373c72d71d30d59f5851"
+ "cac8577126c3e49f8c915fa289f3f5aa624dc55f897b8b7a5613191bcfa9c097"
+ "04a7176400907fd7db0d69116b99de49e582a6e176b3bfb36a03e50a4cb26a36")
+
+prepare() {
+ cd "ffmpeg-${pkgver}"
+
+ patch -Np1 -i "${srcdir}/ffmpeg-full-rkmpp-build-fix.patch"
+ patch -Np1 -i "${srcdir}/ffmpeg-full-rkmpp-remove-stream-start.patch"
+}
+
+build() {
+ cd "ffmpeg-${pkgver}"
+
+ msg2 'Running ffmpeg configure script. Please wait...'
+
+ ./configure \
+ --prefix="/usr" \
+ --incdir="/usr/include/ffmpeg3.4" \
+ --libdir="/usr/lib/ffmpeg3.4" \
+ --shlibdir="/usr/lib/ffmpeg3.4" \
+ --disable-rpath \
+ --enable-gpl \
+ --enable-version3 \
+ --enable-nonfree \
+ --enable-shared \
+ --disable-static \
+ --enable-gray \
+ --enable-avresample \
+ --enable-alsa \
+ --enable-avisynth \
+ --enable-bzlib \
+ --enable-chromaprint \
+ --enable-frei0r \
+ --enable-gcrypt \
+ --enable-gmp \
+ --enable-gnutls \
+ --enable-iconv \
+ --enable-jack \
+ --enable-ladspa \
+ --enable-libass \
+ --enable-libbluray \
+ --enable-libbs2b \
+ --enable-libcaca \
+ --enable-libcelt \
+ --enable-libcdio \
+ --enable-libdc1394 \
+ --enable-libfdk-aac \
+ --enable-libflite \
+ --enable-fontconfig \
+ --enable-libfreetype \
+ --enable-libfribidi \
+ --enable-libgme \
+ --enable-libgsm \
+ --enable-libiec61883 \
+ --enable-libilbc \
+ --enable-libkvazaar \
+ --enable-libmodplug \
+ --enable-libmp3lame \
+ --enable-libopencore-amrnb \
+ --enable-libopencore-amrwb \
+ --enable-libopencv \
+ --enable-libopenh264 \
+ --enable-libopenjpeg \
+ --enable-libopenmpt \
+ --enable-libopus \
+ --enable-libpulse \
+ --enable-librsvg \
+ --enable-librubberband \
+ --enable-librtmp \
+ --enable-libshine \
+ --enable-libsmbclient \
+ --enable-libsnappy \
+ --enable-libsoxr \
+ --enable-libspeex \
+ --enable-libssh \
+ --enable-libtesseract \
+ --enable-libtheora \
+ --enable-libtwolame \
+ --enable-libv4l2 \
+ --enable-libvidstab \
+ --enable-libvo-amrwbenc \
+ --enable-libvorbis \
+ --enable-libvpx \
+ --enable-libwavpack \
+ --enable-libwebp \
+ --enable-libx264 \
+ --enable-libx265 \
+ --enable-libxavs \
+ --enable-libxcb \
+ --enable-libxcb-shm \
+ --enable-libxcb-xfixes \
+ --enable-libxcb-shape \
+ --enable-libxvid \
+ --enable-libxml2 \
+ --enable-libzimg \
+ --enable-libzmq \
+ --enable-libzvbi \
+ --enable-lzma \
+ --enable-decklink \
+ --enable-libmysofa \
+ --enable-openal \
+ --enable-opencl \
+ --enable-opengl \
+ --enable-openssl \
+ --enable-sndio \
+ --enable-sdl2 \
+ --enable-xlib \
+ --enable-zlib \
+ --enable-libdrm \
+ --enable-libmfx \
+ --enable-nvenc \
+ --enable-omx \
+ --enable-omx-rpi \
+ --enable-rkmpp \
+ --enable-vaapi \
+ --enable-vdpau
+
+ make
+}
+
+package() {
+ cd "ffmpeg-${pkgver}"
+
+ make DESTDIR="${pkgdir}" install
+ rm -rf "${pkgdir}/usr/share"
+ find "${pkgdir}/usr/bin" -type f -exec mv {} {}3.4 \;
+
+ install -dm755 "${pkgdir}/etc/ld.so.conf.d"
+ echo -e "/usr/lib/\n/usr/lib/ffmpeg3.4/" > "${pkgdir}/etc/ld.so.conf.d/50-ffmpeg3.4.conf"
+
+ install -D -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/ffmpeg-full-rkmpp-build-fix.patch b/ffmpeg-full-rkmpp-build-fix.patch
new file mode 100644
index 000000000000..938affa0e2c3
--- /dev/null
+++ b/ffmpeg-full-rkmpp-build-fix.patch
@@ -0,0 +1,78 @@
+From: LongChair <longchair@hotmail.com>
+Date: Sat, 6 Jan 2018 08:36:58 +0000 (+0100)
+Subject: avcodec/rkmpp : Fix broken build due to missing control operation
+X-Git-Url: http://git.videolan.org/?p=ffmpeg.git;a=commitdiff_plain;h=c6f84106366c6f243a8b07dbffcc7880009aa904
+
+avcodec/rkmpp : Fix broken build due to missing control operation
+
+This patch is taking care of https://trac.ffmpeg.org/ticket/6834.
+It seems that one of the control operations that was available to get
+the free decoders input slots was removed.
+
+There is another control operation to retrieve the used slots. Given
+that the input slot count is hardcoded to 4 in mpp at this point,
+replacing the old control operation by the other one.
+
+This was tested on Rockchip ROCK64.
+
+Signed-off-by: wm4 <nfxjfg@googlemail.com>
+---
+
+diff -Naurp a/configure b/configure
+--- a/configure 2017-12-10 19:35:18.000000000 -0200
++++ b/configure 2018-01-06 23:27:24.057673297 -0200
+@@ -6077,10 +6077,8 @@ enabled openssl && { use_pkg_c
+ check_lib openssl openssl/ssl.h SSL_library_init -lssl32 -leay32 ||
+ check_lib openssl openssl/ssl.h SSL_library_init -lssl -lcrypto -lws2_32 -lgdi32 ||
+ die "ERROR: openssl not found"; }
+-enabled rkmpp && { { require_pkg_config rockchip_mpp rockchip_mpp rockchip/rk_mpi.h mpp_create ||
+- die "ERROR : Rockchip MPP was not found."; } &&
+- { check_func_headers rockchip/rk_mpi_cmd.h "MPP_DEC_GET_FREE_PACKET_SLOT_COUNT" ||
+- die "ERROR: Rockchip MPP is outdated, please get a more recent one."; } &&
++enabled rkmpp && { require_pkg_config rkmpp rockchip_mpp rockchip/rk_mpi.h mpp_create &&
++ require_pkg_config rockchip_mpp "rockchip_mpp >= 1.3.7" rockchip/rk_mpi.h mpp_create &&
+ { enabled libdrm ||
+ die "ERROR: rkmpp requires --enable-libdrm"; }
+ }
+diff --git a/libavcodec/rkmppdec.c b/libavcodec/rkmppdec.c
+index c57a6ded38..946b827918 100644
+--- a/libavcodec/rkmppdec.c
++++ b/libavcodec/rkmppdec.c
+@@ -40,6 +40,7 @@
+
+ #define RECEIVE_FRAME_TIMEOUT 100
+ #define FRAMEGROUP_MAX_FRAMES 16
++#define INPUT_MAX_PACKETS 4
+
+ typedef struct {
+ MppCtx ctx;
+@@ -515,16 +516,17 @@ static int rkmpp_receive_frame(AVCodecContext *avctx, AVFrame *frame)
+ RKMPPDecoder *decoder = (RKMPPDecoder *)rk_context->decoder_ref->data;
+ int ret = MPP_NOK;
+ AVPacket pkt = {0};
+- RK_S32 freeslots;
++ RK_S32 usedslots, freeslots;
+
+ if (!decoder->eos_reached) {
+ // we get the available slots in decoder
+- ret = decoder->mpi->control(decoder->ctx, MPP_DEC_GET_FREE_PACKET_SLOT_COUNT, &freeslots);
++ ret = decoder->mpi->control(decoder->ctx, MPP_DEC_GET_STREAM_COUNT, &usedslots);
+ if (ret != MPP_OK) {
+- av_log(avctx, AV_LOG_ERROR, "Failed to get decoder free slots (code = %d).\n", ret);
++ av_log(avctx, AV_LOG_ERROR, "Failed to get decoder used slots (code = %d).\n", ret);
+ return ret;
+ }
+
++ freeslots = INPUT_MAX_PACKETS - usedslots;
+ if (freeslots > 0) {
+ ret = ff_decode_get_packet(avctx, &pkt);
+ if (ret < 0 && ret != AVERROR_EOF) {
+@@ -541,7 +543,7 @@ static int rkmpp_receive_frame(AVCodecContext *avctx, AVFrame *frame)
+ }
+
+ // make sure we keep decoder full
+- if (freeslots > 1 && decoder->first_frame)
++ if (freeslots > 1)
+ return AVERROR(EAGAIN);
+ }
+
diff --git a/ffmpeg-full-rkmpp-remove-stream-start.patch b/ffmpeg-full-rkmpp-remove-stream-start.patch
new file mode 100644
index 000000000000..febff8e34d15
--- /dev/null
+++ b/ffmpeg-full-rkmpp-remove-stream-start.patch
@@ -0,0 +1,83 @@
+From: LongChair <longchair@hotmail.com>
+Date: Tue, 2 Jan 2018 11:38:01 +0000 (+0100)
+Subject: avcodec/rkmpp : remove stream start retries before first frame.
+X-Git-Url: http://git.videolan.org/?p=ffmpeg.git;a=commitdiff_plain;h=2ca65fc7b74444edd51d5803a2c1e05a801a6023
+
+avcodec/rkmpp : remove stream start retries before first frame.
+
+those were needed because of some odd mpp behavior that seems to have
+been fixed.
+
+Makes the code cleaner.
+
+Signed-off-by: wm4 <nfxjfg@googlemail.com>
+---
+
+diff --git a/libavcodec/rkmppdec.c b/libavcodec/rkmppdec.c
+index 946b827918..143d05bd51 100644
+--- a/libavcodec/rkmppdec.c
++++ b/libavcodec/rkmppdec.c
+@@ -47,7 +47,6 @@ typedef struct {
+ MppApi *mpi;
+ MppBufferGroup frame_group;
+
+- char first_frame;
+ char first_packet;
+ char eos_reached;
+
+@@ -329,28 +328,14 @@ static int rkmpp_retrieve_frame(AVCodecContext *avctx, AVFrame *frame)
+ MppBuffer buffer = NULL;
+ AVDRMFrameDescriptor *desc = NULL;
+ AVDRMLayerDescriptor *layer = NULL;
+- int retrycount = 0;
+ int mode;
+ MppFrameFormat mppformat;
+ uint32_t drmformat;
+
+- // on start of decoding, MPP can return -1, which is supposed to be expected
+- // this is due to some internal MPP init which is not completed, that will
+- // only happen in the first few frames queries, but should not be interpreted
+- // as an error, Therefore we need to retry a couple times when we get -1
+- // in order to let it time to complete it's init, then we sleep a bit between retries.
+-retry_get_frame:
+ ret = decoder->mpi->decode_get_frame(decoder->ctx, &mppframe);
+- if (ret != MPP_OK && ret != MPP_ERR_TIMEOUT && !decoder->first_frame) {
+- if (retrycount < 5) {
+- av_log(avctx, AV_LOG_DEBUG, "Failed to get a frame, retrying (code = %d, retrycount = %d)\n", ret, retrycount);
+- usleep(10000);
+- retrycount++;
+- goto retry_get_frame;
+- } else {
+- av_log(avctx, AV_LOG_ERROR, "Failed to get a frame from MPP (code = %d)\n", ret);
+- goto fail;
+- }
++ if (ret != MPP_OK && ret != MPP_ERR_TIMEOUT) {
++ av_log(avctx, AV_LOG_ERROR, "Failed to get a frame from MPP (code = %d)\n", ret);
++ goto fail;
+ }
+
+ if (mppframe) {
+@@ -366,7 +351,6 @@ retry_get_frame:
+ avctx->height = mpp_frame_get_height(mppframe);
+
+ decoder->mpi->control(decoder->ctx, MPP_DEC_SET_INFO_CHANGE_READY, NULL);
+- decoder->first_frame = 1;
+
+ av_buffer_unref(&decoder->frames_ref);
+
+@@ -480,7 +464,6 @@ retry_get_frame:
+ goto fail;
+ }
+
+- decoder->first_frame = 0;
+ return 0;
+ } else {
+ av_log(avctx, AV_LOG_ERROR, "Failed to retrieve the frame buffer, frame is dropped (code = %d)\n", ret);
+@@ -560,7 +543,6 @@ static void rkmpp_flush(AVCodecContext *avctx)
+
+ ret = decoder->mpi->reset(decoder->ctx);
+ if (ret == MPP_OK) {
+- decoder->first_frame = 1;
+ decoder->first_packet = 1;
+ } else
+ av_log(avctx, AV_LOG_ERROR, "Failed to reset MPI (code = %d)\n", ret);