目錄:
- 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成員變量,底層原理是一樣的