Ut Video Codec Suite の最適化をやっていたら、画像処理向けの DSL である Halide を紹介されたので調べていました。 halide とはハロゲン化物の意味なので、読みをカタカナで書くと「ハライド」だと思われます。

Halide の特徴については他の人の記事に譲るとして、UtVideo で Halide を使うには、Halide が以下の処理を表現できる必要があります。

  • いわゆる一般的な画像処理(フレーム内予測)
  • ヒストグラムの計算(画像から画像でないものをreductionで計算する例。ハフマン符号化の前段階でシンボルの出現回数を数えるのに使う)
  • 多値関数(packed画像をplaneに分解したり、フレーム内予測結果とヒストグラムを同時に計算したり)
  • 入力のバイト列をビット処理を含む何らかの規則で圧縮して出力のバイト列に変換する(UMxx の処理)

このうち最後のやつ以外は、さっき読んだチュートリアルにそのものズバリ書いてあります。最後のやつはビット処理自体はできるようですが、入力によって出力のサイズが変わる処理を記述できるかどうかまではまだよく分かりません。

というわけで、UMxx の処理はどうなるか分かりませんが、 ULxx や UQxx については多くの部分を Halide で記述できそうに見えます。

記述できそうだということを確認しただけで、実際に記述したりベンチマークしたりはまだです。

Trackback

no comment untill now

Add your comment now