音视频编解码 原理
发布网友
发布时间:2022-04-24 00:30
我来回答
共3个回答
热心网友
时间:2022-04-12 00:15
音视频同步原理[ffmpeg]
ffmpeg对视频文件进行解码的大致流程:
1. 注册所有容器格式和CODEC: av_register_all()
2. 打开文件: av_open_input_file()
3. 从文件中提取流信息: av_find_stream_info()
4. 穷举所有的流,查找其中种类为CODEC_TYPE_VIDEO
5. 查找对应的解码器: avcodec_find_decoder()
6. 打开编解码器: avcodec_open()
7. 为解码帧分配内存: avcodec_alloc_frame()
8. 不停地从码流中提取中帧数据: av_read_frame()
9. 判断帧的类型,对于视频帧调用: avcodec_decode_video()
10. 解码完后,释放解码器: avcodec_close()
11. 关闭输入文件:av_close_input_file()
热心网友
时间:2022-04-12 01:33
这个原理很复杂的。而且音频和视频的原理差别很大,音视频不同标准之间的原理也有很多的差别。不过基本上都是通过各种变换和模型来去除冗余,去除冗余的方法优劣决定了编码算法的好坏,不同的算法的计算复杂度也不同,很多音视频编解码都是压缩效果和当前条件实际可行性的某种折衷。
热心网友
时间:2022-04-12 03:08
最近因为在做视频处理,所以和解码芯片打交道很多,解码芯片的datasheet有很多内容,
不懂视频处理技术,很难理解,但是看多了之后,发现对于解码芯片,他们的大部分结构,
基本相同。
Macrovision 标准
Macrovision 标准主要是用于 APS (模拟保护系统),带composite
或s-video(Y/C)输出端子的计算机视频卡必须使用APS.
Macrovision 将快速调制的色突发信号("彩条")和垂直消隐信号("AGC")
送到composite和s-video输出端,这样就会干扰电路同步和自动录写功能,从而进行保护。
但是,这降低了图片的质量,会引起彩条,变形,摇摆,黑白图象,明暗交替。
下面把基本的原理讲一下:
SAA7115 总的功能描述:
SAA7115 是一个可用于各种应用的视频采集设备,比如从小屏设备到大屏设备。
SAA7115 是有两路模拟处理电路和自动箝位电路和增益控制电路,两个时钟产生电路,一个
多标准的 decoder 组合而成的。模拟处理电路包括视频源的选择、抗混迭滤波器
和 A/D 转换。多标准的 decoder 包含了一个 2 维的 色度/亮度分离。
这个 decoder 的基本原理是行锁定( line-locked)解码操作,可以解码 PAL,SECAM 和
NTSC 信号的色彩到 ITU-601 格式的色彩值。
SAA7115 可以接收模拟信号的格式为 CVBS 或者 S-Video(Y-C)信号。
数字视频的 X 端口(D1 格式,半双工,全双工)可以用于输出 10 位或者 8 位没有经过变化的视
频数据,也可以用于连接外部的数字视频源来使用 SAA7115 的 scale 功能。
SAA7115 的 I 端口,支持 8(16)位宽的数据输出,可以灵活的连接到 VGA 控制器上,或者
settop box 应用等等。它也可以输出正方形像素格式的视频,以合适的正方形像素时钟来同步。
一、输入部分:
首先是确定芯片支持几个输出通道,输入信号的类型等等。
电视信号的制式:
ntsc:美国和加拿大地区的美国电视制式。
pal:西欧地区电视制式。
pal-n:阿根廷、巴拉圭、乌拉圭地区电视制式。
pal-m:巴西地区电视制式。
pal60:pal 电视ntsc 回放所使用的电视制式。
secam:法国和东欧地区电视制式。
ntsc4.43:中东国家电视制式。
总得来说电视信号的制式主要有三种,PAL、NTSC 和 SECAM 制式。
模拟信号类型:
CVBS 信号:也叫做基带视频或RCA视频,是全国电视系统委员会(NTSC)电视信号的传统图像数据传输方法,它以模拟波形来传输数据。
复合视频包含色差(色调和饱和度)和亮度(光亮)信息,并将它们同步在消隐脉冲中,一起调制到射频载波发送出去。
一般由 高频头Tuner 输出。
Y/C 信号:一般为 S-Video 输入信号。
分亮度信号Y和U、V正交调制后的混合彩色信号C。这种信号可以提高灰度图像的分辨率,减少了解码器分解RGB分量的不准确性。
RGB 信号:每种颜色都可用三个变量来表示-红色、绿色以及蓝色的强度。记录及显示彩色图像时,RGB是最常见的一种方案。
VGA 信号:VGA信号的组成分为五种:RGBHV,分别是红绿蓝三原色和行场同步信号。
VGA传输距离非常短,实际工程中为了传输更远的距离,人们把VGA线拆开,将RGBHV五种信号分离出来,
分别用五根同轴电缆传输,这种传输方式叫RGB传输,习惯上这种信号也叫RGB信号,其实本质上RGB和VGA是没有什么区别的。
色差 信号:应该和 Y/C 信号是同一个概念。
(1)对于芯片设计来说,如果有多个输入通道,但是芯片只能够处理有限通道时,在输输入部分是通过一个输入信号选择部件来开始的。
这个部件需要用户进行设置。
(2)箝位电路:所谓箝位就是将信号叠加到某一电平上使之保持相对的恒定,可以把信号箝位于某一固定电平上。
箝位电路控制电路控制输入的模拟信号的箝位。
对于两个 ADC 的钳位电平是固定的,亮度信号(120),色度信号(256),Y (32),PB and PR (256)。
这个部件一般情况下,用户不需要设置。
(3)增益控制电路:(gain control circuit)增益电路主要作用是把所需要的信号振幅放大。
在 SAA7115 上是把 CVBS or Y 信号的放大到需要的振幅,以满足 ADC 的输入电压要求。
在个电路上有一个信号的峰值控制(Signal (white) peak control)电路,来限定电压过冲。
在 SAA7115 上这个部件不需要用户来设置。
(4)抗混迭滤波器:
在 A/D 转换时,采样的时候为了保证采样的信号不失真,所以我们采样的周期一般要小于原信号的周期,不然当周期沿拓后就会出现混叠失真的问题。
抗混迭滤波器主要是为了解决这个问题,用户不需要进行设置。
(5)Bypass Switch :对于场消隐信号,需要设置为 bypass, gain and clamping 控制功能在场消隐周期内,是不能够使用的。
(6)ADC : 模拟/数字信号转换。
至此,输入的模拟信号已经转换为 9 位的数字信号,可以把转换后的 9 位数字信号发送到 X 端口 I/O 处理模块,从 X 端口输出。
或者发送到抽取滤波器,最后发送到 Video Scaler 模块中,从 I 端口输出。
(7)抽取滤波器 :抽取滤波器的作用是降低数据率,把输入的数据流按照一定的比例来抽取数据,使数据流能够按照一定的比特率输出。
(8) CROSS MULTIPLEXER :
对于 SAA7115 来说,它有两个 AD 转换器,却只有一个 digital decoder ,所以使用了
交叉多路复用器,来支持两路的 AD 转换器。
从交叉多路复用器把数字化的 CVBS/Y 和 CHROMA(色度)信号发送到 digital decoder 部件。
二、视频解码部分
(1)色度信号的路径
(1.1)正交解调器:
从输入模块 A/D 转换器输出的 9 位 CVBS 和 色度信号提供给正交解调器。
在来自局部振荡器DTO1(离散时间振荡器)的2个副载波信号中(副载波信号的相位偏移依赖于
解调器的坐标),频率则由当前所输入视频信号的色彩制式所决定。
调制器:实质上是一个乘法器,将一个高频检波信号(载波)与测试信号(调制信号)相乘,
使高频信号的幅值随测试信号的变化而变化,实现调幅输出调幅波。
调幅的目的是使缓变信号便于放大和输出。
解调器:利用载波信号与调幅波的相位比得出原信号的幅值和极性。此过程为解调。
(1.2)低通滤波器1:滤去高频成分,恢复原信号。
低通滤波器有一个阶数参数,这个阶数通俗说就是滤波的斜率。
分频点以上完全通过,分频点以下截然滤除就是阶数很高。
这个低通滤波器是 downsampling 的。
通过 LCWB3[3:0]可以设置它的 8 个阶数,来通过不同颜色信号
需要的带宽。
色度信号低通滤波器1的阶数,在水平颜色过渡过程中也影响 cross-luminance rection
的等级(大的色度带宽意味着对cross-luminance较强的抑制)。
如何 Y-comb filter 通过设置 YCOMB = 0 ,被关闭了,这个滤波器直接影响
亮度 path 中色度缺口的宽度(大的色度带宽意味着宽的色度缺口导致低的亮度带宽)。
(1.3)自适应梳状滤波器
梳状滤波器它是由许多按一定频率间隔相同排列的通带和阻带,只让某些特定频率范围的信号通过。
它是用于分离亮度信号和色度信号的。其原理是利用了亮度信号的频谱特征,
即频谱与行频相关而不连续,正好在其中插入色度信号。
至于U/V色度信号,是用正交的色度副载波进行相干解调来分开的。
梳状滤波器被用于分离色度信号的两个正交分量U色差信号与V色差信号。
梳状滤波器一般由延时、加法器、减法器、带通滤波器组成。
对于静止图像,梳状滤波在帧间进行,即三维梳状滤波。
对活动图像,梳状滤波在帧内进行,即二维梳状滤波。
总的来说这个模块是把色度信号,从亮度信号中分离出来。
在这个模块中有一个 decision logic,可以通过 HODG,VEDG,MEDG,VEDT 和 CMBT 信号来
控制。
这个模块对于 SECAM 信号,不起作用,直接忽略。
对于亮度和色度信号的处理可以通过设置 YCOMB 和 CCOMB 来分别设置梳状滤波器的使能。
对于 VBI 数据和 原始数据可以通过 LCRn 寄存器的设置来忽略掉这个模块。
(1.4)低通滤波器2:滤去高频成分,恢复原信号。
被分离出来的色度信号 Cb-Cr 成分,被传输到第二个低通滤波器来修改色度信号的带宽
而不影响亮度信号的带宽。
它的阶数是由 CHBW 寄存器来控制的。
(1.5)处理 SECAM 制式信号
(对于 QAM 调制的信号忽略,NTSC和PAL制式就是模拟信号QAM,
NTSC和PAL制式的电视系统就利用正交的载波传输不同的颜色分量)
(1.6)色度增益控制模块
这个模块根据 ITU601/605 来放大或者减弱 Cb-Cr 信号。
这个模块是由 burst 处理模块的振幅检测电路的输出信号控制的。
(1.7) burst 处理模块
这个模块对对色度 PLL 提供了反馈信息,包含下面这些,P29。
(1.8)增量产生电路
增量产生电路对 2 个负载波模块提供了DTO1(离散时间振荡器)的增量。
它包含一个被这个 line-locked 时钟产生器的增量,来产生一个稳定的 phase-locked
正炫信号。
(1.9)PAL delay line block
PAL delay line block(PAL 延迟线模块)根据 PAL 标准需求来去除各个色度通道的串色。
对于 NTSC 颜色标准,延迟线可以作为附加的垂直滤波器来使用。
如果需要,它可以通过 DCVF == 1, 来关闭。
可以通过设置 LCRn 寄存器来设置在 VBI 和 raw data时,它的关闭功能。
这个嵌入的延迟线模块对于 SECAM 信号也有作用(跨接线关闭)。
(1.10)colorstripe burst detector
这个 colorstripe burst detector (颜色条纹脉冲串检测器)根据 Macrovision 标准
检测一部分或者全部的相位翻转脉冲串。
这个 Macrovision 标准的保护级别可以通过 COLSTR 和 TYPE3 标志位来知道。
小知识:Macrovision 标准
Macrovision 标准主要是用于 APS (模拟保护系统),带composite
或s-video(Y/C)输出端子的计算机视频卡必须使用APS.
Macrovision 将快速调制的色突发信号("彩条")和垂直消隐信号("AGC")
送到composite和s-video输出端,这样就会干扰电路同步和自动录写功能,从而进行保护。
但是,这降低了图片的质量,会引起彩条,变形,摇摆,黑白图象,明暗交替。
(2)亮度信号的路径
在 9 位 CVBS 或者 Y 输入信号中去除色度信号是通过从 CVBS 输入信号中,减去重新调制的
色度信号完成的。
(2.1)通滤波器 3
从梳状滤波器出来的 Cb-Cr 成分通过低通滤波器 3 来 upsampling ,注意 低通滤波器 1 是
downsamping 的,这样就得色度信号进行了重构。
这个低通滤波器的阶数可以通过 LUBW 来控制,来修改色度信号缺口的宽度,而不影响真正
色度处理路径的数据。
有效的频率阶数与 LCBW2 到 LCBW0 的设置有关联,可以通过 Figs13 到 16 来看出来。
它必须注意那些频率曲线仅仅当 Y-comb 关闭(YCOMB==0)时有效。
在没有关闭时,频率回应是平坦的。缺口的中心频率可以根据选择的颜色标准来自动适应。
(2.2)正交调制器
从低通滤波器3 upsampling 后的 Cb-Cr 信号,在正交调制器中,乘以从负载波产生器2 中产生 的 双时分复用的负载波信号。这两个调制信号最后添加到重新调制后的色度信号上。
(2.3)减法器
这个最后的产生的信号递送到减法器模块,用于从 CVBS 输入信号中减去重新调制后的色度信号,
而只留余亮度信号。
(2.4)亮度滤波器模块
分离出来的亮度信号的频率阶数被接下来的亮度滤波器模块修改了。
这个模块可以通过 LUFI3 到 LUFI0 配置为削尖和美化功能或者低通滤波功能。
最终的频率阶数可以在 Fig17 看到。
LUFI3 到 LUFI0 设置可以作为一个用户可设置的清晰度控制。
这个模块也包含了调整 Y 延迟的部件,可以通过 YDEL2 到 YDEL0 来控制。
(3)Brightness Contrast Saturation (BCS) control and decoder output levels
最终的 Y(CVBS)和 Cb-Cr 信号最后都提交给 BCS 模块,这个模块有下面控制:
色度状态控制由 DSAT7 到 DSAT0 控制
亮度对比度和明亮度由 DCON7 到 DCON0 和 DBRI7 到 DBRI0 控制
raw data(CVBS)增益和偏移通过 RAMG7 到 RAWG0 和 RAWO7 到 RAMO0 来调整
Y-Cb-Cr 或者 CVBS 的值界限是从 1 (最小值)到 254(最大值)。
(4)同步
处理后的亮度信号提供给同步阶段。它的带宽在一个低通滤波器 内减到 1MHz 之内。
同步脉冲被切成片,送到相位比较器,在这里比较截断后的时钟频率。
最终输出信号到 loop filer ,计算所有相位的误差。
内部信号(HCL 和 HSY)根据前端的模拟信号需求来产生,loop filter 信号驱动一个振荡器
来生成 行频率控制信号 LFCO。
作为 macrovision 拷贝保护标准的一部分,“pseudo 同步”的检测也是在这个同步电路内
完成的。
最后的作为 decoder 的状态,在 subaddress 1FH,以 COPRO 标志可以查看。
(5)时钟频率产生电路
内部的 CGC 模块产生视频输如处理器需要的所有时钟信号。
内部信号 LFCO 是由水平 PLL 提供的数字转换成的模拟信号。
它是行频率的倍数。
(6)上电重启和芯片使能
这一部分与硬件设计有关系,和视频解码没有关系,略过。
二、输出格式
解码模块的输出格式器包含 ITU656 的 8 位和 10 位的格式器,来输出到 X 端口(XPD[7:0],
XRH, XRV)。
控制控制请求从梳妆滤波器解码后的视频数据或者原始数据输出到 X 端口,或者 scaler输入端
或者 VBI 数据切割器的输入端。数据请求是用户通过 LCR2 到 LCR24 寄存器来控制的。
LCR2 到 LCR24 寄存器中的每一个定义了对应的行的解码格式;VBI 数据格式可以每一行单独
设置。所以 LCR2 到 LCR23 对应这行号。LCR24 寄存器的值设置其他寄存器对应行是否有效。
其他 23 个寄存器的高半个字节是奇场,低半个字节是偶场。 LCR 寄存器和行号的对应关系可以
通过 VOFF8 到 VOFF0 来设置。
三、scaler
这个 scaler 包含一下模块:
1)Acquisition control(水平和垂直timer)和 task handling (场/祯基本处理)
2)预变换,水平方向有一个整数参数down-scaling
3)亮度、饱和度、对比度调整
4)行 buffer,和读写同步,来支持垂直的 up-sacling 。
5)垂直变换,
6)各种相位延迟(VPD)
7)输出
要把福珑推向农村的市场,首先就要了解农村市场,了解农村人他们的购买习惯,了解他们的需要,
在把福珑进行正确定位。
这些都是理论上的东西,人人都会说,咱们就说下农村人他们的购买习惯,