History

lavc: add new API for iterating codecs and codec parsers

Based on an unfinished patch by atomnuker.

Josh de Kock committed 8 years ago

Commit 7e8eba21 parent caa4bd79 files · +966 −738Browse files

Unified · Split

9 files
  1. Makefile +2 −1
  2. configure +9 −3
  3. doc/APIchanges +4 −0
  4. libavcodec/.gitignore +2 −0
  5. libavcodec/allcodecs.c +841 −625
  6. libavcodec/avcodec.h +31 −0
  7. libavcodec/parser.c +74 −10
  8. libavcodec/utils.c +0 −99
  9. libavcodec/version.h +3 −0
Makefile+2−1
@@ -142,7 +142,8 @@ distclean:: clean · 141 unmodified lines
142 $(RM) .version avversion.h config.asm config.h mapfile \142 $(RM) .version avversion.h config.asm config.h mapfile \
143 ffbuild/.config ffbuild/config.* libavutil/avconfig.h \143 ffbuild/.config ffbuild/config.* libavutil/avconfig.h \
144 version.h libavutil/ffversion.h libavcodec/codec_names.h \144 version.h libavutil/ffversion.h libavcodec/codec_names.h \
145 libavcodec/bsf_list.c libavformat/protocol_list.c145 libavcodec/bsf_list.c libavformat/protocol_list.c \
146 libavcodec/codec_list.c libavcodec/parser_list.c
146ifeq ($(SRC_LINK),src)147ifeq ($(SRC_LINK),src)
147 $(RM) src148 $(RM) src
148endif149endif
configure+9−3
@@ -3525,9 +3525,6 @@ find_things(){ · 3524 unmodified lines
3525 sed -n "s/^[^#]*$pattern.*([^,]*, *\([^,]*\)\(,.*\)*).*/\1_$thing/p" "$file"3525 sed -n "s/^[^#]*$pattern.*([^,]*, *\([^,]*\)\(,.*\)*).*/\1_$thing/p" "$file"
3526}3526}
3527 3527
3528ENCODER_LIST=$(find_things encoder ENC libavcodec/allcodecs.c)
3529DECODER_LIST=$(find_things decoder DEC libavcodec/allcodecs.c)
3530PARSER_LIST=$(find_things parser PARSER libavcodec/allcodecs.c)
3531MUXER_LIST=$(find_things muxer _MUX libavformat/allformats.c)3528MUXER_LIST=$(find_things muxer _MUX libavformat/allformats.c)
3532DEMUXER_LIST=$(find_things demuxer DEMUX libavformat/allformats.c)3529DEMUXER_LIST=$(find_things demuxer DEMUX libavformat/allformats.c)
3533OUTDEV_LIST=$(find_things outdev OUTDEV libavdevice/alldevices.c)3530OUTDEV_LIST=$(find_things outdev OUTDEV libavdevice/alldevices.c)
@@ -3541,6 +3538,13 @@ find_things_extern(){ · 7 unmodified lines
3541 sed -n "s/^[^#]*extern.*$pattern *ff_\([^ ]*\)_$thing;/\1_$thing/p" "$file"3538 sed -n "s/^[^#]*extern.*$pattern *ff_\([^ ]*\)_$thing;/\1_$thing/p" "$file"
3542}3539}
3543 3540
3541ENCODER_LIST=$(find_things_extern encoder AVCodec libavcodec/allcodecs.c)
3542DECODER_LIST=$(find_things_extern decoder AVCodec libavcodec/allcodecs.c)
3543CODEC_LIST="
3544 $ENCODER_LIST
3545 $DECODER_LIST
3546"
3547PARSER_LIST=$(find_things_extern parser AVCodecParser libavcodec/parser.c)
3544BSF_LIST=$(find_things_extern bsf AVBitStreamFilter libavcodec/bitstream_filters.c)3548BSF_LIST=$(find_things_extern bsf AVBitStreamFilter libavcodec/bitstream_filters.c)
3545HWACCEL_LIST=$(find_things_extern hwaccel AVHWAccel libavcodec/hwaccels.h)3549HWACCEL_LIST=$(find_things_extern hwaccel AVHWAccel libavcodec/hwaccels.h)
3546PROTOCOL_LIST=$(find_things_extern protocol URLProtocol libavformat/protocols.c)3550PROTOCOL_LIST=$(find_things_extern protocol URLProtocol libavformat/protocols.c)
@@ -7029,6 +7033,8 @@ print_enabled_components(){ · 3482 unmodified lines
7029 cp_if_changed $TMPH $file7033 cp_if_changed $TMPH $file
7030}7034}
7031 7035
7036print_enabled_components libavcodec/codec_list.c AVCodec codec_list $CODEC_LIST
7037print_enabled_components libavcodec/parser_list.c AVCodecParser parser_list $PARSER_LIST
7032print_enabled_components libavcodec/bsf_list.c AVBitStreamFilter bitstream_filters $BSF_LIST7038print_enabled_components libavcodec/bsf_list.c AVBitStreamFilter bitstream_filters $BSF_LIST
7033print_enabled_components libavformat/protocol_list.c URLProtocol url_protocols $PROTOCOL_LIST7039print_enabled_components libavformat/protocol_list.c URLProtocol url_protocols $PROTOCOL_LIST
7034 7040
doc/APIchanges+4−0
@@ -15,6 +15,10 @@ libavutil: 2017-10-21 · 14 unmodified lines
15 15
16API changes, most recent first:16API changes, most recent first:
17 17
182018-01-xx - xxxxxxx - lavc 58.9.100 - avcodec.h
19 Deprecate use of avcodec_register(), avcodec_register_all(), and
20 av_codec_next(). Add av_codec_iterate().
21
182018-02-xx - xxxxxxx - lavf 58.8.100 - avformat.h222018-02-xx - xxxxxxx - lavf 58.8.100 - avformat.h
19 Deprecate the current names of the RTSP "timeout", "stimeout", "user-agent"23 Deprecate the current names of the RTSP "timeout", "stimeout", "user-agent"
20 options. Introduce "listen_timeout" as replacement for the current "timeout"24 options. Introduce "listen_timeout" as replacement for the current "timeout"
libavcodec/.gitignore+2−0
@@ -2,3 +2,5 @@ · 1 unmodified line
2/*_tables.c2/*_tables.c
3/*_tables.h3/*_tables.h
4/bsf_list.c4/bsf_list.c
5/codec_list.c
6/parser_list.c
libavcodec/allcodecs.c+841−625
@@ -29,641 +29,857 @@ · 28 unmodified lines
29#include "avcodec.h"29#include "avcodec.h"
30#include "version.h"30#include "version.h"
31 31
32#define REGISTER_ENCODER(X, x) \32extern AVCodec ff_a64multi_encoder;
33 { \33extern AVCodec ff_a64multi5_encoder;
34 extern AVCodec ff_##x##_encoder; \34extern AVCodec ff_aasc_decoder;
35 if (CONFIG_##X##_ENCODER) \35extern AVCodec ff_aic_decoder;
36 avcodec_register(&ff_##x##_encoder); \36extern AVCodec ff_alias_pix_encoder;
37 }37extern AVCodec ff_alias_pix_decoder;
38extern AVCodec ff_amv_encoder;
39extern AVCodec ff_amv_decoder;
40extern AVCodec ff_anm_decoder;
41extern AVCodec ff_ansi_decoder;
42extern AVCodec ff_apng_encoder;
43extern AVCodec ff_apng_decoder;
44extern AVCodec ff_asv1_encoder;
45extern AVCodec ff_asv1_decoder;
46extern AVCodec ff_asv2_encoder;
47extern AVCodec ff_asv2_decoder;
48extern AVCodec ff_aura_decoder;
49extern AVCodec ff_aura2_decoder;
50extern AVCodec ff_avrp_encoder;
51extern AVCodec ff_avrp_decoder;
52extern AVCodec ff_avrn_decoder;
53extern AVCodec ff_avs_decoder;
54extern AVCodec ff_avui_encoder;
55extern AVCodec ff_avui_decoder;
56extern AVCodec ff_ayuv_encoder;
57extern AVCodec ff_ayuv_decoder;
58extern AVCodec ff_bethsoftvid_decoder;
59extern AVCodec ff_bfi_decoder;
60extern AVCodec ff_bink_decoder;
61extern AVCodec ff_bmp_encoder;
62extern AVCodec ff_bmp_decoder;
63extern AVCodec ff_bmv_video_decoder;
64extern AVCodec ff_brender_pix_decoder;
65extern AVCodec ff_c93_decoder;
66extern AVCodec ff_cavs_decoder;
67extern AVCodec ff_cdgraphics_decoder;
68extern AVCodec ff_cdxl_decoder;
69extern AVCodec ff_cfhd_decoder;
70extern AVCodec ff_cinepak_encoder;
71extern AVCodec ff_cinepak_decoder;
72extern AVCodec ff_clearvideo_decoder;
73extern AVCodec ff_cljr_encoder;
74extern AVCodec ff_cljr_decoder;
75extern AVCodec ff_cllc_decoder;
76extern AVCodec ff_comfortnoise_encoder;
77extern AVCodec ff_comfortnoise_decoder;
78extern AVCodec ff_cpia_decoder;
79extern AVCodec ff_cscd_decoder;
80extern AVCodec ff_cyuv_decoder;
81extern AVCodec ff_dds_decoder;
82extern AVCodec ff_dfa_decoder;
83extern AVCodec ff_dirac_decoder;
84extern AVCodec ff_dnxhd_encoder;
85extern AVCodec ff_dnxhd_decoder;
86extern AVCodec ff_dpx_encoder;
87extern AVCodec ff_dpx_decoder;
88extern AVCodec ff_dsicinvideo_decoder;
89extern AVCodec ff_dvaudio_decoder;
90extern AVCodec ff_dvvideo_encoder;
91extern AVCodec ff_dvvideo_decoder;
92extern AVCodec ff_dxa_decoder;
93extern AVCodec ff_dxtory_decoder;
94extern AVCodec ff_dxv_decoder;
95extern AVCodec ff_eacmv_decoder;
96extern AVCodec ff_eamad_decoder;
97extern AVCodec ff_eatgq_decoder;
98extern AVCodec ff_eatgv_decoder;
99extern AVCodec ff_eatqi_decoder;
100extern AVCodec ff_eightbps_decoder;
101extern AVCodec ff_eightsvx_exp_decoder;
102extern AVCodec ff_eightsvx_fib_decoder;
103extern AVCodec ff_escape124_decoder;
104extern AVCodec ff_escape130_decoder;
105extern AVCodec ff_exr_decoder;
106extern AVCodec ff_ffv1_encoder;
107extern AVCodec ff_ffv1_decoder;
108extern AVCodec ff_ffvhuff_encoder;
109extern AVCodec ff_ffvhuff_decoder;
110extern AVCodec ff_fic_decoder;
111extern AVCodec ff_fits_encoder;
112extern AVCodec ff_fits_decoder;
113extern AVCodec ff_flashsv_encoder;
114extern AVCodec ff_flashsv_decoder;
115extern AVCodec ff_flashsv2_encoder;
116extern AVCodec ff_flashsv2_decoder;
117extern AVCodec ff_flic_decoder;
118extern AVCodec ff_flv_encoder;
119extern AVCodec ff_flv_decoder;
120extern AVCodec ff_fmvc_decoder;
121extern AVCodec ff_fourxm_decoder;
122extern AVCodec ff_fraps_decoder;
123extern AVCodec ff_frwu_decoder;
124extern AVCodec ff_g2m_decoder;
125extern AVCodec ff_gdv_decoder;
126extern AVCodec ff_gif_encoder;
127extern AVCodec ff_gif_decoder;
128extern AVCodec ff_h261_encoder;
129extern AVCodec ff_h261_decoder;
130extern AVCodec ff_h263_encoder;
131extern AVCodec ff_h263_decoder;
132extern AVCodec ff_h263i_decoder;
133extern AVCodec ff_h263p_encoder;
134extern AVCodec ff_h263p_decoder;
135extern AVCodec ff_h263_v4l2m2m_decoder;
136extern AVCodec ff_h264_decoder;
137extern AVCodec ff_h264_crystalhd_decoder;
138extern AVCodec ff_h264_v4l2m2m_decoder;
139extern AVCodec ff_h264_mediacodec_decoder;
140extern AVCodec ff_h264_mmal_decoder;
141extern AVCodec ff_h264_qsv_decoder;
142extern AVCodec ff_h264_rkmpp_decoder;
143extern AVCodec ff_hap_encoder;
144extern AVCodec ff_hap_decoder;
145extern AVCodec ff_hevc_decoder;
146extern AVCodec ff_hevc_qsv_decoder;
147extern AVCodec ff_hevc_rkmpp_decoder;
148extern AVCodec ff_hevc_v4l2m2m_decoder;
149extern AVCodec ff_hnm4_video_decoder;
150extern AVCodec ff_hq_hqa_decoder;
151extern AVCodec ff_hqx_decoder;
152extern AVCodec ff_huffyuv_encoder;
153extern AVCodec ff_huffyuv_decoder;
154extern AVCodec ff_idcin_decoder;
155extern AVCodec ff_iff_ilbm_decoder;
156extern AVCodec ff_indeo2_decoder;
157extern AVCodec ff_indeo3_decoder;
158extern AVCodec ff_indeo4_decoder;
159extern AVCodec ff_indeo5_decoder;
160extern AVCodec ff_interplay_video_decoder;
161extern AVCodec ff_jpeg2000_encoder;
162extern AVCodec ff_jpeg2000_decoder;
163extern AVCodec ff_jpegls_encoder;
164extern AVCodec ff_jpegls_decoder;
165extern AVCodec ff_jv_decoder;
166extern AVCodec ff_kgv1_decoder;
167extern AVCodec ff_kmvc_decoder;
168extern AVCodec ff_lagarith_decoder;
169extern AVCodec ff_ljpeg_encoder;
170extern AVCodec ff_loco_decoder;
171extern AVCodec ff_m101_decoder;
172extern AVCodec ff_magicyuv_encoder;
173extern AVCodec ff_magicyuv_decoder;
174extern AVCodec ff_mdec_decoder;
175extern AVCodec ff_mimic_decoder;
176extern AVCodec ff_mjpeg_encoder;
177extern AVCodec ff_mjpeg_decoder;
178extern AVCodec ff_mjpegb_decoder;
179extern AVCodec ff_mmvideo_decoder;
180extern AVCodec ff_motionpixels_decoder;
181extern AVCodec ff_mpeg1video_encoder;
182extern AVCodec ff_mpeg1video_decoder;
183extern AVCodec ff_mpeg2video_encoder;
184extern AVCodec ff_mpeg2video_decoder;
185extern AVCodec ff_mpeg4_encoder;
186extern AVCodec ff_mpeg4_decoder;
187extern AVCodec ff_mpeg4_crystalhd_decoder;
188extern AVCodec ff_mpeg4_v4l2m2m_decoder;
189extern AVCodec ff_mpeg4_mmal_decoder;
190extern AVCodec ff_mpegvideo_decoder;
191extern AVCodec ff_mpeg1_v4l2m2m_decoder;
192extern AVCodec ff_mpeg2_mmal_decoder;
193extern AVCodec ff_mpeg2_crystalhd_decoder;
194extern AVCodec ff_mpeg2_v4l2m2m_decoder;
195extern AVCodec ff_mpeg2_qsv_decoder;
196extern AVCodec ff_mpeg2_mediacodec_decoder;
197extern AVCodec ff_msa1_decoder;
198extern AVCodec ff_mscc_decoder;
199extern AVCodec ff_msmpeg4v1_decoder;
200extern AVCodec ff_msmpeg4v2_encoder;
201extern AVCodec ff_msmpeg4v2_decoder;
202extern AVCodec ff_msmpeg4v3_encoder;
203extern AVCodec ff_msmpeg4v3_decoder;
204extern AVCodec ff_msmpeg4_crystalhd_decoder;
205extern AVCodec ff_msrle_decoder;
206extern AVCodec ff_mss1_decoder;
207extern AVCodec ff_mss2_decoder;
208extern AVCodec ff_msvideo1_encoder;
209extern AVCodec ff_msvideo1_decoder;
210extern AVCodec ff_mszh_decoder;
211extern AVCodec ff_mts2_decoder;
212extern AVCodec ff_mvc1_decoder;
213extern AVCodec ff_mvc2_decoder;
214extern AVCodec ff_mxpeg_decoder;
215extern AVCodec ff_nuv_decoder;
216extern AVCodec ff_paf_video_decoder;
217extern AVCodec ff_pam_encoder;
218extern AVCodec ff_pam_decoder;
219extern AVCodec ff_pbm_encoder;
220extern AVCodec ff_pbm_decoder;
221extern AVCodec ff_pcx_encoder;
222extern AVCodec ff_pcx_decoder;
223extern AVCodec ff_pgm_encoder;
224extern AVCodec ff_pgm_decoder;
225extern AVCodec ff_pgmyuv_encoder;
226extern AVCodec ff_pgmyuv_decoder;
227extern AVCodec ff_pictor_decoder;
228extern AVCodec ff_pixlet_decoder;
229extern AVCodec ff_png_encoder;
230extern AVCodec ff_png_decoder;
231extern AVCodec ff_ppm_encoder;
232extern AVCodec ff_ppm_decoder;
233extern AVCodec ff_prores_encoder;
234extern AVCodec ff_prores_decoder;
235extern AVCodec ff_prores_aw_encoder;
236extern AVCodec ff_prores_ks_encoder;
237extern AVCodec ff_prores_lgpl_decoder;
238extern AVCodec ff_psd_decoder;
239extern AVCodec ff_ptx_decoder;
240extern AVCodec ff_qdraw_decoder;
241extern AVCodec ff_qpeg_decoder;
242extern AVCodec ff_qtrle_encoder;
243extern AVCodec ff_qtrle_decoder;
244extern AVCodec ff_r10k_encoder;
245extern AVCodec ff_r10k_decoder;
246extern AVCodec ff_r210_encoder;
247extern AVCodec ff_r210_decoder;
248extern AVCodec ff_rawvideo_encoder;
249extern AVCodec ff_rawvideo_decoder;
250extern AVCodec ff_rl2_decoder;
251extern AVCodec ff_roq_encoder;
252extern AVCodec ff_roq_decoder;
253extern AVCodec ff_rpza_decoder;
254extern AVCodec ff_rscc_decoder;
255extern AVCodec ff_rv10_encoder;
256extern AVCodec ff_rv10_decoder;
257extern AVCodec ff_rv20_encoder;
258extern AVCodec ff_rv20_decoder;
259extern AVCodec ff_rv30_decoder;
260extern AVCodec ff_rv40_decoder;
261extern AVCodec ff_s302m_encoder;
262extern AVCodec ff_s302m_decoder;
263extern AVCodec ff_sanm_decoder;
264extern AVCodec ff_scpr_decoder;
265extern AVCodec ff_screenpresso_decoder;
266extern AVCodec ff_sdx2_dpcm_decoder;
267extern AVCodec ff_sgi_encoder;
268extern AVCodec ff_sgi_decoder;
269extern AVCodec ff_sgirle_decoder;
270extern AVCodec ff_sheervideo_decoder;
271extern AVCodec ff_smacker_decoder;
272extern AVCodec ff_smc_decoder;
273extern AVCodec ff_smvjpeg_decoder;
274extern AVCodec ff_snow_encoder;
275extern AVCodec ff_snow_decoder;
276extern AVCodec ff_sp5x_decoder;
277extern AVCodec ff_speedhq_decoder;
278extern AVCodec ff_srgc_decoder;
279extern AVCodec ff_sunrast_encoder;
280extern AVCodec ff_sunrast_decoder;
281extern AVCodec ff_svq1_encoder;
282extern AVCodec ff_svq1_decoder;
283extern AVCodec ff_svq3_decoder;
284extern AVCodec ff_targa_encoder;
285extern AVCodec ff_targa_decoder;
286extern AVCodec ff_targa_y216_decoder;
287extern AVCodec ff_tdsc_decoder;
288extern AVCodec ff_theora_decoder;
289extern AVCodec ff_thp_decoder;
290extern AVCodec ff_tiertexseqvideo_decoder;
291extern AVCodec ff_tiff_encoder;
292extern AVCodec ff_tiff_decoder;
293extern AVCodec ff_tmv_decoder;
294extern AVCodec ff_truemotion1_decoder;
295extern AVCodec ff_truemotion2_decoder;
296extern AVCodec ff_truemotion2rt_decoder;
297extern AVCodec ff_tscc_decoder;
298extern AVCodec ff_tscc2_decoder;
299extern AVCodec ff_txd_decoder;
300extern AVCodec ff_ulti_decoder;
301extern AVCodec ff_utvideo_encoder;
302extern AVCodec ff_utvideo_decoder;
303extern AVCodec ff_v210_encoder;
304extern AVCodec ff_v210_decoder;
305extern AVCodec ff_v210x_decoder;
306extern AVCodec ff_v308_encoder;
307extern AVCodec ff_v308_decoder;
308extern AVCodec ff_v408_encoder;
309extern AVCodec ff_v408_decoder;
310extern AVCodec ff_v410_encoder;
311extern AVCodec ff_v410_decoder;
312extern AVCodec ff_vb_decoder;
313extern AVCodec ff_vble_decoder;
314extern AVCodec ff_vc1_decoder;
315extern AVCodec ff_vc1_crystalhd_decoder;
316extern AVCodec ff_vc1image_decoder;
317extern AVCodec ff_vc1_mmal_decoder;
318extern AVCodec ff_vc1_qsv_decoder;
319extern AVCodec ff_vc1_v4l2m2m_decoder;
320extern AVCodec ff_vc2_encoder;
321extern AVCodec ff_vcr1_decoder;
322extern AVCodec ff_vmdvideo_decoder;
323extern AVCodec ff_vmnc_decoder;
324extern AVCodec ff_vp3_decoder;
325extern AVCodec ff_vp5_decoder;
326extern AVCodec ff_vp6_decoder;
327extern AVCodec ff_vp6a_decoder;
328extern AVCodec ff_vp6f_decoder;
329extern AVCodec ff_vp7_decoder;
330extern AVCodec ff_vp8_decoder;
331extern AVCodec ff_vp8_rkmpp_decoder;
332extern AVCodec ff_vp8_v4l2m2m_decoder;
333extern AVCodec ff_vp9_decoder;
334extern AVCodec ff_vp9_rkmpp_decoder;
335extern AVCodec ff_vp9_v4l2m2m_decoder;
336extern AVCodec ff_vqa_decoder;
337extern AVCodec ff_bitpacked_decoder;
338extern AVCodec ff_webp_decoder;
339extern AVCodec ff_wrapped_avframe_encoder;
340extern AVCodec ff_wrapped_avframe_decoder;
341extern AVCodec ff_wmv1_encoder;
342extern AVCodec ff_wmv1_decoder;
343extern AVCodec ff_wmv2_encoder;
344extern AVCodec ff_wmv2_decoder;
345extern AVCodec ff_wmv3_decoder;
346extern AVCodec ff_wmv3_crystalhd_decoder;
347extern AVCodec ff_wmv3image_decoder;
348extern AVCodec ff_wnv1_decoder;
349extern AVCodec ff_xan_wc3_decoder;
350extern AVCodec ff_xan_wc4_decoder;
351extern AVCodec ff_xbm_encoder;
352extern AVCodec ff_xbm_decoder;
353extern AVCodec ff_xface_encoder;
354extern AVCodec ff_xface_decoder;
355extern AVCodec ff_xl_decoder;
356extern AVCodec ff_xpm_decoder;
357extern AVCodec ff_xwd_encoder;
358extern AVCodec ff_xwd_decoder;
359extern AVCodec ff_y41p_encoder;
360extern AVCodec ff_y41p_decoder;
361extern AVCodec ff_ylc_decoder;
362extern AVCodec ff_yop_decoder;
363extern AVCodec ff_yuv4_encoder;
364extern AVCodec ff_yuv4_decoder;
365extern AVCodec ff_zero12v_decoder;
366extern AVCodec ff_zerocodec_decoder;
367extern AVCodec ff_zlib_encoder;
368extern AVCodec ff_zlib_decoder;
369extern AVCodec ff_zmbv_encoder;
370extern AVCodec ff_zmbv_decoder;
371
372/* audio codecs */
373extern AVCodec ff_aac_encoder;
374extern AVCodec ff_aac_decoder;
375extern AVCodec ff_aac_fixed_decoder;
376extern AVCodec ff_aac_latm_decoder;
377extern AVCodec ff_ac3_encoder;
378extern AVCodec ff_ac3_decoder;
379extern AVCodec ff_ac3_fixed_encoder;
380extern AVCodec ff_ac3_fixed_decoder;
381extern AVCodec ff_alac_encoder;
382extern AVCodec ff_alac_decoder;
383extern AVCodec ff_als_decoder;
384extern AVCodec ff_amrnb_decoder;
385extern AVCodec ff_amrwb_decoder;
386extern AVCodec ff_ape_decoder;
387extern AVCodec ff_aptx_encoder;
388extern AVCodec ff_aptx_decoder;
389extern AVCodec ff_atrac1_decoder;
390extern AVCodec ff_atrac3_decoder;
391extern AVCodec ff_atrac3al_decoder;
392extern AVCodec ff_atrac3p_decoder;
393extern AVCodec ff_atrac3pal_decoder;
394extern AVCodec ff_binkaudio_dct_decoder;
395extern AVCodec ff_binkaudio_rdft_decoder;
396extern AVCodec ff_bmv_audio_decoder;
397extern AVCodec ff_cook_decoder;
398extern AVCodec ff_dca_encoder;
399extern AVCodec ff_dca_decoder;
400extern AVCodec ff_dolby_e_decoder;
401extern AVCodec ff_dsd_lsbf_decoder;
402extern AVCodec ff_dsd_msbf_decoder;
403extern AVCodec ff_dsd_lsbf_planar_decoder;
404extern AVCodec ff_dsd_msbf_planar_decoder;
405extern AVCodec ff_dsicinaudio_decoder;
406extern AVCodec ff_dss_sp_decoder;
407extern AVCodec ff_dst_decoder;
408extern AVCodec ff_eac3_encoder;
409extern AVCodec ff_eac3_decoder;
410extern AVCodec ff_evrc_decoder;
411extern AVCodec ff_ffwavesynth_decoder;
412extern AVCodec ff_flac_encoder;
413extern AVCodec ff_flac_decoder;
414extern AVCodec ff_g723_1_encoder;
415extern AVCodec ff_g723_1_decoder;
416extern AVCodec ff_g729_decoder;
417extern AVCodec ff_gsm_decoder;
418extern AVCodec ff_gsm_ms_decoder;
419extern AVCodec ff_iac_decoder;
420extern AVCodec ff_imc_decoder;
421extern AVCodec ff_interplay_acm_decoder;
422extern AVCodec ff_mace3_decoder;
423extern AVCodec ff_mace6_decoder;
424extern AVCodec ff_metasound_decoder;
425extern AVCodec ff_mlp_encoder;
426extern AVCodec ff_mlp_decoder;
427extern AVCodec ff_mp1_decoder;
428extern AVCodec ff_mp1float_decoder;
429extern AVCodec ff_mp2_encoder;
430extern AVCodec ff_mp2_decoder;
431extern AVCodec ff_mp2float_decoder;
432extern AVCodec ff_mp2fixed_encoder;
433extern AVCodec ff_mp3_decoder;
434extern AVCodec ff_mp3float_decoder;
435extern AVCodec ff_mp3adu_decoder;
436extern AVCodec ff_mp3adufloat_decoder;
437extern AVCodec ff_mp3on4_decoder;
438extern AVCodec ff_mp3on4float_decoder;
439extern AVCodec ff_mpc7_decoder;
440extern AVCodec ff_mpc8_decoder;
441extern AVCodec ff_nellymoser_encoder;
442extern AVCodec ff_nellymoser_decoder;
443extern AVCodec ff_on2avc_decoder;
444extern AVCodec ff_opus_encoder;
445extern AVCodec ff_opus_decoder;
446extern AVCodec ff_paf_audio_decoder;
447extern AVCodec ff_qcelp_decoder;
448extern AVCodec ff_qdm2_decoder;
449extern AVCodec ff_qdmc_decoder;
450extern AVCodec ff_ra_144_encoder;
451extern AVCodec ff_ra_144_decoder;
452extern AVCodec ff_ra_288_decoder;
453extern AVCodec ff_ralf_decoder;
454extern AVCodec ff_shorten_decoder;
455extern AVCodec ff_sipr_decoder;
456extern AVCodec ff_smackaud_decoder;
457extern AVCodec ff_sonic_encoder;
458extern AVCodec ff_sonic_decoder;
459extern AVCodec ff_sonic_ls_encoder;
460extern AVCodec ff_tak_decoder;
461extern AVCodec ff_truehd_encoder;
462extern AVCodec ff_truehd_decoder;
463extern AVCodec ff_truespeech_decoder;
464extern AVCodec ff_tta_encoder;
465extern AVCodec ff_tta_decoder;
466extern AVCodec ff_twinvq_decoder;
467extern AVCodec ff_vmdaudio_decoder;
468extern AVCodec ff_vorbis_encoder;
469extern AVCodec ff_vorbis_decoder;
470extern AVCodec ff_wavpack_encoder;
471extern AVCodec ff_wavpack_decoder;
472extern AVCodec ff_wmalossless_decoder;
473extern AVCodec ff_wmapro_decoder;
474extern AVCodec ff_wmav1_encoder;
475extern AVCodec ff_wmav1_decoder;
476extern AVCodec ff_wmav2_encoder;
477extern AVCodec ff_wmav2_decoder;
478extern AVCodec ff_wmavoice_decoder;
479extern AVCodec ff_ws_snd1_decoder;
480extern AVCodec ff_xma1_decoder;
481extern AVCodec ff_xma2_decoder;
482
483/* PCM codecs */
484extern AVCodec ff_pcm_alaw_encoder;
485extern AVCodec ff_pcm_alaw_decoder;
486extern AVCodec ff_pcm_bluray_decoder;
487extern AVCodec ff_pcm_dvd_decoder;
488extern AVCodec ff_pcm_f16le_decoder;
489extern AVCodec ff_pcm_f24le_decoder;
490extern AVCodec ff_pcm_f32be_encoder;
491extern AVCodec ff_pcm_f32be_decoder;
492extern AVCodec ff_pcm_f32le_encoder;
493extern AVCodec ff_pcm_f32le_decoder;
494extern AVCodec ff_pcm_f64be_encoder;
495extern AVCodec ff_pcm_f64be_decoder;
496extern AVCodec ff_pcm_f64le_encoder;
497extern AVCodec ff_pcm_f64le_decoder;
498extern AVCodec ff_pcm_lxf_decoder;
499extern AVCodec ff_pcm_mulaw_encoder;
500extern AVCodec ff_pcm_mulaw_decoder;
501extern AVCodec ff_pcm_s8_encoder;
502extern AVCodec ff_pcm_s8_decoder;
503extern AVCodec ff_pcm_s8_planar_encoder;
504extern AVCodec ff_pcm_s8_planar_decoder;
505extern AVCodec ff_pcm_s16be_encoder;
506extern AVCodec ff_pcm_s16be_decoder;
507extern AVCodec ff_pcm_s16be_planar_encoder;
508extern AVCodec ff_pcm_s16be_planar_decoder;
509extern AVCodec ff_pcm_s16le_encoder;
510extern AVCodec ff_pcm_s16le_decoder;
511extern AVCodec ff_pcm_s16le_planar_encoder;
512extern AVCodec ff_pcm_s16le_planar_decoder;
513extern AVCodec ff_pcm_s24be_encoder;
514extern AVCodec ff_pcm_s24be_decoder;
515extern AVCodec ff_pcm_s24daud_encoder;
516extern AVCodec ff_pcm_s24daud_decoder;
517extern AVCodec ff_pcm_s24le_encoder;
518extern AVCodec ff_pcm_s24le_decoder;
519extern AVCodec ff_pcm_s24le_planar_encoder;
520extern AVCodec ff_pcm_s24le_planar_decoder;
521extern AVCodec ff_pcm_s32be_encoder;
522extern AVCodec ff_pcm_s32be_decoder;
523extern AVCodec ff_pcm_s32le_encoder;
524extern AVCodec ff_pcm_s32le_decoder;
525extern AVCodec ff_pcm_s32le_planar_encoder;
526extern AVCodec ff_pcm_s32le_planar_decoder;
527extern AVCodec ff_pcm_s64be_encoder;
528extern AVCodec ff_pcm_s64be_decoder;
529extern AVCodec ff_pcm_s64le_encoder;
530extern AVCodec ff_pcm_s64le_decoder;
531extern AVCodec ff_pcm_u8_encoder;
532extern AVCodec ff_pcm_u8_decoder;
533extern AVCodec ff_pcm_u16be_encoder;
534extern AVCodec ff_pcm_u16be_decoder;
535extern AVCodec ff_pcm_u16le_encoder;
536extern AVCodec ff_pcm_u16le_decoder;
537extern AVCodec ff_pcm_u24be_encoder;
538extern AVCodec ff_pcm_u24be_decoder;
539extern AVCodec ff_pcm_u24le_encoder;
540extern AVCodec ff_pcm_u24le_decoder;
541extern AVCodec ff_pcm_u32be_encoder;
542extern AVCodec ff_pcm_u32be_decoder;
543extern AVCodec ff_pcm_u32le_encoder;
544extern AVCodec ff_pcm_u32le_decoder;
545extern AVCodec ff_pcm_zork_decoder;
546
547/* DPCM codecs */
548extern AVCodec ff_gremlin_dpcm_decoder;
549extern AVCodec ff_interplay_dpcm_decoder;
550extern AVCodec ff_roq_dpcm_encoder;
551extern AVCodec ff_roq_dpcm_decoder;
552extern AVCodec ff_sol_dpcm_decoder;
553extern AVCodec ff_xan_dpcm_decoder;
554
555/* ADPCM codecs */
556extern AVCodec ff_adpcm_4xm_decoder;
557extern AVCodec ff_adpcm_adx_encoder;
558extern AVCodec ff_adpcm_adx_decoder;
559extern AVCodec ff_adpcm_afc_decoder;
560extern AVCodec ff_adpcm_aica_decoder;
561extern AVCodec ff_adpcm_ct_decoder;
562extern AVCodec ff_adpcm_dtk_decoder;
563extern AVCodec ff_adpcm_ea_decoder;
564extern AVCodec ff_adpcm_ea_maxis_xa_decoder;
565extern AVCodec ff_adpcm_ea_r1_decoder;
566extern AVCodec ff_adpcm_ea_r2_decoder;
567extern AVCodec ff_adpcm_ea_r3_decoder;
568extern AVCodec ff_adpcm_ea_xas_decoder;
569extern AVCodec ff_adpcm_g722_encoder;
570extern AVCodec ff_adpcm_g722_decoder;
571extern AVCodec ff_adpcm_g726_encoder;
572extern AVCodec ff_adpcm_g726_decoder;
573extern AVCodec ff_adpcm_g726le_encoder;
574extern AVCodec ff_adpcm_g726le_decoder;
575extern AVCodec ff_adpcm_ima_amv_decoder;
576extern AVCodec ff_adpcm_ima_apc_decoder;
577extern AVCodec ff_adpcm_ima_dat4_decoder;
578extern AVCodec ff_adpcm_ima_dk3_decoder;
579extern AVCodec ff_adpcm_ima_dk4_decoder;
580extern AVCodec ff_adpcm_ima_ea_eacs_decoder;
581extern AVCodec ff_adpcm_ima_ea_sead_decoder;
582extern AVCodec ff_adpcm_ima_iss_decoder;
583extern AVCodec ff_adpcm_ima_oki_decoder;
584extern AVCodec ff_adpcm_ima_qt_encoder;
585extern AVCodec ff_adpcm_ima_qt_decoder;
586extern AVCodec ff_adpcm_ima_rad_decoder;
587extern AVCodec ff_adpcm_ima_smjpeg_decoder;
588extern AVCodec ff_adpcm_ima_wav_encoder;
589extern AVCodec ff_adpcm_ima_wav_decoder;
590extern AVCodec ff_adpcm_ima_ws_decoder;
591extern AVCodec ff_adpcm_ms_encoder;
592extern AVCodec ff_adpcm_ms_decoder;
593extern AVCodec ff_adpcm_mtaf_decoder;
594extern AVCodec ff_adpcm_psx_decoder;
595extern AVCodec ff_adpcm_sbpro_2_decoder;
596extern AVCodec ff_adpcm_sbpro_3_decoder;
597extern AVCodec ff_adpcm_sbpro_4_decoder;
598extern AVCodec ff_adpcm_swf_encoder;
599extern AVCodec ff_adpcm_swf_decoder;
600extern AVCodec ff_adpcm_thp_decoder;
601extern AVCodec ff_adpcm_thp_le_decoder;
602extern AVCodec ff_adpcm_vima_decoder;
603extern AVCodec ff_adpcm_xa_decoder;
604extern AVCodec ff_adpcm_yamaha_encoder;
605extern AVCodec ff_adpcm_yamaha_decoder;
606
607/* subtitles */
608extern AVCodec ff_ssa_encoder;
609extern AVCodec ff_ssa_decoder;
610extern AVCodec ff_ass_encoder;
611extern AVCodec ff_ass_decoder;
612extern AVCodec ff_ccaption_decoder;
613extern AVCodec ff_dvbsub_encoder;
614extern AVCodec ff_dvbsub_decoder;
615extern AVCodec ff_dvdsub_encoder;
616extern AVCodec ff_dvdsub_decoder;
617extern AVCodec ff_jacosub_decoder;
618extern AVCodec ff_microdvd_decoder;
619extern AVCodec ff_movtext_encoder;
620extern AVCodec ff_movtext_decoder;
621extern AVCodec ff_mpl2_decoder;
622extern AVCodec ff_pgssub_decoder;
623extern AVCodec ff_pjs_decoder;
624extern AVCodec ff_realtext_decoder;
625extern AVCodec ff_sami_decoder;
626extern AVCodec ff_srt_encoder;
627extern AVCodec ff_srt_decoder;
628extern AVCodec ff_stl_decoder;
629extern AVCodec ff_subrip_encoder;
630extern AVCodec ff_subrip_decoder;
631extern AVCodec ff_subviewer_decoder;
632extern AVCodec ff_subviewer1_decoder;
633extern AVCodec ff_text_encoder;
634extern AVCodec ff_text_decoder;
635extern AVCodec ff_vplayer_decoder;
636extern AVCodec ff_webvtt_encoder;
637extern AVCodec ff_webvtt_decoder;
638extern AVCodec ff_xsub_encoder;
639extern AVCodec ff_xsub_decoder;
640
641/* external libraries */
642extern AVCodec ff_aac_at_encoder;
643extern AVCodec ff_aac_at_decoder;
644extern AVCodec ff_ac3_at_decoder;
645extern AVCodec ff_adpcm_ima_qt_at_decoder;
646extern AVCodec ff_alac_at_encoder;
647extern AVCodec ff_alac_at_decoder;
648extern AVCodec ff_amr_nb_at_decoder;
649extern AVCodec ff_eac3_at_decoder;
650extern AVCodec ff_gsm_ms_at_decoder;
651extern AVCodec ff_ilbc_at_encoder;
652extern AVCodec ff_ilbc_at_decoder;
653extern AVCodec ff_mp1_at_decoder;
654extern AVCodec ff_mp2_at_decoder;
655extern AVCodec ff_mp3_at_decoder;
656extern AVCodec ff_pcm_alaw_at_encoder;
657extern AVCodec ff_pcm_alaw_at_decoder;
658extern AVCodec ff_pcm_mulaw_at_encoder;
659extern AVCodec ff_pcm_mulaw_at_decoder;
660extern AVCodec ff_qdmc_at_decoder;
661extern AVCodec ff_qdm2_at_decoder;
662extern AVCodec ff_libcelt_decoder;
663extern AVCodec ff_libfdk_aac_encoder;
664extern AVCodec ff_libfdk_aac_decoder;
665extern AVCodec ff_libgsm_encoder;
666extern AVCodec ff_libgsm_decoder;
667extern AVCodec ff_libgsm_ms_encoder;
668extern AVCodec ff_libgsm_ms_decoder;
669extern AVCodec ff_libilbc_encoder;
670extern AVCodec ff_libilbc_decoder;
671extern AVCodec ff_libmp3lame_encoder;
672extern AVCodec ff_libopencore_amrnb_encoder;
673extern AVCodec ff_libopencore_amrnb_decoder;
674extern AVCodec ff_libopencore_amrwb_decoder;
675extern AVCodec ff_libopenjpeg_encoder;
676extern AVCodec ff_libopenjpeg_decoder;
677extern AVCodec ff_libopus_encoder;
678extern AVCodec ff_libopus_decoder;
679extern AVCodec ff_librsvg_decoder;
680extern AVCodec ff_libshine_encoder;
681extern AVCodec ff_libspeex_encoder;
682extern AVCodec ff_libspeex_decoder;
683extern AVCodec ff_libtheora_encoder;
684extern AVCodec ff_libtwolame_encoder;
685extern AVCodec ff_libvo_amrwbenc_encoder;
686extern AVCodec ff_libvorbis_encoder;
687extern AVCodec ff_libvorbis_decoder;
688extern AVCodec ff_libvpx_vp8_encoder;
689extern AVCodec ff_libvpx_vp8_decoder;
690extern AVCodec ff_libvpx_vp9_encoder;
691extern AVCodec ff_libvpx_vp9_decoder;
692extern AVCodec ff_libwavpack_encoder;
693/* preferred over libwebp */
694extern AVCodec ff_libwebp_anim_encoder;
695extern AVCodec ff_libwebp_encoder;
696extern AVCodec ff_libx262_encoder;
697extern AVCodec ff_libx264_encoder;
698extern AVCodec ff_libx264rgb_encoder;
699extern AVCodec ff_libx265_encoder;
700extern AVCodec ff_libxavs_encoder;
701extern AVCodec ff_libxvid_encoder;
702extern AVCodec ff_libzvbi_teletext_decoder;
703
704/* text */
705extern AVCodec ff_bintext_decoder;
706extern AVCodec ff_xbin_decoder;
707extern AVCodec ff_idf_decoder;
38 708
39#define REGISTER_DECODER(X, x) \709/* external libraries, that shouldn't be used by default if one of the
40 { \710 * above is available */
41 extern AVCodec ff_##x##_decoder; \711extern AVCodec ff_h263_v4l2m2m_encoder;
42 if (CONFIG_##X##_DECODER) \712extern AVCodec ff_libopenh264_encoder;
43 avcodec_register(&ff_##x##_decoder); \713extern AVCodec ff_libopenh264_decoder;
714extern AVCodec ff_h264_amf_encoder;
715extern AVCodec ff_h264_cuvid_decoder;
716extern AVCodec ff_h264_nvenc_encoder;
717extern AVCodec ff_h264_omx_encoder;
718extern AVCodec ff_h264_qsv_encoder;
719extern AVCodec ff_h264_v4l2m2m_encoder;
720extern AVCodec ff_h264_vaapi_encoder;
721extern AVCodec ff_h264_videotoolbox_encoder;
722#if FF_API_NVENC_OLD_NAME
723extern AVCodec ff_nvenc_encoder;
724extern AVCodec ff_nvenc_h264_encoder;
725extern AVCodec ff_nvenc_hevc_encoder;
726#endif
727extern AVCodec ff_hevc_amf_encoder;
728extern AVCodec ff_hevc_cuvid_decoder;
729extern AVCodec ff_hevc_mediacodec_decoder;
730extern AVCodec ff_hevc_nvenc_encoder;
731extern AVCodec ff_hevc_qsv_encoder;
732extern AVCodec ff_hevc_v4l2m2m_encoder;
733extern AVCodec ff_hevc_vaapi_encoder;
734extern AVCodec ff_hevc_videotoolbox_encoder;
735extern AVCodec ff_libkvazaar_encoder;
736extern AVCodec ff_mjpeg_cuvid_decoder;
737extern AVCodec ff_mjpeg_qsv_encoder;
738extern AVCodec ff_mjpeg_vaapi_encoder;
739extern AVCodec ff_mpeg1_cuvid_decoder;
740extern AVCodec ff_mpeg2_cuvid_decoder;
741extern AVCodec ff_mpeg2_qsv_encoder;
742extern AVCodec ff_mpeg2_vaapi_encoder;
743extern AVCodec ff_mpeg4_cuvid_decoder;
744extern AVCodec ff_mpeg4_mediacodec_decoder;
745extern AVCodec ff_mpeg4_v4l2m2m_encoder;
746extern AVCodec ff_vc1_cuvid_decoder;
747extern AVCodec ff_vp8_cuvid_decoder;
748extern AVCodec ff_vp8_mediacodec_decoder;
749extern AVCodec ff_vp8_qsv_decoder;
750extern AVCodec ff_vp8_v4l2m2m_encoder;
751extern AVCodec ff_vp8_vaapi_encoder;
752extern AVCodec ff_vp9_cuvid_decoder;
753extern AVCodec ff_vp9_mediacodec_decoder;
754extern AVCodec ff_vp9_vaapi_encoder;
755
756#include "libavcodec/codec_list.c"
757
758static AVOnce av_codec_static_init = AV_ONCE_INIT;
759static void av_codec_init_static(void)
760{
761 for (int i = 0; codec_list[i]; i++) {
762 if (codec_list[i]->init_static_data)
763 codec_list[i]->init_static_data((AVCodec*)codec_list[i]);
44 }764 }
765}
766
767const AVCodec *av_codec_iterate(void **opaque)
768{
769 uintptr_t i = (uintptr_t)*opaque;
770 const AVCodec *c = codec_list[i];
771
772 ff_thread_once(&av_codec_static_init, av_codec_init_static);
773
774 if (c)
775 *opaque = (void*)(i + 1);
776
777 return c;
778}
45 779
46#define REGISTER_ENCDEC(X, x) REGISTER_ENCODER(X, x); REGISTER_DECODER(X, x)780#if FF_API_NEXT
781FF_DISABLE_DEPRECATION_WARNINGS
782static AVOnce av_codec_next_init = AV_ONCE_INIT;
47 783
48#define REGISTER_PARSER(X, x) \784static void av_codec_init_next(void)
49 { \785{
50 extern AVCodecParser ff_##x##_parser; \786 AVCodec *prev = NULL, *p;
51 if (CONFIG_##X##_PARSER) \787 void *i = 0;
52 av_register_codec_parser(&ff_##x##_parser); \788 while ((p = (AVCodec*)av_codec_iterate(&i))) {
789 if (prev)
790 prev->next = p;
791 prev = p;
53 }792 }
793}
794
54 795
55static void register_all(void)796
797av_cold void avcodec_register(AVCodec *codec)
56{798{
57 /* video codecs */799 ff_thread_once(&av_codec_next_init, av_codec_init_next);
58 REGISTER_ENCODER(A64MULTI, a64multi);800}
59 REGISTER_ENCODER(A64MULTI5, a64multi5);801
60 REGISTER_DECODER(AASC, aasc);802AVCodec *av_codec_next(const AVCodec *c)
61 REGISTER_DECODER(AIC, aic);803{
62 REGISTER_ENCDEC (ALIAS_PIX, alias_pix);804 ff_thread_once(&av_codec_next_init, av_codec_init_next);
63 REGISTER_ENCDEC (AMV, amv);805
64 REGISTER_DECODER(ANM, anm);806 if (c)
65 REGISTER_DECODER(ANSI, ansi);807 return c->next;
66 REGISTER_ENCDEC (APNG, apng);808 else
67 REGISTER_ENCDEC (ASV1, asv1);809 return (AVCodec*)codec_list[0];
68 REGISTER_ENCDEC (ASV2, asv2);
69 REGISTER_DECODER(AURA, aura);
70 REGISTER_DECODER(AURA2, aura2);
71 REGISTER_ENCDEC (AVRP, avrp);
72 REGISTER_DECODER(AVRN, avrn);
73 REGISTER_DECODER(AVS, avs);
74 REGISTER_ENCDEC (AVUI, avui);
75 REGISTER_ENCDEC (AYUV, ayuv);
76 REGISTER_DECODER(BETHSOFTVID, bethsoftvid);
77 REGISTER_DECODER(BFI, bfi);
78 REGISTER_DECODER(BINK, bink);
79 REGISTER_ENCDEC (BMP, bmp);
80 REGISTER_DECODER(BMV_VIDEO, bmv_video);
81 REGISTER_DECODER(BRENDER_PIX, brender_pix);
82 REGISTER_DECODER(C93, c93);
83 REGISTER_DECODER(CAVS, cavs);
84 REGISTER_DECODER(CDGRAPHICS, cdgraphics);
85 REGISTER_DECODER(CDXL, cdxl);
86 REGISTER_DECODER(CFHD, cfhd);
87 REGISTER_ENCDEC (CINEPAK, cinepak);
88 REGISTER_DECODER(CLEARVIDEO, clearvideo);
89 REGISTER_ENCDEC (CLJR, cljr);
90 REGISTER_DECODER(CLLC, cllc);
91 REGISTER_ENCDEC (COMFORTNOISE, comfortnoise);
92 REGISTER_DECODER(CPIA, cpia);
93 REGISTER_DECODER(CSCD, cscd);
94 REGISTER_DECODER(CYUV, cyuv);
95 REGISTER_DECODER(DDS, dds);
96 REGISTER_DECODER(DFA, dfa);
97 REGISTER_DECODER(DIRAC, dirac);
98 REGISTER_ENCDEC (DNXHD, dnxhd);
99 REGISTER_ENCDEC (DPX, dpx);
100 REGISTER_DECODER(DSICINVIDEO, dsicinvideo);
101 REGISTER_DECODER(DVAUDIO, dvaudio);
102 REGISTER_ENCDEC (DVVIDEO, dvvideo);
103 REGISTER_DECODER(DXA, dxa);
104 REGISTER_DECODER(DXTORY, dxtory);
105 REGISTER_DECODER(DXV, dxv);
106 REGISTER_DECODER(EACMV, eacmv);
107 REGISTER_DECODER(EAMAD, eamad);
108 REGISTER_DECODER(EATGQ, eatgq);
109 REGISTER_DECODER(EATGV, eatgv);
110 REGISTER_DECODER(EATQI, eatqi);
111 REGISTER_DECODER(EIGHTBPS, eightbps);
112 REGISTER_DECODER(EIGHTSVX_EXP, eightsvx_exp);
113 REGISTER_DECODER(EIGHTSVX_FIB, eightsvx_fib);
114 REGISTER_DECODER(ESCAPE124, escape124);
115 REGISTER_DECODER(ESCAPE130, escape130);
116 REGISTER_DECODER(EXR, exr);
117 REGISTER_ENCDEC (FFV1, ffv1);
118 REGISTER_ENCDEC (FFVHUFF, ffvhuff);
119 REGISTER_DECODER(FIC, fic);
120 REGISTER_ENCDEC (FITS, fits);
121 REGISTER_ENCDEC (FLASHSV, flashsv);
122 REGISTER_ENCDEC (FLASHSV2, flashsv2);
123 REGISTER_DECODER(FLIC, flic);
124 REGISTER_ENCDEC (FLV, flv);
125 REGISTER_DECODER(FMVC, fmvc);
126 REGISTER_DECODER(FOURXM, fourxm);
127 REGISTER_DECODER(FRAPS, fraps);
128 REGISTER_DECODER(FRWU, frwu);
129 REGISTER_DECODER(G2M, g2m);
130 REGISTER_DECODER(GDV, gdv);
131 REGISTER_ENCDEC (GIF, gif);
132 REGISTER_ENCDEC (H261, h261);
133 REGISTER_ENCDEC (H263, h263);
134 REGISTER_DECODER(H263I, h263i);
135 REGISTER_ENCDEC (H263P, h263p);
136 REGISTER_DECODER(H263_V4L2M2M, h263_v4l2m2m);
137 REGISTER_DECODER(H264, h264);
138 REGISTER_DECODER(H264_CRYSTALHD, h264_crystalhd);
139 REGISTER_DECODER(H264_V4L2M2M, h264_v4l2m2m);
140 REGISTER_DECODER(H264_MEDIACODEC, h264_mediacodec);
141 REGISTER_DECODER(H264_MMAL, h264_mmal);
142 REGISTER_DECODER(H264_QSV, h264_qsv);
143 REGISTER_DECODER(H264_RKMPP, h264_rkmpp);
144 REGISTER_ENCDEC (HAP, hap);
145 REGISTER_DECODER(HEVC, hevc);
146 REGISTER_DECODER(HEVC_QSV, hevc_qsv);
147 REGISTER_DECODER(HEVC_RKMPP, hevc_rkmpp);
148 REGISTER_DECODER(HEVC_V4L2M2M, hevc_v4l2m2m);
149 REGISTER_DECODER(HNM4_VIDEO, hnm4_video);
150 REGISTER_DECODER(HQ_HQA, hq_hqa);
151 REGISTER_DECODER(HQX, hqx);
152 REGISTER_ENCDEC (HUFFYUV, huffyuv);
153 REGISTER_DECODER(IDCIN, idcin);
154 REGISTER_DECODER(IFF_ILBM, iff_ilbm);
155 REGISTER_DECODER(INDEO2, indeo2);
156 REGISTER_DECODER(INDEO3, indeo3);
157 REGISTER_DECODER(INDEO4, indeo4);
158 REGISTER_DECODER(INDEO5, indeo5);
159 REGISTER_DECODER(INTERPLAY_VIDEO, interplay_video);
160 REGISTER_ENCDEC (JPEG2000, jpeg2000);
161 REGISTER_ENCDEC (JPEGLS, jpegls);
162 REGISTER_DECODER(JV, jv);
163 REGISTER_DECODER(KGV1, kgv1);
164 REGISTER_DECODER(KMVC, kmvc);
165 REGISTER_DECODER(LAGARITH, lagarith);
166 REGISTER_ENCODER(LJPEG, ljpeg);
167 REGISTER_DECODER(LOCO, loco);
168 REGISTER_DECODER(M101, m101);
169 REGISTER_ENCDEC (MAGICYUV, magicyuv);
170 REGISTER_DECODER(MDEC, mdec);
171 REGISTER_DECODER(MIMIC, mimic);
172 REGISTER_ENCDEC (MJPEG, mjpeg);
173 REGISTER_DECODER(MJPEGB, mjpegb);
174 REGISTER_DECODER(MMVIDEO, mmvideo);
175 REGISTER_DECODER(MOTIONPIXELS, motionpixels);
176 REGISTER_ENCDEC (MPEG1VIDEO, mpeg1video);
177 REGISTER_ENCDEC (MPEG2VIDEO, mpeg2video);
178 REGISTER_ENCDEC (MPEG4, mpeg4);
179 REGISTER_DECODER(MPEG4_CRYSTALHD, mpeg4_crystalhd);
180 REGISTER_DECODER(MPEG4_V4L2M2M, mpeg4_v4l2m2m);
181 REGISTER_DECODER(MPEG4_MMAL, mpeg4_mmal);
182 REGISTER_DECODER(MPEGVIDEO, mpegvideo);
183 REGISTER_DECODER(MPEG1_V4L2M2M, mpeg1_v4l2m2m);
184 REGISTER_DECODER(MPEG2_MMAL, mpeg2_mmal);
185 REGISTER_DECODER(MPEG2_CRYSTALHD, mpeg2_crystalhd);
186 REGISTER_DECODER(MPEG2_V4L2M2M, mpeg2_v4l2m2m);
187 REGISTER_DECODER(MPEG2_QSV, mpeg2_qsv);
188 REGISTER_DECODER(MPEG2_MEDIACODEC, mpeg2_mediacodec);
189 REGISTER_DECODER(MSA1, msa1);
190 REGISTER_DECODER(MSCC, mscc);
191 REGISTER_DECODER(MSMPEG4V1, msmpeg4v1);
192 REGISTER_ENCDEC (MSMPEG4V2, msmpeg4v2);
193 REGISTER_ENCDEC (MSMPEG4V3, msmpeg4v3);
194 REGISTER_DECODER(MSMPEG4_CRYSTALHD, msmpeg4_crystalhd);
195 REGISTER_DECODER(MSRLE, msrle);
196 REGISTER_DECODER(MSS1, mss1);
197 REGISTER_DECODER(MSS2, mss2);
198 REGISTER_ENCDEC (MSVIDEO1, msvideo1);
199 REGISTER_DECODER(MSZH, mszh);
200 REGISTER_DECODER(MTS2, mts2);
201 REGISTER_DECODER(MVC1, mvc1);
202 REGISTER_DECODER(MVC2, mvc2);
203 REGISTER_DECODER(MXPEG, mxpeg);
204 REGISTER_DECODER(NUV, nuv);
205 REGISTER_DECODER(PAF_VIDEO, paf_video);
206 REGISTER_ENCDEC (PAM, pam);
207 REGISTER_ENCDEC (PBM, pbm);
208 REGISTER_ENCDEC (PCX, pcx);
209 REGISTER_ENCDEC (PGM, pgm);
210 REGISTER_ENCDEC (PGMYUV, pgmyuv);
211 REGISTER_DECODER(PICTOR, pictor);
212 REGISTER_DECODER(PIXLET, pixlet);
213 REGISTER_ENCDEC (PNG, png);
214 REGISTER_ENCDEC (PPM, ppm);
215 REGISTER_ENCDEC (PRORES, prores);
216 REGISTER_ENCODER(PRORES_AW, prores_aw);
217 REGISTER_ENCODER(PRORES_KS, prores_ks);
218 REGISTER_DECODER(PRORES_LGPL, prores_lgpl);
219 REGISTER_DECODER(PSD, psd);
220 REGISTER_DECODER(PTX, ptx);
221 REGISTER_DECODER(QDRAW, qdraw);
222 REGISTER_DECODER(QPEG, qpeg);
223 REGISTER_ENCDEC (QTRLE, qtrle);
224 REGISTER_ENCDEC (R10K, r10k);
225 REGISTER_ENCDEC (R210, r210);
226 REGISTER_ENCDEC (RAWVIDEO, rawvideo);
227 REGISTER_DECODER(RL2, rl2);
228 REGISTER_ENCDEC (ROQ, roq);
229 REGISTER_DECODER(RPZA, rpza);
230 REGISTER_DECODER(RSCC, rscc);
231 REGISTER_ENCDEC (RV10, rv10);
232 REGISTER_ENCDEC (RV20, rv20);
233 REGISTER_DECODER(RV30, rv30);
234 REGISTER_DECODER(RV40, rv40);
235 REGISTER_ENCDEC (S302M, s302m);
236 REGISTER_DECODER(SANM, sanm);
237 REGISTER_DECODER(SCPR, scpr);
238 REGISTER_DECODER(SCREENPRESSO, screenpresso);
239 REGISTER_DECODER(SDX2_DPCM, sdx2_dpcm);
240 REGISTER_ENCDEC (SGI, sgi);
241 REGISTER_DECODER(SGIRLE, sgirle);
242 REGISTER_DECODER(SHEERVIDEO, sheervideo);
243 REGISTER_DECODER(SMACKER, smacker);
244 REGISTER_DECODER(SMC, smc);
245 REGISTER_DECODER(SMVJPEG, smvjpeg);
246 REGISTER_ENCDEC (SNOW, snow);
247 REGISTER_DECODER(SP5X, sp5x);
248 REGISTER_DECODER(SPEEDHQ, speedhq);
249 REGISTER_DECODER(SRGC, srgc);
250 REGISTER_ENCDEC (SUNRAST, sunrast);
251 REGISTER_ENCDEC (SVQ1, svq1);
252 REGISTER_DECODER(SVQ3, svq3);
253 REGISTER_ENCDEC (TARGA, targa);
254 REGISTER_DECODER(TARGA_Y216, targa_y216);
255 REGISTER_DECODER(TDSC, tdsc);
256 REGISTER_DECODER(THEORA, theora);
257 REGISTER_DECODER(THP, thp);
258 REGISTER_DECODER(TIERTEXSEQVIDEO, tiertexseqvideo);
259 REGISTER_ENCDEC (TIFF, tiff);
260 REGISTER_DECODER(TMV, tmv);
261 REGISTER_DECODER(TRUEMOTION1, truemotion1);
262 REGISTER_DECODER(TRUEMOTION2, truemotion2);
263 REGISTER_DECODER(TRUEMOTION2RT, truemotion2rt);
264 REGISTER_DECODER(TSCC, tscc);
265 REGISTER_DECODER(TSCC2, tscc2);
266 REGISTER_DECODER(TXD, txd);
267 REGISTER_DECODER(ULTI, ulti);
268 REGISTER_ENCDEC (UTVIDEO, utvideo);
269 REGISTER_ENCDEC (V210, v210);
270 REGISTER_DECODER(V210X, v210x);
271 REGISTER_ENCDEC (V308, v308);
272 REGISTER_ENCDEC (V408, v408);
273 REGISTER_ENCDEC (V410, v410);
274 REGISTER_DECODER(VB, vb);
275 REGISTER_DECODER(VBLE, vble);
276 REGISTER_DECODER(VC1, vc1);
277 REGISTER_DECODER(VC1_CRYSTALHD, vc1_crystalhd);
278 REGISTER_DECODER(VC1IMAGE, vc1image);
279 REGISTER_DECODER(VC1_MMAL, vc1_mmal);
280 REGISTER_DECODER(VC1_QSV, vc1_qsv);
281 REGISTER_DECODER(VC1_V4L2M2M, vc1_v4l2m2m);
282 REGISTER_ENCODER(VC2, vc2);
283 REGISTER_DECODER(VCR1, vcr1);
284 REGISTER_DECODER(VMDVIDEO, vmdvideo);
285 REGISTER_DECODER(VMNC, vmnc);
286 REGISTER_DECODER(VP3, vp3);
287 REGISTER_DECODER(VP5, vp5);
288 REGISTER_DECODER(VP6, vp6);
289 REGISTER_DECODER(VP6A, vp6a);
290 REGISTER_DECODER(VP6F, vp6f);
291 REGISTER_DECODER(VP7, vp7);
292 REGISTER_DECODER(VP8, vp8);
293 REGISTER_DECODER(VP8_RKMPP, vp8_rkmpp);
294 REGISTER_DECODER(VP8_V4L2M2M, vp8_v4l2m2m);
295 REGISTER_DECODER(VP9, vp9);
296 REGISTER_DECODER(VP9_RKMPP, vp9_rkmpp);
297 REGISTER_DECODER(VP9_V4L2M2M, vp9_v4l2m2m);
298 REGISTER_DECODER(VQA, vqa);
299 REGISTER_DECODER(BITPACKED, bitpacked);
300 REGISTER_DECODER(WEBP, webp);
301 REGISTER_ENCDEC (WRAPPED_AVFRAME, wrapped_avframe);
302 REGISTER_ENCDEC (WMV1, wmv1);
303 REGISTER_ENCDEC (WMV2, wmv2);
304 REGISTER_DECODER(WMV3, wmv3);
305 REGISTER_DECODER(WMV3_CRYSTALHD, wmv3_crystalhd);
306 REGISTER_DECODER(WMV3IMAGE, wmv3image);
307 REGISTER_DECODER(WNV1, wnv1);
308 REGISTER_DECODER(XAN_WC3, xan_wc3);
309 REGISTER_DECODER(XAN_WC4, xan_wc4);
310 REGISTER_ENCDEC (XBM, xbm);
311 REGISTER_ENCDEC (XFACE, xface);
312 REGISTER_DECODER(XL, xl);
313 REGISTER_DECODER(XPM, xpm);
314 REGISTER_ENCDEC (XWD, xwd);
315 REGISTER_ENCDEC (Y41P, y41p);
316 REGISTER_DECODER(YLC, ylc);
317 REGISTER_DECODER(YOP, yop);
318 REGISTER_ENCDEC (YUV4, yuv4);
319 REGISTER_DECODER(ZERO12V, zero12v);
320 REGISTER_DECODER(ZEROCODEC, zerocodec);
321 REGISTER_ENCDEC (ZLIB, zlib);
322 REGISTER_ENCDEC (ZMBV, zmbv);
323
324 /* audio codecs */
325 REGISTER_ENCDEC (AAC, aac);
326 REGISTER_DECODER(AAC_FIXED, aac_fixed);
327 REGISTER_DECODER(AAC_LATM, aac_latm);
328 REGISTER_ENCDEC (AC3, ac3);
329 REGISTER_ENCDEC (AC3_FIXED, ac3_fixed);
330 REGISTER_ENCDEC (ALAC, alac);
331 REGISTER_DECODER(ALS, als);
332 REGISTER_DECODER(AMRNB, amrnb);
333 REGISTER_DECODER(AMRWB, amrwb);
334 REGISTER_DECODER(APE, ape);
335 REGISTER_ENCDEC (APTX, aptx);
336 REGISTER_DECODER(ATRAC1, atrac1);
337 REGISTER_DECODER(ATRAC3, atrac3);
338 REGISTER_DECODER(ATRAC3AL, atrac3al);
339 REGISTER_DECODER(ATRAC3P, atrac3p);
340 REGISTER_DECODER(ATRAC3PAL, atrac3pal);
341 REGISTER_DECODER(BINKAUDIO_DCT, binkaudio_dct);
342 REGISTER_DECODER(BINKAUDIO_RDFT, binkaudio_rdft);
343 REGISTER_DECODER(BMV_AUDIO, bmv_audio);
344 REGISTER_DECODER(COOK, cook);
345 REGISTER_ENCDEC (DCA, dca);
346 REGISTER_DECODER(DOLBY_E, dolby_e);
347 REGISTER_DECODER(DSD_LSBF, dsd_lsbf);
348 REGISTER_DECODER(DSD_MSBF, dsd_msbf);
349 REGISTER_DECODER(DSD_LSBF_PLANAR, dsd_lsbf_planar);
350 REGISTER_DECODER(DSD_MSBF_PLANAR, dsd_msbf_planar);
351 REGISTER_DECODER(DSICINAUDIO, dsicinaudio);
352 REGISTER_DECODER(DSS_SP, dss_sp);
353 REGISTER_DECODER(DST, dst);
354 REGISTER_ENCDEC (EAC3, eac3);
355 REGISTER_DECODER(EVRC, evrc);
356 REGISTER_DECODER(FFWAVESYNTH, ffwavesynth);
357 REGISTER_ENCDEC (FLAC, flac);
358 REGISTER_ENCDEC (G723_1, g723_1);
359 REGISTER_DECODER(G729, g729);
360 REGISTER_DECODER(GSM, gsm);
361 REGISTER_DECODER(GSM_MS, gsm_ms);
362 REGISTER_DECODER(IAC, iac);
363 REGISTER_DECODER(IMC, imc);
364 REGISTER_DECODER(INTERPLAY_ACM, interplay_acm);
365 REGISTER_DECODER(MACE3, mace3);
366 REGISTER_DECODER(MACE6, mace6);
367 REGISTER_DECODER(METASOUND, metasound);
368 REGISTER_ENCDEC (MLP, mlp);
369 REGISTER_DECODER(MP1, mp1);
370 REGISTER_DECODER(MP1FLOAT, mp1float);
371 REGISTER_ENCDEC (MP2, mp2);
372 REGISTER_DECODER(MP2FLOAT, mp2float);
373 REGISTER_ENCODER(MP2FIXED, mp2fixed);
374 REGISTER_DECODER(MP3, mp3);
375 REGISTER_DECODER(MP3FLOAT, mp3float);
376 REGISTER_DECODER(MP3ADU, mp3adu);
377 REGISTER_DECODER(MP3ADUFLOAT, mp3adufloat);
378 REGISTER_DECODER(MP3ON4, mp3on4);
379 REGISTER_DECODER(MP3ON4FLOAT, mp3on4float);
380 REGISTER_DECODER(MPC7, mpc7);
381 REGISTER_DECODER(MPC8, mpc8);
382 REGISTER_ENCDEC (NELLYMOSER, nellymoser);
383 REGISTER_DECODER(ON2AVC, on2avc);
384 REGISTER_ENCDEC (OPUS, opus);
385 REGISTER_DECODER(PAF_AUDIO, paf_audio);
386 REGISTER_DECODER(QCELP, qcelp);
387 REGISTER_DECODER(QDM2, qdm2);
388 REGISTER_DECODER(QDMC, qdmc);
389 REGISTER_ENCDEC (RA_144, ra_144);
390 REGISTER_DECODER(RA_288, ra_288);
391 REGISTER_DECODER(RALF, ralf);
392 REGISTER_DECODER(SHORTEN, shorten);
393 REGISTER_DECODER(SIPR, sipr);
394 REGISTER_DECODER(SMACKAUD, smackaud);
395 REGISTER_ENCDEC (SONIC, sonic);
396 REGISTER_ENCODER(SONIC_LS, sonic_ls);
397 REGISTER_DECODER(TAK, tak);
398 REGISTER_ENCDEC (TRUEHD, truehd);
399 REGISTER_DECODER(TRUESPEECH, truespeech);
400 REGISTER_ENCDEC (TTA, tta);
401 REGISTER_DECODER(TWINVQ, twinvq);
402 REGISTER_DECODER(VMDAUDIO, vmdaudio);
403 REGISTER_ENCDEC (VORBIS, vorbis);
404 REGISTER_ENCDEC (WAVPACK, wavpack);
405 REGISTER_DECODER(WMALOSSLESS, wmalossless);
406 REGISTER_DECODER(WMAPRO, wmapro);
407 REGISTER_ENCDEC (WMAV1, wmav1);
408 REGISTER_ENCDEC (WMAV2, wmav2);
409 REGISTER_DECODER(WMAVOICE, wmavoice);
410 REGISTER_DECODER(WS_SND1, ws_snd1);
411 REGISTER_DECODER(XMA1, xma1);
412 REGISTER_DECODER(XMA2, xma2);
413
414 /* PCM codecs */
415 REGISTER_ENCDEC (PCM_ALAW, pcm_alaw);
416 REGISTER_DECODER(PCM_BLURAY, pcm_bluray);
417 REGISTER_DECODER(PCM_DVD, pcm_dvd);
418 REGISTER_DECODER(PCM_F16LE, pcm_f16le);
419 REGISTER_DECODER(PCM_F24LE, pcm_f24le);
420 REGISTER_ENCDEC (PCM_F32BE, pcm_f32be);
421 REGISTER_ENCDEC (PCM_F32LE, pcm_f32le);
422 REGISTER_ENCDEC (PCM_F64BE, pcm_f64be);
423 REGISTER_ENCDEC (PCM_F64LE, pcm_f64le);
424 REGISTER_DECODER(PCM_LXF, pcm_lxf);
425 REGISTER_ENCDEC (PCM_MULAW, pcm_mulaw);
426 REGISTER_ENCDEC (PCM_S8, pcm_s8);
427 REGISTER_ENCDEC (PCM_S8_PLANAR, pcm_s8_planar);
428 REGISTER_ENCDEC (PCM_S16BE, pcm_s16be);
429 REGISTER_ENCDEC (PCM_S16BE_PLANAR, pcm_s16be_planar);
430 REGISTER_ENCDEC (PCM_S16LE, pcm_s16le);
431 REGISTER_ENCDEC (PCM_S16LE_PLANAR, pcm_s16le_planar);
432 REGISTER_ENCDEC (PCM_S24BE, pcm_s24be);
433 REGISTER_ENCDEC (PCM_S24DAUD, pcm_s24daud);
434 REGISTER_ENCDEC (PCM_S24LE, pcm_s24le);
435 REGISTER_ENCDEC (PCM_S24LE_PLANAR, pcm_s24le_planar);
436 REGISTER_ENCDEC (PCM_S32BE, pcm_s32be);
437 REGISTER_ENCDEC (PCM_S32LE, pcm_s32le);
438 REGISTER_ENCDEC (PCM_S32LE_PLANAR, pcm_s32le_planar);
439 REGISTER_ENCDEC (PCM_S64BE, pcm_s64be);
440 REGISTER_ENCDEC (PCM_S64LE, pcm_s64le);
441 REGISTER_ENCDEC (PCM_U8, pcm_u8);
442 REGISTER_ENCDEC (PCM_U16BE, pcm_u16be);
443 REGISTER_ENCDEC (PCM_U16LE, pcm_u16le);
444 REGISTER_ENCDEC (PCM_U24BE, pcm_u24be);
445 REGISTER_ENCDEC (PCM_U24LE, pcm_u24le);
446 REGISTER_ENCDEC (PCM_U32BE, pcm_u32be);
447 REGISTER_ENCDEC (PCM_U32LE, pcm_u32le);
448 REGISTER_DECODER(PCM_ZORK, pcm_zork);
449
450 /* DPCM codecs */
451 REGISTER_DECODER(GREMLIN_DPCM, gremlin_dpcm);
452 REGISTER_DECODER(INTERPLAY_DPCM, interplay_dpcm);
453 REGISTER_ENCDEC (ROQ_DPCM, roq_dpcm);
454 REGISTER_DECODER(SOL_DPCM, sol_dpcm);
455 REGISTER_DECODER(XAN_DPCM, xan_dpcm);
456
457 /* ADPCM codecs */
458 REGISTER_DECODER(ADPCM_4XM, adpcm_4xm);
459 REGISTER_ENCDEC (ADPCM_ADX, adpcm_adx);
460 REGISTER_DECODER(ADPCM_AFC, adpcm_afc);
461 REGISTER_DECODER(ADPCM_AICA, adpcm_aica);
462 REGISTER_DECODER(ADPCM_CT, adpcm_ct);
463 REGISTER_DECODER(ADPCM_DTK, adpcm_dtk);
464 REGISTER_DECODER(ADPCM_EA, adpcm_ea);
465 REGISTER_DECODER(ADPCM_EA_MAXIS_XA, adpcm_ea_maxis_xa);
466 REGISTER_DECODER(ADPCM_EA_R1, adpcm_ea_r1);
467 REGISTER_DECODER(ADPCM_EA_R2, adpcm_ea_r2);
468 REGISTER_DECODER(ADPCM_EA_R3, adpcm_ea_r3);
469 REGISTER_DECODER(ADPCM_EA_XAS, adpcm_ea_xas);
470 REGISTER_ENCDEC (ADPCM_G722, adpcm_g722);
471 REGISTER_ENCDEC (ADPCM_G726, adpcm_g726);
472 REGISTER_ENCDEC (ADPCM_G726LE, adpcm_g726le);
473 REGISTER_DECODER(ADPCM_IMA_AMV, adpcm_ima_amv);
474 REGISTER_DECODER(ADPCM_IMA_APC, adpcm_ima_apc);
475 REGISTER_DECODER(ADPCM_IMA_DAT4, adpcm_ima_dat4);
476 REGISTER_DECODER(ADPCM_IMA_DK3, adpcm_ima_dk3);
477 REGISTER_DECODER(ADPCM_IMA_DK4, adpcm_ima_dk4);
478 REGISTER_DECODER(ADPCM_IMA_EA_EACS, adpcm_ima_ea_eacs);
479 REGISTER_DECODER(ADPCM_IMA_EA_SEAD, adpcm_ima_ea_sead);
480 REGISTER_DECODER(ADPCM_IMA_ISS, adpcm_ima_iss);
481 REGISTER_DECODER(ADPCM_IMA_OKI, adpcm_ima_oki);
482 REGISTER_ENCDEC (ADPCM_IMA_QT, adpcm_ima_qt);
483 REGISTER_DECODER(ADPCM_IMA_RAD, adpcm_ima_rad);
484 REGISTER_DECODER(ADPCM_IMA_SMJPEG, adpcm_ima_smjpeg);
485 REGISTER_ENCDEC (ADPCM_IMA_WAV, adpcm_ima_wav);
486 REGISTER_DECODER(ADPCM_IMA_WS, adpcm_ima_ws);
487 REGISTER_ENCDEC (ADPCM_MS, adpcm_ms);
488 REGISTER_DECODER(ADPCM_MTAF, adpcm_mtaf);
489 REGISTER_DECODER(ADPCM_PSX, adpcm_psx);
490 REGISTER_DECODER(ADPCM_SBPRO_2, adpcm_sbpro_2);
491 REGISTER_DECODER(ADPCM_SBPRO_3, adpcm_sbpro_3);
492 REGISTER_DECODER(ADPCM_SBPRO_4, adpcm_sbpro_4);
493 REGISTER_ENCDEC (ADPCM_SWF, adpcm_swf);
494 REGISTER_DECODER(ADPCM_THP, adpcm_thp);
495 REGISTER_DECODER(ADPCM_THP_LE, adpcm_thp_le);
496 REGISTER_DECODER(ADPCM_VIMA, adpcm_vima);
497 REGISTER_DECODER(ADPCM_XA, adpcm_xa);
498 REGISTER_ENCDEC (ADPCM_YAMAHA, adpcm_yamaha);
499
500 /* subtitles */
501 REGISTER_ENCDEC (SSA, ssa);
502 REGISTER_ENCDEC (ASS, ass);
503 REGISTER_DECODER(CCAPTION, ccaption);
504 REGISTER_ENCDEC (DVBSUB, dvbsub);
505 REGISTER_ENCDEC (DVDSUB, dvdsub);
506 REGISTER_DECODER(JACOSUB, jacosub);
507 REGISTER_DECODER(MICRODVD, microdvd);
508 REGISTER_ENCDEC (MOVTEXT, movtext);
509 REGISTER_DECODER(MPL2, mpl2);
510 REGISTER_DECODER(PGSSUB, pgssub);
511 REGISTER_DECODER(PJS, pjs);
512 REGISTER_DECODER(REALTEXT, realtext);
513 REGISTER_DECODER(SAMI, sami);
514 REGISTER_ENCDEC (SRT, srt);
515 REGISTER_DECODER(STL, stl);
516 REGISTER_ENCDEC (SUBRIP, subrip);
517 REGISTER_DECODER(SUBVIEWER, subviewer);
518 REGISTER_DECODER(SUBVIEWER1, subviewer1);
519 REGISTER_ENCDEC (TEXT, text);
520 REGISTER_DECODER(VPLAYER, vplayer);
521 REGISTER_ENCDEC (WEBVTT, webvtt);
522 REGISTER_ENCDEC (XSUB, xsub);
523
524 /* external libraries */
525 REGISTER_ENCDEC (AAC_AT, aac_at);
526 REGISTER_DECODER(AC3_AT, ac3_at);
527 REGISTER_DECODER(ADPCM_IMA_QT_AT, adpcm_ima_qt_at);
528 REGISTER_ENCDEC (ALAC_AT, alac_at);
529 REGISTER_DECODER(AMR_NB_AT, amr_nb_at);
530 REGISTER_DECODER(EAC3_AT, eac3_at);
531 REGISTER_DECODER(GSM_MS_AT, gsm_ms_at);
532 REGISTER_ENCDEC (ILBC_AT, ilbc_at);
533 REGISTER_DECODER(MP1_AT, mp1_at);
534 REGISTER_DECODER(MP2_AT, mp2_at);
535 REGISTER_DECODER(MP3_AT, mp3_at);
536 REGISTER_ENCDEC (PCM_ALAW_AT, pcm_alaw_at);
537 REGISTER_ENCDEC (PCM_MULAW_AT, pcm_mulaw_at);
538 REGISTER_DECODER(QDMC_AT, qdmc_at);
539 REGISTER_DECODER(QDM2_AT, qdm2_at);
540 REGISTER_DECODER(LIBCELT, libcelt);
541 REGISTER_ENCDEC (LIBFDK_AAC, libfdk_aac);
542 REGISTER_ENCDEC (LIBGSM, libgsm);
543 REGISTER_ENCDEC (LIBGSM_MS, libgsm_ms);
544 REGISTER_ENCDEC (LIBILBC, libilbc);
545 REGISTER_ENCODER(LIBMP3LAME, libmp3lame);
546 REGISTER_ENCDEC (LIBOPENCORE_AMRNB, libopencore_amrnb);
547 REGISTER_DECODER(LIBOPENCORE_AMRWB, libopencore_amrwb);
548 REGISTER_ENCDEC (LIBOPENJPEG, libopenjpeg);
549 REGISTER_ENCDEC (LIBOPUS, libopus);
550 REGISTER_DECODER(LIBRSVG, librsvg);
551 REGISTER_ENCODER(LIBSHINE, libshine);
552 REGISTER_ENCDEC (LIBSPEEX, libspeex);
553 REGISTER_ENCODER(LIBTHEORA, libtheora);
554 REGISTER_ENCODER(LIBTWOLAME, libtwolame);
555 REGISTER_ENCODER(LIBVO_AMRWBENC, libvo_amrwbenc);
556 REGISTER_ENCDEC (LIBVORBIS, libvorbis);
557 REGISTER_ENCDEC (LIBVPX_VP8, libvpx_vp8);
558 REGISTER_ENCDEC (LIBVPX_VP9, libvpx_vp9);
559 REGISTER_ENCODER(LIBWAVPACK, libwavpack);
560 REGISTER_ENCODER(LIBWEBP_ANIM, libwebp_anim); /* preferred over libwebp */
561 REGISTER_ENCODER(LIBWEBP, libwebp);
562 REGISTER_ENCODER(LIBX262, libx262);
563 REGISTER_ENCODER(LIBX264, libx264);
564 REGISTER_ENCODER(LIBX264RGB, libx264rgb);
565 REGISTER_ENCODER(LIBX265, libx265);
566 REGISTER_ENCODER(LIBXAVS, libxavs);
567 REGISTER_ENCODER(LIBXVID, libxvid);
568 REGISTER_DECODER(LIBZVBI_TELETEXT, libzvbi_teletext);
569
570 /* text */
571 REGISTER_DECODER(BINTEXT, bintext);
572 REGISTER_DECODER(XBIN, xbin);
573 REGISTER_DECODER(IDF, idf);
574
575 /* external libraries, that shouldn't be used by default if one of the
576 * above is available */
577 REGISTER_ENCODER(H263_V4L2M2M, h263_v4l2m2m);
578 REGISTER_ENCDEC (LIBOPENH264, libopenh264);
579 REGISTER_ENCODER(H264_AMF, h264_amf);
580 REGISTER_DECODER(H264_CUVID, h264_cuvid);
581 REGISTER_ENCODER(H264_NVENC, h264_nvenc);
582 REGISTER_ENCODER(H264_OMX, h264_omx);
583 REGISTER_ENCODER(H264_QSV, h264_qsv);
584 REGISTER_ENCODER(H264_V4L2M2M, h264_v4l2m2m);
585 REGISTER_ENCODER(H264_VAAPI, h264_vaapi);
586 REGISTER_ENCODER(H264_VIDEOTOOLBOX, h264_videotoolbox);
587#if FF_API_NVENC_OLD_NAME
588 REGISTER_ENCODER(NVENC, nvenc);
589 REGISTER_ENCODER(NVENC_H264, nvenc_h264);
590 REGISTER_ENCODER(NVENC_HEVC, nvenc_hevc);
591#endif
592 REGISTER_ENCODER(HEVC_AMF, hevc_amf);
593 REGISTER_DECODER(HEVC_CUVID, hevc_cuvid);
594 REGISTER_DECODER(HEVC_MEDIACODEC, hevc_mediacodec);
595 REGISTER_ENCODER(HEVC_NVENC, hevc_nvenc);
596 REGISTER_ENCODER(HEVC_QSV, hevc_qsv);
597 REGISTER_ENCODER(HEVC_V4L2M2M, hevc_v4l2m2m);
598 REGISTER_ENCODER(HEVC_VAAPI, hevc_vaapi);
599 REGISTER_ENCODER(HEVC_VIDEOTOOLBOX, hevc_videotoolbox);
600 REGISTER_ENCODER(LIBKVAZAAR, libkvazaar);
601 REGISTER_DECODER(MJPEG_CUVID, mjpeg_cuvid);
602 REGISTER_ENCODER(MJPEG_QSV, mjpeg_qsv);
603 REGISTER_ENCODER(MJPEG_VAAPI, mjpeg_vaapi);
604 REGISTER_DECODER(MPEG1_CUVID, mpeg1_cuvid);
605 REGISTER_DECODER(MPEG2_CUVID, mpeg2_cuvid);
606 REGISTER_ENCODER(MPEG2_QSV, mpeg2_qsv);
607 REGISTER_ENCODER(MPEG2_VAAPI, mpeg2_vaapi);
608 REGISTER_DECODER(MPEG4_CUVID, mpeg4_cuvid);
609 REGISTER_DECODER(MPEG4_MEDIACODEC, mpeg4_mediacodec);
610 REGISTER_ENCODER(MPEG4_V4L2M2M, mpeg4_v4l2m2m);
611 REGISTER_DECODER(VC1_CUVID, vc1_cuvid);
612 REGISTER_DECODER(VP8_CUVID, vp8_cuvid);
613 REGISTER_DECODER(VP8_MEDIACODEC, vp8_mediacodec);
614 REGISTER_DECODER(VP8_QSV, vp8_qsv);
615 REGISTER_ENCODER(VP8_V4L2M2M, vp8_v4l2m2m);
616 REGISTER_ENCODER(VP8_VAAPI, vp8_vaapi);
617 REGISTER_DECODER(VP9_CUVID, vp9_cuvid);
618 REGISTER_DECODER(VP9_MEDIACODEC, vp9_mediacodec);
619 REGISTER_ENCODER(VP9_VAAPI, vp9_vaapi);
620
621 /* parsers */
622 REGISTER_PARSER(AAC, aac);
623 REGISTER_PARSER(AAC_LATM, aac_latm);
624 REGISTER_PARSER(AC3, ac3);
625 REGISTER_PARSER(ADX, adx);
626 REGISTER_PARSER(BMP, bmp);
627 REGISTER_PARSER(CAVSVIDEO, cavsvideo);
628 REGISTER_PARSER(COOK, cook);
629 REGISTER_PARSER(DCA, dca);
630 REGISTER_PARSER(DIRAC, dirac);
631 REGISTER_PARSER(DNXHD, dnxhd);
632 REGISTER_PARSER(DPX, dpx);
633 REGISTER_PARSER(DVAUDIO, dvaudio);
634 REGISTER_PARSER(DVBSUB, dvbsub);
635 REGISTER_PARSER(DVDSUB, dvdsub);
636 REGISTER_PARSER(DVD_NAV, dvd_nav);
637 REGISTER_PARSER(FLAC, flac);
638 REGISTER_PARSER(G729, g729);
639 REGISTER_PARSER(GSM, gsm);
640 REGISTER_PARSER(H261, h261);
641 REGISTER_PARSER(H263, h263);
642 REGISTER_PARSER(H264, h264);
643 REGISTER_PARSER(HEVC, hevc);
644 REGISTER_PARSER(MJPEG, mjpeg);
645 REGISTER_PARSER(MLP, mlp);
646 REGISTER_PARSER(MPEG4VIDEO, mpeg4video);
647 REGISTER_PARSER(MPEGAUDIO, mpegaudio);
648 REGISTER_PARSER(MPEGVIDEO, mpegvideo);
649 REGISTER_PARSER(OPUS, opus);
650 REGISTER_PARSER(PNG, png);
651 REGISTER_PARSER(PNM, pnm);
652 REGISTER_PARSER(RV30, rv30);
653 REGISTER_PARSER(RV40, rv40);
654 REGISTER_PARSER(SIPR, sipr);
655 REGISTER_PARSER(TAK, tak);
656 REGISTER_PARSER(VC1, vc1);
657 REGISTER_PARSER(VORBIS, vorbis);
658 REGISTER_PARSER(VP3, vp3);
659 REGISTER_PARSER(VP8, vp8);
660 REGISTER_PARSER(VP9, vp9);
661 REGISTER_PARSER(XMA, xma);
662}810}
663 811
664void avcodec_register_all(void)812void avcodec_register_all(void)
665{813{
666 static AVOnce control = AV_ONCE_INIT;814 ff_thread_once(&av_codec_next_init, av_codec_init_next);
815}
816FF_ENABLE_DEPRECATION_WARNINGS
817#endif
818
819static enum AVCodecID remap_deprecated_codec_id(enum AVCodecID id)
820{
821 switch(id){
822 //This is for future deprecatec codec ids, its empty since
823 //last major bump but will fill up again over time, please don't remove it
824 default : return id;
825 }
826}
827
828static AVCodec *find_codec(enum AVCodecID id, int (*x)(const AVCodec *))
829{
830 const AVCodec *p, *experimental = NULL;
831 void *i = 0;
832
833 id = remap_deprecated_codec_id(id);
834
835 while ((p = av_codec_iterate(&i))) {
836 if (!x(p))
837 continue;
838 if (p->id == id) {
839 if (p->capabilities & AV_CODEC_CAP_EXPERIMENTAL && !experimental) {
840 experimental = p;
841 } else
842 return (AVCodec*)p;
843 }
844 }
845
846 return (AVCodec*)experimental;
847}
848
849AVCodec *avcodec_find_encoder(enum AVCodecID id)
850{
851 return find_codec(id, av_codec_is_encoder);
852}
853
854AVCodec *avcodec_find_decoder(enum AVCodecID id)
855{
856 return find_codec(id, av_codec_is_decoder);
857}
667 858
668 ff_thread_once(&control, register_all);859static AVCodec *find_codec_by_name(const char *name, int (*x)(const AVCodec *))
860{
861 void *i = 0;
862 const AVCodec *p;
863
864 if (!name)
865 return NULL;
866
867 while ((p = av_codec_iterate(&i))) {
868 if (!x(p))
869 continue;
870 if (strcmp(name, p->name) == 0)
871 return (AVCodec*)p;
872 }
873
874 return NULL;
875}
876
877AVCodec *avcodec_find_encoder_by_name(const char *name)
878{
879 return find_codec_by_name(name, av_codec_is_encoder);
880}
881
882AVCodec *avcodec_find_decoder_by_name(const char *name)
883{
884 return find_codec_by_name(name, av_codec_is_decoder);
669}885}
libavcodec/avcodec.h+31−0
@@ -3978,12 +3978,26 @@ typedef struct AVCodecParameters { · 3977 unmodified lines
3978 int seek_preroll;3978 int seek_preroll;
3979} AVCodecParameters;3979} AVCodecParameters;
3980 3980
3981/**
3982 * Iterate over all registered codecs.
3983 *
3984 * @param opaque a pointer where libavcodec will store the iteration state. Must
3985 * point to NULL to start the iteration.
3986 *
3987 * @return the next registered codec or NULL when the iteration is
3988 * finished
3989 */
3990const AVCodec *av_codec_iterate(void **opaque);
3991
3992#if FF_API_NEXT
3981/**3993/**
3982 * If c is NULL, returns the first registered codec,3994 * If c is NULL, returns the first registered codec,
3983 * if c is non-NULL, returns the next registered codec after c,3995 * if c is non-NULL, returns the next registered codec after c,
3984 * or NULL if c is the last one.3996 * or NULL if c is the last one.
3985 */3997 */
3998attribute_deprecated
3986AVCodec *av_codec_next(const AVCodec *c);3999AVCodec *av_codec_next(const AVCodec *c);
4000#endif
3987 4001
3988/**4002/**
3989 * Return the LIBAVCODEC_VERSION_INT constant.4003 * Return the LIBAVCODEC_VERSION_INT constant.
@@ -4000,6 +4014,7 @@ const char *avcodec_configuration(void); · 10 unmodified lines
4000 */4014 */
4001const char *avcodec_license(void);4015const char *avcodec_license(void);
4002 4016
4017#if FF_API_NEXT
4003/**4018/**
4004 * Register the codec codec and initialize libavcodec.4019 * Register the codec codec and initialize libavcodec.
4005 *4020 *
@@ -4008,6 +4023,7 @@ const char *avcodec_license(void); · 2 unmodified lines
4008 *4023 *
4009 * @see avcodec_register_all()4024 * @see avcodec_register_all()
4010 */4025 */
4026attribute_deprecated
4011void avcodec_register(AVCodec *codec);4027void avcodec_register(AVCodec *codec);
4012 4028
4013/**4029/**
@@ -4020,7 +4036,9 @@ void avcodec_register(AVCodec *codec); · 6 unmodified lines
4020 * @see av_register_codec_parser4036 * @see av_register_codec_parser
4021 * @see av_register_bitstream_filter4037 * @see av_register_bitstream_filter
4022 */4038 */
4039attribute_deprecated
4023void avcodec_register_all(void);4040void avcodec_register_all(void);
4041#endif
4024 4042
4025/**4043/**
4026 * Allocate an AVCodecContext and set its fields to default values. The4044 * Allocate an AVCodecContext and set its fields to default values. The
@@ -5120,8 +5138,21 @@ typedef struct AVCodecParser { · 1093 unmodified lines
5120 struct AVCodecParser *next;5138 struct AVCodecParser *next;
5121} AVCodecParser;5139} AVCodecParser;
5122 5140
5141/**
5142 * Iterate over all registered codec parsers.
5143 *
5144 * @param opaque a pointer where libavcodec will store the iteration state. Must
5145 * point to NULL to start the iteration.
5146 *
5147 * @return the next registered codec parser or NULL when the iteration is
5148 * finished
5149 */
5150const AVCodecParser *av_parser_iterate(void **opaque);
5151
5152attribute_deprecated
5123AVCodecParser *av_parser_next(const AVCodecParser *c);5153AVCodecParser *av_parser_next(const AVCodecParser *c);
5124 5154
5155attribute_deprecated
5125void av_register_codec_parser(AVCodecParser *parser);5156void av_register_codec_parser(AVCodecParser *parser);
5126AVCodecParserContext *av_parser_init(int codec_id);5157AVCodecParserContext *av_parser_init(int codec_id);
5127 5158
libavcodec/parser.c+74−10
@@ -32,36 +32,100 @@ · 31 unmodified lines
32#include "internal.h"32#include "internal.h"
33#include "parser.h"33#include "parser.h"
34 34
35static AVCodecParser *av_first_parser = NULL;35/* Parsers */
36extern AVCodecParser ff_aac_parser;
37extern AVCodecParser ff_aac_latm_parser;
38extern AVCodecParser ff_ac3_parser;
39extern AVCodecParser ff_adx_parser;
40extern AVCodecParser ff_bmp_parser;
41extern AVCodecParser ff_cavsvideo_parser;
42extern AVCodecParser ff_cook_parser;
43extern AVCodecParser ff_dca_parser;
44extern AVCodecParser ff_dirac_parser;
45extern AVCodecParser ff_dnxhd_parser;
46extern AVCodecParser ff_dpx_parser;
47extern AVCodecParser ff_dvaudio_parser;
48extern AVCodecParser ff_dvbsub_parser;
49extern AVCodecParser ff_dvdsub_parser;
50extern AVCodecParser ff_dvd_nav_parser;
51extern AVCodecParser ff_flac_parser;
52extern AVCodecParser ff_g729_parser;
53extern AVCodecParser ff_gsm_parser;
54extern AVCodecParser ff_h261_parser;
55extern AVCodecParser ff_h263_parser;
56extern AVCodecParser ff_h264_parser;
57extern AVCodecParser ff_hevc_parser;
58extern AVCodecParser ff_mjpeg_parser;
59extern AVCodecParser ff_mlp_parser;
60extern AVCodecParser ff_mpeg4video_parser;
61extern AVCodecParser ff_mpegaudio_parser;
62extern AVCodecParser ff_mpegvideo_parser;
63extern AVCodecParser ff_opus_parser;
64extern AVCodecParser ff_png_parser;
65extern AVCodecParser ff_pnm_parser;
66extern AVCodecParser ff_rv30_parser;
67extern AVCodecParser ff_rv40_parser;
68extern AVCodecParser ff_sipr_parser;
69extern AVCodecParser ff_tak_parser;
70extern AVCodecParser ff_vc1_parser;
71extern AVCodecParser ff_vorbis_parser;
72extern AVCodecParser ff_vp3_parser;
73extern AVCodecParser ff_vp8_parser;
74extern AVCodecParser ff_vp9_parser;
75extern AVCodecParser ff_xma_parser;
76
77#include "libavcodec/parser_list.c"
78
79static AVOnce av_parser_next_init = AV_ONCE_INIT;
80
81static void av_parser_init_next(void)
82{
83 AVCodecParser *prev = NULL, *p;
84 int i = 0;
85 while ((p = (AVCodecParser*)parser_list[i++])) {
86 if (prev)
87 prev->next = p;
88 prev = p;
89 }
90}
36 91
37AVCodecParser *av_parser_next(const AVCodecParser *p)92AVCodecParser *av_parser_next(const AVCodecParser *p)
38{93{
94 ff_thread_once(&av_parser_next_init, av_parser_init_next);
95
39 if (p)96 if (p)
40 return p->next;97 return p->next;
41 else98 else
42 return av_first_parser;99 return (AVCodecParser*)parser_list[0];
43}100}
44 101
45static AVMutex parser_register_mutex = AV_MUTEX_INITIALIZER;102const AVCodecParser *av_parser_iterate(void **opaque)
103{
104 uintptr_t i = (uintptr_t)*opaque;
105 const AVCodecParser *p = parser_list[i];
106
107 if (p)
108 *opaque = (void*)(i + 1);
109
110 return p;
111}
46 112
47void av_register_codec_parser(AVCodecParser *parser)113void av_register_codec_parser(AVCodecParser *parser)
48{114{
49 ff_mutex_lock(&parser_register_mutex);115 ff_thread_once(&av_parser_next_init, av_parser_init_next);
50 parser->next = av_first_parser;
51 av_first_parser = parser;
52 ff_mutex_unlock(&parser_register_mutex);
53}116}
54 117
55AVCodecParserContext *av_parser_init(int codec_id)118AVCodecParserContext *av_parser_init(int codec_id)
56{119{
57 AVCodecParserContext *s = NULL;120 AVCodecParserContext *s = NULL;
58 AVCodecParser *parser;121 const AVCodecParser *parser;
122 void *i = 0;
59 int ret;123 int ret;
60 124
61 if (codec_id == AV_CODEC_ID_NONE)125 if (codec_id == AV_CODEC_ID_NONE)
62 return NULL;126 return NULL;
63 127
64 for (parser = av_first_parser; parser; parser = parser->next) {128 while ((parser = av_parser_iterate(&i))) {
65 if (parser->codec_ids[0] == codec_id ||129 if (parser->codec_ids[0] == codec_id ||
66 parser->codec_ids[1] == codec_id ||130 parser->codec_ids[1] == codec_id ||
67 parser->codec_ids[2] == codec_id ||131 parser->codec_ids[2] == codec_id ||
@@ -75,7 +139,7 @@ found: · 7 unmodified lines
75 s = av_mallocz(sizeof(AVCodecParserContext));139 s = av_mallocz(sizeof(AVCodecParserContext));
76 if (!s)140 if (!s)
77 goto err_out;141 goto err_out;
78 s->parser = parser;142 s->parser = (AVCodecParser*)parser;
79 s->priv_data = av_mallocz(parser->priv_data_size);143 s->priv_data = av_mallocz(parser->priv_data_size);
80 if (!s->priv_data)144 if (!s->priv_data)
81 goto err_out;145 goto err_out;
libavcodec/utils.c+0−99
@@ -46,7 +46,6 @@ · 45 unmodified lines
46#include "decode.h"46#include "decode.h"
47#include "hwaccel.h"47#include "hwaccel.h"
48#include "libavutil/opt.h"48#include "libavutil/opt.h"
49#include "me_cmp.h"
50#include "mpegvideo.h"49#include "mpegvideo.h"
51#include "thread.h"50#include "thread.h"
52#include "frame_thread_encoder.h"51#include "frame_thread_encoder.h"
@@ -92,18 +91,6 @@ void av_fast_padded_mallocz(void *ptr, unsigned int *size, size_t min_size) · 39 unmodified lines
92 memset(*p, 0, min_size + AV_INPUT_BUFFER_PADDING_SIZE);91 memset(*p, 0, min_size + AV_INPUT_BUFFER_PADDING_SIZE);
93}92}
94 93
95/* encoder management */
96static AVCodec *first_avcodec = NULL;
97static AVCodec **last_avcodec = &first_avcodec;
98
99AVCodec *av_codec_next(const AVCodec *c)
100{
101 if (c)
102 return c->next;
103 else
104 return first_avcodec;
105}
106
107int av_codec_is_encoder(const AVCodec *codec)94int av_codec_is_encoder(const AVCodec *codec)
108{95{
109 return codec && (codec->encode_sub || codec->encode2 ||codec->send_frame);96 return codec && (codec->encode_sub || codec->encode2 ||codec->send_frame);
@@ -114,27 +101,6 @@ int av_codec_is_decoder(const AVCodec *codec) · 4 unmodified lines
114 return codec && (codec->decode || codec->receive_frame);101 return codec && (codec->decode || codec->receive_frame);
115}102}
116 103
117static AVMutex codec_register_mutex = AV_MUTEX_INITIALIZER;
118
119av_cold void avcodec_register(AVCodec *codec)
120{
121 AVCodec **p;
122
123 ff_mutex_lock(&codec_register_mutex);
124 p = last_avcodec;
125
126 while (*p)
127 p = &(*p)->next;
128 *p = codec;
129 codec->next = NULL;
130 last_avcodec = &codec->next;
131
132 ff_mutex_unlock(&codec_register_mutex);
133
134 if (codec->init_static_data)
135 codec->init_static_data(codec);
136}
137
138int ff_set_dimensions(AVCodecContext *s, int width, int height)104int ff_set_dimensions(AVCodecContext *s, int width, int height)
139{105{
140 int ret = av_image_check_size2(width, height, s->max_pixels, AV_PIX_FMT_NONE, 0, s);106 int ret = av_image_check_size2(width, height, s->max_pixels, AV_PIX_FMT_NONE, 0, s);
@@ -1155,71 +1121,6 @@ FF_ENABLE_DEPRECATION_WARNINGS · 1014 unmodified lines
1155 return 0;1121 return 0;
1156}1122}
1157 1123
1158static enum AVCodecID remap_deprecated_codec_id(enum AVCodecID id)
1159{
1160 switch(id){
1161 //This is for future deprecatec codec ids, its empty since
1162 //last major bump but will fill up again over time, please don't remove it
1163 default : return id;
1164 }
1165}
1166
1167static AVCodec *find_encdec(enum AVCodecID id, int encoder)
1168{
1169 AVCodec *p, *experimental = NULL;
1170 p = first_avcodec;
1171 id= remap_deprecated_codec_id(id);
1172 while (p) {
1173 if ((encoder ? av_codec_is_encoder(p) : av_codec_is_decoder(p)) &&
1174 p->id == id) {
1175 if (p->capabilities & AV_CODEC_CAP_EXPERIMENTAL && !experimental) {
1176 experimental = p;
1177 } else
1178 return p;
1179 }
1180 p = p->next;
1181 }
1182 return experimental;
1183}
1184
1185AVCodec *avcodec_find_encoder(enum AVCodecID id)
1186{
1187 return find_encdec(id, 1);
1188}
1189
1190AVCodec *avcodec_find_encoder_by_name(const char *name)
1191{
1192 AVCodec *p;
1193 if (!name)
1194 return NULL;
1195 p = first_avcodec;
1196 while (p) {
1197 if (av_codec_is_encoder(p) && strcmp(name, p->name) == 0)
1198 return p;
1199 p = p->next;
1200 }
1201 return NULL;
1202}
1203
1204AVCodec *avcodec_find_decoder(enum AVCodecID id)
1205{
1206 return find_encdec(id, 0);
1207}
1208
1209AVCodec *avcodec_find_decoder_by_name(const char *name)
1210{
1211 AVCodec *p;
1212 if (!name)
1213 return NULL;
1214 p = first_avcodec;
1215 while (p) {
1216 if (av_codec_is_decoder(p) && strcmp(name, p->name) == 0)
1217 return p;
1218 p = p->next;
1219 }
1220 return NULL;
1221}
1222
1223const char *avcodec_get_name(enum AVCodecID id)1124const char *avcodec_get_name(enum AVCodecID id)
1224{1125{
1225 const AVCodecDescriptor *cd;1126 const AVCodecDescriptor *cd;
libavcodec/version.h+3−0
@@ -129,6 +129,9 @@ · 128 unmodified lines
129#ifndef FF_API_LOCKMGR129#ifndef FF_API_LOCKMGR
130#define FF_API_LOCKMGR (LIBAVCODEC_VERSION_MAJOR < 59)130#define FF_API_LOCKMGR (LIBAVCODEC_VERSION_MAJOR < 59)
131#endif131#endif
132#ifndef FF_API_NEXT
133#define FF_API_NEXT (LIBAVCODEC_VERSION_MAJOR < 59)
134#endif
132 135
133 136
134#endif /* AVCODEC_VERSION_H */137#endif /* AVCODEC_VERSION_H */

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t