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
142142 $(RM) .version avversion.h config.asm config.h mapfile \
143143 ffbuild/.config ffbuild/config.* libavutil/avconfig.h \
144144 version.h libavutil/ffversion.h libavcodec/codec_names.h \
145− libavcodec/bsf_list.c libavformat/protocol_list.c
145+ libavcodec/bsf_list.c libavformat/protocol_list.c \
146+ libavcodec/codec_list.c libavcodec/parser_list.c
146147 ifeq ($(SRC_LINK),src)
147148 $(RM) src
148149 endif
configure+9−3
@@ -3525,9 +3525,6 @@ find_things(){ · 3524 unmodified lines
35253525 sed -n "s/^[^#]*$pattern.*([^,]*, *\([^,]*\)\(,.*\)*).*/\1_$thing/p" "$file"
35263526 }
35273527
3528−ENCODER_LIST=$(find_things encoder ENC libavcodec/allcodecs.c)
3529−DECODER_LIST=$(find_things decoder DEC libavcodec/allcodecs.c)
3530−PARSER_LIST=$(find_things parser PARSER libavcodec/allcodecs.c)
35313528 MUXER_LIST=$(find_things muxer _MUX libavformat/allformats.c)
35323529 DEMUXER_LIST=$(find_things demuxer DEMUX libavformat/allformats.c)
35333530 OUTDEV_LIST=$(find_things outdev OUTDEV libavdevice/alldevices.c)
@@ -3541,6 +3538,13 @@ find_things_extern(){ · 7 unmodified lines
35413538 sed -n "s/^[^#]*extern.*$pattern *ff_\([^ ]*\)_$thing;/\1_$thing/p" "$file"
35423539 }
35433540
3541+ENCODER_LIST=$(find_things_extern encoder AVCodec libavcodec/allcodecs.c)
3542+DECODER_LIST=$(find_things_extern decoder AVCodec libavcodec/allcodecs.c)
3543+CODEC_LIST="
3544+ $ENCODER_LIST
3545+ $DECODER_LIST
3546+"
3547+PARSER_LIST=$(find_things_extern parser AVCodecParser libavcodec/parser.c)
35443548 BSF_LIST=$(find_things_extern bsf AVBitStreamFilter libavcodec/bitstream_filters.c)
35453549 HWACCEL_LIST=$(find_things_extern hwaccel AVHWAccel libavcodec/hwaccels.h)
35463550 PROTOCOL_LIST=$(find_things_extern protocol URLProtocol libavformat/protocols.c)
@@ -7029,6 +7033,8 @@ print_enabled_components(){ · 3482 unmodified lines
70297033 cp_if_changed $TMPH $file
70307034 }
70317035
7036+print_enabled_components libavcodec/codec_list.c AVCodec codec_list $CODEC_LIST
7037+print_enabled_components libavcodec/parser_list.c AVCodecParser parser_list $PARSER_LIST
70327038 print_enabled_components libavcodec/bsf_list.c AVBitStreamFilter bitstream_filters $BSF_LIST
70337039 print_enabled_components libavformat/protocol_list.c URLProtocol url_protocols $PROTOCOL_LIST
70347040
doc/APIchanges+4−0
@@ -15,6 +15,10 @@ libavutil: 2017-10-21 · 14 unmodified lines
1515
1616 API changes, most recent first:
1717
18+2018-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+
1822 2018-02-xx - xxxxxxx - lavf 58.8.100 - avformat.h
1923 Deprecate the current names of the RTSP "timeout", "stimeout", "user-agent"
2024 options. Introduce "listen_timeout" as replacement for the current "timeout"
libavcodec/.gitignore+2−0
@@ -2,3 +2,5 @@ · 1 unmodified line
22 /*_tables.c
33 /*_tables.h
44 /bsf_list.c
5+/codec_list.c
6+/parser_list.c
libavcodec/allcodecs.c+841−625
@@ -29,641 +29,857 @@ · 28 unmodified lines
2929 #include "avcodec.h"
3030 #include "version.h"
3131
32−#define REGISTER_ENCODER(X, x) \
33− { \
34− extern AVCodec ff_##x##_encoder; \
35− if (CONFIG_##X##_ENCODER) \
36− avcodec_register(&ff_##x##_encoder); \
37− }
32+extern AVCodec ff_a64multi_encoder;
33+extern AVCodec ff_a64multi5_encoder;
34+extern AVCodec ff_aasc_decoder;
35+extern AVCodec ff_aic_decoder;
36+extern AVCodec ff_alias_pix_encoder;
37+extern AVCodec ff_alias_pix_decoder;
38+extern AVCodec ff_amv_encoder;
39+extern AVCodec ff_amv_decoder;
40+extern AVCodec ff_anm_decoder;
41+extern AVCodec ff_ansi_decoder;
42+extern AVCodec ff_apng_encoder;
43+extern AVCodec ff_apng_decoder;
44+extern AVCodec ff_asv1_encoder;
45+extern AVCodec ff_asv1_decoder;
46+extern AVCodec ff_asv2_encoder;
47+extern AVCodec ff_asv2_decoder;
48+extern AVCodec ff_aura_decoder;
49+extern AVCodec ff_aura2_decoder;
50+extern AVCodec ff_avrp_encoder;
51+extern AVCodec ff_avrp_decoder;
52+extern AVCodec ff_avrn_decoder;
53+extern AVCodec ff_avs_decoder;
54+extern AVCodec ff_avui_encoder;
55+extern AVCodec ff_avui_decoder;
56+extern AVCodec ff_ayuv_encoder;
57+extern AVCodec ff_ayuv_decoder;
58+extern AVCodec ff_bethsoftvid_decoder;
59+extern AVCodec ff_bfi_decoder;
60+extern AVCodec ff_bink_decoder;
61+extern AVCodec ff_bmp_encoder;
62+extern AVCodec ff_bmp_decoder;
63+extern AVCodec ff_bmv_video_decoder;
64+extern AVCodec ff_brender_pix_decoder;
65+extern AVCodec ff_c93_decoder;
66+extern AVCodec ff_cavs_decoder;
67+extern AVCodec ff_cdgraphics_decoder;
68+extern AVCodec ff_cdxl_decoder;
69+extern AVCodec ff_cfhd_decoder;
70+extern AVCodec ff_cinepak_encoder;
71+extern AVCodec ff_cinepak_decoder;
72+extern AVCodec ff_clearvideo_decoder;
73+extern AVCodec ff_cljr_encoder;
74+extern AVCodec ff_cljr_decoder;
75+extern AVCodec ff_cllc_decoder;
76+extern AVCodec ff_comfortnoise_encoder;
77+extern AVCodec ff_comfortnoise_decoder;
78+extern AVCodec ff_cpia_decoder;
79+extern AVCodec ff_cscd_decoder;
80+extern AVCodec ff_cyuv_decoder;
81+extern AVCodec ff_dds_decoder;
82+extern AVCodec ff_dfa_decoder;
83+extern AVCodec ff_dirac_decoder;
84+extern AVCodec ff_dnxhd_encoder;
85+extern AVCodec ff_dnxhd_decoder;
86+extern AVCodec ff_dpx_encoder;
87+extern AVCodec ff_dpx_decoder;
88+extern AVCodec ff_dsicinvideo_decoder;
89+extern AVCodec ff_dvaudio_decoder;
90+extern AVCodec ff_dvvideo_encoder;
91+extern AVCodec ff_dvvideo_decoder;
92+extern AVCodec ff_dxa_decoder;
93+extern AVCodec ff_dxtory_decoder;
94+extern AVCodec ff_dxv_decoder;
95+extern AVCodec ff_eacmv_decoder;
96+extern AVCodec ff_eamad_decoder;
97+extern AVCodec ff_eatgq_decoder;
98+extern AVCodec ff_eatgv_decoder;
99+extern AVCodec ff_eatqi_decoder;
100+extern AVCodec ff_eightbps_decoder;
101+extern AVCodec ff_eightsvx_exp_decoder;
102+extern AVCodec ff_eightsvx_fib_decoder;
103+extern AVCodec ff_escape124_decoder;
104+extern AVCodec ff_escape130_decoder;
105+extern AVCodec ff_exr_decoder;
106+extern AVCodec ff_ffv1_encoder;
107+extern AVCodec ff_ffv1_decoder;
108+extern AVCodec ff_ffvhuff_encoder;
109+extern AVCodec ff_ffvhuff_decoder;
110+extern AVCodec ff_fic_decoder;
111+extern AVCodec ff_fits_encoder;
112+extern AVCodec ff_fits_decoder;
113+extern AVCodec ff_flashsv_encoder;
114+extern AVCodec ff_flashsv_decoder;
115+extern AVCodec ff_flashsv2_encoder;
116+extern AVCodec ff_flashsv2_decoder;
117+extern AVCodec ff_flic_decoder;
118+extern AVCodec ff_flv_encoder;
119+extern AVCodec ff_flv_decoder;
120+extern AVCodec ff_fmvc_decoder;
121+extern AVCodec ff_fourxm_decoder;
122+extern AVCodec ff_fraps_decoder;
123+extern AVCodec ff_frwu_decoder;
124+extern AVCodec ff_g2m_decoder;
125+extern AVCodec ff_gdv_decoder;
126+extern AVCodec ff_gif_encoder;
127+extern AVCodec ff_gif_decoder;
128+extern AVCodec ff_h261_encoder;
129+extern AVCodec ff_h261_decoder;
130+extern AVCodec ff_h263_encoder;
131+extern AVCodec ff_h263_decoder;
132+extern AVCodec ff_h263i_decoder;
133+extern AVCodec ff_h263p_encoder;
134+extern AVCodec ff_h263p_decoder;
135+extern AVCodec ff_h263_v4l2m2m_decoder;
136+extern AVCodec ff_h264_decoder;
137+extern AVCodec ff_h264_crystalhd_decoder;
138+extern AVCodec ff_h264_v4l2m2m_decoder;
139+extern AVCodec ff_h264_mediacodec_decoder;
140+extern AVCodec ff_h264_mmal_decoder;
141+extern AVCodec ff_h264_qsv_decoder;
142+extern AVCodec ff_h264_rkmpp_decoder;
143+extern AVCodec ff_hap_encoder;
144+extern AVCodec ff_hap_decoder;
145+extern AVCodec ff_hevc_decoder;
146+extern AVCodec ff_hevc_qsv_decoder;
147+extern AVCodec ff_hevc_rkmpp_decoder;
148+extern AVCodec ff_hevc_v4l2m2m_decoder;
149+extern AVCodec ff_hnm4_video_decoder;
150+extern AVCodec ff_hq_hqa_decoder;
151+extern AVCodec ff_hqx_decoder;
152+extern AVCodec ff_huffyuv_encoder;
153+extern AVCodec ff_huffyuv_decoder;
154+extern AVCodec ff_idcin_decoder;
155+extern AVCodec ff_iff_ilbm_decoder;
156+extern AVCodec ff_indeo2_decoder;
157+extern AVCodec ff_indeo3_decoder;
158+extern AVCodec ff_indeo4_decoder;
159+extern AVCodec ff_indeo5_decoder;
160+extern AVCodec ff_interplay_video_decoder;
161+extern AVCodec ff_jpeg2000_encoder;
162+extern AVCodec ff_jpeg2000_decoder;
163+extern AVCodec ff_jpegls_encoder;
164+extern AVCodec ff_jpegls_decoder;
165+extern AVCodec ff_jv_decoder;
166+extern AVCodec ff_kgv1_decoder;
167+extern AVCodec ff_kmvc_decoder;
168+extern AVCodec ff_lagarith_decoder;
169+extern AVCodec ff_ljpeg_encoder;
170+extern AVCodec ff_loco_decoder;
171+extern AVCodec ff_m101_decoder;
172+extern AVCodec ff_magicyuv_encoder;
173+extern AVCodec ff_magicyuv_decoder;
174+extern AVCodec ff_mdec_decoder;
175+extern AVCodec ff_mimic_decoder;
176+extern AVCodec ff_mjpeg_encoder;
177+extern AVCodec ff_mjpeg_decoder;
178+extern AVCodec ff_mjpegb_decoder;
179+extern AVCodec ff_mmvideo_decoder;
180+extern AVCodec ff_motionpixels_decoder;
181+extern AVCodec ff_mpeg1video_encoder;
182+extern AVCodec ff_mpeg1video_decoder;
183+extern AVCodec ff_mpeg2video_encoder;
184+extern AVCodec ff_mpeg2video_decoder;
185+extern AVCodec ff_mpeg4_encoder;
186+extern AVCodec ff_mpeg4_decoder;
187+extern AVCodec ff_mpeg4_crystalhd_decoder;
188+extern AVCodec ff_mpeg4_v4l2m2m_decoder;
189+extern AVCodec ff_mpeg4_mmal_decoder;
190+extern AVCodec ff_mpegvideo_decoder;
191+extern AVCodec ff_mpeg1_v4l2m2m_decoder;
192+extern AVCodec ff_mpeg2_mmal_decoder;
193+extern AVCodec ff_mpeg2_crystalhd_decoder;
194+extern AVCodec ff_mpeg2_v4l2m2m_decoder;
195+extern AVCodec ff_mpeg2_qsv_decoder;
196+extern AVCodec ff_mpeg2_mediacodec_decoder;
197+extern AVCodec ff_msa1_decoder;
198+extern AVCodec ff_mscc_decoder;
199+extern AVCodec ff_msmpeg4v1_decoder;
200+extern AVCodec ff_msmpeg4v2_encoder;
201+extern AVCodec ff_msmpeg4v2_decoder;
202+extern AVCodec ff_msmpeg4v3_encoder;
203+extern AVCodec ff_msmpeg4v3_decoder;
204+extern AVCodec ff_msmpeg4_crystalhd_decoder;
205+extern AVCodec ff_msrle_decoder;
206+extern AVCodec ff_mss1_decoder;
207+extern AVCodec ff_mss2_decoder;
208+extern AVCodec ff_msvideo1_encoder;
209+extern AVCodec ff_msvideo1_decoder;
210+extern AVCodec ff_mszh_decoder;
211+extern AVCodec ff_mts2_decoder;
212+extern AVCodec ff_mvc1_decoder;
213+extern AVCodec ff_mvc2_decoder;
214+extern AVCodec ff_mxpeg_decoder;
215+extern AVCodec ff_nuv_decoder;
216+extern AVCodec ff_paf_video_decoder;
217+extern AVCodec ff_pam_encoder;
218+extern AVCodec ff_pam_decoder;
219+extern AVCodec ff_pbm_encoder;
220+extern AVCodec ff_pbm_decoder;
221+extern AVCodec ff_pcx_encoder;
222+extern AVCodec ff_pcx_decoder;
223+extern AVCodec ff_pgm_encoder;
224+extern AVCodec ff_pgm_decoder;
225+extern AVCodec ff_pgmyuv_encoder;
226+extern AVCodec ff_pgmyuv_decoder;
227+extern AVCodec ff_pictor_decoder;
228+extern AVCodec ff_pixlet_decoder;
229+extern AVCodec ff_png_encoder;
230+extern AVCodec ff_png_decoder;
231+extern AVCodec ff_ppm_encoder;
232+extern AVCodec ff_ppm_decoder;
233+extern AVCodec ff_prores_encoder;
234+extern AVCodec ff_prores_decoder;
235+extern AVCodec ff_prores_aw_encoder;
236+extern AVCodec ff_prores_ks_encoder;
237+extern AVCodec ff_prores_lgpl_decoder;
238+extern AVCodec ff_psd_decoder;
239+extern AVCodec ff_ptx_decoder;
240+extern AVCodec ff_qdraw_decoder;
241+extern AVCodec ff_qpeg_decoder;
242+extern AVCodec ff_qtrle_encoder;
243+extern AVCodec ff_qtrle_decoder;
244+extern AVCodec ff_r10k_encoder;
245+extern AVCodec ff_r10k_decoder;
246+extern AVCodec ff_r210_encoder;
247+extern AVCodec ff_r210_decoder;
248+extern AVCodec ff_rawvideo_encoder;
249+extern AVCodec ff_rawvideo_decoder;
250+extern AVCodec ff_rl2_decoder;
251+extern AVCodec ff_roq_encoder;
252+extern AVCodec ff_roq_decoder;
253+extern AVCodec ff_rpza_decoder;
254+extern AVCodec ff_rscc_decoder;
255+extern AVCodec ff_rv10_encoder;
256+extern AVCodec ff_rv10_decoder;
257+extern AVCodec ff_rv20_encoder;
258+extern AVCodec ff_rv20_decoder;
259+extern AVCodec ff_rv30_decoder;
260+extern AVCodec ff_rv40_decoder;
261+extern AVCodec ff_s302m_encoder;
262+extern AVCodec ff_s302m_decoder;
263+extern AVCodec ff_sanm_decoder;
264+extern AVCodec ff_scpr_decoder;
265+extern AVCodec ff_screenpresso_decoder;
266+extern AVCodec ff_sdx2_dpcm_decoder;
267+extern AVCodec ff_sgi_encoder;
268+extern AVCodec ff_sgi_decoder;
269+extern AVCodec ff_sgirle_decoder;
270+extern AVCodec ff_sheervideo_decoder;
271+extern AVCodec ff_smacker_decoder;
272+extern AVCodec ff_smc_decoder;
273+extern AVCodec ff_smvjpeg_decoder;
274+extern AVCodec ff_snow_encoder;
275+extern AVCodec ff_snow_decoder;
276+extern AVCodec ff_sp5x_decoder;
277+extern AVCodec ff_speedhq_decoder;
278+extern AVCodec ff_srgc_decoder;
279+extern AVCodec ff_sunrast_encoder;
280+extern AVCodec ff_sunrast_decoder;
281+extern AVCodec ff_svq1_encoder;
282+extern AVCodec ff_svq1_decoder;
283+extern AVCodec ff_svq3_decoder;
284+extern AVCodec ff_targa_encoder;
285+extern AVCodec ff_targa_decoder;
286+extern AVCodec ff_targa_y216_decoder;
287+extern AVCodec ff_tdsc_decoder;
288+extern AVCodec ff_theora_decoder;
289+extern AVCodec ff_thp_decoder;
290+extern AVCodec ff_tiertexseqvideo_decoder;
291+extern AVCodec ff_tiff_encoder;
292+extern AVCodec ff_tiff_decoder;
293+extern AVCodec ff_tmv_decoder;
294+extern AVCodec ff_truemotion1_decoder;
295+extern AVCodec ff_truemotion2_decoder;
296+extern AVCodec ff_truemotion2rt_decoder;
297+extern AVCodec ff_tscc_decoder;
298+extern AVCodec ff_tscc2_decoder;
299+extern AVCodec ff_txd_decoder;
300+extern AVCodec ff_ulti_decoder;
301+extern AVCodec ff_utvideo_encoder;
302+extern AVCodec ff_utvideo_decoder;
303+extern AVCodec ff_v210_encoder;
304+extern AVCodec ff_v210_decoder;
305+extern AVCodec ff_v210x_decoder;
306+extern AVCodec ff_v308_encoder;
307+extern AVCodec ff_v308_decoder;
308+extern AVCodec ff_v408_encoder;
309+extern AVCodec ff_v408_decoder;
310+extern AVCodec ff_v410_encoder;
311+extern AVCodec ff_v410_decoder;
312+extern AVCodec ff_vb_decoder;
313+extern AVCodec ff_vble_decoder;
314+extern AVCodec ff_vc1_decoder;
315+extern AVCodec ff_vc1_crystalhd_decoder;
316+extern AVCodec ff_vc1image_decoder;
317+extern AVCodec ff_vc1_mmal_decoder;
318+extern AVCodec ff_vc1_qsv_decoder;
319+extern AVCodec ff_vc1_v4l2m2m_decoder;
320+extern AVCodec ff_vc2_encoder;
321+extern AVCodec ff_vcr1_decoder;
322+extern AVCodec ff_vmdvideo_decoder;
323+extern AVCodec ff_vmnc_decoder;
324+extern AVCodec ff_vp3_decoder;
325+extern AVCodec ff_vp5_decoder;
326+extern AVCodec ff_vp6_decoder;
327+extern AVCodec ff_vp6a_decoder;
328+extern AVCodec ff_vp6f_decoder;
329+extern AVCodec ff_vp7_decoder;
330+extern AVCodec ff_vp8_decoder;
331+extern AVCodec ff_vp8_rkmpp_decoder;
332+extern AVCodec ff_vp8_v4l2m2m_decoder;
333+extern AVCodec ff_vp9_decoder;
334+extern AVCodec ff_vp9_rkmpp_decoder;
335+extern AVCodec ff_vp9_v4l2m2m_decoder;
336+extern AVCodec ff_vqa_decoder;
337+extern AVCodec ff_bitpacked_decoder;
338+extern AVCodec ff_webp_decoder;
339+extern AVCodec ff_wrapped_avframe_encoder;
340+extern AVCodec ff_wrapped_avframe_decoder;
341+extern AVCodec ff_wmv1_encoder;
342+extern AVCodec ff_wmv1_decoder;
343+extern AVCodec ff_wmv2_encoder;
344+extern AVCodec ff_wmv2_decoder;
345+extern AVCodec ff_wmv3_decoder;
346+extern AVCodec ff_wmv3_crystalhd_decoder;
347+extern AVCodec ff_wmv3image_decoder;
348+extern AVCodec ff_wnv1_decoder;
349+extern AVCodec ff_xan_wc3_decoder;
350+extern AVCodec ff_xan_wc4_decoder;
351+extern AVCodec ff_xbm_encoder;
352+extern AVCodec ff_xbm_decoder;
353+extern AVCodec ff_xface_encoder;
354+extern AVCodec ff_xface_decoder;
355+extern AVCodec ff_xl_decoder;
356+extern AVCodec ff_xpm_decoder;
357+extern AVCodec ff_xwd_encoder;
358+extern AVCodec ff_xwd_decoder;
359+extern AVCodec ff_y41p_encoder;
360+extern AVCodec ff_y41p_decoder;
361+extern AVCodec ff_ylc_decoder;
362+extern AVCodec ff_yop_decoder;
363+extern AVCodec ff_yuv4_encoder;
364+extern AVCodec ff_yuv4_decoder;
365+extern AVCodec ff_zero12v_decoder;
366+extern AVCodec ff_zerocodec_decoder;
367+extern AVCodec ff_zlib_encoder;
368+extern AVCodec ff_zlib_decoder;
369+extern AVCodec ff_zmbv_encoder;
370+extern AVCodec ff_zmbv_decoder;
371+
372+/* audio codecs */
373+extern AVCodec ff_aac_encoder;
374+extern AVCodec ff_aac_decoder;
375+extern AVCodec ff_aac_fixed_decoder;
376+extern AVCodec ff_aac_latm_decoder;
377+extern AVCodec ff_ac3_encoder;
378+extern AVCodec ff_ac3_decoder;
379+extern AVCodec ff_ac3_fixed_encoder;
380+extern AVCodec ff_ac3_fixed_decoder;
381+extern AVCodec ff_alac_encoder;
382+extern AVCodec ff_alac_decoder;
383+extern AVCodec ff_als_decoder;
384+extern AVCodec ff_amrnb_decoder;
385+extern AVCodec ff_amrwb_decoder;
386+extern AVCodec ff_ape_decoder;
387+extern AVCodec ff_aptx_encoder;
388+extern AVCodec ff_aptx_decoder;
389+extern AVCodec ff_atrac1_decoder;
390+extern AVCodec ff_atrac3_decoder;
391+extern AVCodec ff_atrac3al_decoder;
392+extern AVCodec ff_atrac3p_decoder;
393+extern AVCodec ff_atrac3pal_decoder;
394+extern AVCodec ff_binkaudio_dct_decoder;
395+extern AVCodec ff_binkaudio_rdft_decoder;
396+extern AVCodec ff_bmv_audio_decoder;
397+extern AVCodec ff_cook_decoder;
398+extern AVCodec ff_dca_encoder;
399+extern AVCodec ff_dca_decoder;
400+extern AVCodec ff_dolby_e_decoder;
401+extern AVCodec ff_dsd_lsbf_decoder;
402+extern AVCodec ff_dsd_msbf_decoder;
403+extern AVCodec ff_dsd_lsbf_planar_decoder;
404+extern AVCodec ff_dsd_msbf_planar_decoder;
405+extern AVCodec ff_dsicinaudio_decoder;
406+extern AVCodec ff_dss_sp_decoder;
407+extern AVCodec ff_dst_decoder;
408+extern AVCodec ff_eac3_encoder;
409+extern AVCodec ff_eac3_decoder;
410+extern AVCodec ff_evrc_decoder;
411+extern AVCodec ff_ffwavesynth_decoder;
412+extern AVCodec ff_flac_encoder;
413+extern AVCodec ff_flac_decoder;
414+extern AVCodec ff_g723_1_encoder;
415+extern AVCodec ff_g723_1_decoder;
416+extern AVCodec ff_g729_decoder;
417+extern AVCodec ff_gsm_decoder;
418+extern AVCodec ff_gsm_ms_decoder;
419+extern AVCodec ff_iac_decoder;
420+extern AVCodec ff_imc_decoder;
421+extern AVCodec ff_interplay_acm_decoder;
422+extern AVCodec ff_mace3_decoder;
423+extern AVCodec ff_mace6_decoder;
424+extern AVCodec ff_metasound_decoder;
425+extern AVCodec ff_mlp_encoder;
426+extern AVCodec ff_mlp_decoder;
427+extern AVCodec ff_mp1_decoder;
428+extern AVCodec ff_mp1float_decoder;
429+extern AVCodec ff_mp2_encoder;
430+extern AVCodec ff_mp2_decoder;
431+extern AVCodec ff_mp2float_decoder;
432+extern AVCodec ff_mp2fixed_encoder;
433+extern AVCodec ff_mp3_decoder;
434+extern AVCodec ff_mp3float_decoder;
435+extern AVCodec ff_mp3adu_decoder;
436+extern AVCodec ff_mp3adufloat_decoder;
437+extern AVCodec ff_mp3on4_decoder;
438+extern AVCodec ff_mp3on4float_decoder;
439+extern AVCodec ff_mpc7_decoder;
440+extern AVCodec ff_mpc8_decoder;
441+extern AVCodec ff_nellymoser_encoder;
442+extern AVCodec ff_nellymoser_decoder;
443+extern AVCodec ff_on2avc_decoder;
444+extern AVCodec ff_opus_encoder;
445+extern AVCodec ff_opus_decoder;
446+extern AVCodec ff_paf_audio_decoder;
447+extern AVCodec ff_qcelp_decoder;
448+extern AVCodec ff_qdm2_decoder;
449+extern AVCodec ff_qdmc_decoder;
450+extern AVCodec ff_ra_144_encoder;
451+extern AVCodec ff_ra_144_decoder;
452+extern AVCodec ff_ra_288_decoder;
453+extern AVCodec ff_ralf_decoder;
454+extern AVCodec ff_shorten_decoder;
455+extern AVCodec ff_sipr_decoder;
456+extern AVCodec ff_smackaud_decoder;
457+extern AVCodec ff_sonic_encoder;
458+extern AVCodec ff_sonic_decoder;
459+extern AVCodec ff_sonic_ls_encoder;
460+extern AVCodec ff_tak_decoder;
461+extern AVCodec ff_truehd_encoder;
462+extern AVCodec ff_truehd_decoder;
463+extern AVCodec ff_truespeech_decoder;
464+extern AVCodec ff_tta_encoder;
465+extern AVCodec ff_tta_decoder;
466+extern AVCodec ff_twinvq_decoder;
467+extern AVCodec ff_vmdaudio_decoder;
468+extern AVCodec ff_vorbis_encoder;
469+extern AVCodec ff_vorbis_decoder;
470+extern AVCodec ff_wavpack_encoder;
471+extern AVCodec ff_wavpack_decoder;
472+extern AVCodec ff_wmalossless_decoder;
473+extern AVCodec ff_wmapro_decoder;
474+extern AVCodec ff_wmav1_encoder;
475+extern AVCodec ff_wmav1_decoder;
476+extern AVCodec ff_wmav2_encoder;
477+extern AVCodec ff_wmav2_decoder;
478+extern AVCodec ff_wmavoice_decoder;
479+extern AVCodec ff_ws_snd1_decoder;
480+extern AVCodec ff_xma1_decoder;
481+extern AVCodec ff_xma2_decoder;
482+
483+/* PCM codecs */
484+extern AVCodec ff_pcm_alaw_encoder;
485+extern AVCodec ff_pcm_alaw_decoder;
486+extern AVCodec ff_pcm_bluray_decoder;
487+extern AVCodec ff_pcm_dvd_decoder;
488+extern AVCodec ff_pcm_f16le_decoder;
489+extern AVCodec ff_pcm_f24le_decoder;
490+extern AVCodec ff_pcm_f32be_encoder;
491+extern AVCodec ff_pcm_f32be_decoder;
492+extern AVCodec ff_pcm_f32le_encoder;
493+extern AVCodec ff_pcm_f32le_decoder;
494+extern AVCodec ff_pcm_f64be_encoder;
495+extern AVCodec ff_pcm_f64be_decoder;
496+extern AVCodec ff_pcm_f64le_encoder;
497+extern AVCodec ff_pcm_f64le_decoder;
498+extern AVCodec ff_pcm_lxf_decoder;
499+extern AVCodec ff_pcm_mulaw_encoder;
500+extern AVCodec ff_pcm_mulaw_decoder;
501+extern AVCodec ff_pcm_s8_encoder;
502+extern AVCodec ff_pcm_s8_decoder;
503+extern AVCodec ff_pcm_s8_planar_encoder;
504+extern AVCodec ff_pcm_s8_planar_decoder;
505+extern AVCodec ff_pcm_s16be_encoder;
506+extern AVCodec ff_pcm_s16be_decoder;
507+extern AVCodec ff_pcm_s16be_planar_encoder;
508+extern AVCodec ff_pcm_s16be_planar_decoder;
509+extern AVCodec ff_pcm_s16le_encoder;
510+extern AVCodec ff_pcm_s16le_decoder;
511+extern AVCodec ff_pcm_s16le_planar_encoder;
512+extern AVCodec ff_pcm_s16le_planar_decoder;
513+extern AVCodec ff_pcm_s24be_encoder;
514+extern AVCodec ff_pcm_s24be_decoder;
515+extern AVCodec ff_pcm_s24daud_encoder;
516+extern AVCodec ff_pcm_s24daud_decoder;
517+extern AVCodec ff_pcm_s24le_encoder;
518+extern AVCodec ff_pcm_s24le_decoder;
519+extern AVCodec ff_pcm_s24le_planar_encoder;
520+extern AVCodec ff_pcm_s24le_planar_decoder;
521+extern AVCodec ff_pcm_s32be_encoder;
522+extern AVCodec ff_pcm_s32be_decoder;
523+extern AVCodec ff_pcm_s32le_encoder;
524+extern AVCodec ff_pcm_s32le_decoder;
525+extern AVCodec ff_pcm_s32le_planar_encoder;
526+extern AVCodec ff_pcm_s32le_planar_decoder;
527+extern AVCodec ff_pcm_s64be_encoder;
528+extern AVCodec ff_pcm_s64be_decoder;
529+extern AVCodec ff_pcm_s64le_encoder;
530+extern AVCodec ff_pcm_s64le_decoder;
531+extern AVCodec ff_pcm_u8_encoder;
532+extern AVCodec ff_pcm_u8_decoder;
533+extern AVCodec ff_pcm_u16be_encoder;
534+extern AVCodec ff_pcm_u16be_decoder;
535+extern AVCodec ff_pcm_u16le_encoder;
536+extern AVCodec ff_pcm_u16le_decoder;
537+extern AVCodec ff_pcm_u24be_encoder;
538+extern AVCodec ff_pcm_u24be_decoder;
539+extern AVCodec ff_pcm_u24le_encoder;
540+extern AVCodec ff_pcm_u24le_decoder;
541+extern AVCodec ff_pcm_u32be_encoder;
542+extern AVCodec ff_pcm_u32be_decoder;
543+extern AVCodec ff_pcm_u32le_encoder;
544+extern AVCodec ff_pcm_u32le_decoder;
545+extern AVCodec ff_pcm_zork_decoder;
546+
547+/* DPCM codecs */
548+extern AVCodec ff_gremlin_dpcm_decoder;
549+extern AVCodec ff_interplay_dpcm_decoder;
550+extern AVCodec ff_roq_dpcm_encoder;
551+extern AVCodec ff_roq_dpcm_decoder;
552+extern AVCodec ff_sol_dpcm_decoder;
553+extern AVCodec ff_xan_dpcm_decoder;
554+
555+/* ADPCM codecs */
556+extern AVCodec ff_adpcm_4xm_decoder;
557+extern AVCodec ff_adpcm_adx_encoder;
558+extern AVCodec ff_adpcm_adx_decoder;
559+extern AVCodec ff_adpcm_afc_decoder;
560+extern AVCodec ff_adpcm_aica_decoder;
561+extern AVCodec ff_adpcm_ct_decoder;
562+extern AVCodec ff_adpcm_dtk_decoder;
563+extern AVCodec ff_adpcm_ea_decoder;
564+extern AVCodec ff_adpcm_ea_maxis_xa_decoder;
565+extern AVCodec ff_adpcm_ea_r1_decoder;
566+extern AVCodec ff_adpcm_ea_r2_decoder;
567+extern AVCodec ff_adpcm_ea_r3_decoder;
568+extern AVCodec ff_adpcm_ea_xas_decoder;
569+extern AVCodec ff_adpcm_g722_encoder;
570+extern AVCodec ff_adpcm_g722_decoder;
571+extern AVCodec ff_adpcm_g726_encoder;
572+extern AVCodec ff_adpcm_g726_decoder;
573+extern AVCodec ff_adpcm_g726le_encoder;
574+extern AVCodec ff_adpcm_g726le_decoder;
575+extern AVCodec ff_adpcm_ima_amv_decoder;
576+extern AVCodec ff_adpcm_ima_apc_decoder;
577+extern AVCodec ff_adpcm_ima_dat4_decoder;
578+extern AVCodec ff_adpcm_ima_dk3_decoder;
579+extern AVCodec ff_adpcm_ima_dk4_decoder;
580+extern AVCodec ff_adpcm_ima_ea_eacs_decoder;
581+extern AVCodec ff_adpcm_ima_ea_sead_decoder;
582+extern AVCodec ff_adpcm_ima_iss_decoder;
583+extern AVCodec ff_adpcm_ima_oki_decoder;
584+extern AVCodec ff_adpcm_ima_qt_encoder;
585+extern AVCodec ff_adpcm_ima_qt_decoder;
586+extern AVCodec ff_adpcm_ima_rad_decoder;
587+extern AVCodec ff_adpcm_ima_smjpeg_decoder;
588+extern AVCodec ff_adpcm_ima_wav_encoder;
589+extern AVCodec ff_adpcm_ima_wav_decoder;
590+extern AVCodec ff_adpcm_ima_ws_decoder;
591+extern AVCodec ff_adpcm_ms_encoder;
592+extern AVCodec ff_adpcm_ms_decoder;
593+extern AVCodec ff_adpcm_mtaf_decoder;
594+extern AVCodec ff_adpcm_psx_decoder;
595+extern AVCodec ff_adpcm_sbpro_2_decoder;
596+extern AVCodec ff_adpcm_sbpro_3_decoder;
597+extern AVCodec ff_adpcm_sbpro_4_decoder;
598+extern AVCodec ff_adpcm_swf_encoder;
599+extern AVCodec ff_adpcm_swf_decoder;
600+extern AVCodec ff_adpcm_thp_decoder;
601+extern AVCodec ff_adpcm_thp_le_decoder;
602+extern AVCodec ff_adpcm_vima_decoder;
603+extern AVCodec ff_adpcm_xa_decoder;
604+extern AVCodec ff_adpcm_yamaha_encoder;
605+extern AVCodec ff_adpcm_yamaha_decoder;
606+
607+/* subtitles */
608+extern AVCodec ff_ssa_encoder;
609+extern AVCodec ff_ssa_decoder;
610+extern AVCodec ff_ass_encoder;
611+extern AVCodec ff_ass_decoder;
612+extern AVCodec ff_ccaption_decoder;
613+extern AVCodec ff_dvbsub_encoder;
614+extern AVCodec ff_dvbsub_decoder;
615+extern AVCodec ff_dvdsub_encoder;
616+extern AVCodec ff_dvdsub_decoder;
617+extern AVCodec ff_jacosub_decoder;
618+extern AVCodec ff_microdvd_decoder;
619+extern AVCodec ff_movtext_encoder;
620+extern AVCodec ff_movtext_decoder;
621+extern AVCodec ff_mpl2_decoder;
622+extern AVCodec ff_pgssub_decoder;
623+extern AVCodec ff_pjs_decoder;
624+extern AVCodec ff_realtext_decoder;
625+extern AVCodec ff_sami_decoder;
626+extern AVCodec ff_srt_encoder;
627+extern AVCodec ff_srt_decoder;
628+extern AVCodec ff_stl_decoder;
629+extern AVCodec ff_subrip_encoder;
630+extern AVCodec ff_subrip_decoder;
631+extern AVCodec ff_subviewer_decoder;
632+extern AVCodec ff_subviewer1_decoder;
633+extern AVCodec ff_text_encoder;
634+extern AVCodec ff_text_decoder;
635+extern AVCodec ff_vplayer_decoder;
636+extern AVCodec ff_webvtt_encoder;
637+extern AVCodec ff_webvtt_decoder;
638+extern AVCodec ff_xsub_encoder;
639+extern AVCodec ff_xsub_decoder;
640+
641+/* external libraries */
642+extern AVCodec ff_aac_at_encoder;
643+extern AVCodec ff_aac_at_decoder;
644+extern AVCodec ff_ac3_at_decoder;
645+extern AVCodec ff_adpcm_ima_qt_at_decoder;
646+extern AVCodec ff_alac_at_encoder;
647+extern AVCodec ff_alac_at_decoder;
648+extern AVCodec ff_amr_nb_at_decoder;
649+extern AVCodec ff_eac3_at_decoder;
650+extern AVCodec ff_gsm_ms_at_decoder;
651+extern AVCodec ff_ilbc_at_encoder;
652+extern AVCodec ff_ilbc_at_decoder;
653+extern AVCodec ff_mp1_at_decoder;
654+extern AVCodec ff_mp2_at_decoder;
655+extern AVCodec ff_mp3_at_decoder;
656+extern AVCodec ff_pcm_alaw_at_encoder;
657+extern AVCodec ff_pcm_alaw_at_decoder;
658+extern AVCodec ff_pcm_mulaw_at_encoder;
659+extern AVCodec ff_pcm_mulaw_at_decoder;
660+extern AVCodec ff_qdmc_at_decoder;
661+extern AVCodec ff_qdm2_at_decoder;
662+extern AVCodec ff_libcelt_decoder;
663+extern AVCodec ff_libfdk_aac_encoder;
664+extern AVCodec ff_libfdk_aac_decoder;
665+extern AVCodec ff_libgsm_encoder;
666+extern AVCodec ff_libgsm_decoder;
667+extern AVCodec ff_libgsm_ms_encoder;
668+extern AVCodec ff_libgsm_ms_decoder;
669+extern AVCodec ff_libilbc_encoder;
670+extern AVCodec ff_libilbc_decoder;
671+extern AVCodec ff_libmp3lame_encoder;
672+extern AVCodec ff_libopencore_amrnb_encoder;
673+extern AVCodec ff_libopencore_amrnb_decoder;
674+extern AVCodec ff_libopencore_amrwb_decoder;
675+extern AVCodec ff_libopenjpeg_encoder;
676+extern AVCodec ff_libopenjpeg_decoder;
677+extern AVCodec ff_libopus_encoder;
678+extern AVCodec ff_libopus_decoder;
679+extern AVCodec ff_librsvg_decoder;
680+extern AVCodec ff_libshine_encoder;
681+extern AVCodec ff_libspeex_encoder;
682+extern AVCodec ff_libspeex_decoder;
683+extern AVCodec ff_libtheora_encoder;
684+extern AVCodec ff_libtwolame_encoder;
685+extern AVCodec ff_libvo_amrwbenc_encoder;
686+extern AVCodec ff_libvorbis_encoder;
687+extern AVCodec ff_libvorbis_decoder;
688+extern AVCodec ff_libvpx_vp8_encoder;
689+extern AVCodec ff_libvpx_vp8_decoder;
690+extern AVCodec ff_libvpx_vp9_encoder;
691+extern AVCodec ff_libvpx_vp9_decoder;
692+extern AVCodec ff_libwavpack_encoder;
693+/* preferred over libwebp */
694+extern AVCodec ff_libwebp_anim_encoder;
695+extern AVCodec ff_libwebp_encoder;
696+extern AVCodec ff_libx262_encoder;
697+extern AVCodec ff_libx264_encoder;
698+extern AVCodec ff_libx264rgb_encoder;
699+extern AVCodec ff_libx265_encoder;
700+extern AVCodec ff_libxavs_encoder;
701+extern AVCodec ff_libxvid_encoder;
702+extern AVCodec ff_libzvbi_teletext_decoder;
703+
704+/* text */
705+extern AVCodec ff_bintext_decoder;
706+extern AVCodec ff_xbin_decoder;
707+extern AVCodec ff_idf_decoder;
38708
39−#define REGISTER_DECODER(X, x) \
40− { \
41− extern AVCodec ff_##x##_decoder; \
42− if (CONFIG_##X##_DECODER) \
43− avcodec_register(&ff_##x##_decoder); \
709+/* external libraries, that shouldn't be used by default if one of the
710+ * above is available */
711+extern AVCodec ff_h263_v4l2m2m_encoder;
712+extern AVCodec ff_libopenh264_encoder;
713+extern AVCodec ff_libopenh264_decoder;
714+extern AVCodec ff_h264_amf_encoder;
715+extern AVCodec ff_h264_cuvid_decoder;
716+extern AVCodec ff_h264_nvenc_encoder;
717+extern AVCodec ff_h264_omx_encoder;
718+extern AVCodec ff_h264_qsv_encoder;
719+extern AVCodec ff_h264_v4l2m2m_encoder;
720+extern AVCodec ff_h264_vaapi_encoder;
721+extern AVCodec ff_h264_videotoolbox_encoder;
722+#if FF_API_NVENC_OLD_NAME
723+extern AVCodec ff_nvenc_encoder;
724+extern AVCodec ff_nvenc_h264_encoder;
725+extern AVCodec ff_nvenc_hevc_encoder;
726+#endif
727+extern AVCodec ff_hevc_amf_encoder;
728+extern AVCodec ff_hevc_cuvid_decoder;
729+extern AVCodec ff_hevc_mediacodec_decoder;
730+extern AVCodec ff_hevc_nvenc_encoder;
731+extern AVCodec ff_hevc_qsv_encoder;
732+extern AVCodec ff_hevc_v4l2m2m_encoder;
733+extern AVCodec ff_hevc_vaapi_encoder;
734+extern AVCodec ff_hevc_videotoolbox_encoder;
735+extern AVCodec ff_libkvazaar_encoder;
736+extern AVCodec ff_mjpeg_cuvid_decoder;
737+extern AVCodec ff_mjpeg_qsv_encoder;
738+extern AVCodec ff_mjpeg_vaapi_encoder;
739+extern AVCodec ff_mpeg1_cuvid_decoder;
740+extern AVCodec ff_mpeg2_cuvid_decoder;
741+extern AVCodec ff_mpeg2_qsv_encoder;
742+extern AVCodec ff_mpeg2_vaapi_encoder;
743+extern AVCodec ff_mpeg4_cuvid_decoder;
744+extern AVCodec ff_mpeg4_mediacodec_decoder;
745+extern AVCodec ff_mpeg4_v4l2m2m_encoder;
746+extern AVCodec ff_vc1_cuvid_decoder;
747+extern AVCodec ff_vp8_cuvid_decoder;
748+extern AVCodec ff_vp8_mediacodec_decoder;
749+extern AVCodec ff_vp8_qsv_decoder;
750+extern AVCodec ff_vp8_v4l2m2m_encoder;
751+extern AVCodec ff_vp8_vaapi_encoder;
752+extern AVCodec ff_vp9_cuvid_decoder;
753+extern AVCodec ff_vp9_mediacodec_decoder;
754+extern AVCodec ff_vp9_vaapi_encoder;
755+
756+#include "libavcodec/codec_list.c"
757+
758+static AVOnce av_codec_static_init = AV_ONCE_INIT;
759+static 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]);
44764 }
765+}
766+
767+const 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+}
45779
46−#define REGISTER_ENCDEC(X, x) REGISTER_ENCODER(X, x); REGISTER_DECODER(X, x)
780+#if FF_API_NEXT
781+FF_DISABLE_DEPRECATION_WARNINGS
782+static AVOnce av_codec_next_init = AV_ONCE_INIT;
47783
48−#define REGISTER_PARSER(X, x) \
49− { \
50− extern AVCodecParser ff_##x##_parser; \
51− if (CONFIG_##X##_PARSER) \
52− av_register_codec_parser(&ff_##x##_parser); \
784+static void av_codec_init_next(void)
785+{
786+ AVCodec *prev = NULL, *p;
787+ void *i = 0;
788+ while ((p = (AVCodec*)av_codec_iterate(&i))) {
789+ if (prev)
790+ prev->next = p;
791+ prev = p;
53792 }
793+}
794+
54795
55−static void register_all(void)
796+
797+av_cold void avcodec_register(AVCodec *codec)
56798 {
57− /* video codecs */
58− REGISTER_ENCODER(A64MULTI, a64multi);
59− REGISTER_ENCODER(A64MULTI5, a64multi5);
60− REGISTER_DECODER(AASC, aasc);
61− REGISTER_DECODER(AIC, aic);
62− REGISTER_ENCDEC (ALIAS_PIX, alias_pix);
63− REGISTER_ENCDEC (AMV, amv);
64− REGISTER_DECODER(ANM, anm);
65− REGISTER_DECODER(ANSI, ansi);
66− REGISTER_ENCDEC (APNG, apng);
67− REGISTER_ENCDEC (ASV1, asv1);
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);
799+ ff_thread_once(&av_codec_next_init, av_codec_init_next);
800+}
801+
802+AVCodec *av_codec_next(const AVCodec *c)
803+{
804+ ff_thread_once(&av_codec_next_init, av_codec_init_next);
805+
806+ if (c)
807+ return c->next;
808+ else
809+ return (AVCodec*)codec_list[0];
662810 }
663811
664812 void avcodec_register_all(void)
665813 {
666− static AVOnce control = AV_ONCE_INIT;
814+ ff_thread_once(&av_codec_next_init, av_codec_init_next);
815+}
816+FF_ENABLE_DEPRECATION_WARNINGS
817+#endif
818+
819+static 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+
828+static 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+
849+AVCodec *avcodec_find_encoder(enum AVCodecID id)
850+{
851+ return find_codec(id, av_codec_is_encoder);
852+}
853+
854+AVCodec *avcodec_find_decoder(enum AVCodecID id)
855+{
856+ return find_codec(id, av_codec_is_decoder);
857+}
667858
668− ff_thread_once(&control, register_all);
859+static 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+
877+AVCodec *avcodec_find_encoder_by_name(const char *name)
878+{
879+ return find_codec_by_name(name, av_codec_is_encoder);
880+}
881+
882+AVCodec *avcodec_find_decoder_by_name(const char *name)
883+{
884+ return find_codec_by_name(name, av_codec_is_decoder);
669885 }
libavcodec/avcodec.h+31−0
@@ -3978,12 +3978,26 @@ typedef struct AVCodecParameters { · 3977 unmodified lines
39783978 int seek_preroll;
39793979 } AVCodecParameters;
39803980
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+ */
3990+const AVCodec *av_codec_iterate(void **opaque);
3991+
3992+#if FF_API_NEXT
39813993 /**
39823994 * If c is NULL, returns the first registered codec,
39833995 * if c is non-NULL, returns the next registered codec after c,
39843996 * or NULL if c is the last one.
39853997 */
3998+attribute_deprecated
39863999 AVCodec *av_codec_next(const AVCodec *c);
4000+#endif
39874001
39884002 /**
39894003 * Return the LIBAVCODEC_VERSION_INT constant.
@@ -4000,6 +4014,7 @@ const char *avcodec_configuration(void); · 10 unmodified lines
40004014 */
40014015 const char *avcodec_license(void);
40024016
4017+#if FF_API_NEXT
40034018 /**
40044019 * Register the codec codec and initialize libavcodec.
40054020 *
@@ -4008,6 +4023,7 @@ const char *avcodec_license(void); · 2 unmodified lines
40084023 *
40094024 * @see avcodec_register_all()
40104025 */
4026+attribute_deprecated
40114027 void avcodec_register(AVCodec *codec);
40124028
40134029 /**
@@ -4020,7 +4036,9 @@ void avcodec_register(AVCodec *codec); · 6 unmodified lines
40204036 * @see av_register_codec_parser
40214037 * @see av_register_bitstream_filter
40224038 */
4039+attribute_deprecated
40234040 void avcodec_register_all(void);
4041+#endif
40244042
40254043 /**
40264044 * Allocate an AVCodecContext and set its fields to default values. The
@@ -5120,8 +5138,21 @@ typedef struct AVCodecParser { · 1093 unmodified lines
51205138 struct AVCodecParser *next;
51215139 } AVCodecParser;
51225140
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+ */
5150+const AVCodecParser *av_parser_iterate(void **opaque);
5151+
5152+attribute_deprecated
51235153 AVCodecParser *av_parser_next(const AVCodecParser *c);
51245154
5155+attribute_deprecated
51255156 void av_register_codec_parser(AVCodecParser *parser);
51265157 AVCodecParserContext *av_parser_init(int codec_id);
51275158
libavcodec/parser.c+74−10
@@ -32,36 +32,100 @@ · 31 unmodified lines
3232 #include "internal.h"
3333 #include "parser.h"
3434
35−static AVCodecParser *av_first_parser = NULL;
35+/* Parsers */
36+extern AVCodecParser ff_aac_parser;
37+extern AVCodecParser ff_aac_latm_parser;
38+extern AVCodecParser ff_ac3_parser;
39+extern AVCodecParser ff_adx_parser;
40+extern AVCodecParser ff_bmp_parser;
41+extern AVCodecParser ff_cavsvideo_parser;
42+extern AVCodecParser ff_cook_parser;
43+extern AVCodecParser ff_dca_parser;
44+extern AVCodecParser ff_dirac_parser;
45+extern AVCodecParser ff_dnxhd_parser;
46+extern AVCodecParser ff_dpx_parser;
47+extern AVCodecParser ff_dvaudio_parser;
48+extern AVCodecParser ff_dvbsub_parser;
49+extern AVCodecParser ff_dvdsub_parser;
50+extern AVCodecParser ff_dvd_nav_parser;
51+extern AVCodecParser ff_flac_parser;
52+extern AVCodecParser ff_g729_parser;
53+extern AVCodecParser ff_gsm_parser;
54+extern AVCodecParser ff_h261_parser;
55+extern AVCodecParser ff_h263_parser;
56+extern AVCodecParser ff_h264_parser;
57+extern AVCodecParser ff_hevc_parser;
58+extern AVCodecParser ff_mjpeg_parser;
59+extern AVCodecParser ff_mlp_parser;
60+extern AVCodecParser ff_mpeg4video_parser;
61+extern AVCodecParser ff_mpegaudio_parser;
62+extern AVCodecParser ff_mpegvideo_parser;
63+extern AVCodecParser ff_opus_parser;
64+extern AVCodecParser ff_png_parser;
65+extern AVCodecParser ff_pnm_parser;
66+extern AVCodecParser ff_rv30_parser;
67+extern AVCodecParser ff_rv40_parser;
68+extern AVCodecParser ff_sipr_parser;
69+extern AVCodecParser ff_tak_parser;
70+extern AVCodecParser ff_vc1_parser;
71+extern AVCodecParser ff_vorbis_parser;
72+extern AVCodecParser ff_vp3_parser;
73+extern AVCodecParser ff_vp8_parser;
74+extern AVCodecParser ff_vp9_parser;
75+extern AVCodecParser ff_xma_parser;
76+
77+#include "libavcodec/parser_list.c"
78+
79+static AVOnce av_parser_next_init = AV_ONCE_INIT;
80+
81+static 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+}
3691
3792 AVCodecParser *av_parser_next(const AVCodecParser *p)
3893 {
94+ ff_thread_once(&av_parser_next_init, av_parser_init_next);
95+
3996 if (p)
4097 return p->next;
4198 else
42− return av_first_parser;
99+ return (AVCodecParser*)parser_list[0];
43100 }
44101
45−static AVMutex parser_register_mutex = AV_MUTEX_INITIALIZER;
102+const 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+}
46112
47113 void av_register_codec_parser(AVCodecParser *parser)
48114 {
49− ff_mutex_lock(&parser_register_mutex);
50− parser->next = av_first_parser;
51− av_first_parser = parser;
52− ff_mutex_unlock(&parser_register_mutex);
115+ ff_thread_once(&av_parser_next_init, av_parser_init_next);
53116 }
54117
55118 AVCodecParserContext *av_parser_init(int codec_id)
56119 {
57120 AVCodecParserContext *s = NULL;
58− AVCodecParser *parser;
121+ const AVCodecParser *parser;
122+ void *i = 0;
59123 int ret;
60124
61125 if (codec_id == AV_CODEC_ID_NONE)
62126 return NULL;
63127
64− for (parser = av_first_parser; parser; parser = parser->next) {
128+ while ((parser = av_parser_iterate(&i))) {
65129 if (parser->codec_ids[0] == codec_id ||
66130 parser->codec_ids[1] == codec_id ||
67131 parser->codec_ids[2] == codec_id ||
@@ -75,7 +139,7 @@ found: · 7 unmodified lines
75139 s = av_mallocz(sizeof(AVCodecParserContext));
76140 if (!s)
77141 goto err_out;
78− s->parser = parser;
142+ s->parser = (AVCodecParser*)parser;
79143 s->priv_data = av_mallocz(parser->priv_data_size);
80144 if (!s->priv_data)
81145 goto err_out;
libavcodec/utils.c+0−99
@@ -46,7 +46,6 @@ · 45 unmodified lines
4646 #include "decode.h"
4747 #include "hwaccel.h"
4848 #include "libavutil/opt.h"
49−#include "me_cmp.h"
5049 #include "mpegvideo.h"
5150 #include "thread.h"
5251 #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
9291 memset(*p, 0, min_size + AV_INPUT_BUFFER_PADDING_SIZE);
9392 }
9493
95−/* encoder management */
96−static AVCodec *first_avcodec = NULL;
97−static AVCodec **last_avcodec = &first_avcodec;
98−
99−AVCodec *av_codec_next(const AVCodec *c)
100−{
101− if (c)
102− return c->next;
103− else
104− return first_avcodec;
105−}
106−
10794 int av_codec_is_encoder(const AVCodec *codec)
10895 {
10996 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
114101 return codec && (codec->decode || codec->receive_frame);
115102 }
116103
117−static AVMutex codec_register_mutex = AV_MUTEX_INITIALIZER;
118−
119−av_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−
138104 int ff_set_dimensions(AVCodecContext *s, int width, int height)
139105 {
140106 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
11551121 return 0;
11561122 }
11571123
1158−static 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−
1167−static 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−
1185−AVCodec *avcodec_find_encoder(enum AVCodecID id)
1186−{
1187− return find_encdec(id, 1);
1188−}
1189−
1190−AVCodec *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−
1204−AVCodec *avcodec_find_decoder(enum AVCodecID id)
1205−{
1206− return find_encdec(id, 0);
1207−}
1208−
1209−AVCodec *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−
12231124 const char *avcodec_get_name(enum AVCodecID id)
12241125 {
12251126 const AVCodecDescriptor *cd;
libavcodec/version.h+3−0
@@ -129,6 +129,9 @@ · 128 unmodified lines
129129 #ifndef FF_API_LOCKMGR
130130 #define FF_API_LOCKMGR (LIBAVCODEC_VERSION_MAJOR < 59)
131131 #endif
132+#ifndef FF_API_NEXT
133+#define FF_API_NEXT (LIBAVCODEC_VERSION_MAJOR < 59)
134+#endif
132135
133136
134137 #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