Bootstrap

[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) 释放字典。

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;