FFMPEG学习【libavcodec】:核心函数以及结构体(二)

一、函数

AVRational  av_codec_get_pkt_timebase (const AVCodecContext *avctx)

void  av_codec_set_pkt_timebase (AVCodecContext *avctx, AVRational val)

const AVCodecDescriptor *  av_codec_get_codec_descriptor (const AVCodecContext *avctx)

void  av_codec_set_codec_descriptor (AVCodecContext *avctx, const AVCodecDescriptor *desc)

unsigned  av_codec_get_codec_properties (const AVCodecContext *avctx)

int  av_codec_get_lowres (const AVCodecContext *avctx)

void  av_codec_set_lowres (AVCodecContext *avctx, int val)

int  av_codec_get_seek_preroll (const AVCodecContext *avctx)

void  av_codec_set_seek_preroll (AVCodecContext *avctx, int val)

uint16_t *  av_codec_get_chroma_intra_matrix (const AVCodecContext *avctx)

void  av_codec_set_chroma_intra_matrix (AVCodecContext *avctx, uint16_t *val)

int  av_codec_get_max_lowres (const AVCodec *codec)

AVCodec *  av_codec_next (const AVCodec *c)
如果c为NULL,则返回第一个注册的编解码器,如果c为非NULL,则在c之后返回下一个已注册的编解码器,如果c为最后一个,则返回NULL。


unsigned  avcodec_version (void)
返回LIBAVCODEC_VERSION_INT常量。


const char *  avcodec_configuration (void)
返回libavcodec构建时配置。


const char *  avcodec_license (void)
返回libavcodec许可证。


void  avcodec_register (AVCodec *codec)
注册编解码器并初始化libavcodec。

警告:此函数或avcodec_register_all()必须在任何其他libavcodec函数之前调用。


void  avcodec_register_all (void)
注册在配置时启用的所有编解码器,解析器和比特流筛选器。

如果您不调用此函数,您可以使用单独的注册功能来精确选择要支持的格式。


AVCodecContext *  avcodec_alloc_context3 (const AVCodec *codec)
分配AVCodecContext并将其字段设置为默认值。

结果应该使用avcodec_free_context()来释放。

参数:codec:如果非NULL,则分配专用数据并初始化给定编解码器的默认值。 然后使用不同的编解码器调用avcodec_open2()是非法的。 如果为NULL,则编解码器特定的默认值将不会被初始化,这可能导致次优的默认设置(这对于编码器,例如libx264)很重要。

返回:AVCodecContext填入默认值或失败时为NULL。


void  avcodec_free_context (AVCodecContext **avctx)
释放编解码器上下文和与之相关联的所有内容,并将NULL写入提供的指针。


int  avcodec_get_context_defaults3 (AVCodecContext *s, const AVCodec *codec)
遗弃:不应该使用此函数,因为不支持多次打开和打开编解码器上下文。 应为每个新用途分配新的编解码器上下文。


const AVClass *  avcodec_get_class (void)
获得AVCodecContext AVClass。

它可以与AV_OPT_SEARCH_FAKE_OBJ结合使用来检查选项。


const AVClass *  avcodec_get_frame_class (void)

获取AVClass AVFrame。

它可以与AV_OPT_SEARCH_FAKE_OBJ结合使用来检查选项。


const AVClass *  avcodec_get_subtitle_rect_class (void)
获取AVSubtitleRect的AVClass。

它可以与AV_OPT_SEARCH_FAKE_OBJ结合使用来检查选项。


attribute_deprecated int  avcodec_copy_context (AVCodecContext *dest, const AVCodecContext *src)
将源AVCodecContext的设置复制到目标AVCodecContext中。

所得到的目标编解码器上下文将被打开,即您需要调用avcodec_open2(),然后才能使用此AVCodecContext对视频/音频数据进行解码/编码。

参数:dest:目标编解码器上下文,应使用avcodec_alloc_context3(NULL)初始化,否则将初始化

  src:源编解码器上下文

返回:AVERROR()发生错误(例如内存分配错误),0成功


AVCodecParameters *  avcodec_parameters_alloc (void)
分配一个新的AVCodecParameters并将其字段设置为默认值(未知/无效/ 0)。

返回的结构必须与avcodec_parameters_free()一起释放。


void  avcodec_parameters_free (AVCodecParameters **par)
释放一个AVCodecParameters实例以及与之相关联的所有内容,并向提供的指针写入NULL。


int  avcodec_parameters_copy (AVCodecParameters *dst, const AVCodecParameters *src)
将src的内容复制到dst。

dst中的任何分配的字段被释放,并被src中相应字段的新分配的副本替换。

返回:成功返回零,失败返回负值


int  avcodec_parameters_from_context (AVCodecParameters *par, const AVCodecContext *codec)
根据提供的编解码器上下文中的值填写参数结构。

par中任何分配的字段都被释放,并被编码解码器中相应字段的重复替换。

返回:成功返回零,失败返回负值


int  avcodec_parameters_to_context (AVCodecContext *codec, const AVCodecParameters *par)
根据提供的编解码器参数的值填写编解码器上下文。

二编解码器中具有par中对应字段的任何已分配字段将被释放,并替换为参数中相应字段的重复。 编解码器中没有对方的参数中的字段未被触发。

返回:成功返回零,失败返回负值


int  avcodec_open2 (AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options)
初始化AVCodecContext以使用给定的AVCodec。

在使用此函数之前,上下文必须使用avcodec_alloc_context3()分配。

函数avcodec_find_decoder_by_name(),avcodec_find_encoder_by_name(),avcodec_find_decoder()和avcodec_find_encoder()提供了一种检索编解码器的简单方法。

警告:这个功能不是线程安全的!

注意:在使用解码例程(如avcodec_receive_frame())之前,始终调用此函数。

参数:avctx:初始化的上下文。

  codec:打开这个上下文的编解码器。 如果非空编解码器先前传递给avcodec_alloc_context3()或此上下文,则该参数必须为NULL或等于先前传递的编解码器。

  options:填写AVCodecContext和编解码器私有选项的字典。 返回时,此对象将填充未找到的选项。

返回:成功返回零,失败返回负值


int  avcodec_close (AVCodecContext *avctx)
关闭给定的AVCodecContext并释放所有与之相关联的数据(而不是AVCodecContext本身)。

在尚未打开的AVCodecContext上调用此函数将使用非NULL编解码器释放avcodec_alloc_context3()中分配的编解码器特定数据。 随后的调用什么都不做。


void  avsubtitle_free (AVSubtitle *sub)
释放给定字幕结构中所有分配的数据。

参数:sub:用来释放的AVSubtitle

你可能感兴趣的:(ffmpeg)