音视频开发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 也是采用同样的机制。



相关推荐
leonyie20225 小时前
7.3 在通知中显示图片或视频(UNNotificationAttachment)
macos·ios·swiftui·音视频·cocoa·swift
ShenZhenDingYue5 小时前
音视频生命探测仪,救援现场的“视听先锋”|鼎跃安全
音视频·应急救援·水域救援·生命探测仪·探测仪·音视频生命探测仪
勘察加熊人7 小时前
form+ffmpeg+opus录音压缩音频
ffmpeg·音视频
EasyGBS8 小时前
国标GB28181视频平台EasyCVR顺应智慧农业自动化趋势,打造大棚实时视频监控防线
大数据·网络·人工智能·安全·音视频
weixin_4424240312 小时前
Opencv计算机视觉编程攻略-第十二节 处理视频序列
opencv·计算机视觉·音视频
EasyGBS20 小时前
如何实现两个视频融合EasyCVR平台的数据同步?详细步骤指南
大数据·网络·人工智能·安全·音视频
梧桐樹下1 天前
ffmpeg时间基与时间戳
ffmpeg
花落已飘1 天前
SDL显示YUV视频
ffmpeg·音视频
开开心心就好1 天前
手机不同App音量自动调节软件
网络·windows·python·安全·智能手机·电脑·音视频
智联视频超融合平台1 天前
国网B接口注册流程详解以及注册失败原因(电网B接口)
网络·人工智能·后端·网络协议·安全·音视频·实时音视频