美文网首页
音视频流媒体开发【六】FFmpeg内存

音视频流媒体开发【六】FFmpeg内存

作者: AlanGe | 来源:发表于2023-02-22 00:19 被阅读0次

音视频流媒体开发-目录

FFmpeg内存模型

问题:

(1)从av_read_frame读取到一个AVPacket后怎么放入队列?
(2)从avcodec_recevice_frame读取到一个AVFrame后又怎么放入队列?

◼ 从现有的Packet拷贝一个新Packet的时候,有两种情况:
①两个Packet的buf引用的是同一数据缓存空间,这时候要注意数据缓存空间的释放问题;
②两个Packet的buf引用不同的数据缓存空间,每个Packet都有数据缓存空间的copy;

◼ 更为精确的模型

实际共同持有的是AVBuffer

FFmpeg内存模型-引用计数

  • 对于多个AVPacket共享同一个缓存空间,FFmpeg使用的引用计数的机制(reference-count):
    ◼ 初始化引用计数为0,只有真正分配AVBuffer的时候,引用计数初始化为1;
    ◼ 当有新的Packet引用共享的缓存空间时,就将引用计数+1;
    ◼ 当释放了引用共享空间的Packet,就将引用计数-1;引用计数为0时,就释放掉引用的缓存空间AVBuffer。
  • AVFrame也是采用同样的机制。

AVPacket常用API

AVFrame常用API

相关文章

网友评论

      本文标题:音视频流媒体开发【六】FFmpeg内存

      本文链接:https://www.haomeiwen.com/subject/vbabkdtx.html