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

xiaoxiao2021-02-28  54

一、模块 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_NONE, AV_CODEC_ID_MPEG1VIDEO, AV_CODEC_ID_MPEG2VIDEO, AV_CODEC_ID_H261,    AV_CODEC_ID_H263, AV_CODEC_ID_RV10, AV_CODEC_ID_RV20, AV_CODEC_ID_MJPEG,    AV_CODEC_ID_MJPEGB, AV_CODEC_ID_LJPEG, AV_CODEC_ID_SP5X, AV_CODEC_ID_JPEGLS,    AV_CODEC_ID_MPEG4, AV_CODEC_ID_RAWVIDEO, AV_CODEC_ID_MSMPEG4V1, AV_CODEC_ID_MSMPEG4V2,    AV_CODEC_ID_MSMPEG4V3, AV_CODEC_ID_WMV1, AV_CODEC_ID_WMV2, AV_CODEC_ID_H263P,    AV_CODEC_ID_H263I, AV_CODEC_ID_FLV1, AV_CODEC_ID_SVQ1, AV_CODEC_ID_SVQ3,    AV_CODEC_ID_DVVIDEO, AV_CODEC_ID_HUFFYUV, AV_CODEC_ID_CYUV, AV_CODEC_ID_H264,    AV_CODEC_ID_INDEO3, AV_CODEC_ID_VP3, AV_CODEC_ID_THEORA, AV_CODEC_ID_ASV1,    AV_CODEC_ID_ASV2, AV_CODEC_ID_FFV1, AV_CODEC_ID_4XM, AV_CODEC_ID_VCR1,    AV_CODEC_ID_CLJR, AV_CODEC_ID_MDEC, AV_CODEC_ID_ROQ, AV_CODEC_ID_INTERPLAY_VIDEO,    AV_CODEC_ID_XAN_WC3, AV_CODEC_ID_XAN_WC4, AV_CODEC_ID_RPZA, AV_CODEC_ID_CINEPAK,    AV_CODEC_ID_WS_VQA, AV_CODEC_ID_MSRLE, AV_CODEC_ID_MSVIDEO1, AV_CODEC_ID_IDCIN,    AV_CODEC_ID_8BPS, AV_CODEC_ID_SMC, AV_CODEC_ID_FLIC, AV_CODEC_ID_TRUEMOTION1,    AV_CODEC_ID_VMDVIDEO, AV_CODEC_ID_MSZH, AV_CODEC_ID_ZLIB, AV_CODEC_ID_QTRLE,    AV_CODEC_ID_TSCC, AV_CODEC_ID_ULTI, AV_CODEC_ID_QDRAW, AV_CODEC_ID_VIXL,    AV_CODEC_ID_QPEG, AV_CODEC_ID_PNG, AV_CODEC_ID_PPM, AV_CODEC_ID_PBM,    AV_CODEC_ID_PGM, AV_CODEC_ID_PGMYUV, AV_CODEC_ID_PAM, AV_CODEC_ID_FFVHUFF,    AV_CODEC_ID_RV30, AV_CODEC_ID_RV40, AV_CODEC_ID_VC1, AV_CODEC_ID_WMV3,    AV_CODEC_ID_LOCO, AV_CODEC_ID_WNV1, AV_CODEC_ID_AASC, AV_CODEC_ID_INDEO2,    AV_CODEC_ID_FRAPS, AV_CODEC_ID_TRUEMOTION2, AV_CODEC_ID_BMP, AV_CODEC_ID_CSCD,    AV_CODEC_ID_MMVIDEO, AV_CODEC_ID_ZMBV, AV_CODEC_ID_AVS, AV_CODEC_ID_SMACKVIDEO,    AV_CODEC_ID_NUV, AV_CODEC_ID_KMVC, AV_CODEC_ID_FLASHSV, AV_CODEC_ID_CAVS,    AV_CODEC_ID_JPEG2000, AV_CODEC_ID_VMNC, AV_CODEC_ID_VP5, AV_CODEC_ID_VP6,    AV_CODEC_ID_VP6F, AV_CODEC_ID_TARGA, AV_CODEC_ID_DSICINVIDEO, AV_CODEC_ID_TIERTEXSEQVIDEO,    AV_CODEC_ID_TIFF, AV_CODEC_ID_GIF, AV_CODEC_ID_DXA, AV_CODEC_ID_DNXHD,    AV_CODEC_ID_THP, AV_CODEC_ID_SGI, AV_CODEC_ID_C93, AV_CODEC_ID_BETHSOFTVID,    AV_CODEC_ID_PTX, AV_CODEC_ID_TXD, AV_CODEC_ID_VP6A, AV_CODEC_ID_AMV,    AV_CODEC_ID_VB, AV_CODEC_ID_PCX, AV_CODEC_ID_SUNRAST, AV_CODEC_ID_INDEO4,    AV_CODEC_ID_INDEO5, AV_CODEC_ID_MIMIC, AV_CODEC_ID_RL2, AV_CODEC_ID_ESCAPE124,    AV_CODEC_ID_DIRAC, AV_CODEC_ID_BFI, AV_CODEC_ID_CMV, AV_CODEC_ID_MOTIONPIXELS,    AV_CODEC_ID_TGV, AV_CODEC_ID_TGQ, AV_CODEC_ID_TQI, AV_CODEC_ID_AURA,    AV_CODEC_ID_AURA2, AV_CODEC_ID_V210X, AV_CODEC_ID_TMV, AV_CODEC_ID_V210,    AV_CODEC_ID_DPX, AV_CODEC_ID_MAD, AV_CODEC_ID_FRWU, AV_CODEC_ID_FLASHSV2,    AV_CODEC_ID_CDGRAPHICS, AV_CODEC_ID_R210, AV_CODEC_ID_ANM, AV_CODEC_ID_BINKVIDEO,    AV_CODEC_ID_IFF_ILBM, AV_CODEC_ID_KGV1, AV_CODEC_ID_YOP, AV_CODEC_ID_VP8,    AV_CODEC_ID_PICTOR, AV_CODEC_ID_ANSI, AV_CODEC_ID_A64_MULTI, AV_CODEC_ID_A64_MULTI5,    AV_CODEC_ID_R10K, AV_CODEC_ID_MXPEG, AV_CODEC_ID_LAGARITH, AV_CODEC_ID_PRORES,    AV_CODEC_ID_JV, AV_CODEC_ID_DFA, AV_CODEC_ID_WMV3IMAGE, AV_CODEC_ID_VC1IMAGE,    AV_CODEC_ID_UTVIDEO, AV_CODEC_ID_BMV_VIDEO, AV_CODEC_ID_VBLE, AV_CODEC_ID_DXTORY,    AV_CODEC_ID_V410, AV_CODEC_ID_XWD, AV_CODEC_ID_CDXL, AV_CODEC_ID_XBM,    AV_CODEC_ID_ZEROCODEC, AV_CODEC_ID_MSS1, AV_CODEC_ID_MSA1, AV_CODEC_ID_TSCC2,    AV_CODEC_ID_MTS2, AV_CODEC_ID_CLLC, AV_CODEC_ID_MSS2, AV_CODEC_ID_VP9,    AV_CODEC_ID_AIC, AV_CODEC_ID_ESCAPE130, AV_CODEC_ID_G2M, AV_CODEC_ID_WEBP,    AV_CODEC_ID_HNM4_VIDEO, AV_CODEC_ID_HEVC, AV_CODEC_ID_FIC, AV_CODEC_ID_ALIAS_PIX,    AV_CODEC_ID_BRENDER_PIX, AV_CODEC_ID_PAF_VIDEO, AV_CODEC_ID_EXR, AV_CODEC_ID_VP7,    AV_CODEC_ID_SANM, AV_CODEC_ID_SGIRLE, AV_CODEC_ID_MVC1, AV_CODEC_ID_MVC2,    AV_CODEC_ID_HQX, AV_CODEC_ID_TDSC, AV_CODEC_ID_HQ_HQA, AV_CODEC_ID_HAP,    AV_CODEC_ID_DDS, AV_CODEC_ID_DXV, AV_CODEC_ID_SCREENPRESSO, AV_CODEC_ID_RSCC,    AV_CODEC_ID_Y41P = 0x8000, AV_CODEC_ID_AVRP, AV_CODEC_ID_012V, AV_CODEC_ID_AVUI,    AV_CODEC_ID_AYUV, AV_CODEC_ID_TARGA_Y216, AV_CODEC_ID_V308, AV_CODEC_ID_V408,    AV_CODEC_ID_YUV4, AV_CODEC_ID_AVRN, AV_CODEC_ID_CPIA, AV_CODEC_ID_XFACE,    AV_CODEC_ID_SNOW, AV_CODEC_ID_SMVJPEG, AV_CODEC_ID_APNG, AV_CODEC_ID_DAALA,    AV_CODEC_ID_CFHD, AV_CODEC_ID_TRUEMOTION2RT, AV_CODEC_ID_M101, AV_CODEC_ID_MAGICYUV,    AV_CODEC_ID_SHEERVIDEO, AV_CODEC_ID_YLC, AV_CODEC_ID_PSD, AV_CODEC_ID_PIXLET,    AV_CODEC_ID_SPEEDHQ, AV_CODEC_ID_FMVC, AV_CODEC_ID_SCPR, AV_CODEC_ID_CLEARVIDEO,    AV_CODEC_ID_XPM, AV_CODEC_ID_AV1, AV_CODEC_ID_BITPACKED, AV_CODEC_ID_MSCC,    AV_CODEC_ID_SRGC, AV_CODEC_ID_SVG, AV_CODEC_ID_FIRST_AUDIO = 0x10000, AV_CODEC_ID_PCM_S16LE = 0x10000,    AV_CODEC_ID_PCM_S16BE, AV_CODEC_ID_PCM_U16LE, AV_CODEC_ID_PCM_U16BE, AV_CODEC_ID_PCM_S8,    AV_CODEC_ID_PCM_U8, AV_CODEC_ID_PCM_MULAW, AV_CODEC_ID_PCM_ALAW, AV_CODEC_ID_PCM_S32LE,    AV_CODEC_ID_PCM_S32BE, AV_CODEC_ID_PCM_U32LE, AV_CODEC_ID_PCM_U32BE, AV_CODEC_ID_PCM_S24LE,    AV_CODEC_ID_PCM_S24BE, AV_CODEC_ID_PCM_U24LE, AV_CODEC_ID_PCM_U24BE, AV_CODEC_ID_PCM_S24DAUD,    AV_CODEC_ID_PCM_ZORK, AV_CODEC_ID_PCM_S16LE_PLANAR, AV_CODEC_ID_PCM_DVD, AV_CODEC_ID_PCM_F32BE,    AV_CODEC_ID_PCM_F32LE, AV_CODEC_ID_PCM_F64BE, AV_CODEC_ID_PCM_F64LE, AV_CODEC_ID_PCM_BLURAY,    AV_CODEC_ID_PCM_LXF, AV_CODEC_ID_S302M, AV_CODEC_ID_PCM_S8_PLANAR, AV_CODEC_ID_PCM_S24LE_PLANAR,    AV_CODEC_ID_PCM_S32LE_PLANAR, AV_CODEC_ID_PCM_S16BE_PLANAR, AV_CODEC_ID_PCM_S64LE = 0x10800, AV_CODEC_ID_PCM_S64BE,    AV_CODEC_ID_PCM_F16LE, AV_CODEC_ID_PCM_F24LE, AV_CODEC_ID_ADPCM_IMA_QT = 0x11000, AV_CODEC_ID_ADPCM_IMA_WAV,    AV_CODEC_ID_ADPCM_IMA_DK3, AV_CODEC_ID_ADPCM_IMA_DK4, AV_CODEC_ID_ADPCM_IMA_WS, AV_CODEC_ID_ADPCM_IMA_SMJPEG,    AV_CODEC_ID_ADPCM_MS, AV_CODEC_ID_ADPCM_4XM, AV_CODEC_ID_ADPCM_XA, AV_CODEC_ID_ADPCM_ADX,    AV_CODEC_ID_ADPCM_EA, AV_CODEC_ID_ADPCM_G726, AV_CODEC_ID_ADPCM_CT, AV_CODEC_ID_ADPCM_SWF,    AV_CODEC_ID_ADPCM_YAMAHA, AV_CODEC_ID_ADPCM_SBPRO_4, AV_CODEC_ID_ADPCM_SBPRO_3, AV_CODEC_ID_ADPCM_SBPRO_2,    AV_CODEC_ID_ADPCM_THP, AV_CODEC_ID_ADPCM_IMA_AMV, AV_CODEC_ID_ADPCM_EA_R1, AV_CODEC_ID_ADPCM_EA_R3,    AV_CODEC_ID_ADPCM_EA_R2, AV_CODEC_ID_ADPCM_IMA_EA_SEAD, AV_CODEC_ID_ADPCM_IMA_EA_EACS, AV_CODEC_ID_ADPCM_EA_XAS,    AV_CODEC_ID_ADPCM_EA_MAXIS_XA, AV_CODEC_ID_ADPCM_IMA_ISS, AV_CODEC_ID_ADPCM_G722, AV_CODEC_ID_ADPCM_IMA_APC,    AV_CODEC_ID_ADPCM_VIMA, AV_CODEC_ID_VIMA = AV_CODEC_ID_ADPCM_VIMA, AV_CODEC_ID_ADPCM_AFC = 0x11800, AV_CODEC_ID_ADPCM_IMA_OKI,    AV_CODEC_ID_ADPCM_DTK, AV_CODEC_ID_ADPCM_IMA_RAD, AV_CODEC_ID_ADPCM_G726LE, AV_CODEC_ID_ADPCM_THP_LE,    AV_CODEC_ID_ADPCM_PSX, AV_CODEC_ID_ADPCM_AICA, AV_CODEC_ID_ADPCM_IMA_DAT4, AV_CODEC_ID_ADPCM_MTAF,    AV_CODEC_ID_AMR_NB = 0x12000, AV_CODEC_ID_AMR_WB, AV_CODEC_ID_RA_144 = 0x13000, AV_CODEC_ID_RA_288,    AV_CODEC_ID_ROQ_DPCM = 0x14000, AV_CODEC_ID_INTERPLAY_DPCM, AV_CODEC_ID_XAN_DPCM, AV_CODEC_ID_SOL_DPCM,    AV_CODEC_ID_SDX2_DPCM = 0x14800, AV_CODEC_ID_MP2 = 0x15000, AV_CODEC_ID_MP3, AV_CODEC_ID_AAC,    AV_CODEC_ID_AC3, AV_CODEC_ID_DTS, AV_CODEC_ID_VORBIS, AV_CODEC_ID_DVAUDIO,    AV_CODEC_ID_WMAV1, AV_CODEC_ID_WMAV2, AV_CODEC_ID_MACE3, AV_CODEC_ID_MACE6,    AV_CODEC_ID_VMDAUDIO, AV_CODEC_ID_FLAC, AV_CODEC_ID_MP3ADU, AV_CODEC_ID_MP3ON4,    AV_CODEC_ID_SHORTEN, AV_CODEC_ID_ALAC, AV_CODEC_ID_WESTWOOD_SND1, AV_CODEC_ID_GSM,    AV_CODEC_ID_QDM2, AV_CODEC_ID_COOK, AV_CODEC_ID_TRUESPEECH, AV_CODEC_ID_TTA,    AV_CODEC_ID_SMACKAUDIO, AV_CODEC_ID_QCELP, AV_CODEC_ID_WAVPACK, AV_CODEC_ID_DSICINAUDIO,    AV_CODEC_ID_IMC, AV_CODEC_ID_MUSEPACK7, AV_CODEC_ID_MLP, AV_CODEC_ID_GSM_MS,    AV_CODEC_ID_ATRAC3, AV_CODEC_ID_VOXWARE, AV_CODEC_ID_APE, AV_CODEC_ID_NELLYMOSER,    AV_CODEC_ID_MUSEPACK8, AV_CODEC_ID_SPEEX, AV_CODEC_ID_WMAVOICE, AV_CODEC_ID_WMAPRO,    AV_CODEC_ID_WMALOSSLESS, AV_CODEC_ID_ATRAC3P, AV_CODEC_ID_EAC3, AV_CODEC_ID_SIPR,    AV_CODEC_ID_MP1, AV_CODEC_ID_TWINVQ, AV_CODEC_ID_TRUEHD, AV_CODEC_ID_MP4ALS,    AV_CODEC_ID_ATRAC1, AV_CODEC_ID_BINKAUDIO_RDFT, AV_CODEC_ID_BINKAUDIO_DCT, AV_CODEC_ID_AAC_LATM,    AV_CODEC_ID_QDMC, AV_CODEC_ID_CELT, AV_CODEC_ID_G723_1, AV_CODEC_ID_G729,    AV_CODEC_ID_8SVX_EXP, AV_CODEC_ID_8SVX_FIB, AV_CODEC_ID_BMV_AUDIO, AV_CODEC_ID_RALF,    AV_CODEC_ID_IAC, AV_CODEC_ID_ILBC, AV_CODEC_ID_OPUS, AV_CODEC_ID_COMFORT_NOISE,    AV_CODEC_ID_TAK, AV_CODEC_ID_METASOUND, AV_CODEC_ID_PAF_AUDIO, AV_CODEC_ID_ON2AVC,    AV_CODEC_ID_DSS_SP, AV_CODEC_ID_FFWAVESYNTH = 0x15800, AV_CODEC_ID_SONIC, AV_CODEC_ID_SONIC_LS,    AV_CODEC_ID_EVRC, AV_CODEC_ID_SMV, AV_CODEC_ID_DSD_LSBF, AV_CODEC_ID_DSD_MSBF,    AV_CODEC_ID_DSD_LSBF_PLANAR, AV_CODEC_ID_DSD_MSBF_PLANAR, AV_CODEC_ID_4GV, AV_CODEC_ID_INTERPLAY_ACM,    AV_CODEC_ID_XMA1, AV_CODEC_ID_XMA2, AV_CODEC_ID_DST, AV_CODEC_ID_ATRAC3AL,    AV_CODEC_ID_ATRAC3PAL, AV_CODEC_ID_FIRST_SUBTITLE = 0x17000, AV_CODEC_ID_DVD_SUBTITLE = 0x17000, AV_CODEC_ID_DVB_SUBTITLE,    AV_CODEC_ID_TEXT, AV_CODEC_ID_XSUB, AV_CODEC_ID_SSA, AV_CODEC_ID_MOV_TEXT,    AV_CODEC_ID_HDMV_PGS_SUBTITLE, AV_CODEC_ID_DVB_TELETEXT, AV_CODEC_ID_SRT, AV_CODEC_ID_MICRODVD = 0x17800,    AV_CODEC_ID_EIA_608, AV_CODEC_ID_JACOSUB, AV_CODEC_ID_SAMI, AV_CODEC_ID_REALTEXT,    AV_CODEC_ID_STL, AV_CODEC_ID_SUBVIEWER1, AV_CODEC_ID_SUBVIEWER, AV_CODEC_ID_SUBRIP,    AV_CODEC_ID_WEBVTT, AV_CODEC_ID_MPL2, AV_CODEC_ID_VPLAYER, AV_CODEC_ID_PJS,    AV_CODEC_ID_ASS, AV_CODEC_ID_HDMV_TEXT_SUBTITLE, AV_CODEC_ID_FIRST_UNKNOWN = 0x18000, AV_CODEC_ID_TTF = 0x18000,    AV_CODEC_ID_SCTE_35, AV_CODEC_ID_BINTEXT = 0x18800, AV_CODEC_ID_XBIN, AV_CODEC_ID_IDF,    AV_CODEC_ID_OTF, AV_CODEC_ID_SMPTE_KLV, AV_CODEC_ID_DVD_NAV, AV_CODEC_ID_TIMED_ID3,    AV_CODEC_ID_BIN_DATA, AV_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_UNKNOWN, AV_FIELD_PROGRESSIVE, AV_FIELD_TT, AV_FIELD_BB,    AV_FIELD_TB, AV_FIELD_BT  }

enum   AVSubtitleType { SUBTITLE_NONE, SUBTITLE_BITMAP, SUBTITLE_TEXT, SUBTITLE_ASS }

转载请注明原文地址: https://www.6miu.com/read-80819.html

最新回复(0)