『漫游』酷论坛>『影音数码技术学习交流』>[分享]AvsGenStr: 同时将 ..

[分享]AvsGenStr: 同时将多个Avisynth变量转成字符串

linuxyouxia@2011-12-16 02:29

闲着无聊
下载:http://dl.dbank.com/c0c8wuws3r

avs脚本里看到过这样的写法
复制代码
  1. mt_lutxy(tmp, method, yexpr="x y == x x x y - abs "+string(Szrp)+" / 1 "+string(Spwr)+" / ^ "+string(Szrp)+" * "+string(str)+" * x y - x y - abs / * x y - 2 ^ "
  2. \                                                   +string(Szrp)+" 2 ^ "+string(SdmpLo)+" + * x y - 2 ^ "+string(SdmpLo)+" + "+string(Szrp)+" 2 ^ * / * 1 "
  3. \                                                   +string(SdmpHi)+" 0 == 0 "+string(Szrp)+" "+string(SdmpHi)+" / 4 ^ ? + 1 "+string(SdmpHi)+" 0 == 0 x y - abs "+string(SdmpHi)+" / 4 ^ ? + / * + ?",U=1,V=1)

看着不是很舒服,于是写了个插件,能够这样写
复制代码
  1. yexp = AGS("x y == x x x y - abs $Szrp / 1 $Spwr / ^ $Szrp * $str * x y - x y - abs / * x y - 2 ^ "
  2. \                                                   +"$Szrp 2 ^ $SdmpLo + * x y - 2 ^ $SdmpLo + $Szrp 2 ^ * / * 1 "
  3. \                                                   +"$SdmpHi 0 == 0 $Szrp $SdmpHi / 4 ^ ? + 1 $SdmpHi 0 == 0 x y - abs $SdmpHi / 4 ^ ? + / * + ?")
  4. mt_lutxy(tmp, method, yexpr=yexp,U=1,V=1)


AGS(string exp)
注意请用LoadCPlugin载入

测试:
复制代码
  1. LoadCPlugin("AvsGenStr.dll")
  2. BlankClip()
  3. BoolVar    = true
  4. IntVar     = 255
  5. FloatVar   = 90.12345678
  6. StrVar     = "The quick brown fox jumps over the lazy dog"
  7. A = Subtitle(AGS("""AGS: $BoolVar $IntVar $FloatVar$StrVar $"""))
  8. B = Subtitle("AGS: "+String(BoolVar)+" "+String(IntVar)+" "+String(FloatVar)+String(StrVar)+" $"))
  9. Interleave(A, B)





[ 此帖被linuxyouxia在2011-12-16 02:43重新编辑 ]
引用

linuxyouxia@2011-12-20 13:15

http://dl.dbank.com/c0hrhasuf2
AvsGenStr20111220

修正两个Bug

1:修正 如果exp参数字符串以 $[变量名称] 结尾,那么这个变量不会被解析
2:和Free Pascal字符串类型实现有关,调用avs_save_string,避免返回的字符串被释放掉
引用

| TOP