1.这个类型,一定要吃透,虽然代码是用C写得,但是写得很C++,这个其实可以看做一个C++的类,里面定义了很多指针,这些指针指又指向了一些,而这个其实相当于C++的成员函数,成员函数的初始化,一般是在函数里面初始化的 。这一点,可以在后面的叙述中体现出来 。
2.再说一下编码的过程,函数,做了的编码,在1629行,开始做DCT&quant,1686行,开始做霍夫曼编码,而霍夫曼编码,对不同的标准来说,码表是不一样的,因此在1687行做了一个的选择,mpeg1和mpeg2,都是用的相同的函数进行block的编码,而block内的编码,在以前的笔记中已经提到,过程这里不重复 。
文章插图
3.现在说DCT&quant,其中,1635行s->[i] = s->(s, s->block[i], i, s->, &);,就是做DCT&quant 。正如第1点中说的,本来只是中的一个元素,类型为指针,指向一个,而这个就相当于C++里面的成员函数 。现在,我们知道了在这个地方,相当于调用了一个成员函数,做了DCT&quant这件事情,接下来,讨论这个成员函数在哪里初始化的 。
4.在.c的函数里面,对编码所需要的一些“成员函数”进行了初始化 。前面一堆东西,是做编码器的选择 。在第656行,这成员函数被初始化为这个函数 。于是,接下去找这个函数的定义 。发现,3649行,又调用了dsp.fdct这个成员函数,做离散余弦变换 。接下来找dsp.fdct这个成员函数的初始化地方 。
文章插图
这个非常费劲,我找了半天才找到——在函数里面做了fdct的初始化,一步一步的跟踪调用关系,可以发现过程是这样的:
【x264函数调用关系图 FFMPEG中MPEG-2编解码函数调用关系图MPEG】调用,再调用,在里面初始化了fdct,而紧接着,执行前面提到的的初始化 。
至此,整个初始化完成 。
- 常用文件函数总结
- boundary函数寻找三维平面点云精确边界(一)
- python的excel函数_利用python在excel里面直接使用sql函数
- 计算机excel函数lookup,XLOOKUP 函数
- 《JavaScript AST其实很简单》二、Step1-函数调用还原
- 常用函数干货 【Excel】函数之易踩坑系列
- Excel用函数求C语言的最高分,excel怎样用函数求最高分
- 寄存器操作 8、stm32F103入门学习--点亮LED(向库函数操作迈进!)
- 利用函数计算,基本绘图函数、透视分析等基础方法 数据挖掘的分析基础
- PostgreSQL批量修改函数拥有者