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

[原创]m2v的色彩矩阵问题

楼层直达
级别: 工作组
注册时间:
2003-11-07
在线时间:
1小时
发帖:
7032
m2v里最让人费解的大概就是Default Matrix Confident和YUY2 color matrix这两个选项了.我也是反复做了多次试验才大致(说话要习惯留余地哦)搞明白这两个选项到底是怎么工作的.

试验过程比较烦琐,略过.这里就直接说结论.

Default Matrix Confident的作用就是,为m2v读入的YV12数据流标注其matrix格式.不过在我做的试验中发现,这新版的m2v已经改成flag无条件执行.也就是说,只有flag为空,这里的更改才会起作用;如果不为空,怎么改也没用.就算标错也废了.

不过倒不必那么紧张,因为这个选项的作用本来也相当于一个flag.这点后面要讲到.

而YUY2 color matrix,诚如其附注所写,是服务于m2v.aui的.如果是直接使用m2v的vfp模式,这个也不起作用.那么这个选项的作用,就是为aui选择输出YUY2的色彩空间.

下面就用例子来具体说明.底下流程中,()表示数据流,第一个[]表示Default Matrix Confident,第二个[]表示YUY2 color matrix.

如果输入的是CCIR601,使用vfp的话,直接把601的YV12转化成RGB,没问题.如果使用aui的话,则可以以下面流程来表示:

(YV12-601)==>[1]==(YUY2-601)==>[2]===>(YUY-result)

所以,经过[1]后,无论[1]的设置是什么,解出来的都是601的YUY2.

那么这个时候起作用的就是[2]了.试验结果表明,无论[1]是什么,[2]为"keep orignal data"时结果都是正确的.接下来就不一样了:

(1),如果[1]为601,[2]为709,结果错误,表现是绿色发亮,红色发暗
(2),如果[1]为709,[2]为601,结果错误,表现与上相反

可见,只有当[1]和[2]不一致时,[2]才会起作用.[2]是要参考[1]所设定的flag的.

并且通过分析可以得知,情况(1)中,m2v会启动601->709的转换;而情况(2)中,会启动709->601的转换.

那么,如果输入数据是709呢,流程如下:

(YV12-709)==>[1]==(YUY2-709)==>[2]===>(YUY-result)

经过试验,发现如果[1]为缺省,709,[2]为keep orignal data时,显示结果始终是错的;而[2]为601时,结果居然是对的.对这个结果,我思索了半天才反应过来:

通过上面我们可以知道,当[2]为keep时,m2v.aui输出的直接是[1]解码出来的,没有经过处理(而只加了个flag)的YUY2数据.那么这个时候这数据就是709色彩矩阵的.然而我们知道,我们的解码器几乎都是基于601的,所以AU显示时也是以601为基准----把709当601了.所以这个时候显示是错的.当然压出来也是错的.

因此,这个时候我们要把[2]设定成601,从而启动了709=>601的转换,才能得到正确的结果.这就是用m2v做HDTV所必须特别注意的地方.

综上所述,Default Matrix Confident只起到为数据流标注色彩矩阵的作用.如果使用vfp解码,vfp会根据这个标注直接把数据upsample成RGB;而以aui解码,它就只负责传送一个flag.而YUY2 color matrix的作用就是在aui中,根据Default Matrix Confident传来的flag及自身的设定,来决定是否启动601<=>709的转化程序.


文章来自: 本站原创
引用通告地址: http://fansub.popgo.org/trackback.asp?tbID=150

青空が眩しい 君がいる風景は
幸せのオーラ 溢れ出すの とまらないよ
駅前の噴水 虹を作っているよ
君を待つ時間さえも かけがえない プレシャスな時

=========================

FANSUB的历史,又翻过了新的一页
级别: 精灵王
注册时间:
2005-12-13
在线时间:
0小时
发帖:
3859
只看该作者 1楼 发表于: 2007-01-12
嗯 支持原创
囧 我很想知道怎样才能调出用POWERDVD播DVD时那时候的色彩

= =
级别: 骑士
注册时间:
2006-02-13
在线时间:
0小时
发帖:
1020
只看该作者 2楼 发表于: 2007-01-12
支持狼叔……
不过m2v么……还是DVD2AVI吧


──それは、とても小さな
とても大きな とても大切な 愛と勇気のおとぎばなし──
级别: 侠客
注册时间:
2007-01-05
在线时间:
0小时
发帖:
423
只看该作者 3楼 发表于: 2007-01-12
引用
最初由 GOD_HIKARU MK2 发布
嗯 支持原创
囧 我很想知道怎样才能调出用POWERDVD播DVD时那时候的色彩

挂色彩校正 TV---->PC
AU和AVS都有那插件

真正的爱可能会从浓烈到平淡,但决不会消失
而是安静的潜伏在身体的某处
然后在之后的某个年头或某个契机之下
重新回到思维的中心


37,22,35


“他观察着世态的变化,但讲述的却是人间的真理。”——马克 · 吐槽

级别: 工作组
注册时间:
2003-11-07
在线时间:
1小时
发帖:
7032
只看该作者 4楼 发表于: 2007-01-12
引用
最初由 badchris 发布
支持狼叔……
不过m2v么……还是DVD2AVI吧


shin一直在问这个问题。整出来干脆在这里发掉算了

青空が眩しい 君がいる風景は
幸せのオーラ 溢れ出すの とまらないよ
駅前の噴水 虹を作っているよ
君を待つ時間さえも かけがえない プレシャスな時

=========================

FANSUB的历史,又翻过了新的一页
级别: 侠客
注册时间:
2003-08-27
在线时间:
1小时
发帖:
508
只看该作者 5楼 发表于: 2007-01-12
轉貼Silky的文章

MPEG-2 VIDEO VFAPI Plug-In:

Aspect Ratio
要不要做 resize 成最接近的顯示比例。
建議 Ignore,不要用 m2v 做 resize。
因為 m2v 做 resize 比例不正確,
且 resize 的大小不一定符合我們需要的大小,
例如 720x480 顯示比例 4:3,m2v 會 resize -> 640x480,但是我們不一定要 640x480,說不定我們想做 512x384,這樣還是要再自己 resize 一次,不如從頭就 720x480 -> 704x480 -> 512x384。

Field Order
Field 奇先偶先順序

iDCT Algorithm
iDCT 轉換的演算法

SIMD
支援的 SIMD

GOP List
.gl 的設定

Consecutive Numbered Files
連號文件讀取設定

YUV Range
Full Range: YUV -> RGB 時,不要做 YC 伸張
ITU-R BT.601 Range: 做 YC 伸張

Default Matrix Coefficient
YUV -> RGB 轉換時,要使用哪一種規格的轉換式。
選 Auto(From Video Resolution),如果 MPEG 檔有 sequence_display_extension header,裏面有紀錄 Matrix Coefficient,就用記錄的 Matrix Coefficient 的轉換式來做轉換。如果 MPEG 檔沒有紀錄 Matrix Coefficient,m2v 自動利用 Video 的解析度大小做判斷,如果解析度超過 720x576,自動用 HDTV 的 ITU-R BT.709 轉換式轉換;如果解析度等於或小於 720x576,使用原本的 ITU-R BT.601 轉換式轉換。
兩個轉換式轉出來色調會有一點差異,HDTV 是採用 709 規格,要用 709 轉換式轉出來色彩才會正確。
遇到 MPEG 檔內的 Matrix Coefficient 不能信用時,例如明明是 SDTV 的訊源,卻用 709 轉換式,可能是電視臺製作時旗標設錯了,這時可以手動指定正確的轉換式。

YUY2 Matrix(for m2v.aui)
m2v.vfp 同時是一個 AviUtl 的 plugin。
將 m2v.vfp 更名為 m2v.aui 即可當成一個 AviUtl 的 Input Plugin 來使用。
此時 m2v.aui 輸出的是 YUY2,而不像原本的 VFAPI Plugin,輸出的是 RGB,需要做 YUV -> RGB 轉換。
如果現在訊源是 HDTV 的 709YC,直接輸出 709YC 給 AviUtl 之後,就算中間的處理過程都不需要轉成 RGB,最後壓成 MPEG-4 時,儲存的還是 709YC。
這樣播放時,如果由 MPEG-4 decoder 輸出 RGB,MPEG-4 decoder 都是用 601 轉換式做 YUV -> RGB 的工作,所以 709YC ->(601 轉換式) 錯誤的RGB
如果用 DirectDraw Overlay,走 YV12 或 YUY2 丟資料給顯示卡去做 YUV -> RGB 的轉換工作,顯示卡的 YUV -> RGB 轉換式還是一樣使用 601 標準轉,709YC ->(601 轉換式) 錯誤的RGB

所以 m2v 設計了這個選項,當 m2v 直接輸出 YUY2 的時候,如果訊源本身是 709YC,可以先將 709YC 轉換為 601YC,這樣以後處理或顯示,都不會有問題。
YUY2 Matrix 選項就是在做這個設定,輸出時要保留原本 YUV 的資料,還是轉成其他規格的 YUV。

Avisynth 有個 BT709ToBT601 的 filter 就是在做同樣的事情。

來自
皓月狼影
bbs.lloup.com
级别: 侠客
注册时间:
2006-10-07
在线时间:
0小时
发帖:
587
只看该作者 6楼 发表于: 2007-01-13
呃,也就是d2v不存在这个问题了是吗?
级别: 超级版主
注册时间:
2004-07-25
在线时间:
121小时
发帖:
3898
只看该作者 7楼 发表于: 2007-01-13
d2v并不是没有问题,而是一般情况下问题不会显现出来。现在小日本动画dvd几乎都是601YC,不排除有少量709YC,实际遇到的情况是现在新版DG几乎统统当作709YC,这种情况下TMPG或者AU开d2v,走vfapi,DG颜色空间判断错了,601YC当709YC,出来的RGB就是错的。如果用AVS,全程YV12,就不存在问题,如果AVS内做了upsample或者转RGB,就会出问题。再往下推论,如果全程YV12,就不用colormatrix进行YUV色补正,如果要upsample或者转RGB,则要用colormatrix进行修正。使用colormatrix修正的时候有两种,默认使用的是progressive的转换方式,对于3:2 pulldown的东西,要先做IVTC和deinterlace,否则和ICP类似,会出去不掉的交错。如果是全交错的源,则要应用interlace=true,而且在deinterlace之前做。最后最简单的办法,打开d2v文件手动修改色空间标记,这是最可靠的,例如:

900 1 0 573440 1 1 32 32 92 a2 b2 a2 b2 b2 a2 b2 a2 b2 b2 a2 a2

900后面的1代表色空间信息,改成4、5、6都可以

1 ITU-R BT.709 I709
4 FCC (almost the same as ITU-R BT.601) FCC
5 ITU-R BT.470-2 (exactly the same as ITU-R BT.601)
6 SMPTE 170M (exactly the same as ITU-R BT.601) S170
7 SMPTE 240M (almost the same as ITU-R BT.709) S240


至于m2v的问题,一直想找个709YC看看是怎么转成601YC的,手头暂时没找到源,回头再骚扰狼叔.......... [/han]

级别: 工作组
注册时间:
2003-11-07
在线时间:
1小时
发帖:
7032
只看该作者 8楼 发表于: 2007-01-13
去思路下载几个HDTV不就行了。找带大红大紫的片子下。用DG提取视频的功能把红色多的部分截出来就是很不错的对比片段

青空が眩しい 君がいる風景は
幸せのオーラ 溢れ出すの とまらないよ
駅前の噴水 虹を作っているよ
君を待つ時間さえも かけがえない プレシャスな時

=========================

FANSUB的历史,又翻过了新的一页
级别: 工作组
注册时间:
2003-11-07
在线时间:
1小时
发帖:
7032
只看该作者 9楼 发表于: 2007-01-13
引用
最初由 GOD_HIKARU MK2 发布
嗯 支持原创
囧 我很想知道怎样才能调出用POWERDVD播DVD时那时候的色彩


用gspot把power的解码器级别调到最高,然后用directshowsource打开之

青空が眩しい 君がいる風景は
幸せのオーラ 溢れ出すの とまらないよ
駅前の噴水 虹を作っているよ
君を待つ時間さえも かけがえない プレシャスな時

=========================

FANSUB的历史,又翻过了新的一页
级别: 骑士
注册时间:
2006-02-13
在线时间:
0小时
发帖:
1020
只看该作者 10楼 发表于: 2007-01-13
嗯……所以还用着DVD2AVI 1.9 rc5……


──それは、とても小さな
とても大きな とても大切な 愛と勇気のおとぎばなし──
级别: 超级版主
注册时间:
2004-07-25
在线时间:
121小时
发帖:
3898
只看该作者 11楼 发表于: 2007-01-13
引用
最初由 wolfsoft 发布
去思路下载几个HDTV不就行了。找带大红大紫的片子下。用DG提取视频的功能把红色多的部分截出来就是很不错的对比片段


一部10GB以上,要偶命么 - -

级别: 侠客
注册时间:
2007-01-05
在线时间:
0小时
发帖:
423
只看该作者 12楼 发表于: 2007-01-13
BT709ToBT601<---不说还真不知道还有这个dll,一次未用过....ORZ
这年头都用colormatrix吧 - -

真正的爱可能会从浓烈到平淡,但决不会消失
而是安静的潜伏在身体的某处
然后在之后的某个年头或某个契机之下
重新回到思维的中心


37,22,35


“他观察着世态的变化,但讲述的却是人间的真理。”——马克 · 吐槽

级别: 工作组
注册时间:
2004-11-01
在线时间:
14小时
发帖:
2615
只看该作者 13楼 发表于: 2007-01-14
想问问,那个[HKG&lloup][Doraemon][DVDrip][Movie1992][XviD_BF AC3][704x528][24fps][CRC32_06A66E58].avi 的OP部分颜色像是被拉伸了,是什么原因。

正片正常。
难道是colormatrix的自适应有误?(还没用过colormatrix,乱猜的)

patch
Sorry. 截圖(圖片有損)有問題.
我只注意要反映颜色异常,没看red stairs,就直接发了MPC截的jpg。
重新用ffdshow截图及播放(YV12)都是没有red stairs的。

[url=ed2k://|friend|[CHN%5D[eDtoon%5D[PPG_FW%5D[VeryCD%5DGalaxy|D46F9E727D0ED77EDA09D21C55386F57|/]点击这里可以把我加入emule好友名单[/url]

#DEEBEA #F6FAFA
还是挂小图,...[:o]
级别: 骑士
注册时间:
2005-01-04
在线时间:
0小时
发帖:
1138
只看该作者 14楼 发表于: 2007-01-14
难道DGIndex做的是错的?

I've Sound音樂聯盟(点击进入)

[CHN][IFS][eDtoon][TLF][VeryCD]VempX <= eMule的ID,欢迎查看共享文件
~My Blog~
快速回复

限150 字节
上一个 下一个