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

一、模块
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 }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值