2011年6月14日火曜日

ARDeformation.dll

さて、前回のコードにさらに手を加えてみたのがこのプラグインです。

更新しました
https://github.com/chikuzen/ARDeformation

使い方

DARPadding(clip, float "dar_x", float "dar_y", int "align", int "color")

  指定したDARにあわせて、左右または上下にベタを付与します。
  dar_x: DARの分子(水平方向)の値 (デフォルト:clip.width)
  dar_y: DARの分母(垂直方向)の値 (デフォルト:clip.height)
  align:左(または上)にパディングされるベタの幅を、この値の倍数になるように調整する(デフォルト:16)
  color:ベタの色指定 (デフォルト:$00000000(黒))

なんらかの理由でレターボックス/ピラーボックスにしてエンコしないといけない場合に使うといいかも知れません(もちろん使わないにこしたことはありませんが)。
alignのデフォルトは16なので、そのまま使えば若干左寄り(若しくは上寄り)になります。それが嫌な場合はalignを1にすれば、(ほぼ)ど真ん中になります。

ARResize(clip, string "mode", float "ar_x", float "ar_y", bool "expand", float "src_left", float "src_top",
     float "src_right", float "src_bottom", string "resizer", float "ep0", float "ep1", int "dest_w", int "dest_h")

  指定したアスペクト比にあわせて、本体内蔵のリサイザを使ってリサイズします。
  mode: アスペクト比のタイプ("dar","sar","par")を指定します。(デフォルト:"dar")
  ar_x: アスペクト比の分子(水平方向)の値 。(デフォルト:clip.width(dar) or 1(sar/par))
  ar_y: アスペクト比の分母(垂直方向)の値 。(デフォルト:clip.height(dar) or 1(sar/par))
  expand: 拡大するか縮小するかを選びます 。(デフォルト:true(拡大))
  src_*:avisynthの各リサイザの引数と同じです。 (デフォルト:0)
  resizer: 呼び出すリサイザを指定します 。(デフォルト:"Bicubic")
  ep0: 各リサイザ固有の引数その1。lanczosの"taps"やBicubicの"b"を指定します。 (デフォルト:各リサイザの規定値)
  ep1: 各リサイザ固有の引数その2。Bicubicの"c"がこれにあたります。(デフォルト:1.0/3)
  dest_w: 出力のwidthをこの値に矯正します。(デフォルト:0(無効))
  dest_h: 出力のheightをこの値に矯正します。dest_wが0以外の場合は無視されます。(デフォルト:0(無効))
  なおdest_w,dest_hを設定した場合は、expandは無視されます。

例えばDVDソースにARResize("dar",16,9,true,8,0,-8,0,"lanczos4")とすれば、無効領域を削ってLanczos4Resizeで16:9に拡大(854x480、PALなら1024x576)します。

二つとも必要な計算を行って、avisynth.dll内の関数を呼び出しているだけなので、スクリプトでも可能でしょう。
しかし、ARResizeのほうは…これと同等のものをスクリプトで書きたいとは思いませんね。めんどすぎます。そもそもavsのfloatでの計算だと精度が落ちるような気もするし。

興味がある人は、自分でもなにかやってみてください。
結構面白いです。

0 件のコメント:

コメントを投稿