您的位置:首页 > 其它

FFMPEG源码分析(1)--持续更新

2013-08-01 09:45 621 查看
以FFMPEG 1.0为参考,对FFMPEG源码分析,其中调用以H264为例

一、main()中;在ffmpeg.c文件中

1、OptionsContext o ={ 0 }:

初始化结构体变量o,这个结构体主要是一些参数选项;

初始化的结果是:整型和浮点型都为0,指针型成员都为NULL

疑问是,这种初始化方式到底是:

(1)初始化结构体变量的第一个成员,其他成员变量由系统采用缺省值初始化

(2)初始化所有的结构体成员

2、reset_options(&o,0):在ffmpeg_opt.c.

这是重新设置结构体体变量o,前面只是初始化

3、av_log_set_flags(AV_LOG_SKIP_REPEATED):在log.c.

没细看,估计是设置标志的日志

4、parse_loglevel(argc,argv,options):cmdutils.c.

解析命令参数中的'--loglevel'的参数设置,并应用

5、av_log_set_callback(log_callback_null);:log.c.

暂时不知

下面是一些注册函数

6、avcodec_register_all():allcodecs.c.

注册所有的编解码器、参数以及比特流滤波器,这些都是在配置阶段就启用了;

如果你不想调用这个函数,你可以准确的悬着你想要支持的格式,当然这得通过你自己的注册函数;

各位,这就是说在我们实际应用的时候,没必要非得把所有的编解码器格式都注册一遍,可以选择自己能用到的,其他的,嘿嘿,就让他们玩去吧

avcodec_register_all()函数主要调用三个函数来完成编解码器、参数以及比特流滤波器的注册。这三个函数是:

avcodec_register音频视频字幕编解码器的注册

av_register_codec_parser编解码器解析器的注册

av_register_bitstream_filter数据流的滤波器的注册

注册流程是:

(1)avcodec_register_all()函数调用宏定义

(2)宏定义调用具体的注册函数完成注册,就是指上面的三个函数

下面具体分析一下某些格式的注册问题,例如FFMPEG和H264的注册:

(1)硬件加速:

00059     REGISTER_HWACCEL (H264_DXVA2, h264_dxva2);00060     REGISTER_HWACCEL (H264_VAAPI, h264_vaapi);00061     REGISTER_HWACCEL (H264_VDA, h264_vda);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: