AVFrame内存管理api

int av_frame_ref(AVFrame *dst, const AVFrame *src)

类似于复制,src复制到dst,不过只是将src里面数据的引用加1,然后将引用添加到dst中

AVFrame *av_frame_clone(const AVFrame *src);
作用同av_frame_ref类似,增加src的引用计数,但同时会初始化av_frame_clone 对象

void av_frame_unref(AVFrame* frame)
将frame引用计数减一。

av_frame_free():释放AVFrame的结构体空间。这个函数就有点意思了。因为他不仅仅释放结构体空间,还涉及到AVFrame中的uint8_t *data[AV_NUM_DATA_POINTERS];字段的释放问题。,如果AVFrame中的uint8_t *data[AV_NUM_DATA_POINTERS]中的引用==1,则释放data的空间。

av_frame_unref()函数就是针对frame的buf数组 逐个调用av_buffer_unref()。av_buffer_unref之前也讲过了。就是引用计数变为0,就释放data,否则只释放结构体自身内存。 注意,前提是buf[i] 不能是null.

void av_frame_unref(AVFrame *frame)
{
int i;

if (!frame)
    return;

wipe_side_data(frame);

for (i = 0; i < FF_ARRAY_ELEMS(frame->buf); i++)
    av_buffer_unref(&frame->buf[i]);
for (i = 0; i < frame->nb_extended_buf; i++)
    av_buffer_unref(&frame->extended_buf[i]);
av_freep(&frame->extended_buf);
av_dict_free(&frame->metadata);

#if FF_API_FRAME_QP
FF_DISABLE_DEPRECATION_WARNINGS
av_buffer_unref(&frame->qp_table_buf);
FF_ENABLE_DEPRECATION_WARNINGS
#endif

av_buffer_unref(&frame->hw_frames_ctx);

av_buffer_unref(&frame->opaque_ref);
av_buffer_unref(&frame->private_ref);

get_frame_defaults(frame);

}
————————————————
版权声明:本文为CSDN博主「oooooome」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/oooooome/article/details/111993911
https://blog.csdn.net/oooooome/article/details/111993911?ops_request_misc=&request_id=&biz_id=102&utm_term=av_frame_unref&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-7-111993911.nonecase&spm=1018.2226.3001.4187

ffmpeg是音视频必备,但即使从业数年,它似乎依然有无穷的秘密,感兴趣添加笔者微信:YQW1163720468,加入ffmpeg微信群讨论。但记得备注:ffmpeg爱好者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

、、、、燕庆伟、、、、

分享对你有帮助,打赏一下吧!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值