mirror of
https://github.com/motioneye-project/motioneyeos.git
synced 2025-07-28 13:46:32 +00:00
ffmpeg: fix upgrade 4.1.4
This commit is contained in:
parent
ef90015cac
commit
cc5891feb2
@ -27,8 +27,8 @@ index c86e578..76523c8 100755
|
|||||||
qsvdec_select="qsv"
|
qsvdec_select="qsv"
|
||||||
qsvenc_select="qsv"
|
qsvenc_select="qsv"
|
||||||
vaapi_encode_deps="vaapi"
|
vaapi_encode_deps="vaapi"
|
||||||
-v4l2_m2m_deps_any="linux_videodev2_h"
|
-v4l2_m2m_deps="linux_videodev2_h sem_timedwait"
|
||||||
+v4l2_m2m_deps="linux_videodev2_h pthreads"
|
+v4l2_m2m_deps="linux_videodev2_h sem_timedwait pthreads"
|
||||||
|
|
||||||
hwupload_cuda_filter_deps="cuda"
|
hwupload_cuda_filter_deps="cuda"
|
||||||
scale_npp_filter_deps="cuda libnpp"
|
scale_npp_filter_deps="cuda libnpp"
|
||||||
|
@ -1,100 +0,0 @@
|
|||||||
From c60fb550302878aba7e86037451f7996e8069289 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Martin=20Storsj=C3=B6?= <martin@martin.st>
|
|
||||||
Date: Fri, 31 Aug 2018 14:25:30 +0300
|
|
||||||
Subject: [PATCH] libfdk-aacenc: Fix building with libfdk-aac v2
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
When flushing the encoder, we now need to provide non-null buffer
|
|
||||||
parameters for everything, even if they are unused.
|
|
||||||
|
|
||||||
The encoderDelay parameter has been replaced by two, nDelay and
|
|
||||||
nDelayCore.
|
|
||||||
|
|
||||||
Downloaded from
|
|
||||||
http://git.videolan.org/?p=ffmpeg.git;a=commitdiff;h=141c960e21d2860e354f9b90df136184dd00a9a8
|
|
||||||
|
|
||||||
Signed-off-by: Martin Storsjö <martin@martin.st>
|
|
||||||
[Bernd: rebased for ffmpeg 3.4.5]
|
|
||||||
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
|
|
||||||
---
|
|
||||||
libavcodec/libfdk-aacenc.c | 34 +++++++++++++++++++++++++---------
|
|
||||||
1 file changed, 25 insertions(+), 9 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/libavcodec/libfdk-aacenc.c b/libavcodec/libfdk-aacenc.c
|
|
||||||
index 0e2051b468..f5adb407ed 100644
|
|
||||||
--- a/libavcodec/libfdk-aacenc.c
|
|
||||||
+++ b/libavcodec/libfdk-aacenc.c
|
|
||||||
@@ -26,6 +26,11 @@
|
|
||||||
#include "audio_frame_queue.h"
|
|
||||||
#include "internal.h"
|
|
||||||
|
|
||||||
+#define FDKENC_VER_AT_LEAST(vl0, vl1) \
|
|
||||||
+ (defined(AACENCODER_LIB_VL0) && \
|
|
||||||
+ ((AACENCODER_LIB_VL0 > vl0) || \
|
|
||||||
+ (AACENCODER_LIB_VL0 == vl0 && AACENCODER_LIB_VL1 >= vl1)))
|
|
||||||
+
|
|
||||||
typedef struct AACContext {
|
|
||||||
const AVClass *class;
|
|
||||||
HANDLE_AACENCODER handle;
|
|
||||||
@@ -286,7 +291,11 @@ static av_cold int aac_encode_init(AVCodecContext *avctx)
|
|
||||||
}
|
|
||||||
|
|
||||||
avctx->frame_size = info.frameLength;
|
|
||||||
+#if FDKENC_VER_AT_LEAST(4, 0)
|
|
||||||
+ avctx->initial_padding = info.nDelay;
|
|
||||||
+#else
|
|
||||||
avctx->initial_padding = info.encoderDelay;
|
|
||||||
+#endif
|
|
||||||
ff_af_queue_init(avctx, &s->afq);
|
|
||||||
|
|
||||||
if (avctx->flags & AV_CODEC_FLAG_GLOBAL_HEADER) {
|
|
||||||
@@ -319,28 +328,35 @@ static int aac_encode_frame(AVCodecContext *avctx, AVPacket *avpkt,
|
|
||||||
int out_buffer_size, out_buffer_element_size;
|
|
||||||
void *in_ptr, *out_ptr;
|
|
||||||
int ret;
|
|
||||||
+ uint8_t dummy_buf[1];
|
|
||||||
AACENC_ERROR err;
|
|
||||||
|
|
||||||
/* handle end-of-stream small frame and flushing */
|
|
||||||
if (!frame) {
|
|
||||||
+ /* Must be a non-null pointer, even if it's a dummy. We could use
|
|
||||||
+ * the address of anything else on the stack as well. */
|
|
||||||
+ in_ptr = dummy_buf;
|
|
||||||
+ in_buffer_size = 0;
|
|
||||||
+
|
|
||||||
in_args.numInSamples = -1;
|
|
||||||
} else {
|
|
||||||
- in_ptr = frame->data[0];
|
|
||||||
- in_buffer_size = 2 * avctx->channels * frame->nb_samples;
|
|
||||||
- in_buffer_element_size = 2;
|
|
||||||
+ in_ptr = frame->data[0];
|
|
||||||
+ in_buffer_size = 2 * avctx->channels * frame->nb_samples;
|
|
||||||
|
|
||||||
- in_args.numInSamples = avctx->channels * frame->nb_samples;
|
|
||||||
- in_buf.numBufs = 1;
|
|
||||||
- in_buf.bufs = &in_ptr;
|
|
||||||
- in_buf.bufferIdentifiers = &in_buffer_identifier;
|
|
||||||
- in_buf.bufSizes = &in_buffer_size;
|
|
||||||
- in_buf.bufElSizes = &in_buffer_element_size;
|
|
||||||
+ in_args.numInSamples = avctx->channels * frame->nb_samples;
|
|
||||||
|
|
||||||
/* add current frame to the queue */
|
|
||||||
if ((ret = ff_af_queue_add(&s->afq, frame)) < 0)
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ in_buffer_element_size = 2;
|
|
||||||
+ in_buf.numBufs = 1;
|
|
||||||
+ in_buf.bufs = &in_ptr;
|
|
||||||
+ in_buf.bufferIdentifiers = &in_buffer_identifier;
|
|
||||||
+ in_buf.bufSizes = &in_buffer_size;
|
|
||||||
+ in_buf.bufElSizes = &in_buffer_element_size;
|
|
||||||
+
|
|
||||||
/* The maximum packet size is 6144 bits aka 768 bytes per channel. */
|
|
||||||
if ((ret = ff_alloc_packet2(avctx, avpkt, FFMAX(8192, 768 * avctx->channels), 0)) < 0)
|
|
||||||
return ret;
|
|
||||||
--
|
|
||||||
2.20.1
|
|
||||||
|
|
@ -1,99 +0,0 @@
|
|||||||
From 48be4c81e0ad081edab65e133e6e1bdec7de3b55 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Martin=20Storsj=C3=B6?= <martin@martin.st>
|
|
||||||
Date: Tue, 4 Sep 2018 08:29:37 +0300
|
|
||||||
Subject: [PATCH] libfdk-aac: Consistently use a proper version check macro for
|
|
||||||
detecting features
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
libfdk-aac: Consistently use a proper version check macro for detecting features
|
|
||||||
|
|
||||||
The previous version checks checked explicitly for the version
|
|
||||||
where the version define was added to the installed headers,
|
|
||||||
making an "#ifdef AACDECODER_LIB_VL0" enough. Now that we have
|
|
||||||
a need for more diverse version checks than this, convert all checks
|
|
||||||
to such checks.
|
|
||||||
|
|
||||||
Downloaded from
|
|
||||||
http://git.videolan.org/?p=ffmpeg.git;a=commitdiff;h=ffb9b7a6bab6c6bfd3dd9a7c32e3724209824999
|
|
||||||
|
|
||||||
Signed-off-by: Martin Storsjö <martin@martin.st>
|
|
||||||
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
|
|
||||||
---
|
|
||||||
libavcodec/libfdk-aacdec.c | 13 ++++++++-----
|
|
||||||
libavcodec/libfdk-aacenc.c | 6 +++---
|
|
||||||
2 files changed, 11 insertions(+), 8 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/libavcodec/libfdk-aacdec.c b/libavcodec/libfdk-aacdec.c
|
|
||||||
index 2857b9453f..ef51184ebd 100644
|
|
||||||
--- a/libavcodec/libfdk-aacdec.c
|
|
||||||
+++ b/libavcodec/libfdk-aacdec.c
|
|
||||||
@@ -25,9 +25,12 @@
|
|
||||||
#include "avcodec.h"
|
|
||||||
#include "internal.h"
|
|
||||||
|
|
||||||
-/* The version macro is introduced the same time as the setting enum was
|
|
||||||
- * changed, so this check should suffice. */
|
|
||||||
-#ifndef AACDECODER_LIB_VL0
|
|
||||||
+#define FDKDEC_VER_AT_LEAST(vl0, vl1) \
|
|
||||||
+ (defined(AACDECODER_LIB_VL0) && \
|
|
||||||
+ ((AACDECODER_LIB_VL0 > vl0) || \
|
|
||||||
+ (AACDECODER_LIB_VL0 == vl0 && AACDECODER_LIB_VL1 >= vl1)))
|
|
||||||
+
|
|
||||||
+#if !FDKDEC_VER_AT_LEAST(2, 5) // < 2.5.10
|
|
||||||
#define AAC_PCM_MAX_OUTPUT_CHANNELS AAC_PCM_OUTPUT_CHANNELS
|
|
||||||
#endif
|
|
||||||
|
|
||||||
@@ -72,7 +75,7 @@ static const AVOption fdk_aac_dec_options[] = {
|
|
||||||
OFFSET(drc_level), AV_OPT_TYPE_INT, { .i64 = -1}, -1, 127, AD, NULL },
|
|
||||||
{ "drc_heavy", "Dynamic Range Control: heavy compression, where [1] is on (RF mode) and [0] is off",
|
|
||||||
OFFSET(drc_heavy), AV_OPT_TYPE_INT, { .i64 = -1}, -1, 1, AD, NULL },
|
|
||||||
-#ifdef AACDECODER_LIB_VL0
|
|
||||||
+#if FDKDEC_VER_AT_LEAST(2, 5) // 2.5.10
|
|
||||||
{ "level_limit", "Signal level limiting", OFFSET(level_limit), AV_OPT_TYPE_INT, { .i64 = 0 }, -1, 1, AD },
|
|
||||||
#endif
|
|
||||||
{ NULL }
|
|
||||||
@@ -293,7 +296,7 @@ static av_cold int fdk_aac_decode_init(AVCodecContext *avctx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
-#ifdef AACDECODER_LIB_VL0
|
|
||||||
+#if FDKDEC_VER_AT_LEAST(2, 5) // 2.5.10
|
|
||||||
if (aacDecoder_SetParam(s->handle, AAC_PCM_LIMITER_ENABLE, s->level_limit) != AAC_DEC_OK) {
|
|
||||||
av_log(avctx, AV_LOG_ERROR, "Unable to set in signal level limiting in the decoder\n");
|
|
||||||
return AVERROR_UNKNOWN;
|
|
||||||
diff --git a/libavcodec/libfdk-aacenc.c b/libavcodec/libfdk-aacenc.c
|
|
||||||
index f5adb407ed..91dcb5a1b9 100644
|
|
||||||
--- a/libavcodec/libfdk-aacenc.c
|
|
||||||
+++ b/libavcodec/libfdk-aacenc.c
|
|
||||||
@@ -156,7 +156,7 @@ static av_cold int aac_encode_init(AVCodecContext *avctx)
|
|
||||||
case 6: mode = MODE_1_2_2_1; sce = 2; cpe = 2; break;
|
|
||||||
/* The version macro is introduced the same time as the 7.1 support, so this
|
|
||||||
should suffice. */
|
|
||||||
-#ifdef AACENCODER_LIB_VL0
|
|
||||||
+#if FDKENC_VER_AT_LEAST(3, 4) // 3.4.12
|
|
||||||
case 8:
|
|
||||||
sce = 2;
|
|
||||||
cpe = 3;
|
|
||||||
@@ -291,7 +291,7 @@ static av_cold int aac_encode_init(AVCodecContext *avctx)
|
|
||||||
}
|
|
||||||
|
|
||||||
avctx->frame_size = info.frameLength;
|
|
||||||
-#if FDKENC_VER_AT_LEAST(4, 0)
|
|
||||||
+#if FDKENC_VER_AT_LEAST(4, 0) // 4.0.0
|
|
||||||
avctx->initial_padding = info.nDelay;
|
|
||||||
#else
|
|
||||||
avctx->initial_padding = info.encoderDelay;
|
|
||||||
@@ -412,7 +412,7 @@ static const uint64_t aac_channel_layout[] = {
|
|
||||||
AV_CH_LAYOUT_4POINT0,
|
|
||||||
AV_CH_LAYOUT_5POINT0_BACK,
|
|
||||||
AV_CH_LAYOUT_5POINT1_BACK,
|
|
||||||
-#ifdef AACENCODER_LIB_VL0
|
|
||||||
+#if FDKENC_VER_AT_LEAST(3, 4) // 3.4.12
|
|
||||||
AV_CH_LAYOUT_7POINT1_WIDE_BACK,
|
|
||||||
AV_CH_LAYOUT_7POINT1,
|
|
||||||
#endif
|
|
||||||
--
|
|
||||||
2.20.1
|
|
||||||
|
|
@ -1,72 +0,0 @@
|
|||||||
From 452746d80fdaaaf1b546860eb78449c6de3678d7 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Martin=20Storsj=C3=B6?= <martin@martin.st>
|
|
||||||
Date: Wed, 12 Sep 2018 20:03:12 +0300
|
|
||||||
Subject: [PATCH] libfdk-aac: Don't use defined() in a #define
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
libfdk-aac: Don't use defined() in a #define
|
|
||||||
|
|
||||||
MSVC expands the preprocessor directives differently, making the
|
|
||||||
version check fail in the previous form.
|
|
||||||
|
|
||||||
Clang can warn about this with -Wexpansion-to-defined (not currently
|
|
||||||
enabled by default):
|
|
||||||
warning: macro expansion producing 'defined' has undefined behavior [-Wexpansion-to-defined]
|
|
||||||
|
|
||||||
Downloaded from
|
|
||||||
http://git.videolan.org/?p=ffmpeg.git;a=commitdiff;h=2a9e1c122eed66be1b26b747342b848300b226c7
|
|
||||||
|
|
||||||
Signed-off-by: Martin Storsjö <martin@martin.st>
|
|
||||||
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
|
|
||||||
---
|
|
||||||
libavcodec/libfdk-aacdec.c | 9 ++++++---
|
|
||||||
libavcodec/libfdk-aacenc.c | 9 ++++++---
|
|
||||||
2 files changed, 12 insertions(+), 6 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/libavcodec/libfdk-aacdec.c b/libavcodec/libfdk-aacdec.c
|
|
||||||
index ef51184ebd..0fbab36463 100644
|
|
||||||
--- a/libavcodec/libfdk-aacdec.c
|
|
||||||
+++ b/libavcodec/libfdk-aacdec.c
|
|
||||||
@@ -25,10 +25,13 @@
|
|
||||||
#include "avcodec.h"
|
|
||||||
#include "internal.h"
|
|
||||||
|
|
||||||
+#ifdef AACDECODER_LIB_VL0
|
|
||||||
#define FDKDEC_VER_AT_LEAST(vl0, vl1) \
|
|
||||||
- (defined(AACDECODER_LIB_VL0) && \
|
|
||||||
- ((AACDECODER_LIB_VL0 > vl0) || \
|
|
||||||
- (AACDECODER_LIB_VL0 == vl0 && AACDECODER_LIB_VL1 >= vl1)))
|
|
||||||
+ ((AACDECODER_LIB_VL0 > vl0) || \
|
|
||||||
+ (AACDECODER_LIB_VL0 == vl0 && AACDECODER_LIB_VL1 >= vl1))
|
|
||||||
+#else
|
|
||||||
+#define FDKDEC_VER_AT_LEAST(vl0, vl1) 0
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
#if !FDKDEC_VER_AT_LEAST(2, 5) // < 2.5.10
|
|
||||||
#define AAC_PCM_MAX_OUTPUT_CHANNELS AAC_PCM_OUTPUT_CHANNELS
|
|
||||||
diff --git a/libavcodec/libfdk-aacenc.c b/libavcodec/libfdk-aacenc.c
|
|
||||||
index 91dcb5a1b9..8349e56dcb 100644
|
|
||||||
--- a/libavcodec/libfdk-aacenc.c
|
|
||||||
+++ b/libavcodec/libfdk-aacenc.c
|
|
||||||
@@ -26,10 +26,13 @@
|
|
||||||
#include "audio_frame_queue.h"
|
|
||||||
#include "internal.h"
|
|
||||||
|
|
||||||
+#ifdef AACENCODER_LIB_VL0
|
|
||||||
#define FDKENC_VER_AT_LEAST(vl0, vl1) \
|
|
||||||
- (defined(AACENCODER_LIB_VL0) && \
|
|
||||||
- ((AACENCODER_LIB_VL0 > vl0) || \
|
|
||||||
- (AACENCODER_LIB_VL0 == vl0 && AACENCODER_LIB_VL1 >= vl1)))
|
|
||||||
+ ((AACENCODER_LIB_VL0 > vl0) || \
|
|
||||||
+ (AACENCODER_LIB_VL0 == vl0 && AACENCODER_LIB_VL1 >= vl1))
|
|
||||||
+#else
|
|
||||||
+#define FDKENC_VER_AT_LEAST(vl0, vl1) 0
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
typedef struct AACContext {
|
|
||||||
const AVClass *class;
|
|
||||||
--
|
|
||||||
2.20.1
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user