ラベル avs2pipemod の投稿を表示しています。 すべての投稿を表示
ラベル avs2pipemod の投稿を表示しています。 すべての投稿を表示

2016年8月14日日曜日

avs2pipemod その22

更新しました。

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

バイナリ

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

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

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

2016年7月24日日曜日

avs2pipemod その21

また更新です。
バージョン1.0.3になります。

ソースコード

バイナリ

- メモリーリーク?の修正
- バージョンリソースを追加

つい先日のAvisynth+の更新でログ出力機能が追加されました。
スクリプトにSetLogParams("stderr", LOG_INFO)と書いておけば、標準エラー出力にログが出るようになります。
"stderr"を"stdout"にすれば標準出力に、"ファイル名"とすればファイルに保存されます。
で、さっそく使ってみたところ"WARNING: A plugin or the host application might be causing memory leaks."とか表示されやがるんですな。
どうやらプラグインと違ってアプリケーションでは、PClipのインスタンスをクラスメンバーにしている場合は自分でデストラクタを呼ばないとこうなるらしい。
どのみちすぐexitしてしまうので実害はないとは思いますが、気持ちいいものでもないので修正しました。

あと、今回からバージョンリソースを追加したので、Explorerでバージョンが分かるようになりました。
VS2015だとタダでリソースエディタが使えるのを思い出したので付けてみたわけですね。
プラグインとかはどーするかな…。

2016年7月22日金曜日

avs2pipemod その20

1件バグがみつかったので更新しました。
バージョンは1.0.2になります。

ソースコード

バイナリ

- infoで表示されるv:durationの計算が間違ってたのを修正。
- infoでavisynthのVersionNumberの他にVersionStringも表示されるようにした。

本来durationの計算は num_frames * fps_denominator / fps_numerator ですが、これを num_frames * fps_numerator / fps_denominator に間違えてました。ごめん。

もう一つの変更点について
その18で書き忘れてたのですが、1.0.0からavs2pipemodには'-dll'というオプションが追加されました。
これは複数のavisynth.dllを使い分けるために用意したものです。
たとえば
avs2pipemod -info -dll="C:/hoge/fuga/avisynth.dll" script.avs
とやれば、avs2pipemodは'C:\hoge\fuga\'にあるavisynth.dllを使います。
あと、うちのC:\Windows\SysWOW64には'AviSynth.dll'の他に'AviSynth.dll_official260.esc'とか'AviSynth.dll_official261a.esc'なんてファイルも存在したりするのですが、これも
avs2pipemod -benchmark -dll="avisynth.dll_oficial261a.esc" test.avs
のようにすれば、そちらのDLLを使うようになります。
-dllを未指定の場合は今まで通り、Pathの通ったところにあるAviSynth.dllを使います。
で、VersionNumberだけだとどれも2.600としか表示されないのでもうちょっとわかりやすくする必要があったのですね。
まあ、そういうことです。

2016年7月18日月曜日

avs2pipemod その19

avs2pipemodにバグがあったので更新しました。

ソースコード

バイナリ

変更点
- rawvideo及びy4m出力の際のチェックが間違っていたのを修正

staxripの中の人からバグレポ貰ったので直しました。
なんつーかたいへん間抜けかつありがちなバグでした。
1.0.0を使ってる人は更新してください。

2016年7月10日日曜日

avs2pipemod その18

avs2pipemodを更新しました。

ソースコード

バイナリ

変更点
- avisynth_c.hを使うのをやめてavisynth.hを使うようにした。
- C99をやめてC++で書きなおした。
- VisualStudio2015以降(または新しめのインテルのコンパイラ)でしかビルドできなくなった。
- avisynth2.5xのサポート終了。
- WindowsXPのサポート終了。
- x264bdとx264rawが使えなくなった。
- Avisynth+の16bit/32bitフォーマットに対応した。
- Y4M出力でffmpegの拡張を使えるようにした。

上記のようになんかガラッと変わったように見えますが、Avisynth+MTの最新版を使っている人以外にはどうでもいい変更ばっかでもあります。
まあ、すべてはavisynth_c.hが悪いんです。

というわけで、Avisynth+MTの新しいの使ってるよって人は更新してみたらいかがでしょうか。

もしx264bdとx264rawもまだいるよって人はパッチ書いて送ってね!

2012年9月2日日曜日

avs2pipemod その17

更新しました。

avs2pipemod-0.4.2.7z
https://github.com/chikuzen/avs2pipemod

*エラーチェックを少し強化

avisynthからフレームを受け取った際に-benchmark以外のモードなら、エラーチェックをするようにしました。

追記:
どうも解凍時に不具合が出る人がいるようなのでzip版も上げてみました。
avs2pipemod-0.4.2.zip

2012年3月14日水曜日

avs2pipemod その16

更新しました。
avs2pipemod-0.4.1.7z
https://github.com/chikuzen/avs2pipemod/

*'x264raw(tc)'のエラーハンドリングを修正。

たくあん氏からバグ報告いただきました。ありがとうございました。

しかしなんですな
http://k4095-takuan.blogspot.com/2012/03/batbash.html
やっぱ、batって色々と難しすぎると思うのですよ。
コマンドラインが苦手という人の理由の8割は、無理にコマンドプロンプト/batを使おうとしているからだと思います。

2012年3月4日日曜日

avs2pipemod その15

更新しました。
avs2pipemod-0.4.0.7z
https://github.com/chikuzen/avs2pipemod

* 'dumpyuv'を'dumptxt'に変更し、YUY2やRGBに対応。

やっぱ、どうせやるならpacked formatもサポートしとくべきだよなぁとか思ったので。

2012年2月18日土曜日

avs2pipemod その14

更新しました。

avs2pipemod-0.3.0.7z
https://github.com/chikuzen/avs2pipemod

*新機能 "dumpyuv" を追加

これを読んでたら自分も欲しくなったので、機能を追加しました。
RGBデータを扱いたい場合は
ColorBars()
Y=ShowGreen("Y8").ConvertToYV24()
U=ShowBlue("Y8")
V=ShowRed("Y8")
YToUV(U, V, Y)
とでもして下さい。

2012年2月16日木曜日

avs2pipemod その13

更新しました。

avs2pipemod-0.2.2.7z
https://github.com/chikuzen/avs2pipemod

*x264raw/x264bdの出力内容に"--frames"を追加

rawvideo出力等で"-trim=*,*"を使っている場合は、こちらも同様にtrimを追加して下さい。
両方で同じ指定をしないと、フレーム数の整合がとれなくなります。

2012年1月30日月曜日

avs2pipemod その12

更新しました。

avs2pipemod-0.2.1.7z
https://github.com/chikuzen/avs2pipemod

*新機能'x264raw','x264rawtc'を追加

最近はdither hackやらx264がRGB圧縮に対応したりやらのおかげで、y4m出力の代りにrawvideo出力を使う頻度が結構高くなりました。
YUV4MPEG2は仕様で「使えるフォーマットは8bitのplanarYUVのみ」と決められているので、これらのためには使えないのです。
で、仕方がないので
$ avs2pipemod -rawvideo=vflip input.avs | x264_x64 - --demuxer raw --input-csp bgr --input-res 1280x720 --output-csp rgb --fps ...
とかやるわけですが、長いコマンドがいい加減めんどうなので省力化することにしました。

使い方
$ avs2pipemod -x264raw 1280x720_30fps_rgb24.avs
てな感じのコマンドを実行すると
- --demuxer raw --input-csp bgr --input-depth 8 --input-res 1280x720 --fps 30/1 --output-csp rgb
と標準出力に出力されます。

dither packageやflash3kyuu_debandのinterleaved出力を使う場合は、引数でinput-depthを指定するとwidthを1/2にしたコマンドラインが出力されます。
$ avs2pipemod -x264raw=16 2560x719_ntsc-film_16bit_yv24.avs
- --demuxer raw --input-csp i444 --input-depth 16 --input-res 1280x719 --fps 24000/1001 --output-csp i444
'x264rawtc'は、--tcfile-inを使う場合のためのもので、"--fps fpsnum/fpsden"は出力されません。
$ avs2pipemod -x264rawtc 640x480_yv411.avs
- --demuxer lavf --input-fmt rawvideo --input-csp yuv411p --input-depth 8 --input-res 640x480 --output-csp i422
筆者のようにCLIにCygwinやMSYSのBash/shell scriptを使っている人なら
$ avs2pipemod -rawvideo input.avs | x264 $(avs2pipemod -x264raw=16 input.avs) --crf 22 --preset slower ...
てな感じで、コマンド置換を利用すれば結構ラクになると思います。

cmd.exeな人の場合は…あいにく筆者はdosコマンドやbatは数年前に憶えることを放棄したので、さっぱりわかりません。
まあ、某ペンギン様も「batを憶えるくらいならPerlをインストールしろ」とか言ってますし、それでいいかと思っています。

2012年1月28日土曜日

avs2pipemod その11

更新しました。
avs2pipemod-0.1.2.7z
https://github.com/chikuzen/avs2pipemod

エラーの出るavsを使用した際にクラッシュしていたのを修正。

生まれて初めてバグレポート頂きました。
これまでずっとレポートする側だったので、なんか新鮮な気分です。

2012年1月5日木曜日

avs2pipemod その10

更新しました。

avs2pipemod-0.1.1.7z
https://github.com/chikuzen/avs2pipemod

コードの大部分を書き直しました。

* avisynth.libが要らなくなった。
これまではビルドするためにavisynth.libを使う必要がありましたが、これをやめてLoadLibrary()を使うようにしました。
これにより64bit用もビルド出来るようになりました。

* avisynth.dllのバージョンを検出し、挙動を切り替えるようにした。
てなわけでavs2pipe26modはなくなりました。

* おまけ
SetMTModeに応じてDistributor()を自動追加する機能もコードには存在します。
もし、この機能が欲しい人は、make時に'XCFLAGS=-DBLAME_THE_FLUFF'を追加して自ビルドして下さい。

2011年12月31日土曜日

avs2pipemod その9

更新しました。

avs2pipemod-20111230.zip
https://github.com/chikuzen/avs2pipemod

*ビデオ出力処理をavs2pipeの最新のものから移植。

久しぶりにdoobry氏がDoom9に現れgithubのレポを公開しました。
さっそく最新のコードを見てみると…うーむ、こんな手があったのか。
手元のベンチマーク結果をみてもこれのほうが速かったので、早速パクりました。
つくづく彼のコードは自分にとって素晴らしい教材です。

追記
たくあん氏から、以前のバージョンより遅くなっているとの報告を受けたので、検証して見ました。
#sample.avs
LoadPlugin("DGDecode.dll")
MPEG2Source("1400x1080x2990frames.d2v", idct=3)

これを前回(20110911)と今回(20111230)で比較
pattern1:
 $ time avs2pipemod -y4mp sample.avs > sample.y4m
pattern2:
 $ time avs2pipemod -y4mp sample.avs | x264 - --demuxer y4m --preset ultrafast -o sample.264
pattern3:
 $ time avs2pipemod -y4mp sample.avs | x264 - --demuxer y4m --preset medium -o sample.264

それぞれを3回ずつ回すと(数値はエンコード終了までの時間)
              pattern 1      |      pattern2      |      pattern3
          20110911  20111230 | 20110911  20111230 | 20110911  20111230
1st(sec)   122.094   112.451 |   39.919    42.416 |  181.153   183.238
2nd(sec)   122.200   113.405 |   40.099    42.426 |  183.994   182.490
3rd(sec)   118.490   114.094 |   39.976    42.716 |  184.112   182.664
avg(sec)   120.928   113.317 |   39.998    42.519 |  183.086   182.797
他のエンコーダにpipeせず、直接y4mやrawで保存する場合は20111230のほうが速いです。
そして、他のエンコーダにpipeした場合は、以前の方が速くなります。
エンコーダ側の設定がある程度重くなると律速する…どうしようかなぁ…。

現実的な使用例を考えるとpattern2よりも1か3の使い方のほうが多いと思いますので、このまま行くことにします。

2011年9月19日月曜日

avs2pipemod その8

更新しました。

avs2pipemod-20110919.zip
https://github.com/chikuzen/avs2pipemod

*新機能'trim'を追加。

Doom9で「avs2yuvみたいに-seekや-framesをサポート出来ないか」とリクエストを受けたので追加してみました。
内部でavisynthのTrim()を呼び出すだけの簡単なお仕事だし、まああっても邪魔にはならないと思ったので。

使い方
avs2pipemod -y4mp -trim=100,200 input.avs > output.y4m
というふうにすれば、avsの最後にTrim(100,200)を書いたのと同じようになります。
-infoと-x264bdでは無視されます。

ところでリクエストしてきたStephen R. Savage氏は別名thewebchatというファンサブ界の厄介者らしい。
そーいや昔120fpsAVIの作り方とか調べてたな…物好きなこと。

2011年7月3日日曜日

avs2pipemod その7

更新。
この前waviのコードを読んだのをきっかけに、RIFF-WAVEフォーマットについていろいろ調べてみました。
どうやらものに出来たようなので、avs2pipemodに新機能を追加。

avs2pipemod-20110703.zip
https://github.com/chikuzen/avs2pipemod

*'-audio'オプションを廃止し、'-wav'と'-extwav'オプションを追加
'-wav'は、一般的なriff-wave(.wav)フォーマットで出力します。
'-extwav'は、チャンネルマスク付きのwave extensible formatで出力します。
チャンネルマスクはチャンネル数に応じて決め打ちになるので、特殊なスピーカー配置の場合はwaviを使ったほうが良いでしょう。
PCM音声の場合、wave extensible formatが普通のwavよりいいところはチャンネルマスクを付けられる点だけなわけですが、これをサポートしているソフトはそれほど多くはないようです。
よく分からない場合は'-wav'を使いましょう。
ちなみにこれまでの'-audio'は「チャンネルマスク無しのwave extensible format」という微妙すぎるものしか出力できませんでした。

*'-rawvideo'の引数にvflipを追加
avs2pipemod -rawvideo=vflip input.avs とすれば、映像の上下を反転して出力します。
RGB出力時の反転対策です。

追記
Doom9に投稿したらIanB氏にオプションを変えたことでお小言をくらってしまったので、-audioでも-extwavと同じ挙動をするように変更しました。
avs2pipemod-20110703-2.zip

2011年5月10日火曜日

avs2pipemod その6

…更新。

x264のchangelogを眺めていたらr1939でbluray-compat+fake-interlacedのときはpic-structが要らなくなったと書いてあったので、こっちも削っておくかとコードを見直してみたら…なんか色々、avs2pipe0.0.3の時点で間違ってるようです。

とりあえずNTSC/PALのSDでDARが4:3なソースの場合の対応のために、オプションをまた変更。
これまでのx264bd=tffをx264bdtにしてしまい、=4:3を付けた場合はDAR4:3のソースとみなすことにしました。
具体的には`avs2pipemod.exe -x264bdt=4:3 720x480x60i.avs`といった感じです。
それとBD規格ではやはりBFFはないようなので、x264bdbは作りませんでした。
BFFなソースは事前にDoubleWeave().SelectOdd()でもして、フィールドオーダーをTFFにしてください。

バイナリ
追記:バグあったわ…自分の書いたところでorz
最新は20110510.zipです。
avs2pipemod-20110510.zip

ソース
http://github.com/chikuzen/avs2pipemod

2011年5月7日土曜日

avs2pipemod その5

しつこく更新。
一つ一つの関数が長すぎるのをなんとかしようと、分割したり色々していたら、いつの間にか一部の機能が変わってしまった。

 *'packedraw'を廃止して'rawvideo'に変更
 これまでは映像のraw出力はpacked formatのみでしたが、planar formatでも出来るようにしました。
 planar YUVの出力部はYUV4MPEG2と共通なので、planeの並び方はY->U->Vに限定されています。
 この並び方はffmpeg/libavのpix_fmt(YUV444pとかYUV422pとか)と同じなので、使用上の都合はYV16やYV24(並び方がY->V->U)より良いのですが、いくら探してもFourCCみたいなものが見つかりません。
 x264のfullhelpでは、これをi422とかi444と書いていますが…そんな呼び方、他所では聞いたことがない。
 どうもkemuri_-9氏が、i420を真似て自分で作ってしまったのではないだろうか…。

追記:Y8の処理でバグがあったので修正、バイナリを更新しました。

バイナリ
更新しました

ソース
http://github.com/chikuzen/avs2pipemod

2011年5月4日水曜日

avs2pipemod その4

更新。 いろいろオプションを増やしすぎた感じがしたのでgetoptを使うことにしました。
その他、いろいろ書きなおしたりヘッダーファイルを追加したりあれこれ…かえってカオスな感じになったような…

使い方は以下のようになります。
avs2pipemod -audio=24bit input.avs | neroAacEnc -q 0.3 -if - -of output.mp4
avs2pipemod -y4mt=40:33 input.avs | x264 - --demuxer y4m -o output.mkv
aud16やrawaud24とかはなくなり、かわりにオプションの後ろに'=16bit'とかを付けるようにしました。
付けない場合は、音声出力なら変更なし、y4m出力ならアスペクト比の指定なし(0:0)として扱われます。

あと、x264bdの出力をx264のr1936以降(--bluray-compatあり)用に変更(正直、自分にはほとんど興味のない分野だけど…この機能、使ってる人いるのかな?)。
こちらもこれまでのように、avsのフィールドベース/フレームベースによる判定ではなく、'=tff(bff)'で、インタレの判定を行います(ところでBDでbottom firstってありえるのかいな?)。

バイナリはこちら
更新したので削除

ソースはこちら
https://github.com/chikuzen/avs2pipemod

2011年5月1日日曜日

avs2pipemod その3

更新しました。

 *YUV4MPEG2出力時の色空間変換を改良
 これまでの色空間変換はインタレやBT.709は特に考慮されていませんでしたが、今回の更新で対応しました。
 高さが720以上のRGBはRec.709でYUVに、またy4mt/y4mbの際に他の色空間からYUV420で出力する場合はConvertToYV12(interlaced=True)の処理が入ります(これまではすべてinterlaced=falseで処理されています)。

追記:
さらに更新。

 *新オプション'rawaudio''rawaud16''rawaud24'を追加
 このツールの音声出力はwav extensible formatという、RIFF-WAVE(いわゆる.wav)の拡張形式を使います。
 ただのwavよりもいいところも色々あるのですが、あまり一般的ではないため、いくつかのオーディオエンコーダー(例:LAME、oggenc2等)はこれを入力として受け取ることが出来ません。
 今回の新規オプションはこの対策のため、ヘッダーの全くない生のPCMとして出力します。

バイナリ
更新したので削除

ソース
https://github.com/chikuzen/avs2pipemod