avdevice_register_all
代码:
void avdevice_register_all(void)
{
avpriv_register_devices(outdev_list, indev_list);
}
其中outdev_list, indev_list分别定义在#include "libavdevice/outdev_list.c" #include "libavdevice/indev_list.c"这两个文件中 表示ffmpeg所支持的muxer和demuxer
static const AVOutputFormat * const outdev_list[] = {
&ff_alsa_muxer,
&ff_fbdev_muxer,
&ff_oss_muxer,
&ff_sdl2_muxer,
&ff_sndio_muxer,
&ff_v4l2_muxer,
&ff_xv_muxer,
NULL };
static const AVInputFormat * const indev_list[] = {
&ff_alsa_demuxer,
&ff_fbdev_demuxer,
&ff_lavfi_demuxer,
&ff_oss_demuxer,
&ff_sndio_demuxer,
&ff_v4l2_demuxer,
&ff_xcbgrab_demuxer,
NULL };
avdevice_register_all调用avpriv_register_devices给两个全局变量赋值
void avpriv_register_devices(const AVOutputFormat * const o[], const AVInputFormat * const i[])
{
ff_mutex_lock(&avpriv_register_devices_mutex);
outdev_list = o;
indev_list = i;
ff_mutex_unlock(&avpriv_register_devices_mutex);
}