[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:45:17 EEST 2025
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?
- Kacper
More information about the ffmpeg-devel
mailing list