2016年8月14日日曜日

avs2pipemod その22

更新しました。

ver.1.1.0になります。
追記:バグ1件見つけたので1.1.1を上げました。

バイナリ

変更/追加
- avisynth+の追加色空間のサポート
- y4mbitsオプションの削除
- filtersオプションの追加

昨晩、avisynth+にあらたに10/12/14bitおよびPlanarRGBが追加されました。
これを見てもらえば、だいたいどんな感じになったのかなんとなくわかってもらえるのではないかと思います。

いや、もう、なんというか、やりすぎじゃありませんかね?
14bitとかYUV420でアルファに対応とか、基地外沙汰というかFFmpeg脳というか、まじで勘弁してほしいんですが。

18 件のコメント:

  1. Ver1.0.0からなのですがAutoVfr.exeへのログを作成にて
    バッチで
    avs2pipemod.exe -benchmark "log_temp1.avs" | avs2pipemod.exe -benchmark "log_temp2.avs" | avs2pipemod.exe -benchmark "log_temp3.avs" ・・・・
    と連続で実行させるのですが、その際に
    ”output various data from avs to stdout”とエラーで停止するようになりました。

    ただavs2pipemod.exe -benchmark "log_temp1.avs"単体では通ります。
    なので不具合ではないかもしれないのですが、
    解決のためのヒント等ありましたらよろしくお願いします。

    返信削除
    返信
    1. とりあえず以下のようなbatを走らせてみましたが、問題は起こりませんでした。

      cd /d %~dp0
      .\avs2pipemod.exe -benchmark .\test.avs
      .\avs2pipemod.exe -benchmark .\test.avs
      .\avs2pipemod.exe -benchmark .\test.avs
      .\avs2pipemod.exe -benchmark .\test.avs
      .\avs2pipemod.exe -benchmark .\test.avs
      pause

      1.0.0以降は、自分がC++に慣れてきたこと、avisynth/avisynth+のC APIは色々面倒なこと、avisynth+の更新に柔軟に対応したいなどの点から、ほぼ丸ごとC++で書き直し、コンパイラもmingw-w64からMSVCに変更したため、中身はまったくの別物になっています。
      よって従来と全く同じ使い方ができないということもあるかもしれませんし、あるいは前のバージョンだとうまくいっていたこと自体がバグだったのかもしれません。

      とりあえず手元で再現しないことには、直すことも調べることも出来ませんので、情報が足りないとしか回答できません。
      あるいはAutoVFR(これもよく知らないんですが)用に使うときは0.4.2を使うとかでもいいのかもしれませんけど。

      削除
  2. Chikuzenさんのコメントを受けてバッチを見直したところ
    バッチからavs2pipemod64.exeを呼び出していました。

    そのうえで確認したところバッチから
    avs2pipemod64.exe -benchmark "log_temp1.avs"
    単体でも”output various data from avs to stdout”でエラーで停止することを確認しました。

    ということで1.0.0以降ではavs2pipemod64.exeからavs2pipemod.exeに変更することで問題を解決することができました。
    ご回答ありがとうございました。

    返信削除
    返信
    1. とりあえず32bitであれば問題はないようですね。
      64bitのほうで問題が起こるのはなんででしょうかね?
      参考までに64bitのほうのavisynth.dllのバージョン及びプラグインとかを教えてもらえると嬉しいのですが。

      削除
  3. 報告の手際が悪くて申し訳ないです。
    環境ですがWindows10 pro 64bit(rev1607 rev1511から症状は確認していました)
    avisynth.dll r2043
    (Groucho2004氏のr2085インストーラからいれてからr2043に戻しています。
    r2082~r2151だとx86とx64にてScriptClipがaccess violationが起こしているようなので
    Code:
    c.ScriptClip("SubTitle(String(current_frame), size=90)")
    を追加するだけで発生します。)

    映像入力(.ts):LWLibavVideoSource (L-SMASH-Works-r901 r903 plugins64+フォルダ)
    音声入力(.aac):AACFaw(2012.06.19 plugins64フォルダ)
    Auto_Vfr.avs:TIVTC(IsCombedTIVTC)(1.0.5 http://avisynth.nl/index.php/TIVTCから plugins64フォルダ)
    (パラメータによっては追加で)MaskTools2(mt_motion)(2.0b1 plugins64+フォルダ)
    関係するかわかりませんが、.avsファイルの文字コードはShift-JISです。

    x86も同様の環境です。疑わしいのはTIVTCあたりでしょうか?

    返信削除
    返信
    1. ふむむむ
      r2043だとx86では発生しないエラーがr2085だと発生するのですか?
      もしそうであれば、なるべく短く、できるだけ必要なプラグインも少ないスクリプトがあれば、ultim氏に直させることができるんですが難しいでしょうか?

      L-SMASH-Worksはmukenさんが色々忙しいのとavisynth版はビルドが難しいことやその他諸々であまり期待できる状況ではないですし、TIVTCも64bitのほうはソースコードをどう弄ったのかすらよくわからないので怪しいといえば怪しい。
      あと自分はテレビはほとんど見ないのでTSエンコ事情とかもさっぱりで、そこら辺のツール類はまったく知らないのですね。
      だれか詳しい人がDoom9あたりで報告してくれるとありがたいんですが。

      削除
    2. code:
      SetMemoryMax(2048)

      LWLibavVideoSource("AAA.ts")
      ScriptClip("SubTitle(String(current_frame), size=90)")
      Prefetch(4)
      return last

      最低限でこれですがいかがでしょうか?
      必要なのは映像入力のL-SMASH-Worksのみです。

      r2161において
      AvsPmod&AvsPmod64にてAccess Violationが出ることを確認しました。
      ScriptClipをコメントアウトすれば不具合解消します。
      r2043ではAvsPmod&AvsPmod64にて問題ないことも確認しています。

      削除
    3. ああ、なるほど。
      次のスクリプトで確認できました。

      SetLogParams("stderr", LOG_INFO)
      ColorBarsHD()
      ScriptClip("SubTitle(String(current_frame))")
      prefetch(4)

      ベンチマーク走らせると真っ赤なエラーログでコマンドプロンプトがえらいことになってます。
      再現性100%なので、これならバッチリですね。
      ありがとうございました。

      削除
    4. あ、あとScriptClipですが、現状でもSetFilterMTMode("DEFAULT_MT_MODE", 3)をスクリプトにいれておけば、クラッシュは回避できます。

      削除
  4. このコメントは投稿者によって削除されました。

    返信削除
  5. クラッシュ回避の情報ありがとうございます。

    返信削除
  6. 横からですがありがとうございます

    Sresotre関数をMTで動かすとエラー文が表示され困ってたんですが、同様の対処法でエラー文なしで動くようになりました

    ありがとうございました

    返信削除
  7. avs2pipemod64.exeでのAuto_Vfrの件ですが、
    Auto_Vfr.avs内の
    IsCombedTIVTCからIsCombed(ChikuzenさんのCombMask)に変更したところ
    1.1.1のavs2pipemod64.exeで正常に動作することを確認しました。
    どうもお騒がせしました。

    返信削除
  8. 上のほうのAutoVFRのエラーと同じだと思うんですが64bit版avs2pipemodが「output various data from avs to stdoutは動作を停止しました」というエラーが出て止まります
    色々と調べたところ↓のようなテキストを同時に吐き出す行でつまづいてるようです(消すと完走する)

    TFM(output="tfm.txt")
    ---
    TDecimate(mode=4, output="tdec.txt")
    ---
    its(def="F:\temp\AutoVfr.def", fps=-1, output="F:\temp\encode_time.txt")
    ---
    its(def="F:\temp\AutoVfr.def", fps=-1, output="F:\temp\encode_time.tmc")

    テストしたavisynth+バージョン r2172、r2290、r2347
    テストしたavs2pipemodバージョン 1.1.1
    テストしたMpeg2dec バージョン plus0.1.1、plus0.0.0、Mpeg2dec x64

    補足1:私の場合は-Benchmark モードでも止まります
    補足2:AvsPmodでのレビューは可能です

    よろしくお願いします

    返信削除
  9. 前回の報告ではテキストを吐き出す行でと書きましたが"yadifmod2(mode=0).TDecimate()もダメでした
    素人の間違った推論を書いてすいませんでした

    そして補足に追加です
    Avisynth+を使ってますがMTは有効にしていません

    返信削除
  10. 今後UTF-8対応の余地ありますか?

    返信削除
  11. %avs2pipemod64% -audio "AutoVFR01.avs" > "G:\movie\_AutoVFR_temp\%~n1\Audio.wav"
    %qaac% --cvbr 203 "G:\movie\_AutoVFR_temp\%~n1\Audio.wav" -o "G:\movie\_AutoVFR_temp\%~n1\Audio_m.m4a

    上の記述があるbatに*.avsをD6Dしてエンコードしようとすると

    G:\movie\_AutoVFR_temp\2024-09-01_18-56-40[L-SMASHw]>"C:\Program Files2\DTV_cli\avs2pipemod\avs2pipemod64.exe" -extwav "AutoVFR01.avs" 1>"G:\movie\_AutoVFR_temp\2024-09-01_18-56-40[L-SMASHw]\Audio.wav"
    avs2pipemod[error]: System exception - Access Violation
    (AutoVFR01.avs, line 59)

    となって音声エンコードできません
    エラー文読むと32bit版のavs2pipemodが動いてるみたいだけど理由が不明

    :SET ”avs2pipemod”

    とSETを無効にしてもダメ
    -audioや-extwavにしても変わらず
    59行目は↓で、頭#で無効にしたらwav出力されるみたい

    ColorYUV(levels="TV->PC", showyuv=false, analyze=false, autowhite=false, autogain=false)#色空間の変更

    なお32bit版はset's(名前違うかもしれないけどご容赦を)のavisynth MTで64bit版はplusという変則なれど、32bit版のavs2pipemodが動く理由が分かりません
    なにかわかることがあればアドバイスよろしくお願いします

    返信削除
  12. 一つ上のColorYUVについて書いた人です
    なにかのバグかと思い報告したのですが、改めて見ると"TV->PC"の変換に対応しているのがplus版のColorYUVだけというオチでした

    対応表の[avs+]ロゴを見落としてましたすいません

    返信削除