当前位置:网站首页>AVFrame内存管理api
AVFrame内存管理api
2022-06-28 08:28:00 【、、、、南山小雨、、、、】
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
边栏推荐
- [introduction to SQL for 10 days] day4 Combined Query & specified selection
- Doris学习笔记之介绍、编译安装与部署
- Set<String>
- 图像翻译:UVCGAN: UNET VISION TRANSFORMER CYCLE-CONSISTENT GAN FOR UNPAIRED IMAGE-TO-IMAGE TRANSLATION
- Not so Mobile
- Force buckle 1024 video splicing
- B_ QuRT_ User_ Guide(26)
- CloudCompare&PCL 点云SVD分解
- 887. egg drop
- 【学习笔记】线性基
猜你喜欢

Prometheus service discovery

TCP那点事

Quelle est la largeur de bande du serveur de bavardage sonore pour des centaines de millions de personnes en même temps?

抖音服务器带宽有多大,才能供上亿人同时刷?

Usage record of Xintang nuc980: self made development board (based on nuc980dk61yc)

广州:金融新活水 文企新机遇

2022第六季完美童模 佛山赛区 初赛圆满落幕

Do you know TCP protocol (1)?

抖音服務器帶寬有多大,才能供上億人同時刷?

B_QuRT_User_Guide(26)
随机推荐
微内核Zephyr获众多厂家支持!
Infinite penetration test
【Go ~ 0到1 】 第二天 6月25 Switch语句,数组的声明与遍历
B_ QuRT_ User_ Guide(29)
Selenium reptile
新唐NUC980使用记录:自制开发板(基于NUC980DK61YC)
Installing mysql5.7 under Windows
Dell r730 server startup error: [xxx] USB 1-1-port4: disabled by hub (EMI?), re-enabling...
[learning notes] matroid
The preliminary round of the sixth season of 2022 perfect children's model Foshan competition area came to a successful conclusion
Tree
安装nrm后,使用nrm命令报错internal/validators.js:124 throw new ERR_INVALID_ARG_TYPE(name, ‘string‘, value)
Selenium+chromedriver cannot open Google browser page
Do you know TCP protocol (2)?
AWS builds a virtual infrastructure including servers and networks (2)
Set<String>
Oracle RAC -- understanding of VIP
DELL R730服务器开机报错:[XXX] usb 1-1-port4: disabled by hub (EMI?), re-enabling...
B_ QuRT_ User_ Guide(27)
11grac turn off archive log