+#if FF_API_NEXT
+#include "libavformat/internal.h"
+#endif
+
+/* devices */
+extern AVInputFormat ff_alsa_demuxer;
+extern AVOutputFormat ff_alsa_muxer;
+extern AVInputFormat ff_android_camera_demuxer;
+extern AVInputFormat ff_avfoundation_demuxer;
+extern AVInputFormat ff_bktr_demuxer;
+extern AVOutputFormat ff_caca_muxer;
+extern AVInputFormat ff_decklink_demuxer;
+extern AVOutputFormat ff_decklink_muxer;
+extern AVInputFormat ff_libndi_newtek_demuxer;
+extern AVOutputFormat ff_libndi_newtek_muxer;
+extern AVInputFormat ff_dshow_demuxer;
+extern AVInputFormat ff_fbdev_demuxer;
+extern AVOutputFormat ff_fbdev_muxer;
+extern AVInputFormat ff_gdigrab_demuxer;
+extern AVInputFormat ff_iec61883_demuxer;
+extern AVInputFormat ff_jack_demuxer;
+extern AVInputFormat ff_kmsgrab_demuxer;
+extern AVInputFormat ff_lavfi_demuxer;
+extern AVInputFormat ff_openal_demuxer;
+extern AVOutputFormat ff_opengl_muxer;
+extern AVInputFormat ff_oss_demuxer;
+extern AVOutputFormat ff_oss_muxer;
+extern AVInputFormat ff_pulse_demuxer;
+extern AVOutputFormat ff_pulse_muxer;
+extern AVOutputFormat ff_sdl2_muxer;
+extern AVInputFormat ff_sndio_demuxer;
+extern AVOutputFormat ff_sndio_muxer;
+extern AVInputFormat ff_v4l2_demuxer;
+extern AVOutputFormat ff_v4l2_muxer;
+extern AVInputFormat ff_vfwcap_demuxer;
+extern AVInputFormat ff_xcbgrab_demuxer;
+extern AVOutputFormat ff_xv_muxer;
+
+/* external libraries */
+extern AVInputFormat ff_libcdio_demuxer;
+extern AVInputFormat ff_libdc1394_demuxer;
+
+#include "libavdevice/outdev_list.c"
+#include "libavdevice/indev_list.c"
+
+const AVOutputFormat *av_outdev_iterate(void **opaque)
+{
+ uintptr_t i = (uintptr_t)*opaque;
+ const AVOutputFormat *f = outdev_list[i];
+
+ if (f)
+ *opaque = (void*)(i + 1);
+ return f;
+}
+
+const AVInputFormat *av_indev_iterate(void **opaque)
+{
+ uintptr_t i = (uintptr_t)*opaque;
+ const AVInputFormat *f = indev_list[i];
+
+ if (f)
+ *opaque = (void*)(i + 1);
+ return f;
+}
+
+#if FF_API_NEXT
+FF_DISABLE_DEPRECATION_WARNINGS
+static AVOnce av_device_next_init = AV_ONCE_INIT;
+
+static void av_device_init_next(void)
+{
+ AVOutputFormat *prevout = NULL, *out;
+ AVInputFormat *previn = NULL, *in;
+ void *i = 0;
+
+ while ((out = (AVOutputFormat*)av_outdev_iterate(&i))) {
+ if (prevout)
+ prevout->next = out;
+ prevout = out;