目录:
- 1、av_packet_alloc()和av_packet_free()
- 2、av_init_packet()的问题
- 3、av_packet_move_ref()的问题
- 4、av_packet_clone()的问题
- 5、AVPacket的引用计数问题
- 6、 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成员变量,底层原理是一样的