diff options
-rw-r--r-- | .SRCINFO | 20 | ||||
-rw-r--r-- | PKGBUILD | 41 | ||||
-rw-r--r-- | ffmpeg-full-rkmpp-build-fix.patch | 78 | ||||
-rw-r--r-- | ffmpeg-full-rkmpp-remove-stream-start.patch | 83 |
4 files changed, 31 insertions, 191 deletions
@@ -1,7 +1,7 @@ pkgbase = ffmpeg-full pkgdesc = Complete solution to record, convert and stream audio and video (all possible features including nvenc, qsv and libfdk-aac) - pkgver = 3.4.2 - pkgrel = 8 + pkgver = 4.0 + pkgrel = 1 url = http://www.ffmpeg.org/ arch = i686 arch = x86_64 @@ -9,6 +9,7 @@ pkgbase = ffmpeg-full makedepends = nasm makedepends = opencl-headers makedepends = blackmagic-decklink-sdk + makedepends = ffnvcodec-headers depends = glibc depends = alsa-lib depends = jack @@ -47,6 +48,7 @@ pkgbase = ffmpeg-full depends = snappy depends = libsoxr depends = speex + depends = srt depends = libssh depends = tesseract depends = libtheora @@ -65,11 +67,11 @@ pkgbase = ffmpeg-full depends = zimg depends = zeromq depends = zvbi + depends = lilv depends = xz depends = openal depends = opencl-icd-loader depends = mesa - depends = openssl depends = sndio depends = sdl2 depends = libx11 @@ -79,6 +81,8 @@ pkgbase = ffmpeg-full depends = libdrm depends = libvdpau depends = chromaprint-fftw + depends = aom-git + depends = codec2 depends = flite1-patched depends = libilbc depends = kvazaar @@ -114,18 +118,14 @@ pkgbase = ffmpeg-full conflicts = ffmpeg-full-git conflicts = ffmpeg-semifull-git conflicts = ffmpeg-qsv-git - source = https://ffmpeg.org/releases/ffmpeg-3.4.2.tar.xz - source = ffmpeg-full-rkmpp-build-fix.patch - source = ffmpeg-full-rkmpp-remove-stream-start.patch + source = https://ffmpeg.org/releases/ffmpeg-4.0.tar.xz source = LICENSE - sha256sums = 2b92e9578ef8b3e49eeab229e69305f5f4cbc1fdaa22e927fc7fca18acccd740 - sha256sums = 142923fd02851343bfbfd31b201ba014dced8a8c8898373c72d71d30d59f5851 - sha256sums = cac8577126c3e49f8c915fa289f3f5aa624dc55f897b8b7a5613191bcfa9c097 + sha256sums = ed945daf40b124e77a685893cc025d086f638bc703183460aff49508edb3a43f sha256sums = 04a7176400907fd7db0d69116b99de49e582a6e176b3bfb36a03e50a4cb26a36 depends_x86_64 = cuda depends_x86_64 = nvidia-utils depends_x86_64 = intel-media-sdk - makedepends_x86_64 = vmaf + makedepends_x86_64 = vmaf-git pkgname = ffmpeg-full @@ -3,8 +3,8 @@ pkgname=ffmpeg-full _srcname=ffmpeg -pkgver=3.4.2 -pkgrel=8 +pkgver=4.0 +pkgrel=1 pkgdesc='Complete solution to record, convert and stream audio and video (all possible features including nvenc, qsv and libfdk-aac)' arch=('i686' 'x86_64') url='http://www.ffmpeg.org/' @@ -16,14 +16,14 @@ depends=( 'libbluray' 'libbs2b' 'libcaca' 'celt' 'libcdio-paranoia' 'libdc1394' 'libavc1394' 'libfdk-aac' 'fontconfig' 'freetype2' 'fribidi' 'libgme' 'gsm' 'libiec61883' 'libmodplug' 'lame' 'opencore-amr' 'openjpeg2' 'opus' 'pulseaudio' - 'librsvg' 'rubberband' 'rtmpdump' 'smbclient' 'snappy' 'libsoxr' 'speex' + 'librsvg' 'rubberband' 'rtmpdump' 'smbclient' 'snappy' 'libsoxr' 'speex' 'srt' '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' - 'sndio' 'sdl2' 'libx11' 'zlib' 'libomxil-bellagio' 'libva' 'libdrm' 'libvdpau' + 'zimg' 'zeromq' 'zvbi' 'lilv' 'xz' 'openal' 'opencl-icd-loader' 'mesa' 'sndio' + 'sdl2' 'libx11' 'zlib' 'libomxil-bellagio' 'libva' 'libdrm' 'libvdpau' # AUR: - 'chromaprint-fftw' 'flite1-patched' 'libilbc' 'kvazaar' 'openh264' - 'libopenmpt-svn' 'shine' 'vo-amrwbenc' 'xavs' 'ndi-sdk' 'libmysofa' + 'chromaprint-fftw' 'aom-git' 'codec2' 'flite1-patched' 'libilbc' 'kvazaar' + 'openh264' 'libopenmpt-svn' 'shine' 'vo-amrwbenc' 'xavs' 'ndi-sdk' 'libmysofa' 'rockchip-mpp' ) depends_x86_64=( @@ -36,11 +36,11 @@ makedepends=( # official repositories: 'nasm' 'opencl-headers' # AUR: - 'blackmagic-decklink-sdk' + 'blackmagic-decklink-sdk' 'ffnvcodec-headers' ) makedepends_x86_64=( # AUR: - 'vmaf' + 'vmaf-git' ) provides=( 'ffmpeg' 'ffmpeg-full-nvenc' 'ffmpeg-nvenc' 'ffmpeg-libfdk_aac' 'ffmpeg-decklink' @@ -53,12 +53,8 @@ conflicts=( 'ffmpeg-git' 'ffmpeg-full-git' 'ffmpeg-semifull-git' 'ffmpeg-qsv-git' ) source=("https://ffmpeg.org/releases/ffmpeg-${pkgver}.tar.xz" - 'ffmpeg-full-rkmpp-build-fix.patch' - 'ffmpeg-full-rkmpp-remove-stream-start.patch' 'LICENSE') -sha256sums=('2b92e9578ef8b3e49eeab229e69305f5f4cbc1fdaa22e927fc7fca18acccd740' - '142923fd02851343bfbfd31b201ba014dced8a8c8898373c72d71d30d59f5851' - 'cac8577126c3e49f8c915fa289f3f5aa624dc55f897b8b7a5613191bcfa9c097' +sha256sums=('ed945daf40b124e77a685893cc025d086f638bc703183460aff49508edb3a43f' '04a7176400907fd7db0d69116b99de49e582a6e176b3bfb36a03e50a4cb26a36') prepare() { @@ -67,9 +63,6 @@ prepare() { # strictly specifying nvcc path is needed if package is installing # cuda for the first time (nvcc path will be in $PATH only after relogin) sed -i "s|^nvcc_default=.*|nvcc_default='/opt/cuda/bin/nvcc'|" configure - - patch -Np1 -i "${srcdir}/ffmpeg-full-rkmpp-build-fix.patch" - patch -Np1 -i "${srcdir}/ffmpeg-full-rkmpp-remove-stream-start.patch" } build() { @@ -102,6 +95,7 @@ build() { --prefix='/usr' \ --extra-cflags="$_cflags" \ --extra-ldflags="$_ldflags" \ + --extra-libs='-lpthread' \ \ --disable-rpath \ --enable-gpl \ @@ -121,14 +115,15 @@ build() { --enable-gmp \ --enable-gnutls \ --enable-iconv \ - --enable-jack \ --enable-ladspa \ + --enable-libaom \ --enable-libass \ --enable-libbluray \ --enable-libbs2b \ --enable-libcaca \ --enable-libcelt \ --enable-libcdio \ + --enable-libcodec2 \ --enable-libdc1394 \ --enable-libfdk-aac \ --enable-libflite \ @@ -139,6 +134,7 @@ build() { --enable-libgsm \ --enable-libiec61883 \ --enable-libilbc \ + --enable-libjack \ --enable-libkvazaar \ --enable-libmodplug \ --enable-libmp3lame \ @@ -158,9 +154,11 @@ build() { --enable-libsnappy \ --enable-libsoxr \ --enable-libspeex \ + --enable-libsrt \ --enable-libssh \ --enable-libtesseract \ --enable-libtheora \ + --disable-libtls \ --enable-libtwolame \ --enable-libv4l2 \ --enable-libvidstab \ @@ -182,6 +180,7 @@ build() { --enable-libzimg \ --enable-libzmq \ --enable-libzvbi \ + --enable-lv2 \ --enable-lzma \ --enable-decklink \ --enable-libndi_newtek \ @@ -189,22 +188,24 @@ build() { --enable-openal \ --enable-opencl \ --enable-opengl \ - --enable-openssl \ + --disable-openssl \ --enable-sndio \ --enable-sdl2 \ --enable-xlib \ --enable-zlib \ \ - --enable-cuda \ $_cudasdk \ --enable-cuvid \ + --enable-ffnvcodec \ --enable-libdrm \ $_libmfx \ $_libnpp \ + --enable-nvdec \ --enable-nvenc \ --enable-omx \ --enable-omx-rpi \ --enable-rkmpp \ + --enable-v4l2-m2m \ --enable-vaapi \ --enable-vdpau diff --git a/ffmpeg-full-rkmpp-build-fix.patch b/ffmpeg-full-rkmpp-build-fix.patch deleted file mode 100644 index 938affa0e2c3..000000000000 --- a/ffmpeg-full-rkmpp-build-fix.patch +++ /dev/null @@ -1,78 +0,0 @@ -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 deleted file mode 100644 index febff8e34d15..000000000000 --- a/ffmpeg-full-rkmpp-remove-stream-start.patch +++ /dev/null @@ -1,83 +0,0 @@ -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); |