AviSynth入門/書式と引数
はじめに †
ほとんどの内蔵フィルタや外部プラグインのマニュアルには、フィルタの書式というものが記されています*1。書式は、フィルタの名前、引数の名前や種類などを定めたもので、そのフィルタを使用する前に、まず確認しなければならないものです。
今回は、前回紹介したKenKunNRフィルタを例に、フィルタの書式と引数について見て行くことにしましょう。
書式の記法 †
以下の書式は、KenKunNRに書かれているものです*2。
KenKunNR(clip, int "strength", int "radius", int "threshold")
一番左の「KenKunNR」がフィルタ名です。そして、カッコの中が、そのフィルタ(この場合は、KenKunNR)で利用可能な引数のリスト(引数リスト)です。
フィルタ名(引数1, 引数2, ...)
もしKenKunNRフィルタを利用したいなら、まずそのフィルタ名を記述し、カッコ(半角の丸括弧)の中に引数を指定します。複数の引数を指定するときは、各引数をカンマで区切ります。
引数リスト †
引数リストの内容を、詳しく見てみましょう。
strength, radius, thresholdは、前回も紹介したとおり、KenKunNRフィルタで利用可能な引数の名前(引数名)です。
引数名の前(左)にある「int」は、各引数のタイプ(データ型)を表しています。strength, radius, thresholdは、すべてint型(整数型)の引数であることがわかります。データ型については、AviSynth入門/データ型で、あらためて説明します。
このようにマニュアルにおいて、引数名とデータ型は、基本的に、一対の形で表されます。つまり、フィルタの書式は、以下の形で表現されることになります:
フィルタ名(データ型 引数名, データ型 引数名, ...)
clipについて †
AviSynthで利用可能なフィルタの多くは、ビデオ・クリップやオーディオ・クリップに対して処理を行うため、clip型の引数を必要とします。これは、KenKunNRにもあてはまります。
ただし、第1引数がclipである*3場合、「データ型 引数名」という形ではなく、上記の書式のように、単にclipとして記されていることがあります。
また、同じく第1引数がclipであるときに、「clip clip」と書かれていることもあります。この場合、1つ目(左)のclipはデータ型、2つ目(右)のclipは引数名を表します。
省略できる引数と省略できない引数 †
もう一度、KenKunNRの書式を見てください。
KenKunNR(clip, int "strength", int "radius", int "threshold")
clip以外の3つの引数は、すべて二重引用符(")で囲まれています。
このように二重引用符で囲まれた引数は、名前付き引数での指定が可能で、かつ省略することができます。省略された引数に関しては、あらかじめ設定されているデフォルト値が適用されます*4。
KenKunNR(strength=256) # strengthは名前付き引数で指定できる
これに対し、二重引用符で囲まれていない引数は、名前付き引数が使用できず、また省略することもできません*5。
なお、フィルタのマニュアルによっては、省略可能な引数を大括弧([])で囲んでいることもあります。
引数の省略の仕方については、AviSynth入門/引数の省略とデフォルト値で、より詳しく解説します。
まとめ †
- フィルタ(関数)の書式
- データ型→AviSynth入門/データ型で解説。
- 引数名が二重引用符("")で囲まれている引数
- 省略可。
- 省略すると、デフォルト値が適用される(デフォルト値が設定されている場合)。
- 名前付き引数が利用できる。
- 省略可。
- 引数名が二重引用符("")で囲まれていない引数
- 省略不可。
- 名前付き引数が利用できない。
- マニュアルによっては、省略可能な引数を大括弧([])で囲んでいることも。
- 引数の省略の仕方→AviSynth入門/引数の省略とデフォルト値で解説。
*1 AviSynth入門/マニュアルの読み方を参照
*2 KenKunNRが内蔵されているwarpsharpプラグインには説明書が付属しません。ここで紹介しているKenKunNRフィルタの書式は、ソースを元に書き起こされた非公式なものです。
*3 あるいは、引数名が設定されていない
*4 もしデフォルト値が設定されていなければ、エラーが発生する可能性があります。
*5 ただし、上記のclipについて で書いたように、clip型の引数は省略できる場合があります。