Package: libyami-utils Version: 1.3.0-3 Followup-For: Bug #993379 User: ubuntu-de...@lists.ubuntu.com Usertags: origin-ubuntu jammy ubuntu-patch X-Debbugs-Cc: simon.cho...@canonical.com Control: tags -1 patch
Hi, In Ubuntu, the attached patch was applied to fix the aforementioned FTBFS: Thanks for considering the patch. Cheers, Simon
diff -Nru libyami-utils-1.3.0/debian/patches/0004-tests-decodeinputavformat-use-heap-allocated-m_packe.patch libyami-utils-1.3.0/debian/patches/0004-tests-decodeinputavformat-use-heap-allocated-m_packe.patch --- libyami-utils-1.3.0/debian/patches/0004-tests-decodeinputavformat-use-heap-allocated-m_packe.patch 1970-01-01 01:00:00.000000000 +0100 +++ libyami-utils-1.3.0/debian/patches/0004-tests-decodeinputavformat-use-heap-allocated-m_packe.patch 2021-12-17 15:50:51.000000000 +0100 @@ -0,0 +1,85 @@ +From dbd0c5508d0084a9b069cafd583e6004a12f562a Mon Sep 17 00:00:00 2001 +From: Simon Chopin <simon.cho...@canonical.com> +Date: Fri, 17 Dec 2021 16:03:10 +0100 +Subject: [PATCH] tests/decodeinputavformat: use heap-allocated m_packet +Forwarded: https://github.com/intel/libyami-utils/pull/138 + +This allows us to migrate away from av_init_packet() which has been +deprecated in recent FFMpeg, making the build fail. + +This implementation is somewhat rough, there's probably a way to avoid +reallocating the packet each iteration, but it does the job. +--- + tests/decodeinputavformat.cpp | 23 +++++++++-------------- + tests/decodeinputavformat.h | 2 +- + 2 files changed, 10 insertions(+), 15 deletions(-) + +--- a/tests/decodeinputavformat.cpp ++++ b/tests/decodeinputavformat.cpp +@@ -22,18 +22,12 @@ + #include "common/log.h" + #include <Yami.h> + +-#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(55, 39, 100) +-#define av_packet_unref av_free_packet +-#endif +- + DecodeInputAvFormat::DecodeInputAvFormat() +-:m_format(NULL),m_videoId(-1), m_codecId(AV_CODEC_ID_NONE), m_isEos(true) ++:m_format(NULL),m_videoId(-1), m_codecId(AV_CODEC_ID_NONE), m_packet(av_packet_alloc()), m_isEos(true) + { + #if LIBAVFORMAT_VERSION_INT < AV_VERSION_INT(58, 9, 100) + av_register_all(); + #endif +- +- av_init_packet(&m_packet); + } + + bool DecodeInputAvFormat::initInput(const char* fileName) +@@ -132,18 +126,19 @@ + int ret; + while (1) { + //free old packet +- av_packet_unref(&m_packet); ++ av_packet_free(&m_packet); ++ m_packet = av_packet_alloc(); + +- ret = av_read_frame(m_format, &m_packet); ++ ret = av_read_frame(m_format, m_packet); + if (ret) { + m_isEos = true; + return false; + } +- if (m_packet.stream_index == m_videoId) { ++ if (m_packet->stream_index == m_videoId) { + memset(&inputBuffer, 0, sizeof(inputBuffer)); +- inputBuffer.data = m_packet.data; +- inputBuffer.size = m_packet.size; +- inputBuffer.timeStamp = m_packet.dts; ++ inputBuffer.data = m_packet->data; ++ inputBuffer.size = m_packet->size; ++ inputBuffer.timeStamp = m_packet->dts; + return true; + } + } +@@ -158,8 +153,8 @@ + DecodeInputAvFormat::~DecodeInputAvFormat() + { + if (m_format) { +- av_packet_unref(&m_packet); + avformat_close_input(&m_format); + } ++ av_packet_free(&m_packet); + + } +--- a/tests/decodeinputavformat.h ++++ b/tests/decodeinputavformat.h +@@ -47,7 +47,7 @@ + AVFormatContext* m_format; + int m_videoId; + AVCodecID m_codecId; +- AVPacket m_packet; ++ AVPacket* m_packet; + bool m_isEos; + string m_codecData; + }; diff -Nru libyami-utils-1.3.0/debian/patches/av_packet_init-deprecated.patch libyami-utils-1.3.0/debian/patches/av_packet_init-deprecated.patch --- libyami-utils-1.3.0/debian/patches/av_packet_init-deprecated.patch 1970-01-01 01:00:00.000000000 +0100 +++ libyami-utils-1.3.0/debian/patches/av_packet_init-deprecated.patch 2021-12-17 15:48:08.000000000 +0100 @@ -0,0 +1,61 @@ +Description: Migrate away from the deprecated av_packet_init API +Author: Simon Chopin <simon.cho...@canonical.com> + +--- a/tests/decodeinputavformat.cpp ++++ b/tests/decodeinputavformat.cpp +@@ -33,7 +33,7 @@ + av_register_all(); + #endif + +- av_init_packet(&m_packet); ++ m_packet = av_packet_alloc(); + } + + bool DecodeInputAvFormat::initInput(const char* fileName) +@@ -132,18 +132,19 @@ + int ret; + while (1) { + //free old packet +- av_packet_unref(&m_packet); ++ av_packet_free(&m_packet); ++ m_packet = av_packet_alloc(); + +- ret = av_read_frame(m_format, &m_packet); ++ ret = av_read_frame(m_format, m_packet); + if (ret) { + m_isEos = true; + return false; + } +- if (m_packet.stream_index == m_videoId) { ++ if (m_packet->stream_index == m_videoId) { + memset(&inputBuffer, 0, sizeof(inputBuffer)); +- inputBuffer.data = m_packet.data; +- inputBuffer.size = m_packet.size; +- inputBuffer.timeStamp = m_packet.dts; ++ inputBuffer.data = m_packet->data; ++ inputBuffer.size = m_packet->size; ++ inputBuffer.timeStamp = m_packet->dts; + return true; + } + } +@@ -157,8 +158,8 @@ + + DecodeInputAvFormat::~DecodeInputAvFormat() + { ++ av_packet_free(&m_packet); + if (m_format) { +- av_packet_unref(&m_packet); + avformat_close_input(&m_format); + } + +--- a/tests/decodeinputavformat.h ++++ b/tests/decodeinputavformat.h +@@ -47,7 +47,7 @@ + AVFormatContext* m_format; + int m_videoId; + AVCodecID m_codecId; +- AVPacket m_packet; ++ AVPacket* m_packet; + bool m_isEos; + string m_codecData; + }; diff -Nru libyami-utils-1.3.0/debian/patches/series libyami-utils-1.3.0/debian/patches/series --- libyami-utils-1.3.0/debian/patches/series 2021-08-12 16:52:14.000000000 +0200 +++ libyami-utils-1.3.0/debian/patches/series 2021-12-17 15:50:51.000000000 +0100 @@ -1,3 +1,4 @@ 0001-decode-avformat-av_register_all-is-deprecated-since-.patch 0002-decode-avformat-use-LIBAVFORMAT_VERSION_INT-instead.patch 0003-Use-libmd-instead-of-libbsd-for-message-digest-funct.patch +0004-tests-decodeinputavformat-use-heap-allocated-m_packe.patch