视频流相关流程图
- 以Windows平台为例VideoCaptureDS调用DirectShow的API开始采集。DirectShow采集到数据后会调用输出到CaptureSinkFilter的ProcessCapturedFrame函数.
- ProcessCapturedFrame回调给capture_observer_的IncomingFrame,capture_observer_成员变量是在实例化CaptureSinkFilter调用构造函数时赋值,是VideoCaptureDS对象。
- VideoCaptureDS对象的IncomingFrame函数把视频帧按需求进行旋转,并利用libyuv库转换成I420类型,再给视频帧加上ntp时间戳进行处理。然后回调
_dataCallBack的OnFrame函数 - _dataCallBack是在vcm_capturer.cc中调用VideoCaptureDS的RegisterCaptureDataCallback赋值。所以_dataCallBack指向的是VcmCapturer类broadcaster_广播。关于broadcaster_添加下节再进行分析。