您的位置:首页 > 其它

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

2017-06-08 14:22 826 查看
一、模块

1、AVPacket

使用AVPacket的类型和功能。

2、AVHWAccel

3、AVPicture

使用AVPicture的函数。

二、数据结构

1、struct   AVCodecDescriptor{

enum AVCodecID id;

enum AVMediaType type

const char * name

该描述符描述的编解码器的名称。

const char * long_name

此编解码器的更具描述性的名称。

int props

编解码器属性,AV_CODEC_PROP_ *flag的组合。

const char *const * mime_types

与编解码器相关联的MIME类型。

const struct AVProfile * profiles

如果非NULL,则为此编解码器识别的配置文件数组。

}

该结构描述了由AVCodecID描述的单个编解码器的属性。

2、struct   RcOverride{

int start_frame;

int end_frame;

int qscale;

float quality_factor;

}

3、struct   AVPanScan{

int id;

int width 

宽度和高度在1/16像素

int height;

int16_t position [3][2];

左上角的位置在1/16像素中最多可达3个字段/帧

}

平扫扫描区域。

这指定应显示的区域。 注意,一帧可能有多个这样的区域。

4、struct   AVCPBProperties{

int max_bitrate;

流的最大比特率,以比特/秒为单位。

int min_bitrate;

流的最小比特率,以比特/秒为单位。

int avg_bitrate

流的平均比特率,以位/秒为单位。

int buffer_size;

应用速率控制的缓冲区的大小,以位为单位。

uint64_t vbv_delay;

在27MHz时钟的周期内,接收到与该结构相关联的分组的时间之间的延迟和应当被解码的时间。

}

该结构描述了编码比特流的比特率特性。

它大致对应于用于H.264 / HEVC的用于MPEG-2或HRD参数的VBV参数的子集。

5、struct   AVCodecContext{

const AVClass * av_class

  关于av_log的结构信息

 

int log_level_offset

 

enum  AVMediaType codec_type

 

const struct AVCodec * codec

 

attribute_deprecated char codec_name [32]

 

enum  AVCodecID codec_id

 

unsigned int codec_tag

 fourcc(LSB优先,所以“ABCD” - >('D'<< 24)+('C'<< 16)+('B'<< 8)+'A')。更多...

 

attribute_deprecated unsigned int stream_codec_tag

 

void * priv_data

 

struct AVCodecInternal * internal

 用于内部数据的专用上下文。更多...

 

void * opaque

 用户的私人数据可用于携带应用程序特定的东西。更多...

 

int64_t bit_rate

 平均比特率更多...

 

int bit_rate_tolerance

 允许比特流从引用偏离的位数。更多...

 

int global_quality

 编码解码器的全局质量,每帧不能更改。更多...

 

int compression_level

 

int标志

 AV_CODEC_FLAG_ *。更多...

 

int flags2

 AV_CODEC_FLAG2_ *。更多...

 

uint8_t * extradata

  一些编解码器需要/可以使用像Huffman表这样的extradata。更多...

 

int extradata_size

 

AVRational time_base

 这是表示帧时间戳的基本时间单位(以秒为单位)。更多...

 

int ticks_per_frame

 对于某些编解码器,时基比帧速率更接近现场速率。更多...

 

int延迟

 编解码延迟更多...

 

int width

  图片宽度/高度。更多...

 

int高度

 

int coded_width

 比特流宽度/高度可以不同于宽度/高度,例如更多...

 

int coded_height

 

int gop_size

 一组图片中的图片数量,或0个用于intra_only更多...

 

enum AVPixelFormat pix_fmt

  像素格式,请参阅AV_PIX_FMT_xxx。更多...

 

attribute_deprecated int me_method

 此选项什么也不做。更多...

 

void(* draw_horiz_band)(struct AVCodecContext * s,const AVFrame * src,int offset [AV_NUM_DATA_POINTERS],int y,int type,int height)

 如果非NULL,则libavcodec解码器调用“draw_horiz_band”来绘制水平带。更多...

 

枚举AVPixelFormat(* get_format)(struct AVCodecContext * s,const enum AVPixelFormat * fmt)

 回调协商pixelFormat更多...

 

int max_b_frames

 非B帧之间的最大B帧数注意:输出将相对于输入延迟max_b_frames + 1。更多...

 

float b_quant_factor

 IP和B帧之间的qscale因子如果> 0,则将使用最后一个P帧量化器(q = lastp_q * factor + offset)。更多...

 

attribute_deprecated int rc_strategy

 

attribute_deprecated int b_frame_strategy

 

float b_quant_offset

 IP和B帧之间的qscale偏移量更多...

 

int has_b_frames

  解码器中帧重排序缓冲区的大小。更多...

 

attribute_deprecated int mpeg_quant

 

float i_quant_factor

 P和I帧之间的qscale因子如果> 0,则将使用最后一个P帧量化器(q = lastp_q * factor + offset)。更多...

 

float i_quant_offset

 P和I帧之间的qscale偏移更多...

 

float lumi_masking

 亮度屏蔽(0-> disabled)更多...

 

float temporal_cplx_masking

 临时复杂掩蔽(0->禁用)更多...

 

float spatial_cplx_masking

  空间复杂度掩蔽(0-> disabled)更多...

 

float p_masking

 p块屏蔽(0-> disabled)更多...

 

float dark_masking

 黑暗掩蔽(0->禁用)更多...

 

int slice_count

 切片数更多...

 

attribute_deprecated int prediction_method

 

int * slice_offset

 帧偏移量以字节为单位更多...

 

AVRational sample_aspect_ratio

  样本宽高比(0如果未知)这是像素的宽度除以像素的高度。更多...

 

int me_cmp

  运动估计比较功能更多...

 

int me_sub_cmp

 子像素运动估计比较功能更多...

 

int mb_cmp

 宏块比较功能(不支持)更多...

 

int ildct_cmp

 隔行DCT比较功能更多...

 

int dia_size

 ME钻石尺寸和形状。更多...

 

int last_predictor_count

 以前的MV预测值(2a + 1×2a + 1平方)的数量更多...

 

attribute_deprecated int pre_me

 

int me_pre_cmp

  运动估计预制比较功能更多...

 

int pre_dia_size

 ME预制钻石尺寸和形状。更多...

 

int me_subpel_quality

  子弹ME质量更多...

 

attribute_deprecated int dtg_active_format

 DTG有效格式信息(仅在DVB MPEG-2传输流中使用的附加宽高比信息)0如果未设置。更多...

 

int me_range

 子单位最大运动估计搜索范围如果0则无限制。

attribute_deprecated int intra_quant_bias

 

attribute_deprecated int inter_quant_bias

 

int slice_flags

 切片标志

 

int mb_decision

  宏块决策模式

 

uint16_t * intra_matrix

 定制内部量化矩阵

 

uint16_t * inter_matrix

 定制互量化矩阵

}

主要的外部API结构。

6、struct   AVProfile{

int profile;

const char * name;

配置文件的简称

}

7、struct   AVCodec{

const char * name;

编解码器实现的名称。

const char * long_name

 编解码器的描述性名称,意思是比名字更人性化。

enum AVMediaType type

enum AVCodecID id

int capabilities

 编解码器功能。

const AVRational * supported_framerates

 数组支持的帧速率,或NULL(如果有的话)数组被{0,0}终止

enum AVPixelFormat * pix_fmts

 支持的像素格式的数组,如果未知,则为NULL,数组以-1

const int * supported_samplerates

 支持的音频采样器阵列,如果未知,则为NULL,数组终止于0

enum AVSampleFormat * sample_fmts

 数组支持的样本格式,或NULL如果未知,数组将被-1终止

const uint64_t * channel_layouts

 支持通道布局数组,如果未知,则返回NULL。

uint8_t max_lowres

 解码器最低支持的最小值。

const AVClass * priv_class

 AVClass为私有上下文。

const AVProfile * profiles

 数组识别的配置文件,如果未知,则为NULL,数组由{FF_PROFILE_UNKNOWN}终止

int priv_data_size

struct AVCodec * next

const AVCodecDefault * defaults

 专用编解码器默认值。

void(* init_static_data )(struct AVCodec *codec)

 初始化编解码器静态数据,从avcodec_register()调用。

int(* init )(AVCodecContext *)

int(* encode_sub )(AVCodecContext *, uint8_t *buf, int buf_size, const struct AVSubtitle *sub)

int(* encode2 )(AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr)

 将数据编码到AVPacket。

int(* decode )(AVCodecContext *, void *outdata, int *outdata_size, AVPacket *avpkt)

int(* close )(AVCodecContext *)

int(* send_frame )(AVCodecContext *avctx, const AVFrame *frame)

使用解耦的数据包/帧数据流编码API。

int(* receive_packet )(AVCodecContext *avctx, AVPacket *avpkt)

int(* receive_frame )(AVCodecContext *avctx, AVFrame *frame)

 使用解耦的数据包/帧数据流解码API。

void(* flush )(AVCodecContext *)

flush缓冲区

int caps_internal

 内部编解码器功能。

const char * bsfs

仅解码,在解码之前应用于分组的比特流筛选器的逗号分隔列表

帧级线程支持功能

int(* init_thread_copy )(AVCodecContext *)

如果已定义,则在创建线程上下文时调用它。

int(* update_thread_context )(AVCodecContext *dst, const AVCodecContext *src)

 将必要的上下文变量从以前的线程上下文复制到当前的。

}

8、struct   AVSubtitleRect{

int x;

pict的左上角,当pict未设置时未定义

int y;

pict的左上角,当pict未设置时未定义

int w;

pict的宽度,未设置pict时未定义

int h;

高度的图像,未设置pict时未定义

int nb_colors

pict中的颜色数量,未设置pict时未定义

attribute_deprecated AVPicture pict

uint8_t * data [4];

data + linesize为此字幕的位图。

int linesize [4];

enum AVSubtitleType type;

char * text;

0终止普通UTF-8文本

char * ass;

0端接ASS / SSA兼容事件线。

int  flag;

}

9、struct   AVSubtitle{

uint16_t format;

uint32_t start_display_time;

uint32_t end_display_time;

unsigned num_rects;

AVSubtitleRect ** rects

int64_t pts;

与数据包相同,在AV_TIME_BASE中。

}

10、struct   AVCodecParameters{

enum AVMediaType codec_type;

编码数据的一般类型。

enum AVCodecID codec_id;

编码数据的特定类型(使用的编解码器)。

uint32_t codec_tag;

关于编解码器的附加信息(对应于AVI FOURCC)。

uint8_t * extradata;

初始化解码器所需的额外二进制数据,依赖于编解码器。

int extradata_size;

扩展数据库内容的大小(以字节为单位)。

int format;

int64_t bit_rate;

编码数据的平均比特率(以每秒位数表示)。

int bits_per_coded_sample

编码字中每个样本的位数。

int bits_per_raw_sample

这是每个输出样本中有效位的数量。

int profile

流遵循的编解码器特定比特流限制。

int level

int width

仅仅视频有用

int height

AVRational sample_aspect_ratio

仅仅视频有用

enum AVFieldOrder field_order

仅仅视频有用

enum AVColorRange color_range

仅仅视频有用

enum AVColorPrimaries color_primaries

enum AVColorTransferCharacteristic color_trc

enum AVColorSpace color_space

enum AVChromaLocation chroma_location

int video_delay

仅仅视频有用

uint64_t channel_layout

仅仅音频有用

int channels

仅仅音频有用

int sample_rate

仅仅音频有用

int block_align

仅仅音频有用

int frame_size

仅仅音频有用

int initial_padding

仅仅音频有用

int trailing_padding

仅仅音频有用

int seek_preroll

仅仅音频有用
}

三、宏

#define AV_CODEC_PROP_INTRA_ONLY(1 << 0)

编解码器仅使用内部压缩。

#define AV_CODEC_PROP_LOSSY(1 << 1)

编解码器支持有损压缩。

#define AV_CODEC_PROP_LOSSLESS(1 << 2)

编解码器支持无损压缩。

#define AV_CODEC_PROP_REORDER(1 << 3)

编解码器支持帧重排序。

#define AV_CODEC_PROP_BITMAP_SUB(1 << 16)

字幕编解码器是基于位图的可以从AVSubtitleRect-> pict字段读取的解码AVSubtitle数据。

#define AV_CODEC_PROP_TEXT_SUB(1 << 17)

字幕编解码器是基于文本的。

#define FF_INPUT_BUFFER_PADDING_SIZE 32

 

#define FF_MIN_BUFFER_SIZE 16384

 

#define FF_MAX_B_FRAMES 16

#define AV_CODEC_FLAG_UNALIGNED(1 << 0)

允许解码器产生不符合CPU要求的数据平面的帧

#define AV_CODEC_FLAG_QSCALE(1 << 1)

使用固定的qscale。

#define AV_CODEC_FLAG_4MV(1 << 2)

H.263每MB允许/高级预测4 MV。

#define AV_CODEC_FLAG_OUTPUT_CORRUPT(1 << 3)

输出即使那些可能已损坏的帧。

#define AV_CODEC_FLAG_QPEL(1 << 4)

使用qpel MC。

#define AV_CODEC_FLAG_PASS1(1 << 9)

在第一遍模式下使用内部2通速率控制。

#define AV_CODEC_FLAG_PASS2(1 << 10)

在二次通过模式下使用内部2通速率控制。

#define AV_CODEC_FLAG_LOOP_FILTER(1 << 11)

环路滤波器。

#define AV_CODEC_FLAG_GRAY(1 << 13)

仅解码/编码灰度。

#define AV_CODEC_FLAG_PSNR(1 << 15)

编码时将设置错误[?]变量。

#define AV_CODEC_FLAG_TRUNCATED(1 << 16)

输入比特流可能在随机位置而不是仅在帧边界被截断。

#define AV_CODEC_FLAG_INTERLACED_DCT(1 << 18)

使用隔行DCT。

#define AV_CODEC_FLAG_LOW_DELAY(1 << 19)

强制低延迟

#define AV_CODEC_FLAG_GLOBAL_HEADER(1 << 22)

将全局头文件放在extradata中,而不是每个关键帧。

#define AV_CODEC_FLAG_BITEXACT(1 << 23)

只使用bitexact的东西(除了(I)DCT)。

#define AV_CODEC_FLAG_AC_PRED(1 << 24)

 H.263高级帧内编码/ MPEG-4交流预测。

#define AV_CODEC_FLAG_INTERLACED_ME(1 << 29)

 隔行运动估计

#define AV_CODEC_FLAG_CLOSED_GOP(1U << 31)

#define AV_CODEC_FLAG2_FAST(1 << 0)

 允许不符合规范的加速技巧。

#define AV_CODEC_FLAG2_NO_OUTPUT(1 << 2)

 跳过比特流编码。

#define AV_CODEC_FLAG2_LOCAL_HEADER(1 << 3)

 在每个关键帧而不是在extradata中放置全局头。

#define AV_CODEC_FLAG2_DROP_FRAME_TIMECODE(1 << 13)

 时间码采用丢帧格式。

#define AV_CODEC_FLAG2_CHUNKS(1 << 15)

 输入比特流可能在分组边界而不是仅在帧边界被截断。

#define AV_CODEC_FLAG2_IGNORE_CROP(1 << 16)

 丢弃SPS的裁剪信息。

#define AV_CODEC_FLAG2_SHOW_ALL(1 << 22)

 在第一个关键帧之前显示所有帧。

#define AV_CODEC_FLAG2_EXPORT_MVS(1 << 28)

 通过帧侧数据导出运动矢量。

#define AV_CODEC_FLAG2_SKIP_MANUAL(1 << 29)

 不要跳过样本并将跳过信息导出为边框数据。

#define AV_CODEC_FLAG2_RO_FLUSH_NOOP(1 << 30)

 不要重置ASS ReadRrder字段(字幕解码)

#define AV_CODEC_CAP_DRAW_HORIZ_BAND(1 << 0)

 解码器可以使用draw_horiz_band回调。

#define AV_CODEC_CAP_DR1(1 << 1)

 Codec使用get_buffer()分配缓冲区并支持自定义分配器。

#define AV_CODEC_CAP_TRUNCATED   (1 << 3)

#define AV_CODEC_CAP_DELAY(1 << 5)

 编码器或解码器需要在结尾使用NULL输入进行刷新,以提供完整和正确的输出。

#define AV_CODEC_CAP_SMALL_LAST_FRAME(1 << 6)

 编码器可以馈送一个较小尺寸的最终帧。

#define AV_CODEC_CAP_HWACCEL_VDPAU(1 << 7)

 编解码器可以导出HW解码数据(VDPAU)。

#define AV_CODEC_CAP_SUBFRAMES(1 << 8)

 编解码器可以每个AVPacket输出多个帧通常,分离器一次返回一个帧,不做的分离器连接到解析器,将其返回到合适的帧中。

#define AV_CODEC_CAP_EXPERIMENTAL(1 << 9)

 编解码器是实验性的,因此避免使用非实验编码器。

#define AV_CODEC_CAP_CHANNEL_CONF(1 << 10)

 编解码器应该填写通道配置和采样而不是容器。

#define AV_CODEC_CAP_FRAME_THREADS(1 << 12)

 编解码器支持帧级多线程。

#define AV_CODEC_CAP_SLICE_THREADS(1 << 13)

 编解码器支持基于片段(或基于分区的)多线程。

#define AV_CODEC_CAP_PARAM_CHANGE(1 << 14)

 编解码器支持任何时候更改的参数。

#define AV_CODEC_CAP_AUTO_THREADS(1 << 15)

 Codec支持avctx-> thread_count == 0(auto)。

#define AV_CODEC_CAP_VARIABLE_FRAME_SIZE(1 << 16)

 音频编码器支持在每个呼叫中​​接收不同数量的采样。

#define AV_CODEC_CAP_AVOID_PROBING(1 << 17)

 解码器不是探测的首选。

#define AV_CODEC_CAP_INTRA_ONLY 0x40000000

 编解码器仅在内部。

#define AV_CODEC_CAP_LOSSLESS 0x80000000

 编解码器是无损的。

#define CODEC_FLAG_UNALIGNED AV_CODEC_FLAG_UNALIGNED

 允许解码器产生不符合CPU要求的数据平面的帧

#define CODEC_FLAG_QSCALE   AV_CODEC_FLAG_QSCALE

 

#define CODEC_FLAG_4MV   AV_CODEC_FLAG_4MV

 

#define CODEC_FLAG_OUTPUT_CORRUPT   AV_CODEC_FLAG_OUTPUT_CORRUPT

 

#define CODEC_FLAG_QPEL   AV_CODEC_FLAG_QPEL

#define CODEC_FLAG_GMC   0x0020

#define CODEC_FLAG_MV0   0x0040

 

#define CODEC_FLAG_INPUT_PRESERVED   0x0100

 

#define CODEC_FLAG_PASS1   AV_CODEC_FLAG_PASS1

 

#define CODEC_FLAG_PASS2   AV_CODEC_FLAG_PASS2

 

#define CODEC_FLAG_GRAY   AV_CODEC_FLAG_GRAY

#define CODEC_FLAG_EMU_EDGE   0x4000

 

#define CODEC_FLAG_PSNR   AV_CODEC_FLAG_PSNR

 

#define CODEC_FLAG_TRUNCATED   AV_CODEC_FLAG_TRUNCATED

 

#define CODEC_FLAG_NORMALIZE_AQP   0x00020000

 

#define CODEC_FLAG_INTERLACED_DCT   AV_CODEC_FLAG_INTERLACED_DCT

 

#define CODEC_FLAG_LOW_DELAY   AV_CODEC_FLAG_LOW_DELAY

 

#define CODEC_FLAG_GLOBAL_HEADER   AV_CODEC_FLAG_GLOBAL_HEADER

 

#define CODEC_FLAG_BITEXACT   AV_CODEC_FLAG_BITEXACT

 

#define CODEC_FLAG_AC_PRED   AV_CODEC_FLAG_AC_PRED

 

#define CODEC_FLAG_LOOP_FILTER   AV_CODEC_FLAG_LOOP_FILTER

 

#define CODEC_FLAG_INTERLACED_ME   AV_CODEC_FLAG_INTERLACED_ME

 

#define CODEC_FLAG_CLOSED_GOP   AV_CODEC_FLAG_CLOSED_GOP

 

#define CODEC_FLAG2_FAST   AV_CODEC_FLAG2_FAST

 

#define CODEC_FLAG2_NO_OUTPUT   AV_CODEC_FLAG2_NO_OUTPUT

 

#define CODEC_FLAG2_LOCAL_HEADER   AV_CODEC_FLAG2_LOCAL_HEADER

 

#define CODEC_FLAG2_DROP_FRAME_TIMECODE   AV_CODEC_FLAG2_DROP_FRAME_TIMECODE

 

#define CODEC_FLAG2_IGNORE_CROP   AV_CODEC_FLAG2_IGNORE_CROP

 

#define CODEC_FLAG2_CHUNKS   AV_CODEC_FLAG2_CHUNKS

 

#define CODEC_FLAG2_SHOW_ALL   AV_CODEC_FLAG2_SHOW_ALL

 

#define CODEC_FLAG2_EXPORT_MVS   AV_CODEC_FLAG2_EXPORT_MVS

 

#define CODEC_FLAG2_SKIP_MANUAL   AV_CODEC_FLAG2_SKIP_MANUAL

#define CODEC_CAP_DRAW_HORIZ_BAND AV_CODEC_CAP_DRAW_HORIZ_BAND

 解码器可以使用draw_horiz_band回调

#define CODEC_CAP_DR1 AV_CODEC_CAP_DR1

 Codec使用get_buffer()分配缓冲区并支持自定义分配器。

#define CODEC_CAP_TRUNCATED AV_CODEC_CAP_TRUNCATED

#define CODEC_CAP_DELAY AV_CODEC_CAP_DELAY

 编码器或解码器需要在结尾使用NULL输入进行刷新,以提供完整和正确的输出。

#define CODEC_CAP_SMALL_LAST_FRAME AV_CODEC_CAP_SMALL_LAST_FRAME

 编码器可以馈送一个较小尺寸的最终帧。

#define CODEC_CAP_HWACCEL_VDPAU AV_CODEC_CAP_HWACCEL_VDPAU

 编解码器可以导出HW解码数据(VDPAU)。

#define CODEC_CAP_SUBFRAMES AV_CODEC_CAP_SUBFRAMES

 编解码器可以每个AVPacket输出多个帧通常,分离器一次返回一个帧,不做的分离器连接到解析器,将其返回到合适的帧中。

#define CODEC_CAP_EXPERIMENTAL AV_CODEC_CAP_EXPERIMENTAL

 编解码器是实验性的,因此避免使用非实验编码器。

#define CODEC_CAP_CHANNEL_CONF AV_CODEC_CAP_CHANNEL_CONF

 编解码器应该填写通道配置和采样而不是容器。

#define CODEC_CAP_NEG_LINESIZES 0x0800

#define CODEC_CAP_FRAME_THREADS AV_CODEC_CAP_FRAME_THREADS

 编解码器支持帧级多线程。

#define CODEC_CAP_SLICE_THREADS AV_CODEC_CAP_SLICE_THREADS

 编解码器支持基于片段(或基于分区的)多线程。

#define CODEC_CAP_PARAM_CHANGE AV_CODEC_CAP_PARAM_CHANGE

 编解码器支持任何时候更改的参数。

#define CODEC_CAP_AUTO_THREADS AV_CODEC_CAP_AUTO_THREADS

 Codec支持avctx-> thread_count == 0(auto)。

#define CODEC_CAP_VARIABLE_FRAME_SIZE AV_CODEC_CAP_VARIABLE_FRAME_SIZE

 音频编码器支持在每个呼叫中​​接收不同数量的采样。

#define CODEC_CAP_INTRA_ONLY AV_CODEC_CAP_INTRA_ONLY

 编解码器仅在内部。

#define CODEC_CAP_LOSSLESS AV_CODEC_CAP_LOSSLESS

 编解码器是无损的。

#define HWACCEL_CODEC_CAP_EXPERIMENTAL 0x0200

 HWAccel是实验性的,因此避免了非实验编解码器。

#define MB_TYPE_INTRA4x4   0x0001

 

#define MB_TYPE_INTRA16x16   0x0002

 

#define MB_TYPE_INTRA_PCM   0x0004

 

#define MB_TYPE_16x16   0x0008

 

#define MB_TYPE_16x8   0x0010

 

#define MB_TYPE_8x16   0x0020

 

#define MB_TYPE_8x8   0x0040

 

#define MB_TYPE_INTERLACED   0x0080

 

#define MB_TYPE_DIRECT2   0x0100

 

#define MB_TYPE_ACPRED   0x0200

 

#define MB_TYPE_GMC   0x0400

 

#define MB_TYPE_SKIP   0x0800

 

#define MB_TYPE_P0L0   0x1000

 

#define MB_TYPE_P1L0   0x2000

 

#define MB_TYPE_P0L1   0x4000

 

#define MB_TYPE_P1L1   0x8000

 

#define MB_TYPE_L0   (MB_TYPE_P0L0 | MB_TYPE_P1L0)

 

#define MB_TYPE_L1   (MB_TYPE_P0L1 | MB_TYPE_P1L1)

 

#define MB_TYPE_L0L1   (MB_TYPE_L0 | MB_TYPE_L1)

 

#define MB_TYPE_QUANT   0x00010000

 

#define MB_TYPE_CBP   0x00020000

 

#define FF_QSCALE_TYPE_MPEG1   0

 

#define FF_QSCALE_TYPE_MPEG2   1

 

#define FF_QSCALE_TYPE_H264   2

 

#define FF_QSCALE_TYPE_VP56   3

 

#define AV_GET_BUFFER_FLAG_REF   (1 << 0)

  解码器将保留对帧的引用,并且可以稍后重用它。

 

#define AV_SUBTITLE_FLAG_FORCED   0x00000001

四、枚举

enum  AVCodecID { 

  AV_CODEC_ID_NONEAV_CODEC_ID_MPEG1VIDEOAV_CODEC_ID_MPEG2VIDEOAV_CODEC_ID_H261

  AV_CODEC_ID_H263AV_CODEC_ID_RV10AV_CODEC_ID_RV20AV_CODEC_ID_MJPEG

  AV_CODEC_ID_MJPEGBAV_CODEC_ID_LJPEGAV_CODEC_ID_SP5XAV_CODEC_ID_JPEGLS

  AV_CODEC_ID_MPEG4AV_CODEC_ID_RAWVIDEOAV_CODEC_ID_MSMPEG4V1AV_CODEC_ID_MSMPEG4V2

  AV_CODEC_ID_MSMPEG4V3AV_CODEC_ID_WMV1AV_CODEC_ID_WMV2AV_CODEC_ID_H263P

  AV_CODEC_ID_H263IAV_CODEC_ID_FLV1AV_CODEC_ID_SVQ1AV_CODEC_ID_SVQ3

  AV_CODEC_ID_DVVIDEOAV_CODEC_ID_HUFFYUVAV_CODEC_ID_CYUVAV_CODEC_ID_H264

  AV_CODEC_ID_INDEO3AV_CODEC_ID_VP3AV_CODEC_ID_THEORAAV_CODEC_ID_ASV1

  AV_CODEC_ID_ASV2AV_CODEC_ID_FFV1AV_CODEC_ID_4XMAV_CODEC_ID_VCR1

  AV_CODEC_ID_CLJRAV_CODEC_ID_MDECAV_CODEC_ID_ROQAV_CODEC_ID_INTERPLAY_VIDEO

  AV_CODEC_ID_XAN_WC3AV_CODEC_ID_XAN_WC4AV_CODEC_ID_RPZAAV_CODEC_ID_CINEPAK

  AV_CODEC_ID_WS_VQAAV_CODEC_ID_MSRLEAV_CODEC_ID_MSVIDEO1AV_CODEC_ID_IDCIN

  AV_CODEC_ID_8BPSAV_CODEC_ID_SMCAV_CODEC_ID_FLICAV_CODEC_ID_TRUEMOTION1

  AV_CODEC_ID_VMDVIDEOAV_CODEC_ID_MSZHAV_CODEC_ID_ZLIBAV_CODEC_ID_QTRLE

  AV_CODEC_ID_TSCCAV_CODEC_ID_ULTIAV_CODEC_ID_QDRAWAV_CODEC_ID_VIXL

  AV_CODEC_ID_QPEGAV_CODEC_ID_PNGAV_CODEC_ID_PPMAV_CODEC_ID_PBM

  AV_CODEC_ID_PGMAV_CODEC_ID_PGMYUVAV_CODEC_ID_PAMAV_CODEC_ID_FFVHUFF

  AV_CODEC_ID_RV30AV_CODEC_ID_RV40AV_CODEC_ID_VC1AV_CODEC_ID_WMV3

  AV_CODEC_ID_LOCOAV_CODEC_ID_WNV1AV_CODEC_ID_AASCAV_CODEC_ID_INDEO2

  AV_CODEC_ID_FRAPSAV_CODEC_ID_TRUEMOTION2AV_CODEC_ID_BMPAV_CODEC_ID_CSCD

  AV_CODEC_ID_MMVIDEOAV_CODEC_ID_ZMBVAV_CODEC_ID_AVSAV_CODEC_ID_SMACKVIDEO

  AV_CODEC_ID_NUVAV_CODEC_ID_KMVCAV_CODEC_ID_FLASHSVAV_CODEC_ID_CAVS

  AV_CODEC_ID_JPEG2000AV_CODEC_ID_VMNCAV_CODEC_ID_VP5AV_CODEC_ID_VP6

  AV_CODEC_ID_VP6FAV_CODEC_ID_TARGAAV_CODEC_ID_DSICINVIDEOAV_CODEC_ID_TIERTEXSEQVIDEO

  AV_CODEC_ID_TIFFAV_CODEC_ID_GIFAV_CODEC_ID_DXAAV_CODEC_ID_DNXHD

  AV_CODEC_ID_THPAV_CODEC_ID_SGIAV_CODEC_ID_C93AV_CODEC_ID_BETHSOFTVID

  AV_CODEC_ID_PTXAV_CODEC_ID_TXDAV_CODEC_ID_VP6AAV_CODEC_ID_AMV

  AV_CODEC_ID_VBAV_CODEC_ID_PCXAV_CODEC_ID_SUNRASTAV_CODEC_ID_INDEO4

  AV_CODEC_ID_INDEO5AV_CODEC_ID_MIMICAV_CODEC_ID_RL2AV_CODEC_ID_ESCAPE124

  AV_CODEC_ID_DIRACAV_CODEC_ID_BFIAV_CODEC_ID_CMVAV_CODEC_ID_MOTIONPIXELS

  AV_CODEC_ID_TGVAV_CODEC_ID_TGQAV_CODEC_ID_TQIAV_CODEC_ID_AURA

  AV_CODEC_ID_AURA2AV_CODEC_ID_V210XAV_CODEC_ID_TMVAV_CODEC_ID_V210

  AV_CODEC_ID_DPXAV_CODEC_ID_MADAV_CODEC_ID_FRWUAV_CODEC_ID_FLASHSV2

  AV_CODEC_ID_CDGRAPHICSAV_CODEC_ID_R210AV_CODEC_ID_ANMAV_CODEC_ID_BINKVIDEO

  AV_CODEC_ID_IFF_ILBMAV_CODEC_ID_KGV1AV_CODEC_ID_YOPAV_CODEC_ID_VP8

  AV_CODEC_ID_PICTORAV_CODEC_ID_ANSIAV_CODEC_ID_A64_MULTIAV_CODEC_ID_A64_MULTI5

  AV_CODEC_ID_R10KAV_CODEC_ID_MXPEGAV_CODEC_ID_LAGARITHAV_CODEC_ID_PRORES

  AV_CODEC_ID_JVAV_CODEC_ID_DFAAV_CODEC_ID_WMV3IMAGEAV_CODEC_ID_VC1IMAGE

  AV_CODEC_ID_UTVIDEOAV_CODEC_ID_BMV_VIDEOAV_CODEC_ID_VBLEAV_CODEC_ID_DXTORY

  AV_CODEC_ID_V410AV_CODEC_ID_XWDAV_CODEC_ID_CDXLAV_CODEC_ID_XBM

  AV_CODEC_ID_ZEROCODECAV_CODEC_ID_MSS1AV_CODEC_ID_MSA1AV_CODEC_ID_TSCC2

  AV_CODEC_ID_MTS2AV_CODEC_ID_CLLCAV_CODEC_ID_MSS2AV_CODEC_ID_VP9

  AV_CODEC_ID_AICAV_CODEC_ID_ESCAPE130AV_CODEC_ID_G2MAV_CODEC_ID_WEBP

  AV_CODEC_ID_HNM4_VIDEOAV_CODEC_ID_HEVCAV_CODEC_ID_FICAV_CODEC_ID_ALIAS_PIX

  AV_CODEC_ID_BRENDER_PIXAV_CODEC_ID_PAF_VIDEOAV_CODEC_ID_EXRAV_CODEC_ID_VP7

  AV_CODEC_ID_SANMAV_CODEC_ID_SGIRLEAV_CODEC_ID_MVC1AV_CODEC_ID_MVC2

  AV_CODEC_ID_HQXAV_CODEC_ID_TDSCAV_CODEC_ID_HQ_HQAAV_CODEC_ID_HAP

  AV_CODEC_ID_DDSAV_CODEC_ID_DXVAV_CODEC_ID_SCREENPRESSOAV_CODEC_ID_RSCC

  AV_CODEC_ID_Y41P = 0x8000, AV_CODEC_ID_AVRPAV_CODEC_ID_012VAV_CODEC_ID_AVUI

  AV_CODEC_ID_AYUVAV_CODEC_ID_TARGA_Y216AV_CODEC_ID_V308AV_CODEC_ID_V408

  AV_CODEC_ID_YUV4AV_CODEC_ID_AVRNAV_CODEC_ID_CPIAAV_CODEC_ID_XFACE

  AV_CODEC_ID_SNOWAV_CODEC_ID_SMVJPEGAV_CODEC_ID_APNGAV_CODEC_ID_DAALA

  AV_CODEC_ID_CFHDAV_CODEC_ID_TRUEMOTION2RTAV_CODEC_ID_M101AV_CODEC_ID_MAGICYUV

  AV_CODEC_ID_SHEERVIDEOAV_CODEC_ID_YLCAV_CODEC_ID_PSDAV_CODEC_ID_PIXLET

  AV_CODEC_ID_SPEEDHQAV_CODEC_ID_FMVCAV_CODEC_ID_SCPRAV_CODEC_ID_CLEARVIDEO

  AV_CODEC_ID_XPMAV_CODEC_ID_AV1AV_CODEC_ID_BITPACKEDAV_CODEC_ID_MSCC

  AV_CODEC_ID_SRGCAV_CODEC_ID_SVGAV_CODEC_ID_FIRST_AUDIO =
0x10000, AV_CODEC_ID_PCM_S16LE =
0x10000, 

  AV_CODEC_ID_PCM_S16BEAV_CODEC_ID_PCM_U16LEAV_CODEC_ID_PCM_U16BEAV_CODEC_ID_PCM_S8

  AV_CODEC_ID_PCM_U8AV_CODEC_ID_PCM_MULAWAV_CODEC_ID_PCM_ALAWAV_CODEC_ID_PCM_S32LE

  AV_CODEC_ID_PCM_S32BEAV_CODEC_ID_PCM_U32LEAV_CODEC_ID_PCM_U32BEAV_CODEC_ID_PCM_S24LE

  AV_CODEC_ID_PCM_S24BEAV_CODEC_ID_PCM_U24LEAV_CODEC_ID_PCM_U24BEAV_CODEC_ID_PCM_S24DAUD

  AV_CODEC_ID_PCM_ZORKAV_CODEC_ID_PCM_S16LE_PLANARAV_CODEC_ID_PCM_DVDAV_CODEC_ID_PCM_F32BE

  AV_CODEC_ID_PCM_F32LEAV_CODEC_ID_PCM_F64BEAV_CODEC_ID_PCM_F64LEAV_CODEC_ID_PCM_BLURAY

  AV_CODEC_ID_PCM_LXFAV_CODEC_ID_S302MAV_CODEC_ID_PCM_S8_PLANARAV_CODEC_ID_PCM_S24LE_PLANAR

  AV_CODEC_ID_PCM_S32LE_PLANARAV_CODEC_ID_PCM_S16BE_PLANARAV_CODEC_ID_PCM_S64LE =
0x10800, AV_CODEC_ID_PCM_S64BE

  AV_CODEC_ID_PCM_F16LEAV_CODEC_ID_PCM_F24LEAV_CODEC_ID_ADPCM_IMA_QT =
0x11000, AV_CODEC_ID_ADPCM_IMA_WAV

  AV_CODEC_ID_ADPCM_IMA_DK3AV_CODEC_ID_ADPCM_IMA_DK4AV_CODEC_ID_ADPCM_IMA_WSAV_CODEC_ID_ADPCM_IMA_SMJPEG

  AV_CODEC_ID_ADPCM_MSAV_CODEC_ID_ADPCM_4XMAV_CODEC_ID_ADPCM_XAAV_CODEC_ID_ADPCM_ADX

  AV_CODEC_ID_ADPCM_EAAV_CODEC_ID_ADPCM_G726AV_CODEC_ID_ADPCM_CTAV_CODEC_ID_ADPCM_SWF

  AV_CODEC_ID_ADPCM_YAMAHAAV_CODEC_ID_ADPCM_SBPRO_4AV_CODEC_ID_ADPCM_SBPRO_3AV_CODEC_ID_ADPCM_SBPRO_2

  AV_CODEC_ID_ADPCM_THPAV_CODEC_ID_ADPCM_IMA_AMVAV_CODEC_ID_ADPCM_EA_R1AV_CODEC_ID_ADPCM_EA_R3

  AV_CODEC_ID_ADPCM_EA_R2AV_CODEC_ID_ADPCM_IMA_EA_SEADAV_CODEC_ID_ADPCM_IMA_EA_EACSAV_CODEC_ID_ADPCM_EA_XAS

  AV_CODEC_ID_ADPCM_EA_MAXIS_XAAV_CODEC_ID_ADPCM_IMA_ISSAV_CODEC_ID_ADPCM_G722AV_CODEC_ID_ADPCM_IMA_APC

  AV_CODEC_ID_ADPCM_VIMAAV_CODEC_ID_VIMA =
AV_CODEC_ID_ADPCM_VIMA, AV_CODEC_ID_ADPCM_AFC =
0x11800, AV_CODEC_ID_ADPCM_IMA_OKI

  AV_CODEC_ID_ADPCM_DTKAV_CODEC_ID_ADPCM_IMA_RADAV_CODEC_ID_ADPCM_G726LEAV_CODEC_ID_ADPCM_THP_LE

  AV_CODEC_ID_ADPCM_PSXAV_CODEC_ID_ADPCM_AICAAV_CODEC_ID_ADPCM_IMA_DAT4AV_CODEC_ID_ADPCM_MTAF

  AV_CODEC_ID_AMR_NB =
0x12000, AV_CODEC_ID_AMR_WBAV_CODEC_ID_RA_144 =
0x13000, AV_CODEC_ID_RA_288

  AV_CODEC_ID_ROQ_DPCM =
0x14000, AV_CODEC_ID_INTERPLAY_DPCMAV_CODEC_ID_XAN_DPCMAV_CODEC_ID_SOL_DPCM

  AV_CODEC_ID_SDX2_DPCM =
0x14800, AV_CODEC_ID_MP2 =
0x15000, AV_CODEC_ID_MP3AV_CODEC_ID_AAC

  AV_CODEC_ID_AC3AV_CODEC_ID_DTSAV_CODEC_ID_VORBISAV_CODEC_ID_DVAUDIO

  AV_CODEC_ID_WMAV1AV_CODEC_ID_WMAV2AV_CODEC_ID_MACE3AV_CODEC_ID_MACE6

  AV_CODEC_ID_VMDAUDIOAV_CODEC_ID_FLACAV_CODEC_ID_MP3ADUAV_CODEC_ID_MP3ON4

  AV_CODEC_ID_SHORTENAV_CODEC_ID_ALACAV_CODEC_ID_WESTWOOD_SND1AV_CODEC_ID_GSM

  AV_CODEC_ID_QDM2AV_CODEC_ID_COOKAV_CODEC_ID_TRUESPEECHAV_CODEC_ID_TTA

  AV_CODEC_ID_SMACKAUDIOAV_CODEC_ID_QCELPAV_CODEC_ID_WAVPACKAV_CODEC_ID_DSICINAUDIO

  AV_CODEC_ID_IMCAV_CODEC_ID_MUSEPACK7AV_CODEC_ID_MLPAV_CODEC_ID_GSM_MS

  AV_CODEC_ID_ATRAC3AV_CODEC_ID_VOXWAREAV_CODEC_ID_APEAV_CODEC_ID_NELLYMOSER

  AV_CODEC_ID_MUSEPACK8AV_CODEC_ID_SPEEXAV_CODEC_ID_WMAVOICEAV_CODEC_ID_WMAPRO

  AV_CODEC_ID_WMALOSSLESSAV_CODEC_ID_ATRAC3PAV_CODEC_ID_EAC3AV_CODEC_ID_SIPR

  AV_CODEC_ID_MP1AV_CODEC_ID_TWINVQAV_CODEC_ID_TRUEHDAV_CODEC_ID_MP4ALS

  AV_CODEC_ID_ATRAC1AV_CODEC_ID_BINKAUDIO_RDFTAV_CODEC_ID_BINKAUDIO_DCTAV_CODEC_ID_AAC_LATM

  AV_CODEC_ID_QDMCAV_CODEC_ID_CELTAV_CODEC_ID_G723_1AV_CODEC_ID_G729

  AV_CODEC_ID_8SVX_EXPAV_CODEC_ID_8SVX_FIBAV_CODEC_ID_BMV_AUDIOAV_CODEC_ID_RALF

  AV_CODEC_ID_IACAV_CODEC_ID_ILBCAV_CODEC_ID_OPUSAV_CODEC_ID_COMFORT_NOISE

  AV_CODEC_ID_TAKAV_CODEC_ID_METASOUNDAV_CODEC_ID_PAF_AUDIOAV_CODEC_ID_ON2AVC

  AV_CODEC_ID_DSS_SPAV_CODEC_ID_FFWAVESYNTH =
0x15800, AV_CODEC_ID_SONICAV_CODEC_ID_SONIC_LS

  AV_CODEC_ID_EVRCAV_CODEC_ID_SMVAV_CODEC_ID_DSD_LSBFAV_CODEC_ID_DSD_MSBF

  AV_CODEC_ID_DSD_LSBF_PLANARAV_CODEC_ID_DSD_MSBF_PLANARAV_CODEC_ID_4GVAV_CODEC_ID_INTERPLAY_ACM

  AV_CODEC_ID_XMA1AV_CODEC_ID_XMA2AV_CODEC_ID_DSTAV_CODEC_ID_ATRAC3AL

  AV_CODEC_ID_ATRAC3PALAV_CODEC_ID_FIRST_SUBTITLE =
0x17000, AV_CODEC_ID_DVD_SUBTITLE =
0x17000, AV_CODEC_ID_DVB_SUBTITLE

  AV_CODEC_ID_TEXTAV_CODEC_ID_XSUBAV_CODEC_ID_SSAAV_CODEC_ID_MOV_TEXT

  AV_CODEC_ID_HDMV_PGS_SUBTITLEAV_CODEC_ID_DVB_TELETEXTAV_CODEC_ID_SRTAV_CODEC_ID_MICRODVD =
0x17800, 

  AV_CODEC_ID_EIA_608AV_CODEC_ID_JACOSUBAV_CODEC_ID_SAMIAV_CODEC_ID_REALTEXT

  AV_CODEC_ID_STLAV_CODEC_ID_SUBVIEWER1AV_CODEC_ID_SUBVIEWERAV_CODEC_ID_SUBRIP

  AV_CODEC_ID_WEBVTTAV_CODEC_ID_MPL2AV_CODEC_ID_VPLAYERAV_CODEC_ID_PJS

  AV_CODEC_ID_ASSAV_CODEC_ID_HDMV_TEXT_SUBTITLEAV_CODEC_ID_FIRST_UNKNOWN =
0x18000, AV_CODEC_ID_TTF =
0x18000, 

  AV_CODEC_ID_SCTE_35AV_CODEC_ID_BINTEXT =
0x18800, AV_CODEC_ID_XBINAV_CODEC_ID_IDF

  AV_CODEC_ID_OTFAV_CODEC_ID_SMPTE_KLVAV_CODEC_ID_DVD_NAVAV_CODEC_ID_TIMED_ID3

  AV_CODEC_ID_BIN_DATAAV_CODEC_ID_PROBE =
0x19000, AV_CODEC_ID_MPEG2TS =
0x20000, AV_CODEC_ID_MPEG4SYSTEMS =
0x20001, 

  AV_CODEC_ID_FFMETADATA = 0x21000, AV_CODEC_ID_WRAPPED_AVFRAME =
0x21001 

}
识别比特流的语法和语义。

enum  AVAudioServiceType { 

  AV_AUDIO_SERVICE_TYPE_MAIN =
0, AV_AUDIO_SERVICE_TYPE_EFFECTS =
1, AV_AUDIO_SERVICE_TYPE_VISUALLY_IMPAIRED =
2, AV_AUDIO_SERVICE_TYPE_HEARING_IMPAIRED =
3, 

  AV_AUDIO_SERVICE_TYPE_DIALOGUE =
4, AV_AUDIO_SERVICE_TYPE_COMMENTARY =
5, AV_AUDIO_SERVICE_TYPE_EMERGENCY =
6, AV_AUDIO_SERVICE_TYPE_VOICE_OVER =
7, 

  AV_AUDIO_SERVICE_TYPE_KARAOKE =
8, AV_AUDIO_SERVICE_TYPE_NB 

}
enum  AVFieldOrder { 

  AV_FIELD_UNKNOWNAV_FIELD_PROGRESSIVEAV_FIELD_TTAV_FIELD_BB

  AV_FIELD_TBAV_FIELD_BT 

}
enum  AVSubtitleType { SUBTITLE_NONESUBTITLE_BITMAPSUBTITLE_TEXTSUBTITLE_ASS }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: