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

news/2024/11/25 18:14:50/

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.ppmy.cn/news/1549874.html

相关文章

科研实验室的数字化转型:Spring Boot系统

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理实验室管理系统的相关信息成为必然。开发合…

【数据结构 | C++】并查操作

现在有一个并查集,你需要完成合并和查询操作。 输入格式: 第一行包含两个整数 N,M ,表示共有 N 个元素和 M 个操作。 接下来 M 行,每行包含三个整数 zi,xi,yi 。 当 zi1 时,将 xi与yi所在的集合合并。 当 zi2 时,输出xi与yi 是否…

微信小程序技术架构图

一、视图层1.WXML&#xff08;WeiXin Markup Language&#xff09; 这是微信小程序的标记语言&#xff0c;类似于 HTML。它用于构建小程序的页面结构。例如&#xff0c;通过标签来定义各种视图元素&#xff0c;如<view>&#xff08;类似于 HTML 中的<div>&#xff…

python中lxml 库之 etree 使用详解

目录 一、 etree 介绍二、xpath 解析 html/xml1、第一步就是使用 etree 连接 html/xml 代码/文件。2、 xpath 表达式定位① xpath结合属性定位② xpath文本定位及获取③ xpath层级定位④ xpath索引定位⑤ xpath模糊匹配 一、 etree 介绍 lxml 库是 Python 中一个强大的 XML 处…

小程序-基于java+SpringBoot+Vue的流浪动物救助小程序设计与实现

项目运行 1.运行环境&#xff1a;最好是java jdk 1.8&#xff0c;我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境&#xff1a;IDEA&#xff0c;Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境&#xff1a;Tomcat 7.x,8.x,9.x版本均可 4.硬件环境&#xff1a…

LeetCode 4.寻找两个中序数组的中位数

力扣 4. 寻找两个正序数组的中位数 思路&#xff1a; 二分查找标记位计算中位数 细节&#xff1a; if (nums1.size() > nums2.size())return findMedianSortedArrays(nums2, nums1); 首先比较两个数组的大小&#xff0c;确保后续 nums1 的长度总是小于等于 nums2 的长度 …

如何控制自己玩手机的时间?两台苹果手机帮助自律

对一些人来说&#xff0c;被智能手机“绑架”是一件心甘情愿的事&#xff0c;和它相处的一天中&#xff0c;不必面对现实的压力&#xff0c;它就像个“舒适区”。这是因为在使用手机的过程中&#xff0c;应用程序&#xff08;尤其是游戏和社交媒体应用&#xff09;会不断刺激大…

企业OA管理系统:Spring Boot技术实现与案例研究

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了企业OA管理系统的开发全过程。通过分析企业OA管理系统管理的不足&#xff0c;创建了一个计算机管理企业OA管理系统的方案。文章介绍了企业OA管理系统的系统分析部…