当前位置:   article > 正文

音视频开发10 FFmpeg 内存模型-AVPacket, AVFrame

音视频开发10 FFmpeg 内存模型-AVPacket, AVFrame
从现有的 Packet 拷贝一个新 Packet 的时候,有两种情况:
①两个 Packet buf 引用的是 同一数据缓存空间 ,这时 候要注意数据缓存空间的释放问题;
②两个 Packet buf 引用不同的数据缓存空间 ,每个 Packet都有数据缓存空间的 copy
FFmpeg 是通过数据共享的形式 拷贝数据的,也就是通过浅拷贝完成数据的copy,
那么浅拷贝是有问题的,FFmpeg是如何解决这一问题的呢?
通过引用计数的方式来fix这个问题
更加精确的说明:
对于多个 AVPacket 共享同一个缓存空间, FFmpeg 使用的 引 用计数的机制(reference-count
初始化引用 计数为 0 ,只有真正分配 AVBuffer 的时候, 引用计数初始化为1 ;
当有新的 Packet 引用共享的缓存空间时, 就将引用计数 +1;
当释放了引用共享空间的 Packet ,就将引用计数 -1 ;引 用计数为0 时,就释放掉引用的缓存空间 AVBuffer
AVFrame 也是采用同样的机制。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/647018
推荐阅读
相关标签
  

闽ICP备14008679号