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

Reply via email to