搜索 社区服务 统计排行 帮助
  • 3086阅读
  • 30回复

[请教]DVDRIP的较色问题

楼层直达
级别: 工作组
注册时间:
2005-12-13
在线时间:
0小时
发帖:
164
只看该作者 30楼 发表于: 2006-02-15
为了搞清这个问题,重新看了大神bible的视频知识系列,看到中间忽然瞬间醒悟,实际可以用一种非常简单的想法去考虑,被自己越搞越复杂了。

再看silky这句话:
"MS MPEG-4 Codec,DivX Codec,XviD Codec 这几个 Codec 都是假设收到的数据是0~255,会先做 Y/C 压缩的动作。"

还有这两句:
“...Y/C 伸张,也就是将 Y/C 的动态由原来的16~235 扩展到 0~255,然后转为 RGB 0~255”
“...Y/C 压缩,把目前 RGB 0~255 的数据压缩为 16~235,然后转为 YCbCr 16~235”

可能我断章取义了,不过这样比较容易解决问题。只要简单理解为:

只认为RGB(模拟)<->YUV(数字)转换的时候才有伸张和压缩问题(转换RGB(a)到YCbCr(d)只存在YC压缩问题,转换YCbCr(d)到RGB(a)只存在YC伸张问题),就够解决所有事情了。

这样想的话,当输出给XVID编码的是YUY2或YV12的时候,根本不存在RGB->YUV的转换,不可能有YC压缩的动作,所以实际上是自己误解了大神的话,这句话本身就是说RGB的,因为只有RGB才认为存在RGB->YCbCr的YC压缩,YCbCr不管转什么,或者什么也不转,都不认为它有YC压缩和伸张问题。RGB(0-255)->RGB(16-235)即使看着数字是压缩了,也不认为是YC压缩。

比如说RGB(0-255)->PC2TV->RGB(16-235)->YUV(16-235)这个过程,RGB(0-255)->PC2TV->RGB(16-235)仅仅作为转换过程的一部分去理解,RGB(0-255)->YUV(0-255)->PC2TV->YUV(16-235)整个过程才理解为YC压缩,这样事情就简单化了。

“转换至内部YCbCr时,y从1-254转换至-256-4445,uv从1-254转换至cbcr -2341-2633,这样的话yuy2读入,y由16-235转换至内部0-4095,uv从16-240转换至内部 -2048-2047,但是rgb却不同,rgb读入时是0-255,但是转换完成后却同样是0-4095和 -2048-2047”

这段话的意思再想一下,可以这样理解。

aviutl将YUY2和RGB转换至内部YUV48时,分别使用了两套转换公式,也即YUY2<->YUV48和RGB<->YUV48,因为没有RGB和YUV之间转换的问题,所以认为根本不存在伸张和压缩,只有不同的转换公式,也即:

读入时:
YUY2->YUV48(y=16-235,uv=16-240到y=0-4095,cbcr=-2048-2047)
RGB->YUV48(rgb=0-255到y=0-4095,cbcr=-2048-2047)

YUY2(16-235,16-240)和RGB(16-255)转换出来的结果一样,YUY2相对于转换出相同结果的RGB是相对伸张关系,RGB相对于转换出相同结果的YUY2是相对压缩关系,但同样作为输入端的二者之间没有绝对的伸张和压缩关系。但是:

M2V以RGB直接转换读入(16-235)->YUV48->逆转换到RGB(16-235)->XVID编码做YC压缩(因为收到的是RGB,所以存在YC压缩问题)

这样的话,最早由M2V读入的RGB和最后XVID压出来的YUV就有了YC压缩的关系,在这个例子里就造成错误。所以可以简单地去理解为:前提是DVD的源的时候,最后送给XVID的只要是RGB信号,中间任何过程中的伸张和压缩抵消后就必须是伸张一次;最后送给XVID的只要是YV12或者YUY2信号,中间所有过程的伸张和压缩就必须全部抵消。

预览时可能有两种情况:
YUV48->RGB逆转换(y=0-4095,cbcr=-2048-2047到rgb=0-255)->GDI
或:
YUV48->YUY2逆转换(y=0-4095,cbcr=-2048-2047到y=16-235,uv=16-240)->DirectDraw YUY2 Overlay

但是2ch那篇帖子,是说走GDI而非Overlay;滤镜作者的帖子也有说,YUY2读入要看到完全实际播放的情况,还要单开Overlay看,因为aviutl自己做的YUV48->RGB转换和Overlay还是略有不同;另外我的想法,aviutl里面是可以任意切的,切完的东西不只是非MOD32,单数双数什么都可能,Overlay应该没法适应,所以综合来看,预览画面走GDI的可能性大。(可能一般软件的预览都是这样吧,我不是理论强人,这个不清楚了)

输出时:
YUV48->不选YUY2压缩->RGB逆转换(y=0-4095,cbcr=-2048-2047到rgb=0-255)->XVID编码同时做YC压缩(因为给编码的是RGB,所以才存在YC压缩问题)

YUV48->选择YUY2压缩->YUY2逆转换(y=0-4095,cbcr=-2048-2047到y=16-235,uv=16-240)->XVID编码直接输出,不做YC压缩(因为给编码的是YUY2,认为根本不存在YC压缩问题)

当使用YUY2 filter mode时,如果要把转换理解为不同的两个转换式,那么内部空间就必须是YUY2(模拟),否则RGB读入时应该是压缩了,RGB输出时应该是再伸张回去了。

也许实际就是这么简单,也许是我这么去理解而变得简单了,今天就理解到这一步,如果有新的理解,再说。

根据国家有关规定,65岁以上老年人可以持老年证从漫游ftp免费优先下载
快速回复

限150 字节
上一个 下一个