Index | Thread | Search

From:
Antoine Jacoutot <ajacoutot@bsdfrog.org>
Subject:
Re: astro/celestia: compatibility with ffmpeg 9.0
To:
"Kirill A. Korinsky" <kirill@korins.ky>, Antoine Jacoutot <ajacoutot@openbsd.org>
Cc:
OpenBSD ports <ports@openbsd.org>
Date:
Thu, 13 Aug 2026 00:57:08 +0200

Download raw body.

Thread
On August 13, 2026 12:41:01 AM GMT+02:00, "Kirill A. Korinsky" <kirill@korins.ky> wrote:
>Antoine,
>
>I'd like to backport from upstream a diff to fix ffmpeg 9.0 compatibility in
>astro/celestia.
>
>Build tested against ffmpeg-9.0 and ffmpeg-8.1.2
>
>Ok?
>
>Index: Makefile
>===================================================================
>RCS file: /home/cvs/ports/astro/celestia/Makefile,v
>diff -u -p -r1.63 Makefile
>--- Makefile	25 Mar 2026 14:51:54 -0000	1.63
>+++ Makefile	12 Aug 2026 22:27:01 -0000
>@@ -5,6 +5,7 @@ GH_PROJECT=		Celestia
> GH_COMMIT=		504e54ca7decb483c81f76357ada8bd95a7b0f47
> 
> DISTNAME=		celestia-1.7.0pre20260319
>+REVISION=		0
> EPOCH=			0
> 
> SHARED_LIBS +=	celestia                  0.0 # 0.0
>Index: patches/patch-src_celestia_ffmpegcapture_cpp
>===================================================================
>RCS file: patches/patch-src_celestia_ffmpegcapture_cpp
>diff -N patches/patch-src_celestia_ffmpegcapture_cpp
>--- /dev/null	1 Jan 1970 00:00:00 -0000
>+++ patches/patch-src_celestia_ffmpegcapture_cpp	12 Aug 2026 22:30:05 -0000
>@@ -0,0 +1,61 @@
>+https://github.com/CelestiaProject/Celestia/commit/c2152be2385429660a2c02351110a8af08db6df8
>+
>+Index: src/celestia/ffmpegcapture.cpp
>+--- src/celestia/ffmpegcapture.cpp.orig
>++++ src/celestia/ffmpegcapture.cpp
>+@@ -98,7 +98,8 @@ bool FFMPEGCapturePrivate::init(const std::filesystem:
>+ 
>+ bool FFMPEGCapturePrivate::isSupportedPixelFormat(enum AVPixelFormat format) const
>+ {
>+-    const enum AVPixelFormat *p = vc->pix_fmts;
>++#if (LIBAVCODEC_VERSION_INT < AV_VERSION_INT(61, 19, 100)) // ffmpeg < 7.1
>++    const AVPixelFormat* p = vc->pix_fmts;
>+     if (p == nullptr)
>+         return false;
>+ 
>+@@ -109,6 +110,20 @@ bool FFMPEGCapturePrivate::isSupportedPixelFormat(enum
>+     }
>+ 
>+     return false;
>++#else
>++    const void* p;
>++    int ret = avcodec_get_supported_config(enc, vc, AV_CODEC_CONFIG_PIX_FORMAT, 0, &p, nullptr);
>++    if (ret < 0)
>++        return false;
>++
>++    for (auto f = static_cast<const AVPixelFormat*>(p); *f != AV_PIX_FMT_NONE; ++f)
>++    {
>++        if (*f == format)
>++            return true;
>++    }
>++
>++    return false;
>++#endif
>+ }
>+ 
>+ #if AVCODEC_DEBUG
>+@@ -268,7 +283,15 @@ bool FFMPEGCapturePrivate::addStream(int width, int he
>+     }
>+     else
>+     {
>++#if (LIBAVCODEC_VERSION_INT < AV_VERSION_INT(61, 19, 100)) // ffmpeg < 7.1
>+         enc->pix_fmt = avcodec_find_best_pix_fmt_of_list(vc->pix_fmts, format, 0, nullptr);
>++#else
>++        const void* p;
>++        int ret = avcodec_get_supported_config(enc, vc, AV_CODEC_CONFIG_PIX_FORMAT, 0, &p, nullptr);
>++        enc->pix_fmt = ret >= 0
>++            ? avcodec_find_best_pix_fmt_of_list(static_cast<const AVPixelFormat*>(p), format, 0, nullptr)
>++            : AV_PIX_FMT_NONE;
>++#endif
>+         if (enc->pix_fmt == AV_PIX_FMT_NONE)
>+             avcodec_default_get_format(enc, &(enc->pix_fmt));
>+     }
>+@@ -451,7 +474,7 @@ bool FFMPEGCapturePrivate::writeVideoFrame(bool finali
>+         frame->pts = nextPts++;
>+     }
>+ 
>+-#if (LIBAVCODEC_VERSION_INT < AV_VERSION_INT(58, 133, 100))
>++#if (LIBAVCODEC_VERSION_INT < AV_VERSION_INT(58, 133, 100)) // ffmpeg < 4.4
>+     av_init_packet(pkt);
>+ #endif
>+ 
>
>

Ok
--
Antoine