diff options
author | Jesse Bryan | 2018-02-08 22:33:49 -0600 |
---|---|---|
committer | Jesse Bryan | 2018-02-08 22:33:49 -0600 |
commit | 7dfea84a5ceb01af7bdd1309691ec7f7f79e0cb3 (patch) | |
tree | 1aba6dc70fe2e1118e0b505bdd6f593fd1ad53a7 | |
download | aur-7dfea84a5ceb01af7bdd1309691ec7f7f79e0cb3.tar.gz |
initial commit
-rw-r--r-- | .SRCINFO | 113 | ||||
-rw-r--r-- | LICENSE | 9 | ||||
-rw-r--r-- | PKGBUILD | 178 | ||||
-rw-r--r-- | ffmpeg-full-rkmpp-build-fix.patch | 78 | ||||
-rw-r--r-- | ffmpeg-full-rkmpp-remove-stream-start.patch | 83 |
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); |