]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/allcodecs.c
avcodec/codec, allcodecs: Constify the AVCodec API
[ffmpeg] / libavcodec / allcodecs.c
index 7a941b257ec9f2dfeb8f2017953e42276c812923..c33d5a52617153c9c1713d0ed6444d219431eff7 100644 (file)
@@ -27,7 +27,6 @@
 #include "config.h"
 #include "libavutil/thread.h"
 #include "avcodec.h"
-#include "version.h"
 
 extern AVCodec ff_a64multi_encoder;
 extern AVCodec ff_a64multi5_encoder;
@@ -43,6 +42,7 @@ extern AVCodec ff_ansi_decoder;
 extern AVCodec ff_apng_encoder;
 extern AVCodec ff_apng_decoder;
 extern AVCodec ff_arbc_decoder;
+extern AVCodec ff_argo_decoder;
 extern AVCodec ff_asv1_encoder;
 extern AVCodec ff_asv1_decoder;
 extern AVCodec ff_asv2_encoder;
@@ -70,6 +70,7 @@ extern AVCodec ff_cavs_decoder;
 extern AVCodec ff_cdgraphics_decoder;
 extern AVCodec ff_cdtoons_decoder;
 extern AVCodec ff_cdxl_decoder;
+extern AVCodec ff_cfhd_encoder;
 extern AVCodec ff_cfhd_decoder;
 extern AVCodec ff_cinepak_encoder;
 extern AVCodec ff_cinepak_decoder;
@@ -80,6 +81,7 @@ extern AVCodec ff_cllc_decoder;
 extern AVCodec ff_comfortnoise_encoder;
 extern AVCodec ff_comfortnoise_decoder;
 extern AVCodec ff_cpia_decoder;
+extern AVCodec ff_cri_decoder;
 extern AVCodec ff_cscd_decoder;
 extern AVCodec ff_cyuv_decoder;
 extern AVCodec ff_dds_decoder;
@@ -106,6 +108,7 @@ extern AVCodec ff_eightsvx_exp_decoder;
 extern AVCodec ff_eightsvx_fib_decoder;
 extern AVCodec ff_escape124_decoder;
 extern AVCodec ff_escape130_decoder;
+extern AVCodec ff_exr_encoder;
 extern AVCodec ff_exr_decoder;
 extern AVCodec ff_ffv1_encoder;
 extern AVCodec ff_ffv1_decoder;
@@ -165,6 +168,7 @@ extern AVCodec ff_indeo3_decoder;
 extern AVCodec ff_indeo4_decoder;
 extern AVCodec ff_indeo5_decoder;
 extern AVCodec ff_interplay_video_decoder;
+extern AVCodec ff_ipu_decoder;
 extern AVCodec ff_jpeg2000_encoder;
 extern AVCodec ff_jpeg2000_decoder;
 extern AVCodec ff_jpegls_encoder;
@@ -185,6 +189,7 @@ extern AVCodec ff_mjpeg_encoder;
 extern AVCodec ff_mjpeg_decoder;
 extern AVCodec ff_mjpegb_decoder;
 extern AVCodec ff_mmvideo_decoder;
+extern AVCodec ff_mobiclip_decoder;
 extern AVCodec ff_motionpixels_decoder;
 extern AVCodec ff_mpeg1video_encoder;
 extern AVCodec ff_mpeg1video_decoder;
@@ -210,6 +215,7 @@ extern AVCodec ff_msmpeg4v2_decoder;
 extern AVCodec ff_msmpeg4v3_encoder;
 extern AVCodec ff_msmpeg4v3_decoder;
 extern AVCodec ff_msmpeg4_crystalhd_decoder;
+extern AVCodec ff_msp2_decoder;
 extern AVCodec ff_msrle_decoder;
 extern AVCodec ff_mss1_decoder;
 extern AVCodec ff_mss2_decoder;
@@ -233,12 +239,14 @@ extern AVCodec ff_pbm_encoder;
 extern AVCodec ff_pbm_decoder;
 extern AVCodec ff_pcx_encoder;
 extern AVCodec ff_pcx_decoder;
+extern AVCodec ff_pfm_encoder;
 extern AVCodec ff_pfm_decoder;
 extern AVCodec ff_pgm_encoder;
 extern AVCodec ff_pgm_decoder;
 extern AVCodec ff_pgmyuv_encoder;
 extern AVCodec ff_pgmyuv_decoder;
 extern AVCodec ff_pgx_decoder;
+extern AVCodec ff_photocd_decoder;
 extern AVCodec ff_pictor_decoder;
 extern AVCodec ff_pixlet_decoder;
 extern AVCodec ff_png_encoder;
@@ -266,6 +274,7 @@ extern AVCodec ff_rawvideo_decoder;
 extern AVCodec ff_rl2_decoder;
 extern AVCodec ff_roq_encoder;
 extern AVCodec ff_roq_decoder;
+extern AVCodec ff_rpza_encoder;
 extern AVCodec ff_rpza_decoder;
 extern AVCodec ff_rscc_decoder;
 extern AVCodec ff_rv10_encoder;
@@ -279,10 +288,12 @@ extern AVCodec ff_s302m_decoder;
 extern AVCodec ff_sanm_decoder;
 extern AVCodec ff_scpr_decoder;
 extern AVCodec ff_screenpresso_decoder;
+extern AVCodec ff_sga_decoder;
 extern AVCodec ff_sgi_encoder;
 extern AVCodec ff_sgi_decoder;
 extern AVCodec ff_sgirle_decoder;
 extern AVCodec ff_sheervideo_decoder;
+extern AVCodec ff_simbiosis_imx_decoder;
 extern AVCodec ff_smacker_decoder;
 extern AVCodec ff_smc_decoder;
 extern AVCodec ff_smvjpeg_decoder;
@@ -290,6 +301,7 @@ extern AVCodec ff_snow_encoder;
 extern AVCodec ff_snow_decoder;
 extern AVCodec ff_sp5x_decoder;
 extern AVCodec ff_speedhq_decoder;
+extern AVCodec ff_speedhq_encoder;
 extern AVCodec ff_srgc_decoder;
 extern AVCodec ff_sunrast_encoder;
 extern AVCodec ff_sunrast_decoder;
@@ -428,6 +440,7 @@ extern AVCodec ff_dst_decoder;
 extern AVCodec ff_eac3_encoder;
 extern AVCodec ff_eac3_decoder;
 extern AVCodec ff_evrc_decoder;
+extern AVCodec ff_fastaudio_decoder;
 extern AVCodec ff_ffwavesynth_decoder;
 extern AVCodec ff_flac_encoder;
 extern AVCodec ff_flac_decoder;
@@ -555,6 +568,7 @@ extern AVCodec ff_pcm_s64be_encoder;
 extern AVCodec ff_pcm_s64be_decoder;
 extern AVCodec ff_pcm_s64le_encoder;
 extern AVCodec ff_pcm_s64le_decoder;
+extern AVCodec ff_pcm_sga_decoder;
 extern AVCodec ff_pcm_u8_encoder;
 extern AVCodec ff_pcm_u8_decoder;
 extern AVCodec ff_pcm_u16be_encoder;
@@ -590,6 +604,7 @@ extern AVCodec ff_adpcm_afc_decoder;
 extern AVCodec ff_adpcm_agm_decoder;
 extern AVCodec ff_adpcm_aica_decoder;
 extern AVCodec ff_adpcm_argo_decoder;
+extern AVCodec ff_adpcm_argo_encoder;
 extern AVCodec ff_adpcm_ct_decoder;
 extern AVCodec ff_adpcm_dtk_decoder;
 extern AVCodec ff_adpcm_ea_decoder;
@@ -605,7 +620,9 @@ extern AVCodec ff_adpcm_g726_decoder;
 extern AVCodec ff_adpcm_g726le_encoder;
 extern AVCodec ff_adpcm_g726le_decoder;
 extern AVCodec ff_adpcm_ima_amv_decoder;
+extern AVCodec ff_adpcm_ima_amv_encoder;
 extern AVCodec ff_adpcm_ima_alp_decoder;
+extern AVCodec ff_adpcm_ima_alp_encoder;
 extern AVCodec ff_adpcm_ima_apc_decoder;
 extern AVCodec ff_adpcm_ima_apm_decoder;
 extern AVCodec ff_adpcm_ima_apm_encoder;
@@ -616,6 +633,7 @@ extern AVCodec ff_adpcm_ima_dk4_decoder;
 extern AVCodec ff_adpcm_ima_ea_eacs_decoder;
 extern AVCodec ff_adpcm_ima_ea_sead_decoder;
 extern AVCodec ff_adpcm_ima_iss_decoder;
+extern AVCodec ff_adpcm_ima_moflex_decoder;
 extern AVCodec ff_adpcm_ima_mtf_decoder;
 extern AVCodec ff_adpcm_ima_oki_decoder;
 extern AVCodec ff_adpcm_ima_qt_encoder;
@@ -626,6 +644,7 @@ extern AVCodec ff_adpcm_ima_ssi_encoder;
 extern AVCodec ff_adpcm_ima_smjpeg_decoder;
 extern AVCodec ff_adpcm_ima_wav_encoder;
 extern AVCodec ff_adpcm_ima_wav_decoder;
+extern AVCodec ff_adpcm_ima_ws_encoder;
 extern AVCodec ff_adpcm_ima_ws_decoder;
 extern AVCodec ff_adpcm_ms_encoder;
 extern AVCodec ff_adpcm_ms_decoder;
@@ -672,6 +691,7 @@ extern AVCodec ff_subviewer_decoder;
 extern AVCodec ff_subviewer1_decoder;
 extern AVCodec ff_text_encoder;
 extern AVCodec ff_text_decoder;
+extern AVCodec ff_ttml_encoder;
 extern AVCodec ff_vplayer_decoder;
 extern AVCodec ff_webvtt_encoder;
 extern AVCodec ff_webvtt_decoder;
@@ -727,8 +747,10 @@ extern AVCodec ff_librsvg_decoder;
 extern AVCodec ff_libshine_encoder;
 extern AVCodec ff_libspeex_encoder;
 extern AVCodec ff_libspeex_decoder;
+extern AVCodec ff_libsvtav1_encoder;
 extern AVCodec ff_libtheora_encoder;
 extern AVCodec ff_libtwolame_encoder;
+extern AVCodec ff_libuavs3d_decoder;
 extern AVCodec ff_libvo_amrwbenc_encoder;
 extern AVCodec ff_libvorbis_encoder;
 extern AVCodec ff_libvorbis_decoder;
@@ -736,7 +758,6 @@ extern AVCodec ff_libvpx_vp8_encoder;
 extern AVCodec ff_libvpx_vp8_decoder;
 extern AVCodec ff_libvpx_vp9_encoder;
 extern AVCodec ff_libvpx_vp9_decoder;
-extern AVCodec ff_libwavpack_encoder;
 /* preferred over libwebp */
 extern AVCodec ff_libwebp_anim_encoder;
 extern AVCodec ff_libwebp_encoder;
@@ -760,6 +781,10 @@ extern AVCodec ff_aac_mf_encoder;
 extern AVCodec ff_ac3_mf_encoder;
 extern AVCodec ff_h263_v4l2m2m_encoder;
 extern AVCodec ff_libaom_av1_decoder;
+/* hwaccel hooks only, so prefer external decoders */
+extern AVCodec ff_av1_decoder;
+extern AVCodec ff_av1_cuvid_decoder;
+extern AVCodec ff_av1_qsv_decoder;
 extern AVCodec ff_libopenh264_encoder;
 extern AVCodec ff_libopenh264_decoder;
 extern AVCodec ff_h264_amf_encoder;
@@ -771,11 +796,6 @@ extern AVCodec ff_h264_qsv_encoder;
 extern AVCodec ff_h264_v4l2m2m_encoder;
 extern AVCodec ff_h264_vaapi_encoder;
 extern AVCodec ff_h264_videotoolbox_encoder;
-#if FF_API_NVENC_OLD_NAME
-extern AVCodec ff_nvenc_encoder;
-extern AVCodec ff_nvenc_h264_encoder;
-extern AVCodec ff_nvenc_hevc_encoder;
-#endif
 extern AVCodec ff_hevc_amf_encoder;
 extern AVCodec ff_hevc_cuvid_decoder;
 extern AVCodec ff_hevc_mediacodec_decoder;
@@ -844,45 +864,6 @@ const AVCodec *av_codec_iterate(void **opaque)
     return c;
 }
 
-#if FF_API_NEXT
-FF_DISABLE_DEPRECATION_WARNINGS
-static AVOnce av_codec_next_init = AV_ONCE_INIT;
-
-static void av_codec_init_next(void)
-{
-    AVCodec *prev = NULL, *p;
-    void *i = 0;
-    while ((p = (AVCodec*)av_codec_iterate(&i))) {
-        if (prev)
-            prev->next = p;
-        prev = p;
-    }
-}
-
-
-
-av_cold void avcodec_register(AVCodec *codec)
-{
-    ff_thread_once(&av_codec_next_init, av_codec_init_next);
-}
-
-AVCodec *av_codec_next(const AVCodec *c)
-{
-    ff_thread_once(&av_codec_next_init, av_codec_init_next);
-
-    if (c)
-        return c->next;
-    else
-        return (AVCodec*)codec_list[0];
-}
-
-void avcodec_register_all(void)
-{
-    ff_thread_once(&av_codec_next_init, av_codec_init_next);
-}
-FF_ENABLE_DEPRECATION_WARNINGS
-#endif
-
 static enum AVCodecID remap_deprecated_codec_id(enum AVCodecID id)
 {
     switch(id){
@@ -892,7 +873,7 @@ static enum AVCodecID remap_deprecated_codec_id(enum AVCodecID id)
     }
 }
 
-static AVCodec *find_codec(enum AVCodecID id, int (*x)(const AVCodec *))
+static const AVCodec *find_codec(enum AVCodecID id, int (*x)(const AVCodec *))
 {
     const AVCodec *p, *experimental = NULL;
     void *i = 0;
@@ -906,24 +887,24 @@ static AVCodec *find_codec(enum AVCodecID id, int (*x)(const AVCodec *))
             if (p->capabilities & AV_CODEC_CAP_EXPERIMENTAL && !experimental) {
                 experimental = p;
             } else
-                return (AVCodec*)p;
+                return p;
         }
     }
 
-    return (AVCodec*)experimental;
+    return experimental;
 }
 
-AVCodec *avcodec_find_encoder(enum AVCodecID id)
+const AVCodec *avcodec_find_encoder(enum AVCodecID id)
 {
     return find_codec(id, av_codec_is_encoder);
 }
 
-AVCodec *avcodec_find_decoder(enum AVCodecID id)
+const AVCodec *avcodec_find_decoder(enum AVCodecID id)
 {
     return find_codec(id, av_codec_is_decoder);
 }
 
-static AVCodec *find_codec_by_name(const char *name, int (*x)(const AVCodec *))
+static const AVCodec *find_codec_by_name(const char *name, int (*x)(const AVCodec *))
 {
     void *i = 0;
     const AVCodec *p;
@@ -935,18 +916,18 @@ static AVCodec *find_codec_by_name(const char *name, int (*x)(const AVCodec *))
         if (!x(p))
             continue;
         if (strcmp(name, p->name) == 0)
-            return (AVCodec*)p;
+            return p;
     }
 
     return NULL;
 }
 
-AVCodec *avcodec_find_encoder_by_name(const char *name)
+const AVCodec *avcodec_find_encoder_by_name(const char *name)
 {
     return find_codec_by_name(name, av_codec_is_encoder);
 }
 
-AVCodec *avcodec_find_decoder_by_name(const char *name)
+const AVCodec *avcodec_find_decoder_by_name(const char *name)
 {
     return find_codec_by_name(name, av_codec_is_decoder);
 }