ffmpeg - AVPacket内存问题分析(AVFrame一样的)

1、av_packet_alloc()和av_packet_free()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
源码中av_packet_unref()调用av_buffer_unref()进行去引用buf
在这里插入图片描述
av_buffer_unref()中就判断是否为空才进行操作,所以可以多次调用。
在这里插入图片描述

2、av_init_packet()的问题

在这里插入图片描述
在这里插入图片描述
源码中的av_init_packet()将buf设置为NULL。
在这里插入图片描述

3、av_packet_move_ref()的问题

在这里插入图片描述

执行av_packet_move_ref前后其实是将整个AVPacket结构的成员浅拷贝的。
在这里插入图片描述

源码中的av_packet_move_ref()中就是直接值拷贝,然后初始化源结构。
在这里插入图片描述

4、av_packet_clone()的问题

在这里插入图片描述

调用av_packet_clone()前后,buf中的实际数据buffer是一样的。
在这里插入图片描述

源码中av_packet_clone()也可以看到
av_packet_clone = av_packet_alloc + av_packet_ref
在这里插入图片描述

5、AVPacket的引用计数问题

在这里插入图片描述

6、 AVFrame一样的

avframe 也是有buf成员变量,底层原理是一样的

猜你喜欢

转载自blog.csdn.net/m0_37599645/article/details/111937673