[FFmpeg-cvslog] avcodec/allcodecs: add backcompat for new config API
Niklas Haas
git at videolan.org
Sun Sep 8 15:03:45 EEST 2024
ffmpeg | branch: master | Niklas Haas <git at haasn.dev> | Fri Apr 5 19:21:43 2024 +0200| [088108fc7a24d28b0a83b051b5027ebe32d20f30] | committer: Niklas Haas
avcodec/allcodecs: add backcompat for new config API
In order to avoid breaking older clients not yet using the new API, we
need to add backwards compatibility for codecs which have switched from
init_static() to get_supported_config().
This function can be removed entirely once the deprecated static fields
are removed.
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=088108fc7a24d28b0a83b051b5027ebe32d20f30
---
libavcodec/allcodecs.c | 43 +++++++++++++++++++++++++++++++++++++++++--
1 file changed, 41 insertions(+), 2 deletions(-)
diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c
index 563afde355..0d61b665af 100644
--- a/libavcodec/allcodecs.c
+++ b/libavcodec/allcodecs.c
@@ -913,9 +913,48 @@ const FFCodec * codec_list[] = {
static AVOnce av_codec_static_init = AV_ONCE_INIT;
static void av_codec_init_static(void)
{
+ int dummy;
for (int i = 0; codec_list[i]; i++) {
- if (codec_list[i]->init_static_data)
- codec_list[i]->init_static_data((FFCodec*)codec_list[i]);
+ const FFCodec *codec = codec_list[i];
+ if (codec->init_static_data) {
+ codec->init_static_data((FFCodec*) codec);
+ continue;
+ }
+
+ /* Backward compatibility with deprecated public fields */
+ if (!codec->get_supported_config)
+ continue;
+
+FF_DISABLE_DEPRECATION_WARNINGS
+ switch (codec->p.type) {
+ case AVMEDIA_TYPE_VIDEO:
+ codec->get_supported_config(NULL, &codec->p,
+ AV_CODEC_CONFIG_PIX_FORMAT, 0,
+ (const void **) &codec->p.pix_fmts,
+ &dummy);
+ codec->get_supported_config(NULL, &codec->p,
+ AV_CODEC_CONFIG_FRAME_RATE, 0,
+ (const void **) &codec->p.supported_framerates,
+ &dummy);
+ break;
+ case AVMEDIA_TYPE_AUDIO:
+ codec->get_supported_config(NULL, &codec->p,
+ AV_CODEC_CONFIG_SAMPLE_FORMAT, 0,
+ (const void **) &codec->p.sample_fmts,
+ &dummy);
+ codec->get_supported_config(NULL, &codec->p,
+ AV_CODEC_CONFIG_SAMPLE_RATE, 0,
+ (const void **) &codec->p.supported_samplerates,
+ &dummy);
+ codec->get_supported_config(NULL, &codec->p,
+ AV_CODEC_CONFIG_CHANNEL_LAYOUT, 0,
+ (const void **) &codec->p.ch_layouts,
+ &dummy);
+ break;
+ default:
+ break;
+ }
+FF_ENABLE_DEPRECATION_WARNINGS
}
}
More information about the ffmpeg-cvslog
mailing list