织梦CMS - 轻松建站从此开始!

罗索

ffmpeg main函数(及decode_video_example)流程

落鹤生 发布于 2010-06-22 09:31 点击:次 
avcodec_init主要包括dsp_static_init函数,而dsp_static_init函数主要负责静态查找表结构的初始化。在baseline中,主要是初始化ff_cropTbl。这个表很有意思,a = ff_cropTble[i]实现的功能实际上是a = i0 ? 0 : (i255 ? 255 : i);
TAG:

avcodec_init主要包括dsp_static_init函数,而dsp_static_init函数主要负责静态查找表结构的初始化。在baseline中,主要是初始化ff_cropTbl。这个表很有意思,a = ff_cropTble[i]实现的功能实际上是a = i<0 ? 0 : (i>255 ? 255 : i);这个表的大小是2*MAX_NEG_CROP+256, 当MAX_NEG_CROP定义为1024时,实际上这个表可将-1024至1024的任意数转化为0-255的数。这样设计的实质是用查找表方式来减少所需执行的指令数量,是用空间上的代价来换取速度的提高,这是一种典型的优化方式。

avcodec_register_all主要包括register_avcodec(&h264_decoder),这个函数主要负责登记所需的编解码器,在ffmpeg中包括各种编解码器,要将它们登记在一个编解码器列表中,在本设计中,该列表只包括h264解码器。

video_decode_example分以下几个函数:

avcodec_find_decoder:在登记的编解码器列表中找到h264解码器(通过CodecID);

avcodec_alloc_context: 主要包括avcodec_get_context_defaults2函数。它负责初始化AVCodecContext中的某些函数指针(get_buffer, release_buffer)及某些参数设置(thread_count);

avcodec_alloc_frame: 主要包括avcodec_get_frame_default函数。主要是分配AVFrame的空间,初始化一些属性(如key_frame=1),并返回指向AVFrame的指针;

avcodec_open:为H264Context(它是avctx->priv_data)分配空间(122712字节),并清0; 设置AVCodecContext结构体中的codec,codec_id, frame_number,并利用avctx->codec->init (decode_init)来初始化解码器。
decode_init:包括以下几个函数
首先设置s->chroma_qscale_table和s->picture_structure, s->avctx。
common_init: 设置s->width, height, codec_id。然后ff_h264_pred_init函数,再设置h->dequant_coeff_pps,再初始化pps.scaling_matrix4的值

ff_h264_pred_init:初始化帧内预测函数的指针,包括9+3种4*4块,4+3种8*8色度块和 4+3种16*16

decode_init_vlc: 建立CAVLC相关的表格(包括chroma_dc_coeff_token, coeff_token, total_zeros, run_before)。主要通过init_vlc函数实现。init_vlc:建立某个CAVLC的表格,主要通过build_table实现。
decode_init结束;
avcodec_open结束;

打开图像文件;

进入无限循环体for(;;)

读入INBUF_SIZE大小的数据,若返回为0,刚break

avcodec_decode_video函数;(下面单独讲此函数)

如果解码完一帧图像,则执行yuv_output,其实就是将yuv数据写到.yuv文件里

循环体结尾;

(myyb)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201006/9690.html]
本文出处:百度博客 作者:myyb
顶一下
(0)
0%
踩一下
(2)
100%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容