English version of changelog>>5.28でのAvisynth Unicode対応に関する追加アップデート。
5.28のAvisynthのUnicode対応は、プロセスの文字コードをOSの標準文字コード(ほとんどの場合ShiftJIS)からUTF-8に変更できるWin10の機能を使っていて、これによりUnicodeには対応できるけどavsスクリプトのUTF-8化が必須という感じになっていた。
x264もr3021以降そうなっているので、(私自身があまりAvisynth関連に精通していないのもあり)そっちが主流になっていくのかな、という認識だったが、いろいろコメントをいただき、やはり問題となるケースも多そう。
そこで今回は、"--process-codepage os"というオプションを指定することで、従来のUTF-8でないavsスクリプトも使用できるようにした。
このプロセスの文字コードの切り替えというのの問題点は、プロセスの実行中に切り替えられるものではなく、実行ファイルに埋め込んでいるmanifestという情報に記載されていて、プロセスの起動時には確定してしまうということ。
じゃあどうやって切り替えるかというと、プロセスを立ち上げなおすしかなく、"--process-codepage os"が指定されていた場合には、
1. 実行ファイルのコピーをオリジナルの実行ファイルと同じフォルダに作成NVEncC64A_[なんか数字].exe みたいなのができる。数字はオリジナルのプロセスID(16進数)。
2. コピーの実行ファイルのmanifestをUpdateResourceWという関数でUTF-8を使用しないmanifestに更新3. コピーの実行ファイルを同じコマンドラインオプションで再実行これでこのコピーのプロセスはOSの標準文字コード(ShiftJIS)で実行される。
4. 終わったらコピーの実行ファイルは消すという感じになっていて、力業(裏技?)ぽい感じだけどこの方法で問題なく従来のスクリプトが実行できるのを確認した。まあとりあえず動くようになったのでよいかなあ…。
注意点として、1.にあるようにオリジナルの実行ファイルと同じフォルダにコピーを作成するので、Program Files等書き込みに管理者権限の必要な場所に置かないようにしてください。
なお、OSの文字コード設定をUTF-8に変更している場合は効力がありません(あくまでOS標準の文字コードに戻すだけなので)。その場合は文字コード周りのことをご承知の上で変更されていると思うので問題ないかとは思いますが…。
ダウンロード>>ダウンロード (ミラー) >>NVEncCのオプションについてはこちら。
NVEncCオプション一覧>ソースはこちら>>