查看完整版本: [-- [分享]AvsGenStr: 同时将多个Avisynth变量转成字符串 --]

『漫游』酷论坛 -> 『影音数码技术学习交流』 -> [分享]AvsGenStr: 同时将多个Avisynth变量转成字符串 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

linuxyouxia 2011-12-16 02:29

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

闲着无聊
下载: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 ^ "
    \                                                   +string(Szrp)+" 2 ^ "+string(SdmpLo)+" + * x y - 2 ^ "+string(SdmpLo)+" + "+string(Szrp)+" 2 ^ * / * 1 "
    \                                                   +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 ^ "
    \                                                   +"$Szrp 2 ^ $SdmpLo + * x y - 2 ^ $SdmpLo + $Szrp 2 ^ * / * 1 "
    \                                                   +"$SdmpHi 0 == 0 $Szrp $SdmpHi / 4 ^ ? + 1 $SdmpHi 0 == 0 x y - abs $SdmpHi / 4 ^ ? + / * + ?")
    mt_lutxy(tmp, method, yexpr=yexp,U=1,V=1)


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

测试:
  1. LoadCPlugin("AvsGenStr.dll")
    BlankClip()
    BoolVar    = true
    IntVar     = 255
    FloatVar   = 90.12345678
    StrVar     = "The quick brown fox jumps over the lazy dog"
    A = Subtitle(AGS("""AGS: $BoolVar $IntVar $FloatVar$StrVar $"""))
    B = Subtitle("AGS: "+String(BoolVar)+" "+String(IntVar)+" "+String(FloatVar)+String(StrVar)+" $"))
    Interleave(A, B)






linuxyouxia 2011-12-20 13:15
http://dl.dbank.com/c0hrhasuf2
AvsGenStr20111220

修正两个Bug

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


查看完整版本: [-- [分享]AvsGenStr: 同时将多个Avisynth变量转成字符串 --] [-- top --]


Powered by phpwind v8.5 Code ©2003-2011 phpwind
Time 0.011751 second(s),query:3 Gzip disabled