ffmpeg 数据结构

ffmpeg中重要的数据结构记录,

AVFrame结构体:

AVFrame *av_frame_alloc(void)

分配AVFrame并设置默认值,必须调av_frame_free释放

void av_frame_free(AVFrame **frame)

释放AVFrame,如果该AVFrame有引用的AVBuffer,则先释放引用

int av_frame_ref(AVFrame *dst, const AVFrame *src)

增加引用计数

void av_frame_unref(AVFrame *frame)

减少引用计数

void av_frame_move_ref(AVFrame *dst, AVFrame *src)

将src中的每个字段移动到dst,并重置src

int av_frame_get_buffer(AVFrame *frame, int align)

为音频或视频分配新缓冲区,调用前必须先设置格式信息

AVPacket结构体:

 

AVPacket *av_packet_alloc(void)

分配一个AVPacket,并将其字段设置为默认值,必须调用av_packet_free来释放

void av_packet_free(AVPacket **pkt)

释放掉Packet,如果这个Packet有引用的AVBuffer,将会先释放引用。

void av_init_packet(AVPacket *pkt)

初始化Packet,注意,这并不涉及data和size成员,它们必须分别初始化。

int av_new_packet(AVPacket *pkt, int size)

给AVPacket分配内存,这里引用计数会+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)

将src中的每个字段移动到dst,并重置src

AVPacket *av_packet_clone(const AVPacket *src)

克隆一个与src相同数据的Packet,等于av_packet_alloc()+av_packet_ref()

AVFormatContext:统领全局的基本结构体。主要用于处理封装格式(FLV/MKV/RMVB等)。

AVIOContext:输入输出对应的结构体,用于输入输出(读写文件,RTMP协议等)。

AVStream,AVCodecContext:视音频流对应的结构体,用于视音频编解码。

AVFrame:存储非压缩的数据(视频对应RGB/YUV像素数据,音频对应PCM采样数据)

AVPacket:存储压缩数据(视频对应H.264等码流数据,音频对应AAC/MP3等码流数据)

 

上一篇:Python基础之:Python中的类


下一篇:hibernate面试笔记