Apple ProRes を作ってみた

Apple ProResのエンコードを作ったので、紹介のパワポを作ってみた。

ちなみに、作ったApple ProResのエンコーダはここにある。



ちょっと調べたらそんなに難しそうではなかったし、なんとかなるかなぁと思ってはじめました。でも、毎日、時間取れないし始めてから2年ぐらいかかった気がする。


Apple ProResは、他のコーデック(AVCやHEVC)より、CPU処理が軽いコーデックである点が有利な点だと思う。一方、Apple ProResはデータサイズが大きいいので、そこが欠点になると思う。


Apple ProResは規格化されていて、購入すれば買うことができる。オープンな規格だっってこと。



エンコーダの簡単な紹介です。DCTして、量子化して、VLCしてとシンプルな構造である。




DCTは、画像を周波数成分に分離することである。式に沿って処理すれば、周波数単位で分離される。不思議なんだが、どんな信号も周波数単位に分離できるってことらしい。実際、DCT→逆DCTとすると、周波数変換した値が元に戻るから面白い。

DCTの式は、IEEE Std 1180-1990を見てってことになっている。






量子化は、数字の桁数を小さくすること。ざっくり言うと、100→10だったり、223→22とか、桁数を小さくすることを言う。量子化は2種類あって、周波数単位で量子化する方法と、画面を小さく分離してその単位で量子化する方法がある。



VLCは、符号化。小さい数字は桁数が小さく、大きい数字は桁数が大きくなる。桁数が大きくなるとデータサイズが大きくなる(=ファイルサイズが大きくなる)。




作ったエンコーダの対応状況。レート制御は実装していない。どうしよう。。。。映像のサイズはいろいろできそう。422と4444の両方に対応した。デコーダは作っていない。ProRes RAWは規格書がないので、どうなっているか不明。。。詳細がわかったら作ってみようと思う。



エンコーダを作った環境の紹介。



次は、C言語で作ったエンコーダをFPGAで実装したい。レート制御も実装しないと製品としては使えないし、今はデコーダの実装の反対を実装しただけなので、高画質化も必要。
FPGA化してAWSで動かしたり、FPGAボードを作りたいと思う。

コメント