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