- void avdevice_register_all(void)
- {
- avpriv_register_devices(outdev_list, indev_list);
- }
- void avpriv_register_devices(const AVOutputFormat * const o[], const AVInputFormat * const i[])
- {
- atomic_store_explicit(&outdev_list_intptr, (uintptr_t)o, memory_order_relaxed);
- atomic_store_explicit(&indev_list_intptr, (uintptr_t)i, memory_order_relaxed);
- }
- #define atomic_store_explicit(object, desired, order) \
- atomic_store(object, desired)
- 从代码中可以看出,avdevice_register_all()调用3个函数进行设备组建的注册:REGISTER_INDEV(),REGISTER_OUTDEV(),REGISTER_INOUTDEV()。上述3个函数实际上是预定义的3个宏:
- REGISTER_INDEV():注册输入设备。实际上调用了av_register_input_format()将输入设备注册成一个AVInputFormat。
- REGISTER_OUTDEV():注册输出设备。实际上调用了av_register_output_format()将输出设备注册成一个AVOutputFormat。
- REGISTER_INOUTDEV():注册输入设备和输出设备。实际上将上述两个宏定义合并了。
请使用手机"扫一扫"x