- 实际使用中,有这样的一种情形,sink 需要最后被释放,比如render一直传递给多个对象,
- 解码器 需要 render 渲染视频,而player 管理render ,提前释放了render, 就会让decoder异常
- 这种情况下,可以自己管理时序,也许可以使用共享指针来解决,即一路传递render的共享指针
- webrtc中,render 是一个消费者,是sink对象,即传递如下:
std::shared_ptr<rtc::VideoSinkInterfacewebrtc::VideoFrame
如何赋值给共享指针
- 实际使用中,可以用 std::make_shared 里面传递一个new的对象
- 或者使用 reset ,里面传递 new 对象,
- 实测,reset 更实用,
- 因为看报错,std::make_shared 时, VideoFrame有个复制拷贝的过程,会报错,
- TODO FIMXE 这块要记下来,有机会 深入看下c++标注库的实现。