分配和释放
-  分配 AVFrameAVFrame *av_frame_alloc(void);分配一个新的 AVFrame并返回一个指向它的指针。返回的AVFrame需要手动释放。
-  释放 AVFramevoid av_frame_free(AVFrame **frame);释放由 av_frame_alloc分配的AVFrame。这个函数会释放帧的数据并将指针设为 NULL。
初始化和引用管理
-  初始化 AVFrameint av_frame_ref(AVFrame *dst, const AVFrame *src);将一个 AVFrame的数据引用复制到另一个AVFrame。这两个帧将共享同一数据缓冲区。
-  取消引用 AVFramevoid av_frame_unref(AVFrame *frame);解除对 AVFrame的引用。如果这个帧是最后一个引用,则释放其数据。
-  移动引用 void av_frame_move_ref(AVFrame *dst, AVFrame *src);将 src帧的引用移动到dst帧,src将被重置为空帧。
数据管理
-  分配数据缓冲区 int av_frame_get_buffer(AVFrame *frame, int align);为 AVFrame分配一个新的数据缓冲区。align参数指定数据的对齐方式。
示例代码:
AVFrame *frame = av_frame_alloc();
if (!frame) {fprintf(stderr, "Could not allocate frame\n");exit(1);
}frame->format = AV_PIX_FMT_YUV420P;
frame->width  = 640;
frame->height = 480;/* Allocate the buffers for the frame data */
int ret = av_frame_get_buffer(frame, 32);/* Initialize frame data here *//* Create a new reference to the frame */
AVFrame *frame_ref = av_frame_alloc();ret = av_frame_ref(frame_ref, frame);//将frame_red 和 frame共享一块缓存区/* Unref and free frames */
av_frame_unref(frame_ref);
av_frame_free(&frame_ref);
av_frame_free(&frame);