[FFmpeg-devel] [PATCH 1/3] avutil/xga_font_data: add getters to access the shared arrays

Kacper Michajlow kasper93 at gmail.com
Tue Jul 22 05:48:31 EEST 2025


On Tue, 22 Jul 2025 at 04:45, Kacper Michajlow <kasper93 at gmail.com> wrote:
>
> On Tue, 22 Jul 2025 at 02:47, James Almer <jamrial at gmail.com> wrote:
> >
> > And stop exposing the arrays on the next major bump.
> >
> > Signed-off-by: James Almer <jamrial at gmail.com>
> > ---
> >  libavutil/xga_font_data.c | 16 ++++++++++++++++
> >  libavutil/xga_font_data.h |  6 ++++++
> >  2 files changed, 22 insertions(+)
> >
> > diff --git a/libavutil/xga_font_data.c b/libavutil/xga_font_data.c
> > index 3aed3142cf..e4b21760f8 100644
> > --- a/libavutil/xga_font_data.c
> > +++ b/libavutil/xga_font_data.c
> > @@ -26,6 +26,9 @@
> >  #include <stdint.h>
> >  #include "xga_font_data.h"
> >
> > +#if LIBAVUTIL_VERSION_MAJOR > 60
> > +static
> > +#endif
> >  const uint8_t avpriv_cga_font[2048] = {
> >   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x81, 0xa5, 0x81, 0xbd, 0x99, 0x81, 0x7e,
> >   0x7e, 0xff, 0xdb, 0xff, 0xc3, 0xe7, 0xff, 0x7e, 0x6c, 0xfe, 0xfe, 0xfe, 0x7c, 0x38, 0x10, 0x00,
> > @@ -157,6 +160,14 @@ const uint8_t avpriv_cga_font[2048] = {
> >   0x00, 0x00, 0x3c, 0x3c, 0x3c, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> >  };
> >
> > +const uint8_t *avpriv_cga_font_get(void)
> > +{
> > +    return avpriv_cga_font;
> > +}
> > +
> > +#if LIBAVUTIL_VERSION_MAJOR > 60
> > +static
> > +#endif
> >  const uint8_t avpriv_vga16_font[4096] = {
> >   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> >   0x00, 0x00, 0x7e, 0x81, 0xa5, 0x81, 0x81, 0xbd, 0x99, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00,
> > @@ -415,3 +426,8 @@ const uint8_t avpriv_vga16_font[4096] = {
> >   0x00, 0x00, 0x00, 0x00, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00,
> >   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
> >  };
> > +
> > +const uint8_t *avpriv_vga16_font_get(void)
> > +{
> > +    return avpriv_vga16_font;
> > +}
> > diff --git a/libavutil/xga_font_data.h b/libavutil/xga_font_data.h
> > index 69dc337120..90d3cec4ce 100644
> > --- a/libavutil/xga_font_data.h
> > +++ b/libavutil/xga_font_data.h
> > @@ -28,8 +28,14 @@
> >
> >  #include <stdint.h>
> >  #include "internal.h"
> > +#include "version.h"
> >
> > +#if LIBAVUTIL_VERSION_MAJOR < 61
> >  extern av_export_avutil const uint8_t avpriv_cga_font[2048];
> >  extern av_export_avutil const uint8_t avpriv_vga16_font[4096];
> > +#endif
> > +
> > +const uint8_t *avpriv_cga_font_get(void);
> > +const uint8_t *avpriv_vga16_font_get(void);
>
>
> Looks good. Accessing data from DLLs without dllimport requires
> manually resolving the indirection. While using a function works even
> without dllimport, while it may be used to better code generation and
> removing one function patching when dynamic linker loads it. All other
> FFmpeg code is not using dllimport, so it should be fine to remove
> these two remaining ones. This will allow all objects to be the same
> between shared/static build and fix checkasm static linking.
>
> For my information, isn't avpriv_ prefix used for internal symbols
> shared between libs? Does it need a deprecation period? Are users
> supposed to be accessing them?

meh, I guess it was stupid question, because ffmpeg's libraries may be
in different versions and still should work and not break ABI.

- Kacper


More information about the ffmpeg-devel mailing list