ffmpeg学习笔记
ffmpeg学习笔记
1.FFmpeg内存模型
2.AVPacket常用API
AVPacket *av_packet_alloc(void); //分配AVPacket 这个时候和buffer没有关系
void av_packet_free(AVPacket **pkt); //释放AVPacket 和_alloc对应
void av_init_packet(AVPacket *pkt); //初始化AVPacket 只是单纯初始化pkt字段
int av_new_packet(AVPacket *pkt, int size); //给AVPacket的buf分配内存,引用计数初始化为1
int av_packet_ref(AVPacket *dst, const AVPacket *src); //增加引用计数
void av_packet_unref(AVPacket *pkt); //减少引用计数
void av_packet_move_ref(AVPacket *dst, AVPacket *src); //转移引用计数
AVPacket *av_packet_clone(const AVPacket *src); //等于av_packet_alloc()+av_packet_ref()
3.AVFrame常用API
AVFrame *av_frame_alloc(void); //分配AVFrame
void av_frame_free(AVFrame **frame); //释放AVFrame
int av_frame_ref(AVFrame *dst, const AVFrame *src); //增加引用计数
void av_frame_unref(AVFrame *frame); //减少引用计数
void av_frame_move_ref(AVFrame *dst, AVFrame *src); //转移引用计数
int av_frame_get_buffer(AVFrame *frame, int align); //根据AVFrame分配内存
AVFrame *av_frame_clone(const AVFrame *src); //等于av_frame_alloc()+av_frame_ref()