TA的每日心情 | 开心 2017-2-4 00:11 |
---|
签到天数: 4 天 [LV.2]偶尔看看I
至尊会员
   
- 积分
- 164666
|
本帖最后由 dtlnor 于 2022-7-26 14:41 编辑
看你的设置。

图片取自vcb教程
在output format那里,设置了lav解码后允许喂哪些格式的yuv数据给下层的滤镜。
如果你只勾选了rgb的,自然任何的格式都会在lav处理的这一步优先转换成rgb格式再喂给下游滤镜。
这是因为有时候用户的播放器只是在用自带的渲染。精度不足甚至转换的规则不完整容易输出错误的颜色。不如交给lav做。
当lav吃进来的数据格式没有勾选对应的输出的时候,lav就会负责转换格式
所以如果你只勾选了rgb,或者其他情况下需要lav做yuv-rgb转换的话,这里的rgb output level就会起作用。

同样取自vcb教程
在这种情况下,如果输入的数据格式有对应的输出,lav就会直接把yuv数据交给下游滤镜。
通常是在喂给高质量滤镜,比如madvr的时候,我们才会把lav这里的output format全部勾上。
因为madvr做yuv->rgb转换的效果会比lav做起来精度更高(但性能消耗也更大)。
然而最主要的原因还是madvr可以在转换前就对uv平面做高质量拉伸,以及任何在转换rgb平面之前的预处理。
如果像第一张图那样设置,uv平面拉伸自然是交给lav做的。
而由于图二的设置中lav是解码成yuv数据流之后直接把数据喂给下游滤镜,不做rgb->yuv转换,自然是会bypass这个设置的了。
而这时候,由于yuv->rgb转换由madvr做,自然是由madvr的设置起作用了。
(不过,假设madvr吃到的是rgb数据,madvr会不会干涉输出范围我就不清楚了(因为正确设置下这种情况很稀有),测试起来倒是很简单,按照图一强制lav输出rgb喂给madvr,然后madvr调整一下就知道了,如果单从madvr的文字上来看,应该也是会做转换的(如果不match的话)。)
如果你不确定自己的lav+madvr组合有没有设置正确,你可以按一下ctrl+j确认madvr吃进来的数据是不是yuv格式的。
或者,更进一步,你可以在你的madvr根目录新建一个叫ShowRenderSteps的空白文件(无后缀)
这样你ctrl+j就可以看到madvr渲染的每一个步骤了。如果是由madvr负责的yuv->rgb转换,那你应该能看到ConvertToRGB的字眼
相反,如果madvr是直接吃rgb数据流的,你就会看到RGB processing的字眼了
|
|