头像
-o-o-304-o-o-
超级版主
帖子: 640
注册时间: 2010-10-10 20:00
来自: US
联系: 网站

Re: 最新的ffdshow能解码10bit源了?

SAPikachu 写了:高bitdepth源造起来比较麻烦,我知道的方法是通过GradFun3(http://forum.doom9.org/showthread.php?p ... ost1386559),添加两个函数:

代码: 全选

funtion output_16bit_interleaved(clip c)
{
Interleave (Dither_get_lsb (), Dither_get_msb ())
TurnRight ()
AssumeFieldBased ().AssumeTFF ()
Weave ()
TurnLeft ()
}

Function GradFun3_nodither (clip src, float "thr", int "radius", float "elast",
\	int "mask", int "mode", float "ampo", float "ampn", int "pat",
\	bool "dyn", float "dthr", int "smode", float "wmin", float "thr_det",
\	float "thr_edg", int "debug", int "subspl")
{
	thr     = Default (thr,      0.35)
	radius  = Default (radius,     12)
	elast   = Default (elast,     3.0)
	mask    = Default (mask, radius/4)
	smode   = Default (smode,       0)
	wmin    = Default (wmin,      1.0)
	thr_det = Default (thr_det,     2)
	thr_edg = Default (thr_edg,    32)
	debug   = Default (debug,       0)
	subspl  = Default (subspl,      0)

	Assert (thr > 0, "GradFun3: "+chr(34)+"thr"+chr(34)+" must be strictly positive.")

	elast = Dither_max (elast, 1)

	w = src.Width ()
	h = src.Height ()

	src.Dither_convert_8_to_16 ()
	inp = last

	# Main debanding

	  (smode == 1) ? Dither_gf3_dfttest (src, radius, thr, elast)
\	: (smode == 2) ? Dither_gf3_bilateral_multistage (radius, thr, elast, wmin, subspl)
\	:                Dither_gf3_smoothgrad_multistage (radius, thr, elast)
	flt = last

	# Edge mask

	edge_mask = src.mt_edge (mode="prewitt", thY1=0, thY2=255)
	detl_mask = src.mt_edge (mode="min/max", thY1=0, thY2=255)

	# Edges
	e_edg = Dither_make_expr_gate (thr_edg * 0.75, thr_edg)
	m_edg = edge_mask.mt_lut (expr=e_edg)
	m_edg = m_edg.RemoveGrain (21, -1)
	m_edg = m_edg.mt_expand_multi (sw=mask-1, sh=mask-1, mode="ellipse")

	# Details
	m_det_rad = Round (sqrt (mask))
	thr_det_lo = Dither_max (thr_det * 0.75, 1)
	thr_det_hi = Dither_max (thr_det,        1)
	e_det = Dither_make_expr_gate (thr_det_lo, thr_det_hi)
	m_det = detl_mask.mt_lut (expr=e_det)
	m_det = m_det.RemoveGrain (21, -1)
	m_det = m_det.mt_expand_multi (sw=m_det_rad-1, sh=m_det_rad-1, mode="ellipse")

	# Final mask
	edge_mask = mt_logic (m_edg, m_det, mode="max")
	edge_mask = edge_mask.RemoveGrain (19, -1)
	edge_mask = edge_mask.RemoveGrain (19, -1)
	masked = Dither_merge16_8 (flt, inp, edge_mask, luma=true)

	(mask > 0) ? masked : flt

}

然后如果不需要deband的话,Dither_convert_8_to_16().output_16bit_interleaved(),需要deband的话,GradFun3_nodither().output_16bit_interleaved(),弄出来的数据就是16bit精度了,然后x264的命令行这样写:

代码: 全选

avs2yuv -raw XXXX-16bit.avs -o - | x264-1995-10.exe - --demuxer raw --input-depth 16 --input-res 704x480 --fps 23.976 --preset ultrafast --qp 0 -o XXXX_10.mkv
x264就能吃下去了。

(声明下我个人没测试过。。。是看 http://forum.doom9.org/showthread.php?p ... ost1507639 学回来的。
皮神v5
► 显示剧情透露 En Taro 06!Taro Pie NC Fanclub project始动!聊天用Q群开放中
► 显示剧情透露 胸中有万言,退敌无一策,是谓书生误国"
► 显示剧情透露 前辈们的信念
► 显示剧情透露 妇联招新广告,走过路过可以看看撒
► 显示剧情透露 香芋派,后期菊苣们的一致选择
► 显示剧情透露 众菊苣喜评香芋派
► 显示剧情透露 聊天用工具
头像
SquallATF
帖子: 1
注册时间: 2011-08-08 10:17

Re: 最新的ffdshow能解码10bit源了?

话说ffdshow-tryout的话svn 3954才开始支持10bit解码的,之前的版本解码会有马赛克
svn 3954 changelog
Added support for decoding H.264 10-bit 4:2:0 and 4:4:4.
Patch made by Lord.
顺便问个问题 把8bit提升到16bit在编码成10bit中间不会出现损失么?不可以直接把8bit编码成10bit么?
überm Sternenzelt richtet Gott, wie wir gerichtet.
图片
Girls
Usually
Need
Diamond
And
Money
头像
SAPikachu
帖子: 192
注册时间: 2011-02-28 19:55
联系: 网站

Re: 最新的ffdshow能解码10bit源了?

SquallATF 写了:话说ffdshow-tryout的话svn 3954才开始支持10bit解码的,之前的版本解码会有马赛克

顺便问个问题 把8bit提升到16bit在编码成10bit中间不会出现损失么?不可以直接把8bit编码成10bit么?
撇除最近的x264 dither算法问题的话,8->16->10不会出现损失,只是简单的左移右移而已。当然意义确实也不大就是。
T: @SAPikachu
头像
cpu100
帖子: 28
注册时间: 2010-11-09 14:43

Re: 最新的ffdshow能解码10bit源了?

不知道制作好比8bit高的图片如何输出。
自己做好的图片不知道如何贴出来,以下转个别的地方图片:
图片

bpc
簡單說:
8bpc = 2的8次方 2x2x2x2x2x2x2x2=256
16bpc = 2的16次方 2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2=65536
32bpc = 2的32次方 2x2x............................................x2=4294967296
8bpc 就是RGB每一個Channel有256個色階,而16bpc 就是RGB每一個Channel有65536個色階。

有个问题:技术上如何通过制作——输出到10bit的视频存储?
头像
4h4h270
帖子: 163
注册时间: 2011-04-10 17:59

Re: 最新的ffdshow能解码10bit源了?

试了下ffdshow解码10bit依然有问题,我自己压的发现很多码,不过madvr就没有任何问题...
不知道是否是因为用了aq3的缘故
second
帖子: 16
注册时间: 2011-10-02 12:11

Re: 最新的ffdshow能解码10bit源了?

4h4h270 写了:试了下ffdshow解码10bit依然有问题,我自己压的发现很多码,不过madvr就没有任何问题...
不知道是否是因为用了aq3的缘故
madvr+lav最给力了
头像
06_taro
核心会员
核心会员
帖子: 998
注册时间: 2010-09-22 18:32
来自: United Kingdom
联系: 网站

Re: 最新的ffdshow能解码10bit源了?

aq-mode=3 only affects in rate-control when encoding, and has nothing to do with decoding performance.
つまんねー事聞くなよ!

I, personally, for me, believe (obviously sometimes) that my OS choice is right. That's me. I'm not telling you that you should believe it. Learn the facts, and the origins behind the facts, and make up your own damn mind. That's why you have one. (source)

Follow me: @06_taro

304——
为纪念伟大的宇宙史上最强压制304先生,联合国教科文组织决定,将每年的第304天,即平年的10月31日或者闰年的10月30日,定为世界304日。

回到 “解码 播放 字幕 / Decoder playback and subtitles”