Drop upstreamed libfdk-aac patches.
ffserver was removed in 4.0. ffmpeg does not have a replacement.
Signed-off-by: Ian Leonard <antonlacon@gmail.com>
comment "Profiles"
-config FFMPEG_CUSTOM_FFSERVER_SUPPORT
- bool "Include support for ffserver (FFmpeg streaming server)"
- select FFMPEG_CUSTOM_MUXER_ffm
- select FFMPEG_CUSTOM_DEMUXER_ffm
- select FFMPEG_CUSTOM_DEMUXER_rtsp
- select FFMPEG_CUSTOM_PROTOCOL_rtp
-
config FFMPEG_CUSTOM_MINIDLNA_SUPPORT
bool "Include support for minidlna"
select FFMPEG_CUSTOM_DECODER_aac
config FFMPEG_CUSTOM_PROGRAMS
bool "Include ffmpeg command-line utilities"
select PACKAGE_ffmpeg-custom
- select PACKAGE_ffserver-custom
select PACKAGE_ffprobe-custom
comment "External Libraries"
config FFMPEG_CUSTOM_MUXER_ac3
bool "AC3"
-config FFMPEG_CUSTOM_MUXER_ffm
- bool "FFM (ffserver live feed)"
-
config FFMPEG_CUSTOM_MUXER_h264
bool "H.264 Raw Video"
depends on FFMPEG_CUSTOM_PATENTED
config FFMPEG_CUSTOM_DEMUXER_flac
bool "FLAC"
-config FFMPEG_CUSTOM_DEMUXER_ffm
- bool "FFM (ffserver live feed)"
-
config FFMPEG_CUSTOM_DEMUXER_h264
bool "H.264 Raw Video"
depends on FFMPEG_CUSTOM_PATENTED
#
-# Copyright (C) 2017-2019 Ian Leonard <antonlacon@gmail.com>
+# Copyright (C) 2017-2020 Ian Leonard <antonlacon@gmail.com>
# Copyright (C) 2018 Ted Hess <thess@kitschensync.net>
#
# This is free software, licensed under the GNU General Public License v2.
include $(TOPDIR)/rules.mk
PKG_NAME:=ffmpeg
-PKG_VERSION:=3.4.7
-PKG_RELEASE:=4
+PKG_VERSION:=4.2.2
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://ffmpeg.org/releases/
-PKG_HASH:=efd01782fd29b62505c973f5b61a65632d7b435dc9f4a6c97e92e6afd36cf5c8
+PKG_HASH:=cb754255ab0ee2ea5f66f8850e1bd6ad5cac1cd855d0a2f4990fb8c668b0d29c
PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>, \
Ian Leonard <antonlacon@gmail.com>
hevc \
vc1 \
-FFMPEG_PATENTED_ENCODERS:=$(FFMPEG_PATENDED_DECODERS)
+FFMPEG_PATENTED_ENCODERS:=$(FFMPEG_PATENTED_DECODERS)
FFMPEG_PATENTED_MUXERS:= \
h264 \
Package/ffprobe-custom/description = $(Package/ffprobe/description)
-define Package/ffserver
-$(call Package/ffmpeg/Default)
- SECTION:=multimedia
- CATEGORY:=Multimedia
- TITLE+= streaming server
- DEPENDS+= +libffmpeg-full
- VARIANT:=full
-endef
-
-define Package/ffserver-custom
-$(call Package/ffmpeg/Default)
- SECTION:=multimedia
- CATEGORY:=Multimedia
- TITLE+= streaming server (custom)
- DEPENDS+= @!ALL libffmpeg-custom
- VARIANT:=custom
-endef
-
-define Package/ffserver/description
-$(call Package/ffmpeg/Default/description)
- .
- This package contains the FFmpeg streaming server.
-endef
-
-Package/ffserver-custom/description = $(Package/ffserver/description)
-
define Package/libffmpeg/Default
$(call Package/ffmpeg/Default)
SECTION:=libs
Package/ffprobe-custom/install = $(Package/ffprobe/install)
-define Package/ffserver/install
- $(INSTALL_DIR) $(1)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/ffserver $(1)/usr/bin/
-endef
-
-Package/ffserver-custom/install = $(Package/ffserver/install)
-
define Package/libffmpeg-custom/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avcodec,avdevice,avformat,avutil}.so.* $(1)/usr/lib/
$(eval $(call BuildPackage,ffmpeg))
$(eval $(call BuildPackage,ffprobe))
-$(eval $(call BuildPackage,ffserver))
$(eval $(call BuildPackage,ffmpeg-custom))
$(eval $(call BuildPackage,ffprobe-custom))
-$(eval $(call BuildPackage,ffserver-custom))
$(eval $(call BuildPackage,libffmpeg-audio-dec))
$(eval $(call BuildPackage,libffmpeg-full))
$(eval $(call BuildPackage,libffmpeg-mini))
+++ /dev/null
-From 141c960e21d2860e354f9b90df136184dd00a9a8 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.
-
-Signed-off-by: Martin Storsjö <martin@martin.st>
----
- 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 c340a1e3e0c..2ad768ed44e 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;
+++ /dev/null
-From ffb9b7a6bab6c6bfd3dd9a7c32e3724209824999 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Martin=20Storsj=C3=B6?= <martin@martin.st>
-Date: Tue, 4 Sep 2018 11: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
-
-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.
-
-Signed-off-by: Martin Storsjö <martin@martin.st>
----
- 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 3be65155b5f..c3d3b70fc93 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 2ad768ed44e..92ad1762aea 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
+++ /dev/null
-From 7e929dac100916fc45cb95e231025f3439c20156 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Martin=20Storsj=C3=B6?= <martin@martin.st>
-Date: Tue, 4 Sep 2018 11:45:35 +0300
-Subject: [PATCH] libfdk-aacenc: Allow enabling the ELDv2 profile
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-This is a new feature in FDK v2.
-
-Signed-off-by: Martin Storsjö <martin@martin.st>
----
- libavcodec/libfdk-aacenc.c | 27 ++++++++++++++++++++++++++-
- 1 file changed, 26 insertions(+), 1 deletion(-)
-
-diff --git a/libavcodec/libfdk-aacenc.c b/libavcodec/libfdk-aacenc.c
-index 92ad1762aea..f71a276403e 100644
---- a/libavcodec/libfdk-aacenc.c
-+++ b/libavcodec/libfdk-aacenc.c
-@@ -36,6 +36,7 @@ typedef struct AACContext {
- HANDLE_AACENCODER handle;
- int afterburner;
- int eld_sbr;
-+ int eld_v2;
- int signaling;
- int latm;
- int header_period;
-@@ -47,6 +48,9 @@ typedef struct AACContext {
- static const AVOption aac_enc_options[] = {
- { "afterburner", "Afterburner (improved quality)", offsetof(AACContext, afterburner), AV_OPT_TYPE_INT, { .i64 = 1 }, 0, 1, AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_ENCODING_PARAM },
- { "eld_sbr", "Enable SBR for ELD (for SBR in other configurations, use the -profile parameter)", offsetof(AACContext, eld_sbr), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_ENCODING_PARAM },
-+#if FDKENC_VER_AT_LEAST(4, 0) // 4.0.0
-+ { "eld_v2", "Enable ELDv2 (LD-MPS extension for ELD stereo signals)", offsetof(AACContext, eld_v2), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_ENCODING_PARAM },
-+#endif
- { "signaling", "SBR/PS signaling style", offsetof(AACContext, signaling), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 2, AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_ENCODING_PARAM, "signaling" },
- { "default", "Choose signaling implicitly (explicit hierarchical by default, implicit if global header is disabled)", 0, AV_OPT_TYPE_CONST, { .i64 = -1 }, 0, 0, AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_ENCODING_PARAM, "signaling" },
- { "implicit", "Implicit backwards compatible signaling", 0, AV_OPT_TYPE_CONST, { .i64 = 0 }, 0, 0, AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_ENCODING_PARAM, "signaling" },
-@@ -149,7 +153,28 @@ static av_cold int aac_encode_init(AVCodecContext *avctx)
-
- switch (avctx->channels) {
- case 1: mode = MODE_1; sce = 1; cpe = 0; break;
-- case 2: mode = MODE_2; sce = 0; cpe = 1; break;
-+ case 2:
-+#if FDKENC_VER_AT_LEAST(4, 0) // 4.0.0
-+ // (profile + 1) to map from profile range to AOT range
-+ if (aot == FF_PROFILE_AAC_ELD + 1 && s->eld_v2) {
-+ if ((err = aacEncoder_SetParam(s->handle, AACENC_CHANNELMODE,
-+ 128)) != AACENC_OK) {
-+ av_log(avctx, AV_LOG_ERROR, "Unable to enable ELDv2: %s\n",
-+ aac_get_error(err));
-+ goto error;
-+ } else {
-+ mode = MODE_212;
-+ sce = 1;
-+ cpe = 0;
-+ }
-+ } else
-+#endif
-+ {
-+ mode = MODE_2;
-+ sce = 0;
-+ cpe = 1;
-+ }
-+ break;
- case 3: mode = MODE_1_2; sce = 1; cpe = 1; break;
- case 4: mode = MODE_1_2_1; sce = 2; cpe = 1; break;
- case 5: mode = MODE_1_2_2; sce = 1; cpe = 2; break;
+++ /dev/null
-From 2a9e1c122eed66be1b26b747342b848300b226c7 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Martin=20Storsj=C3=B6?= <martin@martin.st>
-Date: Wed, 12 Sep 2018 23: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
-
-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]
-
-Signed-off-by: Martin Storsjö <martin@martin.st>
----
- 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 ca70a49ad46..63856232d9e 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 f71a276403e..3b492ef8f48 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;