Updated to version 4.0
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
pkgbase = ffmpeg-full
|
pkgbase = ffmpeg-full
|
||||||
pkgdesc = Complete solution to record, convert and stream audio and video (all possible features including nvenc, qsv and libfdk-aac)
|
pkgdesc = Complete solution to record, convert and stream audio and video (all possible features including nvenc, qsv and libfdk-aac)
|
||||||
pkgver = 3.4.2
|
pkgver = 4.0
|
||||||
pkgrel = 8
|
pkgrel = 1
|
||||||
url = http://www.ffmpeg.org/
|
url = http://www.ffmpeg.org/
|
||||||
arch = i686
|
arch = i686
|
||||||
arch = x86_64
|
arch = x86_64
|
||||||
@@ -9,6 +9,7 @@ pkgbase = ffmpeg-full
|
|||||||
makedepends = nasm
|
makedepends = nasm
|
||||||
makedepends = opencl-headers
|
makedepends = opencl-headers
|
||||||
makedepends = blackmagic-decklink-sdk
|
makedepends = blackmagic-decklink-sdk
|
||||||
|
makedepends = ffnvcodec-headers
|
||||||
depends = glibc
|
depends = glibc
|
||||||
depends = alsa-lib
|
depends = alsa-lib
|
||||||
depends = jack
|
depends = jack
|
||||||
@@ -47,6 +48,7 @@ pkgbase = ffmpeg-full
|
|||||||
depends = snappy
|
depends = snappy
|
||||||
depends = libsoxr
|
depends = libsoxr
|
||||||
depends = speex
|
depends = speex
|
||||||
|
depends = srt
|
||||||
depends = libssh
|
depends = libssh
|
||||||
depends = tesseract
|
depends = tesseract
|
||||||
depends = libtheora
|
depends = libtheora
|
||||||
@@ -65,11 +67,11 @@ pkgbase = ffmpeg-full
|
|||||||
depends = zimg
|
depends = zimg
|
||||||
depends = zeromq
|
depends = zeromq
|
||||||
depends = zvbi
|
depends = zvbi
|
||||||
|
depends = lilv
|
||||||
depends = xz
|
depends = xz
|
||||||
depends = openal
|
depends = openal
|
||||||
depends = opencl-icd-loader
|
depends = opencl-icd-loader
|
||||||
depends = mesa
|
depends = mesa
|
||||||
depends = openssl
|
|
||||||
depends = sndio
|
depends = sndio
|
||||||
depends = sdl2
|
depends = sdl2
|
||||||
depends = libx11
|
depends = libx11
|
||||||
@@ -79,6 +81,8 @@ pkgbase = ffmpeg-full
|
|||||||
depends = libdrm
|
depends = libdrm
|
||||||
depends = libvdpau
|
depends = libvdpau
|
||||||
depends = chromaprint-fftw
|
depends = chromaprint-fftw
|
||||||
|
depends = aom-git
|
||||||
|
depends = codec2
|
||||||
depends = flite1-patched
|
depends = flite1-patched
|
||||||
depends = libilbc
|
depends = libilbc
|
||||||
depends = kvazaar
|
depends = kvazaar
|
||||||
@@ -114,18 +118,14 @@ pkgbase = ffmpeg-full
|
|||||||
conflicts = ffmpeg-full-git
|
conflicts = ffmpeg-full-git
|
||||||
conflicts = ffmpeg-semifull-git
|
conflicts = ffmpeg-semifull-git
|
||||||
conflicts = ffmpeg-qsv-git
|
conflicts = ffmpeg-qsv-git
|
||||||
source = https://ffmpeg.org/releases/ffmpeg-3.4.2.tar.xz
|
source = https://ffmpeg.org/releases/ffmpeg-4.0.tar.xz
|
||||||
source = ffmpeg-full-rkmpp-build-fix.patch
|
|
||||||
source = ffmpeg-full-rkmpp-remove-stream-start.patch
|
|
||||||
source = LICENSE
|
source = LICENSE
|
||||||
sha256sums = 2b92e9578ef8b3e49eeab229e69305f5f4cbc1fdaa22e927fc7fca18acccd740
|
sha256sums = ed945daf40b124e77a685893cc025d086f638bc703183460aff49508edb3a43f
|
||||||
sha256sums = 142923fd02851343bfbfd31b201ba014dced8a8c8898373c72d71d30d59f5851
|
|
||||||
sha256sums = cac8577126c3e49f8c915fa289f3f5aa624dc55f897b8b7a5613191bcfa9c097
|
|
||||||
sha256sums = 04a7176400907fd7db0d69116b99de49e582a6e176b3bfb36a03e50a4cb26a36
|
sha256sums = 04a7176400907fd7db0d69116b99de49e582a6e176b3bfb36a03e50a4cb26a36
|
||||||
depends_x86_64 = cuda
|
depends_x86_64 = cuda
|
||||||
depends_x86_64 = nvidia-utils
|
depends_x86_64 = nvidia-utils
|
||||||
depends_x86_64 = intel-media-sdk
|
depends_x86_64 = intel-media-sdk
|
||||||
makedepends_x86_64 = vmaf
|
makedepends_x86_64 = vmaf-git
|
||||||
|
|
||||||
pkgname = ffmpeg-full
|
pkgname = ffmpeg-full
|
||||||
|
|
||||||
|
|||||||
@@ -3,8 +3,8 @@
|
|||||||
|
|
||||||
pkgname=ffmpeg-full
|
pkgname=ffmpeg-full
|
||||||
_srcname=ffmpeg
|
_srcname=ffmpeg
|
||||||
pkgver=3.4.2
|
pkgver=4.0
|
||||||
pkgrel=8
|
pkgrel=1
|
||||||
pkgdesc='Complete solution to record, convert and stream audio and video (all possible features including nvenc, qsv and libfdk-aac)'
|
pkgdesc='Complete solution to record, convert and stream audio and video (all possible features including nvenc, qsv and libfdk-aac)'
|
||||||
arch=('i686' 'x86_64')
|
arch=('i686' 'x86_64')
|
||||||
url='http://www.ffmpeg.org/'
|
url='http://www.ffmpeg.org/'
|
||||||
@@ -16,14 +16,14 @@ depends=(
|
|||||||
'libbluray' 'libbs2b' 'libcaca' 'celt' 'libcdio-paranoia' 'libdc1394'
|
'libbluray' 'libbs2b' 'libcaca' 'celt' 'libcdio-paranoia' 'libdc1394'
|
||||||
'libavc1394' 'libfdk-aac' 'fontconfig' 'freetype2' 'fribidi' 'libgme' 'gsm'
|
'libavc1394' 'libfdk-aac' 'fontconfig' 'freetype2' 'fribidi' 'libgme' 'gsm'
|
||||||
'libiec61883' 'libmodplug' 'lame' 'opencore-amr' 'openjpeg2' 'opus' 'pulseaudio'
|
'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'
|
'libssh' 'tesseract' 'libtheora' 'twolame' 'v4l-utils' 'vid.stab' 'libvorbis'
|
||||||
'libvpx' 'wavpack' 'libwebp' 'libx264.so' 'x265' 'libxcb' 'xvidcore' 'libxml2'
|
'libvpx' 'wavpack' 'libwebp' 'libx264.so' 'x265' 'libxcb' 'xvidcore' 'libxml2'
|
||||||
'zimg' 'zeromq' 'zvbi' 'xz' 'openal' 'opencl-icd-loader' 'mesa' 'openssl'
|
'zimg' 'zeromq' 'zvbi' 'lilv' 'xz' 'openal' 'opencl-icd-loader' 'mesa' 'sndio'
|
||||||
'sndio' 'sdl2' 'libx11' 'zlib' 'libomxil-bellagio' 'libva' 'libdrm' 'libvdpau'
|
'sdl2' 'libx11' 'zlib' 'libomxil-bellagio' 'libva' 'libdrm' 'libvdpau'
|
||||||
# AUR:
|
# AUR:
|
||||||
'chromaprint-fftw' 'flite1-patched' 'libilbc' 'kvazaar' 'openh264'
|
'chromaprint-fftw' 'aom-git' 'codec2' 'flite1-patched' 'libilbc' 'kvazaar'
|
||||||
'libopenmpt-svn' 'shine' 'vo-amrwbenc' 'xavs' 'ndi-sdk' 'libmysofa'
|
'openh264' 'libopenmpt-svn' 'shine' 'vo-amrwbenc' 'xavs' 'ndi-sdk' 'libmysofa'
|
||||||
'rockchip-mpp'
|
'rockchip-mpp'
|
||||||
)
|
)
|
||||||
depends_x86_64=(
|
depends_x86_64=(
|
||||||
@@ -36,11 +36,11 @@ makedepends=(
|
|||||||
# official repositories:
|
# official repositories:
|
||||||
'nasm' 'opencl-headers'
|
'nasm' 'opencl-headers'
|
||||||
# AUR:
|
# AUR:
|
||||||
'blackmagic-decklink-sdk'
|
'blackmagic-decklink-sdk' 'ffnvcodec-headers'
|
||||||
)
|
)
|
||||||
makedepends_x86_64=(
|
makedepends_x86_64=(
|
||||||
# AUR:
|
# AUR:
|
||||||
'vmaf'
|
'vmaf-git'
|
||||||
)
|
)
|
||||||
provides=(
|
provides=(
|
||||||
'ffmpeg' 'ffmpeg-full-nvenc' 'ffmpeg-nvenc' 'ffmpeg-libfdk_aac' 'ffmpeg-decklink'
|
'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'
|
'ffmpeg-git' 'ffmpeg-full-git' 'ffmpeg-semifull-git' 'ffmpeg-qsv-git'
|
||||||
)
|
)
|
||||||
source=("https://ffmpeg.org/releases/ffmpeg-${pkgver}.tar.xz"
|
source=("https://ffmpeg.org/releases/ffmpeg-${pkgver}.tar.xz"
|
||||||
'ffmpeg-full-rkmpp-build-fix.patch'
|
|
||||||
'ffmpeg-full-rkmpp-remove-stream-start.patch'
|
|
||||||
'LICENSE')
|
'LICENSE')
|
||||||
sha256sums=('2b92e9578ef8b3e49eeab229e69305f5f4cbc1fdaa22e927fc7fca18acccd740'
|
sha256sums=('ed945daf40b124e77a685893cc025d086f638bc703183460aff49508edb3a43f'
|
||||||
'142923fd02851343bfbfd31b201ba014dced8a8c8898373c72d71d30d59f5851'
|
|
||||||
'cac8577126c3e49f8c915fa289f3f5aa624dc55f897b8b7a5613191bcfa9c097'
|
|
||||||
'04a7176400907fd7db0d69116b99de49e582a6e176b3bfb36a03e50a4cb26a36')
|
'04a7176400907fd7db0d69116b99de49e582a6e176b3bfb36a03e50a4cb26a36')
|
||||||
|
|
||||||
prepare() {
|
prepare() {
|
||||||
@@ -67,9 +63,6 @@ prepare() {
|
|||||||
# strictly specifying nvcc path is needed if package is installing
|
# strictly specifying nvcc path is needed if package is installing
|
||||||
# cuda for the first time (nvcc path will be in $PATH only after relogin)
|
# 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
|
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() {
|
build() {
|
||||||
@@ -102,6 +95,7 @@ build() {
|
|||||||
--prefix='/usr' \
|
--prefix='/usr' \
|
||||||
--extra-cflags="$_cflags" \
|
--extra-cflags="$_cflags" \
|
||||||
--extra-ldflags="$_ldflags" \
|
--extra-ldflags="$_ldflags" \
|
||||||
|
--extra-libs='-lpthread' \
|
||||||
\
|
\
|
||||||
--disable-rpath \
|
--disable-rpath \
|
||||||
--enable-gpl \
|
--enable-gpl \
|
||||||
@@ -121,14 +115,15 @@ build() {
|
|||||||
--enable-gmp \
|
--enable-gmp \
|
||||||
--enable-gnutls \
|
--enable-gnutls \
|
||||||
--enable-iconv \
|
--enable-iconv \
|
||||||
--enable-jack \
|
|
||||||
--enable-ladspa \
|
--enable-ladspa \
|
||||||
|
--enable-libaom \
|
||||||
--enable-libass \
|
--enable-libass \
|
||||||
--enable-libbluray \
|
--enable-libbluray \
|
||||||
--enable-libbs2b \
|
--enable-libbs2b \
|
||||||
--enable-libcaca \
|
--enable-libcaca \
|
||||||
--enable-libcelt \
|
--enable-libcelt \
|
||||||
--enable-libcdio \
|
--enable-libcdio \
|
||||||
|
--enable-libcodec2 \
|
||||||
--enable-libdc1394 \
|
--enable-libdc1394 \
|
||||||
--enable-libfdk-aac \
|
--enable-libfdk-aac \
|
||||||
--enable-libflite \
|
--enable-libflite \
|
||||||
@@ -139,6 +134,7 @@ build() {
|
|||||||
--enable-libgsm \
|
--enable-libgsm \
|
||||||
--enable-libiec61883 \
|
--enable-libiec61883 \
|
||||||
--enable-libilbc \
|
--enable-libilbc \
|
||||||
|
--enable-libjack \
|
||||||
--enable-libkvazaar \
|
--enable-libkvazaar \
|
||||||
--enable-libmodplug \
|
--enable-libmodplug \
|
||||||
--enable-libmp3lame \
|
--enable-libmp3lame \
|
||||||
@@ -158,9 +154,11 @@ build() {
|
|||||||
--enable-libsnappy \
|
--enable-libsnappy \
|
||||||
--enable-libsoxr \
|
--enable-libsoxr \
|
||||||
--enable-libspeex \
|
--enable-libspeex \
|
||||||
|
--enable-libsrt \
|
||||||
--enable-libssh \
|
--enable-libssh \
|
||||||
--enable-libtesseract \
|
--enable-libtesseract \
|
||||||
--enable-libtheora \
|
--enable-libtheora \
|
||||||
|
--disable-libtls \
|
||||||
--enable-libtwolame \
|
--enable-libtwolame \
|
||||||
--enable-libv4l2 \
|
--enable-libv4l2 \
|
||||||
--enable-libvidstab \
|
--enable-libvidstab \
|
||||||
@@ -182,6 +180,7 @@ build() {
|
|||||||
--enable-libzimg \
|
--enable-libzimg \
|
||||||
--enable-libzmq \
|
--enable-libzmq \
|
||||||
--enable-libzvbi \
|
--enable-libzvbi \
|
||||||
|
--enable-lv2 \
|
||||||
--enable-lzma \
|
--enable-lzma \
|
||||||
--enable-decklink \
|
--enable-decklink \
|
||||||
--enable-libndi_newtek \
|
--enable-libndi_newtek \
|
||||||
@@ -189,22 +188,24 @@ build() {
|
|||||||
--enable-openal \
|
--enable-openal \
|
||||||
--enable-opencl \
|
--enable-opencl \
|
||||||
--enable-opengl \
|
--enable-opengl \
|
||||||
--enable-openssl \
|
--disable-openssl \
|
||||||
--enable-sndio \
|
--enable-sndio \
|
||||||
--enable-sdl2 \
|
--enable-sdl2 \
|
||||||
--enable-xlib \
|
--enable-xlib \
|
||||||
--enable-zlib \
|
--enable-zlib \
|
||||||
\
|
\
|
||||||
--enable-cuda \
|
|
||||||
$_cudasdk \
|
$_cudasdk \
|
||||||
--enable-cuvid \
|
--enable-cuvid \
|
||||||
|
--enable-ffnvcodec \
|
||||||
--enable-libdrm \
|
--enable-libdrm \
|
||||||
$_libmfx \
|
$_libmfx \
|
||||||
$_libnpp \
|
$_libnpp \
|
||||||
|
--enable-nvdec \
|
||||||
--enable-nvenc \
|
--enable-nvenc \
|
||||||
--enable-omx \
|
--enable-omx \
|
||||||
--enable-omx-rpi \
|
--enable-omx-rpi \
|
||||||
--enable-rkmpp \
|
--enable-rkmpp \
|
||||||
|
--enable-v4l2-m2m \
|
||||||
--enable-vaapi \
|
--enable-vaapi \
|
||||||
--enable-vdpau
|
--enable-vdpau
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -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);
|
|
||||||
Reference in New Issue
Block a user