Re: astro/celestia: compatibility with ffmpeg 9.0

Antoine Jacoutot <[email protected]>
Newsgroups gmane.os.openbsd.ports
Message-ID <[email protected]>
On August 13, 2026 12:41:01 AM GMT+02:00, "Kirill A. Korinsky" <[email protected]> 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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.