[vlc-bittorrent] Update to 2.13
by Leigh Scott
commit a69f30b0f3b2abccad70f2adfa6f42b282672f78
Author: Leigh Scott <leigh123linux(a)gmail.com>
Date: Sat Jun 5 09:15:23 2021 +0100
Update to 2.13
sources | 2 +-
vlc-bittorrent.spec | 7 +++++--
2 files changed, 6 insertions(+), 3 deletions(-)
---
diff --git a/sources b/sources
index 6d1a325..82d995f 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (vlc-bittorrent-2.12.tar.gz) = 2cb5870db53d5e76e2787513b3617b743f2911b839d004b85aab6a6afbdeab2115aa985a1c600580e3849e7ccc68dd5f64f04e83190628a26cb670df409ec2e0
+SHA512 (vlc-bittorrent-2.13.tar.gz) = 16df3aa5b9b0e50ea49caf24b52d9aca30a21cd8e520929e6d108622b90f652cae7a10c0403e7bde038e94f37308b6784060653f630aabc20c998c6db365be34
diff --git a/vlc-bittorrent.spec b/vlc-bittorrent.spec
index a9e9446..c5425ae 100644
--- a/vlc-bittorrent.spec
+++ b/vlc-bittorrent.spec
@@ -1,6 +1,6 @@
Name: vlc-bittorrent
-Version: 2.12
-Release: 2%{?dist}
+Version: 2.13
+Release: 1%{?dist}
Summary: Bittorrent plugin for VLC
License: GPLv3+
@@ -67,6 +67,9 @@ fi || :
%changelog
+* Mon May 24 2021 Leigh Scott <leigh123linux(a)gmail.com> - 2.13-1
+- Update to 2.13
+
* Sat Apr 24 2021 Leigh Scott <leigh123linux(a)gmail.com> - 2.12-2
- Rebuilt for removed libstdc++ symbol (#1937698)
3 years, 5 months
[ripcord/f34] Update to 0.4.29
by sentry
Summary of changes:
42f9b02... Update to 0.4.29 (*)
(*) This commit already existed in another branch; no separate mail sent
3 years, 5 months
[ripcord] Update to 0.4.29
by sentry
commit 42f9b02cec4d1c9f723109bcd31c79de7d0cd03e
Author: Jan200101 <sentrycraft123(a)gmail.com>
Date: Fri Jun 4 22:48:47 2021 +0200
Update to 0.4.29
.gitignore | 1 +
ripcord.spec | 7 +++++--
sources | 2 +-
3 files changed, 7 insertions(+), 3 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index bab6ed4..6b3d514 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,4 @@
/Ripcord-0.4.26-x86_64.AppImage
/Ripcord-0.4.27-x86_64.AppImage
/Ripcord-0.4.28-x86_64.AppImage
+/Ripcord-0.4.29-x86_64.AppImage
diff --git a/ripcord.spec b/ripcord.spec
index 40d1a97..e55a50d 100644
--- a/ripcord.spec
+++ b/ripcord.spec
@@ -3,8 +3,8 @@
Summary: a lightweight chat client for Slack and Discord
Name: ripcord
-Version: 0.4.28
-Release: 2%{dist}
+Version: 0.4.29
+Release: 1%{dist}
License: Redistributable, no modification permitted
URL: https://cancel.fm/ripcord
@@ -51,6 +51,9 @@ desktop-file-install
%license redistribution.txt
%changelog
+* Fri Jun 04 2021 Jan Drögehoff <sentrycraft123(a)gmail.com> - 0.4.29-1
+- Update to version 0.4.29
+
* Wed Feb 03 2021 Jan Drögehoff <sentrycraft123(a)gmail.com> - 0.4.28-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
diff --git a/sources b/sources
index ed534cd..cdfe45e 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (Ripcord-0.4.28-x86_64.AppImage) = 835ea5ee0025fb415877008022a5d9a2b9d90130df3af785e38428f6580f6e7c9f9db1ef543fc7e8b727baaf58c8f3225c692f83e0ee18a02aa8172fa1622aa8
+SHA512 (Ripcord-0.4.29-x86_64.AppImage) = 87ab486eba1423d798c484cbeb307071ca3f03044dbc5dea1fdc23efe60bf834947796d908fe971ad2485b70887eda1356b3fd571c1c8103f7de64c8f5aae8c3
3 years, 5 months
[kodi] FFmpeg 4.4 support (RFBZ#6000)
by Michael Cronenworth
commit c73689656633cffd0df38a2cf206db4e5da75f82
Author: Michael Cronenworth <mike(a)cchtml.com>
Date: Thu Jun 3 11:04:14 2021 -0500
FFmpeg 4.4 support (RFBZ#6000)
kodi-19-ffmpeg-4-4.patch | 1000 ++++++++++++++++++++++++++++++++++++++++++++++
kodi.spec | 13 +-
2 files changed, 1010 insertions(+), 3 deletions(-)
---
diff --git a/kodi-19-ffmpeg-4-4.patch b/kodi-19-ffmpeg-4-4.patch
new file mode 100644
index 0000000..9d9ac94
--- /dev/null
+++ b/kodi-19-ffmpeg-4-4.patch
@@ -0,0 +1,1000 @@
+From e13c9c68d43db715a91fe8cc566052f21e22a08e Mon Sep 17 00:00:00 2001
+From: Lukas Rusak <lorusak(a)gmail.com>
+Date: Sat, 10 Apr 2021 08:25:10 -0700
+Subject: [PATCH 1/6] FFmpeg: Bump to 4.4-N-Alpha1
+
+---
+ cmake/modules/FindFFMPEG.cmake | 17 ++++++++---------
+ tools/depends/target/ffmpeg/FFMPEG-VERSION | 2 +-
+ 2 files changed, 9 insertions(+), 10 deletions(-)
+
+diff --git a/cmake/modules/FindFFMPEG.cmake b/cmake/modules/FindFFMPEG.cmake
+index 81d26979e3d1b..03626ef005d72 100644
+--- a/cmake/modules/FindFFMPEG.cmake
++++ b/cmake/modules/FindFFMPEG.cmake
+@@ -33,15 +33,14 @@
+ #
+
+ # required ffmpeg library versions
+-set(REQUIRED_FFMPEG_VERSION 4.3)
+-set(_avcodec_ver ">=58.91.100")
+-set(_avfilter_ver ">=7.85.100")
+-set(_avformat_ver ">=58.45.100")
+-set(_avutil_ver ">=56.51.100")
+-set(_swscale_ver ">=5.7.100")
+-set(_swresample_ver ">=3.7.100")
+-set(_postproc_ver ">=55.7.100")
+-
++set(REQUIRED_FFMPEG_VERSION 4.4)
++set(_avcodec_ver ">=58.134.100")
++set(_avfilter_ver ">=7.110.100")
++set(_avformat_ver ">=58.76.100")
++set(_avutil_ver ">=56.70.100")
++set(_swscale_ver ">=5.9.100")
++set(_swresample_ver ">=3.9.100")
++set(_postproc_ver ">=55.9.100")
+
+ # Allows building with external ffmpeg not found in system paths,
+ # without library version checks
+diff --git a/tools/depends/target/ffmpeg/FFMPEG-VERSION b/tools/depends/target/ffmpeg/FFMPEG-VERSION
+index ba9ec50a75172..6a44db8f0f4b1 100644
+--- a/tools/depends/target/ffmpeg/FFMPEG-VERSION
++++ b/tools/depends/target/ffmpeg/FFMPEG-VERSION
+@@ -1,4 +1,4 @@
+ LIBNAME=ffmpeg
+ BASE_URL=https://github.com/xbmc/FFmpeg
+-VERSION=4.3.2-Matrix-19.1
++VERSION=4.4-N-Alpha1
+ ARCHIVE=$(LIBNAME)-$(VERSION).tar.gz
+
+From 6fcd9a646815360aa8d7f82630e1e7b29aa549ea Mon Sep 17 00:00:00 2001
+From: Lukas Rusak <lorusak(a)gmail.com>
+Date: Sat, 10 Apr 2021 08:25:29 -0700
+Subject: [PATCH 2/6] windows: refresh ffmpeg patches
+
+---
+ ...peg-windows-configure-detect-openssl.patch} | 16 ++++++++++++++--
+ ...-windows-configure-fix-zlib-conflict.patch} | 16 ++++++++++++++--
+ ...dows-configure-allow-building-static.patch} | 18 +++++++++++++++---
+ ...eg-windows-configure-detect-libdav1d.patch} | 18 +++++++++++++++---
+ 4 files changed, 58 insertions(+), 10 deletions(-)
+ rename tools/buildsteps/windows/patches/{0001-ffmpeg-detect-openssl.patch => 0001-ffmpeg-windows-configure-detect-openssl.patch} (71%)
+ rename tools/buildsteps/windows/patches/{0002-ffmpeg-zlib-config-conflict.patch => 0002-ffmpeg-windows-configure-fix-zlib-conflict.patch} (53%)
+ rename tools/buildsteps/windows/patches/{0003-ffmpeg-static.patch => 0003-ffmpeg-windows-configure-allow-building-static.patch} (64%)
+ rename tools/buildsteps/windows/patches/{0005-ffmpeg-detect-dav1d.patch => 0004-ffmpeg-windows-configure-detect-libdav1d.patch} (65%)
+
+diff --git a/tools/buildsteps/windows/patches/0001-ffmpeg-detect-openssl.patch b/tools/buildsteps/windows/patches/0001-ffmpeg-windows-configure-detect-openssl.patch
+similarity index 71%
+rename from tools/buildsteps/windows/patches/0001-ffmpeg-detect-openssl.patch
+rename to tools/buildsteps/windows/patches/0001-ffmpeg-windows-configure-detect-openssl.patch
+index 7e48887a6be9b..1c17b2949142f 100644
+--- a/tools/buildsteps/windows/patches/0001-ffmpeg-detect-openssl.patch
++++ b/tools/buildsteps/windows/patches/0001-ffmpeg-windows-configure-detect-openssl.patch
+@@ -1,8 +1,17 @@
++From 08ae41e824e04ab48eafde763c72d1ff3e878a41 Mon Sep 17 00:00:00 2001
++From: Lukas Rusak <lorusak(a)gmail.com>
++Date: Sat, 10 Apr 2021 08:16:11 -0700
++Subject: [PATCH 1/4] ffmpeg: windows: configure: detect openssl
++
++---
++ configure | 2 ++
++ 1 file changed, 2 insertions(+)
++
+ diff --git a/configure b/configure
+-index 8569a60bf8..42f5a3ada4 100755
++index d7a3f507e8..4b85e881b1 100755
+ --- a/configure
+ +++ b/configure
+-@@ -6468,6 +6468,8 @@ enabled openssl && { check_pkg_config openssl openssl openssl/ssl.h OP
++@@ -6529,6 +6529,8 @@ enabled openssl && { check_pkg_config openssl openssl openssl/ssl.h OP
+ check_lib openssl openssl/ssl.h SSL_library_init -lssl -lcrypto ||
+ 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 ||
+@@ -11,3 +20,6 @@ index 8569a60bf8..42f5a3ada4 100755
+ die "ERROR: openssl not found"; }
+ enabled pocketsphinx && require_pkg_config pocketsphinx pocketsphinx pocketsphinx/pocketsphinx.h ps_init
+ enabled rkmpp && { require_pkg_config rkmpp rockchip_mpp rockchip/rk_mpi.h mpp_create &&
++--
++2.29.2
++
+diff --git a/tools/buildsteps/windows/patches/0002-ffmpeg-zlib-config-conflict.patch b/tools/buildsteps/windows/patches/0002-ffmpeg-windows-configure-fix-zlib-conflict.patch
+similarity index 53%
+rename from tools/buildsteps/windows/patches/0002-ffmpeg-zlib-config-conflict.patch
+rename to tools/buildsteps/windows/patches/0002-ffmpeg-windows-configure-fix-zlib-conflict.patch
+index 55b0b8ba43c31..064be1ddd30f9 100644
+--- a/tools/buildsteps/windows/patches/0002-ffmpeg-zlib-config-conflict.patch
++++ b/tools/buildsteps/windows/patches/0002-ffmpeg-windows-configure-fix-zlib-conflict.patch
+@@ -1,8 +1,17 @@
++From 1e57e7f49f1a74ee11d3c8dd5d407f35eecd5167 Mon Sep 17 00:00:00 2001
++From: Lukas Rusak <lorusak(a)gmail.com>
++Date: Sat, 10 Apr 2021 08:16:48 -0700
++Subject: [PATCH 2/4] ffmpeg: windows: configure: fix zlib conflict
++
++---
++ configure | 3 +++
++ 1 file changed, 3 insertions(+)
++
+ diff --git a/configure b/configure
+-index 8569a60bf8..2091cea243 100755
++index 4b85e881b1..da457705d1 100755
+ --- a/configure
+ +++ b/configure
+-@@ -7553,6 +7553,9 @@ print_config CONFIG_ "$config_files" $CONFIG_LIST \
++@@ -7627,6 +7627,9 @@ print_config CONFIG_ "$config_files" $CONFIG_LIST \
+ $CONFIG_EXTRA \
+ $ALL_COMPONENTS \
+
+@@ -12,3 +21,6 @@ index 8569a60bf8..2091cea243 100755
+ echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH
+ echo "endif # FFMPEG_CONFIG_MAK" >> ffbuild/config.mak
+
++--
++2.29.2
++
+diff --git a/tools/buildsteps/windows/patches/0003-ffmpeg-static.patch b/tools/buildsteps/windows/patches/0003-ffmpeg-windows-configure-allow-building-static.patch
+similarity index 64%
+rename from tools/buildsteps/windows/patches/0003-ffmpeg-static.patch
+rename to tools/buildsteps/windows/patches/0003-ffmpeg-windows-configure-allow-building-static.patch
+index ae6e8a9f48c44..f6fbd3fe3eb5b 100644
+--- a/tools/buildsteps/windows/patches/0003-ffmpeg-static.patch
++++ b/tools/buildsteps/windows/patches/0003-ffmpeg-windows-configure-allow-building-static.patch
+@@ -1,8 +1,17 @@
++From efb771d944e96bcbb24635bcae99a43dffab262e Mon Sep 17 00:00:00 2001
++From: Lukas Rusak <lorusak(a)gmail.com>
++Date: Sat, 10 Apr 2021 08:17:11 -0700
++Subject: [PATCH 3/4] ffmpeg: windows: configure: allow building static
++
++---
++ configure | 4 ++++
++ 1 file changed, 4 insertions(+)
++
+ diff --git a/configure b/configure
+-index 8569a60bf8..afca15141e 100755
++index da457705d1..e3a8f45ff4 100755
+ --- a/configure
+ +++ b/configure
+-@@ -5401,6 +5401,8 @@ case $target_os in
++@@ -5439,6 +5439,8 @@ case $target_os in
+ enabled shared && ! enabled small && test_cmd $windres --version && enable gnu_windres
+ enabled x86_32 && check_ldflags -Wl,--large-address-aware
+ shlibdir_default="$bindir_default"
+@@ -11,7 +20,7 @@ index 8569a60bf8..afca15141e 100755
+ SLIBPREF=""
+ SLIBSUF=".dll"
+ SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
+-@@ -5450,6 +5452,8 @@ case $target_os in
++@@ -5488,6 +5490,8 @@ case $target_os in
+ fi
+ enabled x86_32 && check_ldflags -LARGEADDRESSAWARE
+ shlibdir_default="$bindir_default"
+@@ -20,3 +29,6 @@ index 8569a60bf8..afca15141e 100755
+ SLIBPREF=""
+ SLIBSUF=".dll"
+ SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
++--
++2.29.2
++
+diff --git a/tools/buildsteps/windows/patches/0005-ffmpeg-detect-dav1d.patch b/tools/buildsteps/windows/patches/0004-ffmpeg-windows-configure-detect-libdav1d.patch
+similarity index 65%
+rename from tools/buildsteps/windows/patches/0005-ffmpeg-detect-dav1d.patch
+rename to tools/buildsteps/windows/patches/0004-ffmpeg-windows-configure-detect-libdav1d.patch
+index 883ec7e0d6ed8..d949b5785486b 100644
+--- a/tools/buildsteps/windows/patches/0005-ffmpeg-detect-dav1d.patch
++++ b/tools/buildsteps/windows/patches/0004-ffmpeg-windows-configure-detect-libdav1d.patch
+@@ -1,13 +1,25 @@
++From d475edac8c6890fbaea5ca20d552c60aead0f04a Mon Sep 17 00:00:00 2001
++From: Lukas Rusak <lorusak(a)gmail.com>
++Date: Sat, 10 Apr 2021 08:19:27 -0700
++Subject: [PATCH 4/4] ffmpeg: windows: configure: detect libdav1d
++
++---
++ configure | 2 +-
++ 1 file changed, 1 insertion(+), 1 deletion(-)
++
+ diff --git a/configure b/configure
+-index 8569a60bf8..a368cc65b6 100755
++index e3a8f45ff4..983d7e1078 100755
+ --- a/configure
+ +++ b/configure
+-@@ -6295,7 +6295,7 @@ enabled libcelt && require libcelt celt/celt.h celt_decode -lcelt0 &&
++@@ -6357,7 +6357,7 @@ enabled libcelt && require libcelt celt/celt.h celt_decode -lcelt0 &&
+ die "ERROR: libcelt must be installed and version must be >= 0.11.0."; }
+ enabled libcaca && require_pkg_config libcaca caca caca.h caca_create_canvas
+ enabled libcodec2 && require libcodec2 codec2/codec2.h codec2_create -lcodec2
+--enabled libdav1d && require_pkg_config libdav1d "dav1d >= 0.4.0" "dav1d/dav1d.h" dav1d_version
++-enabled libdav1d && require_pkg_config libdav1d "dav1d >= 0.5.0" "dav1d/dav1d.h" dav1d_version
+ +enabled libdav1d && require libdav1d dav1d/dav1d.h dav1d_version -llibdav1d
+ enabled libdavs2 && require_pkg_config libdavs2 "davs2 >= 1.6.0" davs2.h davs2_decoder_open
+ enabled libdc1394 && require_pkg_config libdc1394 libdc1394-2 dc1394/dc1394.h dc1394_new
+ enabled libdrm && require_pkg_config libdrm libdrm xf86drm.h drmGetVersion
++--
++2.29.2
++
+
+From 36f93de7a9e34d1583aed7b4cc13cc9a343d4e59 Mon Sep 17 00:00:00 2001
+From: Lukas Rusak <lorusak(a)gmail.com>
+Date: Sat, 10 Apr 2021 10:43:43 -0700
+Subject: [PATCH 3/6] ffmpeg: fix use of deprectated av_init_packet
+
+---
+ xbmc/cdrip/EncoderFFmpeg.cpp | 38 +++++++-----
+ xbmc/cdrip/EncoderFFmpeg.h | 1 -
+ .../AudioEngine/Encoders/AEEncoderFFmpeg.cpp | 30 ++++++----
+ .../AudioEngine/Encoders/AEEncoderFFmpeg.h | 1 -
+ .../AudioEngine/Engines/ActiveAE/ActiveAE.cpp | 22 ++++---
+ .../DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp | 36 +++++++----
+ .../Overlay/DVDOverlayCodecFFmpeg.cpp | 26 +++++---
+ .../DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp | 60 +++++++++++++------
+ .../DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp | 55 ++++++++++++-----
+ .../DVDDemuxers/DVDDemuxClient.cpp | 18 ++++--
+ .../VideoPlayer/DVDDemuxers/DVDDemuxUtils.cpp | 48 +++++++++++----
+ xbmc/guilib/FFmpegImage.cpp | 18 +++---
+ 12 files changed, 237 insertions(+), 116 deletions(-)
+
+diff --git a/xbmc/cdrip/EncoderFFmpeg.cpp b/xbmc/cdrip/EncoderFFmpeg.cpp
+index cb952e2aab83b..89efb67643b71 100644
+--- a/xbmc/cdrip/EncoderFFmpeg.cpp
++++ b/xbmc/cdrip/EncoderFFmpeg.cpp
+@@ -30,15 +30,15 @@
+
+ using namespace ADDON;
+
+-CEncoderFFmpeg::CEncoderFFmpeg():
+- m_Format (NULL),
+- m_CodecCtx (NULL),
+- m_SwrCtx (NULL),
+- m_Stream (NULL),
+- m_Buffer (NULL),
+- m_BufferFrame(NULL),
+- m_ResampledBuffer(NULL),
+- m_ResampledFrame(NULL)
++CEncoderFFmpeg::CEncoderFFmpeg()
++ : m_Format(NULL),
++ m_CodecCtx(NULL),
++ m_SwrCtx(NULL),
++ m_Stream(NULL),
++ m_Buffer(NULL),
++ m_BufferFrame(NULL),
++ m_ResampledBuffer(NULL),
++ m_ResampledFrame(NULL)
+ {
+ memset(&m_callbacks, 0, sizeof(m_callbacks));
+ }
+@@ -280,9 +280,13 @@ bool CEncoderFFmpeg::WriteFrame()
+ int encoded, got_output;
+ AVFrame* frame;
+
+- av_init_packet(&m_Pkt);
+- m_Pkt.data = NULL;
+- m_Pkt.size = 0;
++ AVPacket* pkt = av_packet_alloc();
++ if (!pkt)
++ {
++ CLog::Log(LOGERROR, "CEncoderFFmpeg::{} - av_packet_alloc failed: {}", __FUNCTION__,
++ strerror(errno));
++ return false;
++ }
+
+ if(m_NeedConversion)
+ {
+@@ -290,30 +294,34 @@ bool CEncoderFFmpeg::WriteFrame()
+ if (swr_convert(m_SwrCtx, m_ResampledFrame->extended_data, m_NeededFrames, const_cast<const uint8_t**>(m_BufferFrame->extended_data), m_NeededFrames) < 0)
+ {
+ CLog::Log(LOGERROR, "CEncoderFFmpeg::WriteFrame - Error resampling audio");
++ av_packet_free(&pkt);
+ return false;
+ }
+ frame = m_ResampledFrame;
+ }
+ else frame = m_BufferFrame;
+
+- encoded = avcodec_encode_audio2(m_CodecCtx, &m_Pkt, frame, &got_output);
++ encoded = avcodec_encode_audio2(m_CodecCtx, pkt, frame, &got_output);
+
+ m_BufferSize = 0;
+
+ if (encoded < 0) {
+ CLog::Log(LOGERROR, "CEncoderFFmpeg::WriteFrame - Error encoding audio: %i", encoded);
++ av_packet_free(&pkt);
+ return false;
+ }
+
+ if (got_output)
+ {
+- if (av_write_frame(m_Format, &m_Pkt) < 0) {
++ if (av_write_frame(m_Format, pkt) < 0)
++ {
+ CLog::Log(LOGERROR, "CEncoderFFMmpeg::WriteFrame - Failed to write the frame data");
++ av_packet_free(&pkt);
+ return false;
+ }
+ }
+
+- av_packet_unref(&m_Pkt);
++ av_packet_free(&pkt);
+
+ return true;
+ }
+diff --git a/xbmc/cdrip/EncoderFFmpeg.h b/xbmc/cdrip/EncoderFFmpeg.h
+index 86986eac0bd91..8c6d092191a35 100644
+--- a/xbmc/cdrip/EncoderFFmpeg.h
++++ b/xbmc/cdrip/EncoderFFmpeg.h
+@@ -31,7 +31,6 @@ class CEncoderFFmpeg : public IEncoder
+ AVCodecContext *m_CodecCtx;
+ SwrContext *m_SwrCtx;
+ AVStream *m_Stream;
+- AVPacket m_Pkt;
+ AVSampleFormat m_InFormat;
+ AVSampleFormat m_OutFormat;
+ /* From libavformat/avio.h:
+diff --git a/xbmc/cores/AudioEngine/Encoders/AEEncoderFFmpeg.cpp b/xbmc/cores/AudioEngine/Encoders/AEEncoderFFmpeg.cpp
+index fb06a411adb4e..3a2b414190dbe 100644
+--- a/xbmc/cores/AudioEngine/Encoders/AEEncoderFFmpeg.cpp
++++ b/xbmc/cores/AudioEngine/Encoders/AEEncoderFFmpeg.cpp
+@@ -18,9 +18,7 @@
+ #include <string.h>
+ #include <cassert>
+
+-CAEEncoderFFmpeg::CAEEncoderFFmpeg():
+- m_CodecCtx (NULL ),
+- m_SwrCtx (NULL )
++CAEEncoderFFmpeg::CAEEncoderFFmpeg() : m_CodecCtx(NULL), m_SwrCtx(NULL)
+ {
+ }
+
+@@ -263,27 +261,35 @@ int CAEEncoderFFmpeg::Encode(uint8_t *in, int in_size, uint8_t *out, int out_siz
+ in, in_size, 0);
+
+ /* initialize the output packet */
+- av_init_packet(&m_Pkt);
+- m_Pkt.size = out_size;
+- m_Pkt.data = out;
++ AVPacket* pkt = av_packet_alloc();
++ if (!pkt)
++ {
++ CLog::Log(LOGERROR, "CAEEncoderFFmpeg::{} - av_packet_alloc failed: {}", __FUNCTION__,
++ strerror(errno));
++ av_frame_free(&frame);
++ return 0;
++ }
++
++ pkt->size = out_size;
++ pkt->data = out;
+
+ /* encode it */
+- int ret = avcodec_encode_audio2(m_CodecCtx, &m_Pkt, frame, &got_output);
++ int ret = avcodec_encode_audio2(m_CodecCtx, pkt, frame, &got_output);
++
++ int size = pkt->size;
+
+ /* free temporary data */
+ av_frame_free(&frame);
+
++ /* free the packet */
++ av_packet_free(&pkt);
++
+ if (ret < 0 || !got_output)
+ {
+ CLog::Log(LOGERROR, "CAEEncoderFFmpeg::Encode - Encoding failed");
+ return 0;
+ }
+
+- int size = m_Pkt.size;
+-
+- /* free the packet */
+- av_packet_unref(&m_Pkt);
+-
+ /* return the number of frames used */
+ return size;
+ }
+diff --git a/xbmc/cores/AudioEngine/Encoders/AEEncoderFFmpeg.h b/xbmc/cores/AudioEngine/Encoders/AEEncoderFFmpeg.h
+index cf1d3c76db2b2..3274d3ac4bca2 100644
+--- a/xbmc/cores/AudioEngine/Encoders/AEEncoderFFmpeg.h
++++ b/xbmc/cores/AudioEngine/Encoders/AEEncoderFFmpeg.h
+@@ -44,7 +44,6 @@ class CAEEncoderFFmpeg: public IAEEncoder
+ AVCodecContext *m_CodecCtx;
+ SwrContext *m_SwrCtx;
+ CAEChannelInfo m_Layout;
+- AVPacket m_Pkt;
+ uint8_t m_Buffer[8 + AV_INPUT_BUFFER_MIN_SIZE];
+ int m_BufferSize = 0;
+ int m_OutputSize = 0;
+diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp
+index 19043c55ca869..7fda136d55e6b 100644
+--- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp
++++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp
+@@ -3070,21 +3070,26 @@ IAESound *CActiveAE::MakeSound(const std::string& file)
+ config.channel_layout = av_get_default_channel_layout(config.channels);
+ dec_ctx->channel_layout = config.channel_layout;
+
+- AVPacket avpkt;
+- AVFrame *decoded_frame = NULL;
+- decoded_frame = av_frame_alloc();
++ AVPacket* avpkt = av_packet_alloc();
++ if (!avpkt)
++ CLog::Log(LOGERROR, "CActiveAE::{} - av_packet_alloc failed: {}", __FUNCTION__,
++ strerror(errno));
++
++ AVFrame* decoded_frame = av_frame_alloc();
++ if (!decoded_frame)
++ CLog::Log(LOGERROR, "CActiveAE::{} - av_frame_alloc failed: {}", __FUNCTION__, strerror(errno));
++
+ bool error = false;
+
+- if (avcodec_open2(dec_ctx, dec, nullptr) >= 0)
++ if (avpkt && decoded_frame && avcodec_open2(dec_ctx, dec, nullptr) >= 0)
+ {
+ bool init = false;
+
+ // decode until eof
+- av_init_packet(&avpkt);
+ int ret;
+- while (av_read_frame(fmt_ctx, &avpkt) >= 0 && !error)
++ while (av_read_frame(fmt_ctx, avpkt) >= 0 && !error)
+ {
+- ret = avcodec_send_packet(dec_ctx, &avpkt);
++ ret = avcodec_send_packet(dec_ctx, avpkt);
+ if (ret < 0)
+ {
+ error = true;
+@@ -3104,7 +3109,7 @@ IAESound *CActiveAE::MakeSound(const std::string& file)
+ sound->StoreSound(true, decoded_frame->extended_data,
+ decoded_frame->nb_samples, decoded_frame->linesize[0]);
+ }
+- av_packet_unref(&avpkt);
++ av_packet_unref(avpkt);
+
+ if (ret < 0 && ret != AVERROR(EAGAIN))
+ {
+@@ -3128,6 +3133,7 @@ IAESound *CActiveAE::MakeSound(const std::string& file)
+ }
+ }
+
++ av_packet_free(&avpkt);
+ av_frame_free(&decoded_frame);
+ avcodec_free_context(&dec_ctx);
+ avformat_close_input(&fmt_ctx);
+diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp
+index 91eefc948baea..299ee568f4480 100644
+--- a/xbmc/cores/VideoPlayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp
++++ b/xbmc/cores/VideoPlayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp
+@@ -143,16 +143,32 @@ bool CDVDAudioCodecFFmpeg::AddData(const DemuxPacket &packet)
+ Reset();
+ }
+
+- AVPacket avpkt;
+- av_init_packet(&avpkt);
+- avpkt.data = packet.pData;
+- avpkt.size = packet.iSize;
+- avpkt.dts = (packet.dts == DVD_NOPTS_VALUE) ? AV_NOPTS_VALUE : static_cast<int64_t>(packet.dts / DVD_TIME_BASE * AV_TIME_BASE);
+- avpkt.pts = (packet.pts == DVD_NOPTS_VALUE) ? AV_NOPTS_VALUE : static_cast<int64_t>(packet.pts / DVD_TIME_BASE * AV_TIME_BASE);
+- avpkt.side_data = static_cast<AVPacketSideData*>(packet.pSideData);
+- avpkt.side_data_elems = packet.iSideDataElems;
+-
+- int ret = avcodec_send_packet(m_pCodecContext, &avpkt);
++ AVPacket* avpkt = av_packet_alloc();
++ if (!avpkt)
++ {
++ CLog::Log(LOGERROR, "CDVDAudioCodecFFmpeg::{} - av_packet_alloc failed: {}", __FUNCTION__,
++ strerror(errno));
++ return false;
++ }
++
++ avpkt->data = packet.pData;
++ avpkt->size = packet.iSize;
++ avpkt->dts = (packet.dts == DVD_NOPTS_VALUE)
++ ? AV_NOPTS_VALUE
++ : static_cast<int64_t>(packet.dts / DVD_TIME_BASE * AV_TIME_BASE);
++ avpkt->pts = (packet.pts == DVD_NOPTS_VALUE)
++ ? AV_NOPTS_VALUE
++ : static_cast<int64_t>(packet.pts / DVD_TIME_BASE * AV_TIME_BASE);
++ avpkt->side_data = static_cast<AVPacketSideData*>(packet.pSideData);
++ avpkt->side_data_elems = packet.iSideDataElems;
++
++ int ret = avcodec_send_packet(m_pCodecContext, avpkt);
++
++ //! @todo: properly handle avpkt side_data. this works around our inproper use of the side_data
++ // as we pass pointers to ffmpeg allocated memory for the side_data. we should really be allocating
++ // and storing our own AVPacket. This will require some extensive changes.
++ av_buffer_unref(&avpkt->buf);
++ av_free(avpkt);
+
+ // try again
+ if (ret == AVERROR(EAGAIN))
+diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp
+index 59479c049a813..932e462d772e2 100644
+--- a/xbmc/cores/VideoPlayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp
++++ b/xbmc/cores/VideoPlayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp
+@@ -128,14 +128,24 @@ int CDVDOverlayCodecFFmpeg::Decode(DemuxPacket *pPacket)
+
+ avsubtitle_free(&m_Subtitle);
+
+- AVPacket avpkt;
+- av_init_packet(&avpkt);
+- avpkt.data = pPacket->pData;
+- avpkt.size = pPacket->iSize;
+- avpkt.pts = pPacket->pts == DVD_NOPTS_VALUE ? AV_NOPTS_VALUE : (int64_t)pPacket->pts;
+- avpkt.dts = pPacket->dts == DVD_NOPTS_VALUE ? AV_NOPTS_VALUE : (int64_t)pPacket->dts;
++ AVPacket* avpkt = av_packet_alloc();
++ if (!avpkt)
++ {
++ CLog::Log(LOGERROR, "CDVDOverlayCodecFFmpeg::{} - av_packet_alloc failed: {}", __FUNCTION__,
++ strerror(errno));
++ return OC_ERROR;
++ }
++
++ avpkt->data = pPacket->pData;
++ avpkt->size = pPacket->iSize;
++ avpkt->pts = pPacket->pts == DVD_NOPTS_VALUE ? AV_NOPTS_VALUE : (int64_t)pPacket->pts;
++ avpkt->dts = pPacket->dts == DVD_NOPTS_VALUE ? AV_NOPTS_VALUE : (int64_t)pPacket->dts;
++
++ len = avcodec_decode_subtitle2(m_pCodecContext, &m_Subtitle, &gotsub, avpkt);
++
++ int size = avpkt->size;
+
+- len = avcodec_decode_subtitle2(m_pCodecContext, &m_Subtitle, &gotsub, &avpkt);
++ av_packet_free(&avpkt);
+
+ if (len < 0)
+ {
+@@ -144,7 +154,7 @@ int CDVDOverlayCodecFFmpeg::Decode(DemuxPacket *pPacket)
+ return OC_ERROR;
+ }
+
+- if (len != avpkt.size)
++ if (len != size)
+ CLog::Log(LOGWARNING, "%s - avcodec_decode_subtitle didn't consume the full packet", __FUNCTION__);
+
+ if (!gotsub)
+diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp
+index b27db92b5f7d7..9517c304721cd 100644
+--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp
++++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp
+@@ -368,20 +368,33 @@ bool CDVDVideoCodecDRMPRIME::AddData(const DemuxPacket& packet)
+ if (!packet.pData)
+ return true;
+
+- AVPacket avpkt;
+- av_init_packet(&avpkt);
+- avpkt.data = packet.pData;
+- avpkt.size = packet.iSize;
+- avpkt.dts = (packet.dts == DVD_NOPTS_VALUE)
+- ? AV_NOPTS_VALUE
+- : static_cast<int64_t>(packet.dts / DVD_TIME_BASE * AV_TIME_BASE);
+- avpkt.pts = (packet.pts == DVD_NOPTS_VALUE)
+- ? AV_NOPTS_VALUE
+- : static_cast<int64_t>(packet.pts / DVD_TIME_BASE * AV_TIME_BASE);
+- avpkt.side_data = static_cast<AVPacketSideData*>(packet.pSideData);
+- avpkt.side_data_elems = packet.iSideDataElems;
+-
+- int ret = avcodec_send_packet(m_pCodecContext, &avpkt);
++ AVPacket* avpkt = av_packet_alloc();
++ if (!avpkt)
++ {
++ CLog::Log(LOGERROR, "CDVDVideoCodecDRMPRIME::{} - av_packet_alloc failed: {}", __FUNCTION__,
++ strerror(errno));
++ return false;
++ }
++
++ avpkt->data = packet.pData;
++ avpkt->size = packet.iSize;
++ avpkt->dts = (packet.dts == DVD_NOPTS_VALUE)
++ ? AV_NOPTS_VALUE
++ : static_cast<int64_t>(packet.dts / DVD_TIME_BASE * AV_TIME_BASE);
++ avpkt->pts = (packet.pts == DVD_NOPTS_VALUE)
++ ? AV_NOPTS_VALUE
++ : static_cast<int64_t>(packet.pts / DVD_TIME_BASE * AV_TIME_BASE);
++ avpkt->side_data = static_cast<AVPacketSideData*>(packet.pSideData);
++ avpkt->side_data_elems = packet.iSideDataElems;
++
++ int ret = avcodec_send_packet(m_pCodecContext, avpkt);
++
++ //! @todo: properly handle avpkt side_data. this works around our inproper use of the side_data
++ // as we pass pointers to ffmpeg allocated memory for the side_data. we should really be allocating
++ // and storing our own AVPacket. This will require some extensive changes.
++ av_buffer_unref(&avpkt->buf);
++ av_free(avpkt);
++
+ if (ret == AVERROR(EAGAIN))
+ return false;
+ else if (ret)
+@@ -427,11 +440,18 @@ void CDVDVideoCodecDRMPRIME::Reset()
+
+ void CDVDVideoCodecDRMPRIME::Drain()
+ {
+- AVPacket avpkt;
+- av_init_packet(&avpkt);
+- avpkt.data = nullptr;
+- avpkt.size = 0;
+- int ret = avcodec_send_packet(m_pCodecContext, &avpkt);
++ AVPacket* avpkt = av_packet_alloc();
++ if (!avpkt)
++ {
++ CLog::Log(LOGERROR, "CDVDVideoCodecDRMPRIME::{} - av_packet_alloc failed: {}", __FUNCTION__,
++ strerror(errno));
++ return;
++ }
++
++ avpkt->data = nullptr;
++ avpkt->size = 0;
++
++ int ret = avcodec_send_packet(m_pCodecContext, avpkt);
+ if (ret && ret != AVERROR_EOF)
+ {
+ char err[AV_ERROR_MAX_STRING_SIZE] = {};
+@@ -439,6 +459,8 @@ void CDVDVideoCodecDRMPRIME::Drain()
+ CLog::Log(LOGERROR, "CDVDVideoCodecDRMPRIME::{} - send packet failed: {} ({})", __FUNCTION__,
+ err, ret);
+ }
++
++ av_packet_free(&avpkt);
+ }
+
+ void CDVDVideoCodecDRMPRIME::SetPictureParams(VideoPicture* pVideoPicture)
+diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
+index 1a98610eaa67d..89cc34dd4a353 100644
+--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
++++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
+@@ -561,16 +561,32 @@ bool CDVDVideoCodecFFmpeg::AddData(const DemuxPacket &packet)
+ m_dts = packet.dts;
+ m_pCodecContext->reordered_opaque = pts_dtoi(packet.pts);
+
+- AVPacket avpkt;
+- av_init_packet(&avpkt);
+- avpkt.data = packet.pData;
+- avpkt.size = packet.iSize;
+- avpkt.dts = (packet.dts == DVD_NOPTS_VALUE) ? AV_NOPTS_VALUE : static_cast<int64_t>(packet.dts / DVD_TIME_BASE * AV_TIME_BASE);
+- avpkt.pts = (packet.pts == DVD_NOPTS_VALUE) ? AV_NOPTS_VALUE : static_cast<int64_t>(packet.pts / DVD_TIME_BASE * AV_TIME_BASE);
+- avpkt.side_data = static_cast<AVPacketSideData*>(packet.pSideData);
+- avpkt.side_data_elems = packet.iSideDataElems;
++ AVPacket* avpkt = av_packet_alloc();
++ if (!avpkt)
++ {
++ CLog::Log(LOGERROR, "CDVDVideoCodecFFmpeg::{} - av_packet_alloc failed: {}", __FUNCTION__,
++ strerror(errno));
++ return false;
++ }
++
++ avpkt->data = packet.pData;
++ avpkt->size = packet.iSize;
++ avpkt->dts = (packet.dts == DVD_NOPTS_VALUE)
++ ? AV_NOPTS_VALUE
++ : static_cast<int64_t>(packet.dts / DVD_TIME_BASE * AV_TIME_BASE);
++ avpkt->pts = (packet.pts == DVD_NOPTS_VALUE)
++ ? AV_NOPTS_VALUE
++ : static_cast<int64_t>(packet.pts / DVD_TIME_BASE * AV_TIME_BASE);
++ avpkt->side_data = static_cast<AVPacketSideData*>(packet.pSideData);
++ avpkt->side_data_elems = packet.iSideDataElems;
++
++ int ret = avcodec_send_packet(m_pCodecContext, avpkt);
+
+- int ret = avcodec_send_packet(m_pCodecContext, &avpkt);
++ //! @todo: properly handle avpkt side_data. this works around our inproper use of the side_data
++ // as we pass pointers to ffmpeg allocated memory for the side_data. we should really be allocating
++ // and storing our own AVPacket. This will require some extensive changes.
++ av_buffer_unref(&avpkt->buf);
++ av_free(avpkt);
+
+ // try again
+ if (ret == AVERROR(EAGAIN))
+@@ -649,13 +665,20 @@ CDVDVideoCodec::VCReturn CDVDVideoCodecFFmpeg::GetPicture(VideoPicture* pVideoPi
+ // process ffmpeg
+ if (m_codecControlFlags & DVD_CODEC_CTRL_DRAIN)
+ {
+- AVPacket avpkt;
+- av_init_packet(&avpkt);
+- avpkt.data = nullptr;
+- avpkt.size = 0;
+- avpkt.dts = AV_NOPTS_VALUE;
+- avpkt.pts = AV_NOPTS_VALUE;
+- avcodec_send_packet(m_pCodecContext, &avpkt);
++ AVPacket* avpkt = av_packet_alloc();
++ if (!avpkt)
++ {
++ CLog::Log(LOGERROR, "CDVDVideoCodecFFmpeg::{} - av_packet_alloc failed: {}", __FUNCTION__,
++ strerror(errno));
++ return VC_ERROR;
++ }
++ avpkt->data = nullptr;
++ avpkt->size = 0;
++ avpkt->dts = AV_NOPTS_VALUE;
++ avpkt->pts = AV_NOPTS_VALUE;
++ avcodec_send_packet(m_pCodecContext, avpkt);
++
++ av_packet_free(&avpkt);
+ }
+
+ int ret = avcodec_receive_frame(m_pCodecContext, m_pDecodedFrame);
+diff --git a/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxClient.cpp b/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxClient.cpp
+index 795b9c11e1ed8..4b1c35218ce7f 100644
+--- a/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxClient.cpp
++++ b/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxClient.cpp
+@@ -171,13 +171,19 @@ bool CDVDDemuxClient::ParsePacket(DemuxPacket* pkt)
+ // Allow ffmpeg to transport codec information to stream->m_context
+ if (!avcodec_open2(stream->m_context, stream->m_context->codec, nullptr))
+ {
+- AVPacket avpkt;
+- av_init_packet(&avpkt);
+- avpkt.data = pkt->pData;
+- avpkt.size = pkt->iSize;
+- avpkt.dts = avpkt.pts = AV_NOPTS_VALUE;
+- avcodec_send_packet(stream->m_context, &avpkt);
++ AVPacket* avpkt = av_packet_alloc();
++ if (!avpkt)
++ {
++ CLog::Log(LOGERROR, "CDVDDemuxClient::{} - av_packet_alloc failed: {}", __FUNCTION__,
++ strerror(errno));
++ return false;
++ }
++ avpkt->data = pkt->pData;
++ avpkt->size = pkt->iSize;
++ avpkt->dts = avpkt->pts = AV_NOPTS_VALUE;
++ avcodec_send_packet(stream->m_context, avpkt);
+ avcodec_close(stream->m_context);
++ av_packet_free(&avpkt);
+ }
+ }
+ }
+diff --git a/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxUtils.cpp b/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxUtils.cpp
+index d100d0566b381..632a78820da6c 100644
+--- a/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxUtils.cpp
++++ b/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxUtils.cpp
+@@ -24,11 +24,24 @@ void CDVDDemuxUtils::FreeDemuxPacket(DemuxPacket* pPacket)
+ KODI::MEMORY::AlignedFree(pPacket->pData);
+ if (pPacket->iSideDataElems)
+ {
+- AVPacket avPkt;
+- av_init_packet(&avPkt);
+- avPkt.side_data = static_cast<AVPacketSideData*>(pPacket->pSideData);
+- avPkt.side_data_elems = pPacket->iSideDataElems;
+- av_packet_free_side_data(&avPkt);
++ AVPacket* avPkt = av_packet_alloc();
++ if (!avPkt)
++ {
++ CLog::Log(LOGERROR, "CDVDDemuxUtils::{} - av_packet_alloc failed: {}", __FUNCTION__,
++ strerror(errno));
++ }
++ else
++ {
++ avPkt->side_data = static_cast<AVPacketSideData*>(pPacket->pSideData);
++ avPkt->side_data_elems = pPacket->iSideDataElems;
++
++ //! @todo: properly handle avpkt side_data. this works around our inproper use of the side_data
++ // as we pass pointers to ffmpeg allocated memory for the side_data. we should really be allocating
++ // and storing our own AVPacket. This will require some extensive changes.
++
++ // here we make use of ffmpeg to free the side_data, we shouldn't have to allocate an intermediate AVPacket though
++ av_packet_free(&avPkt);
++ }
+ }
+ if (pPacket->cryptoInfo)
+ delete pPacket->cryptoInfo;
+@@ -75,9 +88,24 @@ DemuxPacket* CDVDDemuxUtils::AllocateDemuxPacket(unsigned int iDataSize, unsigne
+
+ void CDVDDemuxUtils::StoreSideData(DemuxPacket *pkt, AVPacket *src)
+ {
+- AVPacket avPkt;
+- av_init_packet(&avPkt);
+- av_packet_copy_props(&avPkt, src);
+- pkt->pSideData = avPkt.side_data;
+- pkt->iSideDataElems = avPkt.side_data_elems;
++ AVPacket* avPkt = av_packet_alloc();
++ if (!avPkt)
++ {
++ CLog::Log(LOGERROR, "CDVDDemuxUtils::{} - av_packet_alloc failed: {}", __FUNCTION__,
++ strerror(errno));
++ return;
++ }
++
++ // here we make allocate an intermediate AVPacket to allow ffmpeg to allocate the side_data
++ // via the copy below. we then reference this allocated memory in the DemuxPacket. this behaviour
++ // is bad and will require a larger rework.
++ av_packet_copy_props(avPkt, src);
++ pkt->pSideData = avPkt->side_data;
++ pkt->iSideDataElems = avPkt->side_data_elems;
++
++ //! @todo: properly handle avpkt side_data. this works around our inproper use of the side_data
++ // as we pass pointers to ffmpeg allocated memory for the side_data. we should really be allocating
++ // and storing our own AVPacket. This will require some extensive changes.
++ av_buffer_unref(&avPkt->buf);
++ av_free(avPkt);
+ }
+diff --git a/xbmc/guilib/FFmpegImage.cpp b/xbmc/guilib/FFmpegImage.cpp
+index 13bf5361bf7af..dd5b675d8da3f 100644
+--- a/xbmc/guilib/FFmpegImage.cpp
++++ b/xbmc/guilib/FFmpegImage.cpp
+@@ -688,36 +688,34 @@ bool CFFmpegImage::CreateThumbnailFromSurface(unsigned char* bufferin, unsigned
+ tdm.frame_input->format = jpg_output ? AV_PIX_FMT_YUVJ420P : AV_PIX_FMT_RGBA;
+
+ int got_package = 0;
+- AVPacket avpkt;
+- av_init_packet(&avpkt);
+- // encoder will allocate memory
+- avpkt.data = nullptr;
+- avpkt.size = 0;
++ AVPacket* avpkt;
++ avpkt = av_packet_alloc();
+
+- int ret = EncodeFFmpegFrame(tdm.avOutctx, &avpkt, &got_package, tdm.frame_input);
++ int ret = EncodeFFmpegFrame(tdm.avOutctx, avpkt, &got_package, tdm.frame_input);
+
+ if ((ret < 0) || (got_package == 0))
+ {
+ CLog::Log(LOGERROR, "Could not encode thumbnail: %s", destFile.c_str());
+ CleanupLocalOutputBuffer();
++ av_packet_free(&avpkt);
+ return false;
+ }
+
+- bufferoutSize = avpkt.size;
++ bufferoutSize = avpkt->size;
+ m_outputBuffer = (uint8_t*) av_malloc(bufferoutSize);
+ if (!m_outputBuffer)
+ {
+ CLog::Log(LOGERROR, "Could not generate allocate memory for thumbnail: %s", destFile.c_str());
+ CleanupLocalOutputBuffer();
+- av_packet_unref(&avpkt);
++ av_packet_free(&avpkt);
+ return false;
+ }
+ // update buffer ptr for caller
+ bufferout = m_outputBuffer;
+
+ // copy avpkt data into outputbuffer
+- memcpy(m_outputBuffer, avpkt.data, avpkt.size);
+- av_packet_unref(&avpkt);
++ memcpy(m_outputBuffer, avpkt->data, avpkt->size);
++ av_packet_free(&avpkt);
+
+ return true;
+ }
+
+From ac70a7f85ce94c890045d6db50d5158cb0c67366 Mon Sep 17 00:00:00 2001
+From: Lukas Rusak <lorusak(a)gmail.com>
+Date: Sat, 10 Apr 2021 11:34:47 -0700
+Subject: [PATCH 4/6] ffmpeg: remove use of deprecated
+ AVCodecContext::thread_safe_callbacks
+
+in the future libavcodec will behave as if this field was always set to 1
+---
+ xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp | 1 -
+ xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp | 1 -
+ 2 files changed, 2 deletions(-)
+
+diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp
+index 9517c304721cd..525d0f6626db7 100644
+--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp
++++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp
+@@ -313,7 +313,6 @@ bool CDVDVideoCodecDRMPRIME::Open(CDVDStreamInfo& hints, CDVDCodecOptions& optio
+ m_pCodecContext->bits_per_coded_sample = hints.bitsperpixel;
+ m_pCodecContext->time_base.num = 1;
+ m_pCodecContext->time_base.den = DVD_TIME_BASE;
+- m_pCodecContext->thread_safe_callbacks = 1;
+ m_pCodecContext->thread_count = CServiceBroker::GetCPUInfo()->GetCPUCount();
+
+ if (hints.extradata && hints.extrasize > 0)
+diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
+index 89cc34dd4a353..d0f3456cab71e 100644
+--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
++++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
+@@ -372,7 +372,6 @@ bool CDVDVideoCodecFFmpeg::Open(CDVDStreamInfo &hints, CDVDCodecOptions &options
+ int num_threads = CServiceBroker::GetCPUInfo()->GetCPUCount() * 3 / 2;
+ num_threads = std::max(1, std::min(num_threads, 16));
+ m_pCodecContext->thread_count = num_threads;
+- m_pCodecContext->thread_safe_callbacks = 1;
+ m_decoderState = STATE_SW_MULTI;
+ CLog::Log(LOGDEBUG, "CDVDVideoCodecFFmpeg - open frame threaded with %d threads", num_threads);
+ }
+
+From a45d712d1f5e38e12601f4ded27c51f533b529fd Mon Sep 17 00:00:00 2001
+From: Lukas Rusak <lorusak(a)gmail.com>
+Date: Sat, 10 Apr 2021 11:37:31 -0700
+Subject: [PATCH 5/6] ffmpeg: remove use of deprecated AVCodecContext::debug_mv
+ as it's unused
+
+---
+ xbmc/cores/VideoPlayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp | 1 -
+ .../VideoPlayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp | 1 -
+ xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp | 1 -
+ 3 files changed, 3 deletions(-)
+
+diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp
+index 299ee568f4480..5709c6f6b6aa8 100644
+--- a/xbmc/cores/VideoPlayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp
++++ b/xbmc/cores/VideoPlayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp
+@@ -69,7 +69,6 @@ bool CDVDAudioCodecFFmpeg::Open(CDVDStreamInfo &hints, CDVDCodecOptions &options
+ if (!m_pCodecContext)
+ return false;
+
+- m_pCodecContext->debug_mv = 0;
+ m_pCodecContext->debug = 0;
+ m_pCodecContext->workaround_bugs = 1;
+
+diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp
+index 932e462d772e2..5672bd1662ad6 100644
+--- a/xbmc/cores/VideoPlayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp
++++ b/xbmc/cores/VideoPlayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp
+@@ -50,7 +50,6 @@ bool CDVDOverlayCodecFFmpeg::Open(CDVDStreamInfo &hints, CDVDCodecOptions &optio
+ if (!m_pCodecContext)
+ return false;
+
+- m_pCodecContext->debug_mv = 0;
+ m_pCodecContext->debug = 0;
+ m_pCodecContext->workaround_bugs = FF_BUG_AUTODETECT;
+ m_pCodecContext->codec_tag = hints.codec_tag;
+diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
+index d0f3456cab71e..dd2227d16a9f1 100644
+--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
++++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
+@@ -354,7 +354,6 @@ bool CDVDVideoCodecFFmpeg::Open(CDVDStreamInfo &hints, CDVDCodecOptions &options
+ return false;
+
+ m_pCodecContext->opaque = static_cast<ICallbackHWAccel*>(this);
+- m_pCodecContext->debug_mv = 0;
+ m_pCodecContext->debug = 0;
+ m_pCodecContext->workaround_bugs = FF_BUG_AUTODETECT;
+ m_pCodecContext->get_format = GetFormat;
+
+From 2cb410135167c3e90fe1d7135b1cad6df50331e3 Mon Sep 17 00:00:00 2001
+From: Lukas Rusak <lorusak(a)gmail.com>
+Date: Sat, 10 Apr 2021 12:35:16 -0700
+Subject: [PATCH 6/6] ffmpeg: remove deprectated use of av_frame_get_qp_table
+ (sort of)
+
+---
+ .../DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp | 37 +++++++++++++++++--
+ 1 file changed, 33 insertions(+), 4 deletions(-)
+
+diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
+index dd2227d16a9f1..37cc60782925d 100644
+--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
++++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
+@@ -1021,15 +1021,44 @@ bool CDVDVideoCodecFFmpeg::GetPictureCommon(VideoPicture* pVideoPicture)
+ else
+ pVideoPicture->color_range = m_hints.colorRange == AVCOL_RANGE_JPEG ? 1 : 0;
+
+- pVideoPicture->qp_table = av_frame_get_qp_table(m_pFrame,
+- &pVideoPicture->qstride,
+- &pVideoPicture->qscale_type);
++ //! @todo: ffmpeg doesn't seem like they know how they want to handle this.
++ // av_frame_get_qp_table is deprecated but there doesn't seem to be a valid
++ // replacement. the following is basically what av_frame_get_qp_table does
++ // internally so we can avoid the deprecation warning however it may still
++ // break in the future because some definitions are guarded and may be removed.
++
++ pVideoPicture->qp_table = nullptr;
++ pVideoPicture->qstride = 0;
++ pVideoPicture->qscale_type = 0;
++
++ AVFrameSideData* sd;
++ sd = av_frame_get_side_data(m_pFrame, AV_FRAME_DATA_QP_TABLE_PROPERTIES);
++ if (sd)
++ {
++ struct qp_properties
++ {
++ int stride;
++ int type;
++ };
++
++ auto qp = reinterpret_cast<qp_properties*>(sd->data);
++
++ sd = av_frame_get_side_data(m_pFrame, AV_FRAME_DATA_QP_TABLE_DATA);
++ if (sd && sd->buf && qp)
++ {
++ // this seems wrong but it's what ffmpeg does internally
++ pVideoPicture->qp_table = reinterpret_cast<int8_t*>(sd->buf->data);
++ pVideoPicture->qstride = qp->stride;
++ pVideoPicture->qscale_type = qp->type;
++ }
++ }
++
+ pVideoPicture->pict_type = m_pFrame->pict_type;
+
+ // metadata
+ pVideoPicture->hasDisplayMetadata = false;
+ pVideoPicture->hasLightMetadata = false;
+- AVFrameSideData *sd = av_frame_get_side_data(m_pFrame, AV_FRAME_DATA_MASTERING_DISPLAY_METADATA);
++ sd = av_frame_get_side_data(m_pFrame, AV_FRAME_DATA_MASTERING_DISPLAY_METADATA);
+ if (sd)
+ {
+ pVideoPicture->displayMetadata = *(AVMasteringDisplayMetadata *)sd->data;
diff --git a/kodi.spec b/kodi.spec
index b2e0dd7..90884c8 100644
--- a/kodi.spec
+++ b/kodi.spec
@@ -42,7 +42,7 @@
Name: kodi
Version: 19.1
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Media center
License: GPLv2+ and GPLv3+ and LGPLv2+ and BSD and MIT
@@ -69,8 +69,8 @@ Source4: kodi-libdvdcss-1.4.2-Leia-Beta-5.tar.gz
%endif
%if ! 0%{?_with_external_ffmpeg}
-# wget -O ffmpeg-4.3.1-Matrix-Beta1.tar.gz https://github.com/xbmc/FFmpeg/archive/4.3.1-Matrix-Beta1.tar.gz
-Source5: ffmpeg-4.3.1-Matrix-Beta1.tar.gz
+# wget -O ffmpeg-4.4-N-Alpha1.tar.gz https://github.com/xbmc/FFmpeg/archive/4.4-N-Alpha1.tar.gz
+Source5: ffmpeg-4.4-N-Alpha1.tar.gz
%endif
# Set program version parameters
@@ -85,6 +85,9 @@ Patch3: kodi-18-annobin-workaround.patch
# Workaround for brp-mangle-shebangs behavior (RHBZ#1787088)
Patch4: kodi-18-brp-mangle-shebangs.patch
+# FFmpeg 4.4 support (RFBZ#6000)
+Patch5: kodi-19-ffmpeg-4-4.patch
+
%ifarch x86_64 i686
%global _with_crystalhd 1
%endif
@@ -324,6 +327,7 @@ This package contains FirewallD files for Kodi.
%patch2 -p1 -b.trousers
%patch3 -p1 -b.innobinfix
%patch4 -p1 -b.brp-mangle-shebangs
+%patch5 -p1 -b.ffmpeg-4-4
# Fix up Python shebangs
pathfix.py -pni "%{__python3} %{py3_shbang_opts}" \
@@ -456,6 +460,9 @@ rm -f ${RPM_BUILD_ROOT}%{_mandir}/man1/kodi-wiiremote.1
%changelog
+* Thu Jun 03 2021 Michael Cronenworth <mike(a)cchtml.com> - 19.1-2
+- FFmpeg 4.4 support
+
* Mon May 10 2021 Michael Cronenworth <mike(a)cchtml.com> - 19.1-1
- Kodi 19.1 Final
3 years, 5 months
[zoneminder/el7: 2/2] Merge branch 'master' into el7
by Andrew Bauer
commit 94118e26f58554af80415535f5f08121a4dc47df
Merge: bb3b792 6ea6d55
Author: Andrew Bauer <zonexpertconsulting(a)outlook.com>
Date: Wed Jun 2 15:41:11 2021 -0500
Merge branch 'master' into el7
.gitignore | 1 +
sources | 2 +-
zoneminder-1.36.2.tar.gz | Bin 11347952 -> 0 bytes
zoneminder.spec | 5 ++++-
4 files changed, 6 insertions(+), 2 deletions(-)
---
3 years, 5 months
[zoneminder/el8] 1.36.3 release
by Andrew Bauer
Summary of changes:
6ea6d55... 1.36.3 release (*)
(*) This commit already existed in another branch; no separate mail sent
3 years, 5 months
[zoneminder/f33] 1.36.3 release
by Andrew Bauer
Summary of changes:
6ea6d55... 1.36.3 release (*)
(*) This commit already existed in another branch; no separate mail sent
3 years, 5 months