经过一系列的操作,最终完整的frame回到RtpVideoStreamReceiver2::OnCompleteFrames中。
并且,通过complete_frame_callback_->OnCompleteFrame(std::move(frame));
回调到VideoReceiveStream2类中。
这时候,就需要frame_buffer_出场了!!!
std::unique_ptr<video_coding::FrameBuffer> frame_buffer_;
当组帧完成,参考关系完整后,帧放到FrameBuffer中,就可以等待解码器来临幸了。这里是两个线程在操作,一个线程处理完参考关系后,将帧插入到FrameBuffer;一个线程取帧来解码播放。
DecodingQueue线程:
frame_buffer_->NextFrame
IncomingVideoStream线程:
config_.renderer->OnFrame(video_frame);
......