commit:     42f6b911587c4f79e92d779f8f1067222e34d833
Author:     Brahmajit Das <listout <AT> listout <DOT> xyz>
AuthorDate: Mon Aug 25 13:06:32 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Aug 27 10:31:46 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=42f6b911

media-libs/opencv: Fix build with media-video/ffmpeg-8.x

Closes: https://bugs.gentoo.org/961697
Signed-off-by: Brahmajit Das <listout <AT> listout.xyz>
Part-of: https://github.com/gentoo/gentoo/pull/43559
Closes: https://github.com/gentoo/gentoo/pull/43559
Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../opencv/files/opencv-4.11.0-ffmpeg8.patch       | 37 ++++++++++++++++++++++
 media-libs/opencv/opencv-4.11.0.ebuild             |  2 ++
 2 files changed, 39 insertions(+)

diff --git a/media-libs/opencv/files/opencv-4.11.0-ffmpeg8.patch 
b/media-libs/opencv/files/opencv-4.11.0-ffmpeg8.patch
new file mode 100644
index 000000000000..c93baf3b3836
--- /dev/null
+++ b/media-libs/opencv/files/opencv-4.11.0-ffmpeg8.patch
@@ -0,0 +1,37 @@
+https://github.com/opencv/opencv/pull/27691
+From: Alexander Smorkalov <[email protected]>
+Date: Wed, 20 Aug 2025 10:53:51 +0300
+Subject: [PATCH] FFmpeg 8.0 support.
+
+--- a/modules/videoio/src/cap_ffmpeg_impl.hpp
++++ b/modules/videoio/src/cap_ffmpeg_impl.hpp
+@@ -685,7 +685,10 @@ void CvCapture_FFMPEG::close()
+     if( video_st )
+     {
+ #ifdef CV_FFMPEG_CODECPAR
++// avcodec_close removed in FFmpeg release 8.0
++# if (LIBAVCODEC_BUILD < CALC_FFMPEG_VERSION(62, 11, 100))
+         avcodec_close( context );
++# endif
+ #endif
+         video_st = NULL;
+     }
+@@ -2005,7 +2008,18 @@ void CvCapture_FFMPEG::get_rotation_angle()
+     rotation_angle = 0;
+ #if LIBAVFORMAT_BUILD >= CALC_FFMPEG_VERSION(57, 68, 100)
+     const uint8_t *data = 0;
++    // av_stream_get_side_data removed in FFmpeg release 8.0
++# if (LIBAVCODEC_BUILD < CALC_FFMPEG_VERSION(62, 11, 100))
+     data = av_stream_get_side_data(video_st, AV_PKT_DATA_DISPLAYMATRIX, NULL);
++# else
++    AVPacketSideData* sd = video_st->codecpar->coded_side_data;
++    int nb_sd = video_st->codecpar->nb_coded_side_data;
++    if (sd && nb_sd > 0)
++    {
++        const AVPacketSideData* mtx = av_packet_side_data_get(sd,  nb_sd, 
AV_PKT_DATA_DISPLAYMATRIX);
++        data = mtx->data;
++    }
++# endif
+     if (data)
+     {
+         rotation_angle = -cvRound(av_display_rotation_get((const 
int32_t*)data));

diff --git a/media-libs/opencv/opencv-4.11.0.ebuild 
b/media-libs/opencv/opencv-4.11.0.ebuild
index cd15db4ddb66..8947034a680f 100644
--- a/media-libs/opencv/opencv-4.11.0.ebuild
+++ b/media-libs/opencv/opencv-4.11.0.ebuild
@@ -386,6 +386,8 @@ PATCHES=(
 
        "${FILESDIR}/${PN}-4.11.0-cuda-12.9.patch" # PR 27288
 
+       "${FILESDIR}/${PN}-4.11.0-ffmpeg8.patch" # PR 27691
+
        # TODO applied in src_prepare
        # "${FILESDIR}/${PN}_contrib-4.8.1-rgbd.patch"
 

Reply via email to