1 av_opt_set_bin
作用:将二进制数据作为值设置给对象。
函数原型:
int av_opt_set_bin(void *obj, const char *name, const uint8_t *val, int size, int search_flags);
obj:要设置选项的对象;
name:选项名称;
val:要设置的值;
size:值的大小;
search_flags:搜索选项的方式。例如,AV_OPT_SEARCH_CHILDREN指的是首先搜索给定对象的子对象。
返回值:负值表示失败。
2 av_opt_set_int_list
作用:将整数数组作为选项值设置给对象。
函数原型:
#define av_opt_set_int_list(obj, name, val, term, flags) \
(av_int_list_length(val, term) > INT_MAX / sizeof(*(val)) ? \ AVERROR(EINVAL) : \ av_opt_set_bin(obj, name, (const uint8_t *)(val), \
av_int_list_length(val, term) * sizeof(*(val)), flags))
obj:要设置选项的对象;
name:选项名称;
val:要设置的值,整型数组;
term:val所代表数组中的最后一个元素,其值通常为0或者-1;假设val数组为enum AVPixelFormat val[] = {AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUYV422, AV_PIX_FMT_NONE},那么term的值就是AV_PIX_FMT_NONE,AV_PIX_FMT_NONE值为-1;
flags:搜索选项的方式。例如,AV_OPT_SEARCH_CHILDREN指的是首先搜索给定对象的子对象。
宏定义运行的结果:负值表示失败。
注意:从函数原型上可以看出,该宏定义其实就是调用的av_opt_set_bin。
3 av_get_default_channel_layout
作用:根据通道数返回默认的声道布局。
函数原型:
int64_t av_get_default_channel_layout(int nb_channels);
nb_channels:通道数;
返回值:声道布局。
4 av_get_sample_fmt_name
作用:根据采样格式返回采样格式的名称。
函数原型:
const char *av_get_sample_fmt_name(AVSampleFormat sample_fmt);
sample_fmt:采样格式;
返回值:成功返回采样格式的名称,失败返回NULL。
5 av_strdup
作用:拷贝一个字符串。
函数原型:
char *av_strdup(const char *s);
s:待拷贝的字符串;
返回值:成功返回拷贝的字符串,失败返回NULL。
6 avfilter_graph_parse_ptr
作用:将字符串描述的滤镜图添加到现有的滤镜图中。
函数原型:
int avfilter_graph_parse_ptr(AVFilterGraph *graph, const char *filters, AVFilterInOut **inputs, AVFilterInOut **outputs, void *log_ctx);
graph:现有的滤镜图;
filters:待解析的字符串描述的滤镜图;
inputs:buffersink滤镜的输入引脚;
outputs:buffer滤镜的输出引进;
log_ctx:为NULL;
返回值:负值表示失败。
7 avfilter_graph_config
作用:为滤镜图中的滤镜建立连接。
函数原型:
int avfilter_graph_config(AVFilterGraph *graphctx, void *log_ctx);
graphctx:滤镜图;
log_ctx:为NULL;
返回值:负值表示失败。
8 av_frame_alloc
作用:分配一个AVFrame。
函数原型:
AVFrame *av_frame_alloc();
返回值:成功返回分配的AVFrame,失败返回NULL。
注意:用完后必须使用av_frame_free释放。
9 av_frame_free
作用:释放分配的AVFrame。
函数原型:
void av_frame_free(AVFrame **frame);
frame:待释放的AVFrame;
10 avcodec_send_packet
作用:将编码的音视频帧数据送入解码器进行解码。
函数原型:
int avcodec_send_packet(AVCodecContext *avctx, const AVPacket *avpkt);
avctx:解码器上下文;
avpkt:编码的音视频帧数据;
返回值: < 0表示失败。
注意:AVCodecContext必须先使用avcodec_open2打开。
11 avcodec_receive_frame
作用:从解码器中获取解码的音视频帧数据。
函数原型:
int avcodec_receive_frame(AVCodecContext *avctx, AVFrame *frame);
avctx:解码器上下文;
frame:解码的音视频帧数据;
返回值:
0:表示成功;
AVERROR(EAGAIN):当前状态无法获取输出,必须发送新的数据到解码器;
AVERROR_EOF:解码器已完全清空;
AVERROR(EINVAL):解码器没有打开,或者它是一个编码器;
其他负值:解码失败;
12 avcodec_open2
作用:使用编解码器初始化AVCodecContext。
函数原型:
int avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options);
avctx:待初始化的AVCodecContext;
codec:编解码器;
options:一般为NULL;
返回值:负值表示失败。
13 av_buffersrc_add_frame_flags
作用:将解码后的音视频帧送入滤镜处理。
函数原型:
int av_buffersrc_add_frame_flags(AVFilterContext *buffer_src, AVFrame *frame, int flags);
buffer_src:buffer或abuffer滤镜实例;
frame:解码后的音视频帧;
flags:一般为0;
返回值:负值表示失败。
14 av_buffersink_get_frame
作用:从滤镜中获取过滤后的音视频帧。
函数原型:
int av_buffersink_get_frame(AVFilterContext *ctx, AVFrame *frame);
ctx:buffersink或abuffersink滤镜实例;
frame:用于存储过滤后的音视频帧数据;
返回值:>= 0表示成功,AVERROR(EAGAIN)表示当前情况无法获取输出帧(正常状态),AVERROR_EOF表示无法获取更多输出帧,其它负值表示失败。
15 avcodec_send_frame
作用:将原始的音视频帧送入编码器进行编码。
函数原型:
int avcodec_send_frame(AVCodecContext *avctx, const AVFrame *frame);
avctx:编码器上下文;
frame:待编码的原始音视频帧;
返回值:负值表示失败。
16 avcodec_receive_packet
作用:从编码器中获取编码的音视频帧。
函数原型:
int avcodec_receive_packet(AVCodecContext *avctx, AVPacket *avpkt);
avctx:编码器上下文;
avpkt:编码的音视频帧;
返回值:
0:表示成功;
AVERROR(EAGAIN):当前状态无法获取输出,必须发送新的数据到编码器;
AVERROR_EOF:编码器已完全清空;
AVERROR(EINVAL):编码器没有打开,或者它是一个解码器;
其他负值:编码失败;
17 avcodec_alloc_context3
作用:分配一个AVCodecContext,并将其字段设为默认值。
函数原型:
AVCodecContext *avcodec_alloc_context3(const AVCodec *codec);
codec:用于初始化的编解码器;
返回值:成功返回分配的AVCodecContext,失败返回NULL。
18 avcodec_free_context
作用:释放AVCodecContext。
函数原型:
void avcodec_free_context(AVCodecContext **avctx);
avctx:待释放的AVCodecContext;
19 avcodec_parameters_to_context
作用:将AVCodecParameters里的参数拷贝给AVCodecContext里的对应字段。
函数原型:
int avcodec_parameters_to_context(AVCodecContext *codec, const AVCodecParameters *par);
codec:dst AVCodecContext;
par:src AVCodecParameters;
返回值:负值表示失败。
20 av_guess_frame_rate
作用:根据容器和编解码器信息猜测帧率。
函数原型:
AVRational av_guess_frame_rate(AVFormatContext *ctx, AVStream *stream, AVFrame *frame);
ctx:stream所属的AVFormatContext;
stream:frame所属的stream;
frame:需要确定帧率的帧,一般为NULL;
返回值:猜测的帧率。
21 av_inv_q
作用:将AVRational q转换为1 / q。
函数原型:
extern "C" static inline AVRational av_inv_q(AVRational q);
q:待转换AVRational;
返回值:1 / q。
22 av_channel_layout_copy
作用:拷贝通道布局。
函数原型:
int av_channel_layout_copy(AVChannelLayout *dst, const AVChannelLayout *src);
dst:目的通道布局;
stc:源通道布局;
返回值:负值表示失败。
23 avcodec_parameters_from_context
作用:将AVCodecContext里的参数拷贝给AVCodecParameters里的对应字段。
函数原型:
int avcodec_parameters_from_context(AVCodecParameters *par, const AVCodecContext *codec);
par:dst AVCodecParameters;
codec:src AVCodecContext;
返回值:负值表示失败。
24 av_channel_layout_default
作用:获取给定通道数量的默认通道布局。
函数原型:
void av_channel_layout_default(AVChannelLayout *ch_layout, int nb_channels);
ch_layout:待初始化的通道布局;
nb_channels:通道数量;
25 av_channel_layout_describe
作用:获取描述通道布局属性的字符串,该字符串与av_channel_layout_from_string的参数格式相同,可以用来重建相同的通道布局。
函数原型:
int av_channel_layout_describe(const AVChannelLayout *channel_layout, char *buf, size_t buf_size);
channel_layout:待描述的通道布局;
buf:存储生成字符串的缓冲区;
buf_size:缓冲区的大小;
返回值:成功返回生成字符串的字节数,失败返回负值。
26 av_packet_alloc
作用:分配一个AVPacket,并将其字段设为默认值。
函数原型:
AVPacket *av_packet_alloc();
返回值:成功返回分配的AVPacket,失败返回NULL。
27 av_buffersink_get_time_base
作用:获取buffersink滤镜实例的时间基。
函数原型:
AVRational av_buffersink_get_time_base(const AVFilterContext *ctx);
ctx:buffersink滤镜实例;
返回值:buffersink滤镜实例的时间基。
28 av_packet_rescale_ts
作用:将AVPacket中的以tb_src时间基表示的计时字段(时间戳、持续时间)转换为以tb_dst时间基表示。
函数原型:
void av_packet_rescale_ts(AVPacket *pkt, AVRational tb_src, AVRational tb_dst);
pkt:待转换的AVPacket;
tb_src:源时间基,转换前的AVPacket中的计时字段以该时间基表示;
tb_dst:目的时间基,转换后的AVPacket中的计时字段以该时间基表示;