gerbera: update to 1.10.0
authorRosen Penev <rosenp@gmail.com>
Wed, 9 Mar 2022 05:16:04 +0000 (21:16 -0800)
committerRosen Penev <rosenp@gmail.com>
Thu, 10 Mar 2022 07:40:17 +0000 (23:40 -0800)
Backport some bug fixes.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
multimedia/gerbera/Makefile
multimedia/gerbera/patches/010-fmt.patch [deleted file]
multimedia/gerbera/patches/010-matroska-memory-leak.patch [new file with mode: 0644]
multimedia/gerbera/patches/020-m3u.patch [new file with mode: 0644]
multimedia/gerbera/patches/030-ffmpeg.patch [new file with mode: 0644]

index 67b7eb7407f3ad61ad4d944a12f3c5969daab1de..1f4090db808842b9af8b1e75f538bf146a7200df 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=gerbera
-PKG_VERSION:=1.9.1
+PKG_VERSION:=1.10.0
 PKG_RELEASE:=$(AUTORELEASE)
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://codeload.github.com/gerbera/gerbera/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=5d323c6cb4150e3454b8c6e0012f41648441799ba44cb59436b124b54d3fc82b
+PKG_HASH:=bd6c7b2c6380e2e265a998bbc0df9eec14b9c6a65bc91e7f2c0ae0b67fd0c9cf
 
 PKG_MAINTAINER:=
 PKG_LICENSE:=GPL-2.0-or-later
diff --git a/multimedia/gerbera/patches/010-fmt.patch b/multimedia/gerbera/patches/010-fmt.patch
deleted file mode 100644 (file)
index 72668a8..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-From 82d84ac5e62c23e717198fc7b2ef190ff95e70d1 Mon Sep 17 00:00:00 2001
-From: kyak <bas@bmail.ru>
-Date: Wed, 12 Jan 2022 19:41:37 +0300
-Subject: [PATCH] Fix for fmt > 8.0
-
----
- src/util/logger.h | 15 +++++++++++++++
- 1 file changed, 15 insertions(+)
-
---- a/src/util/logger.h
-+++ b/src/util/logger.h
-@@ -32,7 +32,9 @@
- #ifndef __LOGGER_H__
- #define __LOGGER_H__
-+#include <fmt/format.h>
- #include <spdlog/spdlog.h>
-+#include <type_traits>
- #define log_debug SPDLOG_DEBUG
- #define log_info SPDLOG_INFO
-@@ -40,4 +42,17 @@
- #define log_error SPDLOG_ERROR
- #define log_js SPDLOG_INFO
-+#if FMT_VERSION >= 80100
-+template <typename T>
-+struct fmt::formatter<T, std::enable_if_t<std::is_enum_v<T>, char>>
-+    : formatter<std::underlying_type_t<T>> {
-+    template <typename FormatContext>
-+    auto format(const T& value, FormatContext& ctx) -> decltype(ctx.out())
-+    {
-+        return fmt::formatter<std::underlying_type_t<T>>::format(
-+            static_cast<std::underlying_type_t<T>>(value), ctx);
-+    }
-+};
-+#endif
-+
- #endif // __LOGGER_H__
diff --git a/multimedia/gerbera/patches/010-matroska-memory-leak.patch b/multimedia/gerbera/patches/010-matroska-memory-leak.patch
new file mode 100644 (file)
index 0000000..da58fc6
--- /dev/null
@@ -0,0 +1,21 @@
+From c479fba2f0f478e828cd08dde3c3b5e8ae7908d4 Mon Sep 17 00:00:00 2001
+From: Rosen Penev <rosenp@gmail.com>
+Date: Mon, 29 Nov 2021 18:31:14 -0800
+Subject: [PATCH] fix matroska memory leaks
+
+Signed-off-by: Rosen Penev <rosenp@gmail.com>
+---
+ src/metadata/matroska_handler.cc | 2 --
+ 1 file changed, 2 deletions(-)
+
+--- a/src/metadata/matroska_handler.cc
++++ b/src/metadata/matroska_handler.cc
+@@ -137,8 +137,6 @@ void MatroskaHandler::parseMKV(const std
+             delete (elL1->SkipData(ebmlStream, elL1->Generic().Context));
+             delete elL1;
+-            if (activeFlag == 0) // terminate search
+-                break;
+         } // while elementLevel1
+         delete (elL0->SkipData(ebmlStream, LIBMATROSKA_NAMESPACE::KaxSegment_Context));
diff --git a/multimedia/gerbera/patches/020-m3u.patch b/multimedia/gerbera/patches/020-m3u.patch
new file mode 100644 (file)
index 0000000..0b43a6c
--- /dev/null
@@ -0,0 +1,22 @@
+From 97c5a5fbc27452ee5970f9c7be946d3819a79d05 Mon Sep 17 00:00:00 2001
+From: Karlchen <k_straussberger@netzland.net>
+Date: Sat, 26 Feb 2022 23:32:42 +0100
+Subject: [PATCH] Fix playlist parser error
+
+closes #2463
+---
+ src/content/scripting/playlist_parser_script.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/src/content/scripting/playlist_parser_script.cc
++++ b/src/content/scripting/playlist_parser_script.cc
+@@ -218,8 +218,8 @@ void PlaylistParserScript::processPlayli
+     auto item = std::static_pointer_cast<CdsItem>(obj);
+     log_debug("Checking playlist {} ...", obj->getLocation().string());
++    GrbFile file(item->getLocation());
+     if (item->getMimeType() != MIME_TYPE_ASX_PLAYLIST) {
+-        GrbFile file(item->getLocation());
+         currentHandle = file.open("r");
+     } else {
+         pugi::xml_parse_result result = xmlDoc->load_file(item->getLocation().c_str());
diff --git a/multimedia/gerbera/patches/030-ffmpeg.patch b/multimedia/gerbera/patches/030-ffmpeg.patch
new file mode 100644 (file)
index 0000000..b41ae5d
--- /dev/null
@@ -0,0 +1,46 @@
+From 1ee40116ece90a5504cd33a23d6bc7002d00b68a Mon Sep 17 00:00:00 2001
+From: Ian Whyman <ian.whyman@spin.pm>
+Date: Tue, 8 Mar 2022 17:36:37 +0000
+Subject: [PATCH] Fix default tag matches with ffmpeg_handler
+
+Some of the keys were uppercase e.g. ARTIST when returned from the FLAC
+parser, so lowercase the keys first.
+
+Fixes: https://github.com/gerbera/gerbera/issues/2176
+---
+ src/metadata/ffmpeg_handler.cc | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+--- a/src/metadata/ffmpeg_handler.cc
++++ b/src/metadata/ffmpeg_handler.cc
+@@ -93,8 +93,9 @@ void FfmpegHandler::addFfmpegMetadataFie
+     auto sc = StringConverter::m2i(CFG_IMPORT_LIBOPTS_FFMPEG_CHARSET, item->getLocation(), config);
+     while ((e = av_dict_get(pFormatCtx->metadata, "", e, AV_DICT_IGNORE_SUFFIX))) {
+-        std::string key = e->key;
++        std::string key = toLower(e->key);
+         std::string value = e->value;
++        log_debug("FFMpeg tag: {}: {}", key, value);
+         auto it = specialPropertyMap.find(e->key);
+         if (it != specialPropertyMap.end()) {
+             // only use ffmpeg meta data if not found by other handler
+@@ -105,7 +106,9 @@ void FfmpegHandler::addFfmpegMetadataFie
+             }
+         }
+         auto pIt = std::find_if(propertyMap.begin(), propertyMap.end(),
+-            [&](auto&& p) { return p.second == key && item->getMetaData(p.first).empty(); });
++            [&](auto&& p) {
++                return p.second == key && item->getMetaData(p.first).empty();
++            });
+         if (pIt != propertyMap.end()) {
+             log_debug("Identified default metadata '{}': {}", pIt->second, value);
+             const auto field = pIt->first;
+@@ -128,7 +131,7 @@ void FfmpegHandler::addFfmpegMetadataFie
+             constexpr auto field = M_CREATION_DATE;
+             if (item->getMetaData(field).empty()) {
+                 log_debug("Identified metadata 'creation_time': {}", e->value);
+-                std::tm tmWork;
++                std::tm tmWork {};
+                 if (strptime(e->value, "%Y-%m-%dT%T.000000%Z", &tmWork)) {
+                     // convert creation_time to local time
+                     auto utcTime = timegm(&tmWork);