ffmpeg学习笔记

1.FFmpeg内存模型

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()