DPX 10bitは重いのか?

April 22, 2012
最近CMなどではコンポジットからカラコレに対してDPX 10bitで渡すことが多いのですが、DPXは重いからという理由でTIFF 8bit LZW圧縮とかでレンダリングしたがる人もいます。たしかにファイルサイズだけで見れば圧縮のかかったTIFFを軽いというのは事実ですが、実際にRAIDに読み込んで作業する段になると、圧縮のかかった8bit TIFFの方が読み書きに時間かかるだろ...という実感があったので検証してみました。

検証にあたってはAfter Effects CS5.5 (Mac)を使用。
単純にファイルの読み書きの速度を検証するので、フッテージと出力結果は同じRAID上に保存することにします。プロジェクトの設定は16bit sRGB。使用フッテージは647フレーム1080 24pのフッテージを各フォーマットに変換したものを予め用意。

これで以下の速度を検証します。(左が入力画像フォーマット、右が出力画像フォーマットです。要は読み込んだファイルと同じファイルで出力しているだけ)

  • TIFF 8bit LZW圧縮 --> TIFF 8bit LZW圧縮
  • TIFF 8bit 非圧縮 --> TIFF 8bit 非圧縮
  • DPX 10bit リニア --> DPX 10bit sRGB
  • QuickTime ProRes422(HQ) --> QuickTime ProRes422(HQ)※

※QuickTimeはオマケです。

各フッテージの容量は以下の通り:

  • TIFF 8bit LZW圧縮: 1.44GB
  • TIFF 8bit 非圧縮: 4.03GB
  • DPX 10bit リニア: 5.37GB
  • QuickTime ProRes422(HQ): 620MB

出力はすべてアルファを含まないRGBチャンネルのみです。念のため各レンダリングの前にキャッシュをパージしておき、レンダリング自体はバッチレンダリング(aerender)で行ないました。

結果は以下の通り:

  • TIFF 8bit LZW圧縮: 2 Min 43 Sec
  • TIFF 8bit 非圧縮: 1 Min 39 Sec
  • DPX 10bit リニア: 1 Min 15 Sec
  • QuickTime ProRes422(HQ): 1 Min 25 Sec

次に読み込みの速度だけを比較するために、書き出し条件をDPXに揃えて検証してみます。オマケのQuickTimeは今回はなしで...

  • TIFF 8bit LZW圧縮: 1 Min 20 Sec
  • TIFF 8bit 非圧縮: 1 Min 19 Sec
  • DPX 10bit リニア: 1 Min 15 Sec ※前回テストの結果より

次に書き出しの速度だけを検証するために、読み込みのフォーマットをDPXに揃えてみます。

  • TIFF 8bit LZW圧縮: 2 Min 42 Sec
  • TIFF 8bit 非圧縮: 1 Min 27 Sec
  • DPX 10bit リニア: 1 Min 15 Sec ※前回テストの結果より

あとNukeで最初のテストを行った場合の結果が以下の通り。TIFF LZWとDPXの結果のみです。

  • TIFF 8bit LZW圧縮: 1 Min 59 Sec
  • DPX 10bit リニア: 0 Min 32 Sec

なんかDPXが速すぎて、これ本当にスルーでファイルコピー出力してるだけなんじゃないかという疑惑があったので、Lin->Logにカラースペース変えてみたけど、結果はほとんど同じでした。

というわけでTIFFの圧縮ファイルは、ローカルのRAIDに読み込まれた場合、レンダリング時間の短縮やファイルの読み込みの時間短縮には実質貢献しませんでした。特に出力時間の差がおおきいのでレンダリング時間短縮のためにTIFFのLZW圧縮を使うのは逆効果。

低速なネットワークやUSBならファイルの転送時間によるメリットもあるかもしれませんので、ここではあくまでローカルの作業用ストレージやSANに読み込んだ場合の話です。非圧縮のTIFFだとDPXとあまり時間差が生じませんが、TIFF 8bitとDPX 10bitという比較なので画質面のアドバンテージを考慮すると、私は「DPXだと重い」と言って排除するのは間違いかと思います。


[関連記事]
DPX Plus
AfterEffectsでOpenEXR
AfterEffectsでのリニア合成のお話(1)
HS_ProxyManager 0.9 Beta1
CompositeでマルチレイヤーのOpenEXR