当前位置: 首页 > article >正文

[C/C++][FFmpeg] 增加引用计数和显式释放的接口

1. avcodec_receive_packet

  • 描述:从编码器获取 AVPacket,如果编码器内部管理数据,引用计数会增加。
  • 显式释放:使用 av_packet_unref(packet) 释放 AVPacket 数据。

2. avcodec_send_packet

  • 描述:将 AVPacket 发送到解码器时,AVPacket 的数据引用计数不会自动减少。因此在解码完成后,需要释放。
  • 显式释放:使用 av_packet_unref(packet) 释放 AVPacket 数据。

3. av_frame_get_buffer

  • 描述:为 AVFrame 分配数据缓冲区并增加引用计数。
  • 显式释放:使用 av_frame_unref(frame) 释放 AVFrame 中的数据。

4. av_frame_clone

  • 描述:创建 AVFrame 的深拷贝,引用计数会增加。
  • 显式释放:使用 av_frame_free(&frame) 释放拷贝的 AVFrame

5. av_buffer_ref

  • 描述:为 AVBufferRef 增加引用计数。
  • 显式释放:使用 av_buffer_unref(&buffer) 释放引用。

6. av_packet_ref

  • 描述:对一个 AVPacket 创建引用,会增加数据引用计数。
  • 显式释放:使用 av_packet_unref(packet) 释放 AVPacket

7. avformat_alloc_context

  • 描述:分配 AVFormatContext,需要显式释放。
  • 显式释放:使用 avformat_free_context(format_context) 释放 AVFormatContext

8. avformat_find_stream_info

  • 描述:在解析输入流时,FFmpeg 可能会创建内部引用,比如分配一些流或缓冲区信息,这些需要释放。
  • 显式释放:使用 avformat_close_input(&format_context) 关闭输入文件并释放资源。

9. avfilter_graph_alloc / avfilter_graph_alloc_filter

  • 描述:为 AVFilterGraph 分配数据,增加引用计数。
  • 显式释放:使用 avfilter_graph_free(&filter_graph) 释放滤镜图。

10. av_frame_make_writable

  • 描述:如果 AVFrame 的数据缓冲区有多个引用,它会增加引用计数以创建一个新的缓冲区。
  • 显式释放:使用 av_frame_unref(frame) 释放 AVFrame

11. avio_open / avio_open2

  • 描述:为 AVIOContext 打开文件或设置输入输出缓冲区。
  • 显式释放:使用 avio_closep(&avio_context) 关闭并释放 AVIOContext

12. sws_getContext

  • 描述:创建 SwsContext 用于图像缩放或格式转换。
  • 显式释放:使用 sws_freeContext(sws_context) 释放 SwsContext

13. swr_alloc / swr_alloc_set_opts

  • 描述:创建 SwrContext 用于音频重采样。
  • 显式释放:使用 swr_free(&swr_context) 释放 SwrContext

14. avfilter_graph_create_filter

  • 描述:创建滤镜并增加滤镜的引用计数。
  • 显式释放:使用 avfilter_free(filter) 释放滤镜。

15. av_dict_set / av_dict_copy

  • 描述:管理 AVDictionary(键值对)的引用计数。
  • 显式释放:使用 av_dict_free(&dictionary) 释放字典。

http://www.kler.cn/a/408907.html

相关文章:

  • 【C语言】深入剖析 C 语言中数组与指针的紧密联系及高效应用
  • spring源码解析-@Autowired
  • Makefile 之 wordlist
  • HTML5好看的音乐播放器多种风格(附源码)
  • 4.4 MySQL 触发器(Trigger)
  • C++特殊类设计(不能被拷贝的类、只能在堆上创建对象的类、不能被继承的类、单例模式)
  • RHCE——DNS域名解析服务器
  • 深度学习中的经典模型:卷积神经网络(CNN)基础与实现
  • 什么是C++的移动语义,它的作用什么?
  • NVR管理平台EasyNVR多个NVR同时管理:全方位安防监控视频融合云平台方案
  • DataWhale—PumpkinBook(TASK05决策树)
  • 前端VUE项目启动方式
  • AI模型---安装cuda与cuDNN
  • 构建高效在线教育:SpringBoot课程管理系统
  • Windows用pm2部署node.js项目
  • 平面点排序(结构体专题)
  • SpringMVC的理解
  • 基于Springboot+微信小程序的社区论坛系统 (含源码数据库)
  • 推荐一个QDirStat基于 Qt 的目录统计工具
  • MyBatis基本使用
  • Jupyter 导入 - 国内安装 openai 和 python-dotenv 包
  • 实验室管理技术:Spring Boot技术的应用
  • 2025-2026财年美国CISA国际战略规划(下)
  • MySQL底层概述—1.InnoDB内存结构
  • 详细探索xinput1_3.dll:功能、问题与xinput1_3.dll丢失的解决方案
  • 2062:【例1.3】电影票(http://ybt.ssoier.cn:8088/problem_show.php?pid=2062)