FFMPEG学习【libavcodec】:实用函数(一)

一、模块

一)、pixel formats模块

void  avcodec_get_chroma_sub_sample (enum AVPixelFormat pix_fmt, int *h_shift, int *v_shift)
实用函数从像素格式AVPixFmtDescriptor访问log2_chroma_w log2_chroma_h。

此函数声明pix_fmt有效。 请查看av_pix_fmt_get_chroma_sub_sample,返回失败代码,并在无效的pix_fmts的情况下继续。

参数:[in]pix_fmt:像素格式

  [out]h_shift:存储log2_chroma_w

  [out]v_shift:存储log2_chroma_h


unsigned int  avcodec_pix_fmt_to_codec_tag (enum AVPixelFormat pix_fmt)
返回表示与像素格式pix_fmt相关联的4CC代码的值,如果没有找到关联的4CC代码,则返回0。


int  avcodec_get_pix_fmt_loss (enum AVPixelFormat dst_pix_fmt, enum AVPixelFormat src_pix_fmt, int has_alpha)
已废弃:查看 av_get_pix_fmt_loss()


enum AVPixelFormat  avcodec_find_best_pix_fmt_of_list (const enum AVPixelFormat *pix_fmt_list, enum AVPixelFormat src_pix_fmt, int has_alpha, int *loss_ptr)
找到最佳的像素格式转换为给定某些的源像素格式。

当从一种像素格式转换到另一种像素格式时,可能会发生信息丢失。 例如,当从RGB24转换为GRAY时,颜色信息将丢失。 同样,从某些格式转换成其他格式时也会发生其他损失。 avcodec_find_best_pix_fmt_of_2()搜索哪些给定的像素格式应该被用来承受最少的损失。 由它选择一个的像素格式由pix_fmt_list参数决定。

参数:[in]pix_fmt_list:AV_PIX_FMT_NONE终止的像素格式数组可供选择

  [in]src_pix_fmt:源像素格式

  [in]has_alpha:是否使用源像素格式alpha通道。

  [out]loss_ptr:组合标志通知您将会发生什么样的损失。

返回:要转换的最佳像素格式或如果没有找到,则为-1。


enum AVPixelFormat  avcodec_find_best_pix_fmt_of_2 (enum AVPixelFormat dst_pix_fmt1, enum AVPixelFormat dst_pix_fmt2, enum AVPixelFormat src_pix_fmt, int has_alpha, int *loss_ptr)
已废弃:查看 av_find_best_pix_fmt_of_2()


attribute_deprecated enum 
AVPixelFormat 
avcodec_find_best_pix_fmt2 (enum AVPixelFormat dst_pix_fmt1, enum AVPixelFormat dst_pix_fmt2, enum AVPixelFormat src_pix_fmt, int has_alpha, int *loss_ptr)

enum AVPixelFormat  avcodec_default_get_format (struct AVCodecContext *s, const enum AVPixelFormat *fmt)


二)、FFT函数模块

1、头文件

avfft.h


2、数据结构

struct   FFTComplex

3、类型定义

typedef float  FFTSample

4、函数

FFTContext *  av_fft_init (int nbits, int inverse)
建立一个复合的FFT。

参数:nbits:log2的输入数组的长度

  inverse:如果0执行正向变换,如果1执行反向


void  av_fft_permute (FFTContext *s, FFTComplex *z)
在调用ff_fft_calc()之前,需要进行排列。


void  av_fft_calc (FFTContext *s, FFTComplex *z)
使用av_fft_init()中定义的参数进行复合FFT。

输入数据必须先排列。 没有1.0 / sqrt(n)标准化。


void  av_fft_end (FFTContext *s)

FFTContext *  av_mdct_init (int nbits, int inverse, double scale)

void  av_imdct_calc (FFTContext *s, FFTSample *output, const FFTSample *input)

void  av_imdct_half (FFTContext *s, FFTSample *output, const FFTSample *input)

void  av_mdct_calc (FFTContext *s, FFTSample *output, const FFTSample *input)

void  av_mdct_end (FFTContext *s)

RDFTContext *  av_rdft_init (int nbits, enum RDFTransformType trans)
建立一个真正的FFT。

参数:nbits:log2的输入数组的长度

  trans:转换的类型


void  av_rdft_calc (RDFTContext *s, FFTSample *data)

void  av_rdft_end (RDFTContext *s)

DCTContext *  av_dct_init (int nbits, enum DCTTransformType type)
设置DCT。

参数:nbits:DCT-II,DCT-III和DST-I(1 << nbits)+ 1用于DCT-I的输入阵列的大小(1 << nbits)

  type:转换的类型


void  av_dct_calc (DCTContext *s, FFTSample *data)

void  av_dct_end (DCTContext *s)



二、数据结构

struct   AVBitStreamFilterContext


struct   AVBSFContext
比特流滤波器状态。


struct   AVBitStreamFilter



三、宏

enum   AVLockOp { AV_LOCK_CREATE, AV_LOCK_OBTAIN, AV_LOCK_RELEASE, AV_LOCK_DESTROY }
lockmgr使用的锁定操作。


你可能感兴趣的:(ffmpeg)