編集用画像領域
sdkのfilter.hでSYS_INFO構造体にあるvram_wとvram_hが編集用画像領域のサイズと書かれています
SYS_INFOにはそれらと別にmax_wとmax_hが編集出来る最大画像サイズとあります。
数値関係で行くとvram_w = max_w + 8 vram_h = max_hとなっています。
但し実際の編集用画像領域としては高さの方も+8で存在しているためvram_h = max_h + 8の方が正しそうです(バグ?)
このページでも実際の領域であるvram_h = max_h + 8を採用して書いていきます
非常にややこしいですがFILTER_PROC_INFO構造体のmax_wは上記で言うvram_wの方です
イメージとしては、実際の表示領域より上下左右それぞれ4画素分の領域が確保されており、計算過程で必要であれば使用することができるという物です。実際にAviUtl本体付属のぼかしフィルタなどはycp_edit[-3,-3]などの編集用領域を使用します。
https://scrapbox.io/files/65575a9529ee06001b38b775.png
拡張編集においても、基本的には上記と同じような状態ですが、アルファチャンネル無しのシーンなどにおいては計算式が異なり、次のような状態になっています
https://scrapbox.io/files/65547cbb0455ad001c7bf184.png
↓同等のものがこれ
https://scrapbox.io/files/6554b1bc17295a001c9a13af.png
さらに、青の部分は別の目的で使用しているため書き換えてしまうと問題が起こる可能性があります
https://scrapbox.io/files/655610ec0f68a2001bd6c747.png
patch.aul.jsonの"scene_vram" の"patch_level"の数値によって修正度合いが変わります
"patch_level" : 10(現状は29以下の場合に設定)
上記の青の部分は別の場所を使用するようにする。左右4画素ずつ上下1画素ずつの編集用領域が使用出来るようになり、レンズブラーによるycp_edit[-1,-1]アクセス例外は直る。デメリット無し。
"patch_level" : 30(30以上40未満の場合に設定)
"patch_level" : 40(40以上の場合に設定)
領域確保サイズを増やし、上下4画素ずつの編集用領域が出来るようになり、ycp_edit[-4,-4]アクセス例外が直る。キャッシュ占有量がvram_w*6増える