多和田新也のニューアイテム診断室

CPU以外のハードウェアを活用した動画トランスコードを試す
【CodecSys CE-10 & PS3編】



 GPUや専用エンジンなど、CPU以外のハードウェアを用いたトランスコード手段が増えている。フィックスターズが発売した「CodecSys CE-10」も、そうしたソリューションの1つで、なんとゲームコンソールであるプレイステーション 3(PS3)を用いてトランスコードのアクセラレーションを行なう。このパフォーマンスをチェックしてみたい。

●PS3のCell/B.E.を使ってトランスコード
【写真1】SCEIのプレイステーション 3

 フィックスターズが発売した「CodecSys CE-10」は、PS3(写真1)をアクセラレータとして使用する、PC用のH.264トランスコードソフトである。フィックスターズでは、マルチコアを活用したソリューションを各種業務向けに展開しており、本製品もその一環として開発されたものだ。

 ただし、CodecSys CE-10は業務用途だけでなく、コンシューマユースに向けても製品展開されている。本製品の料金は、月額または年額で支払う仕組みになっているが、個人向けに年額19,800円(6月末までは15,840円)の「CE-10 Personal」というプランが提供されているのだ。CE-10 Personalを使用している場合は、商用利用が不可となるほか、最大ビットレートが15Mbpsに制限されるが、個人で使うH.264エンコーダとしては実用的な制限に留まっているといえるだろう。

 今回のテストでは、CE-10 Professionalの試用版を用いている。フィックスターズでは、上位モデルとなる(つまり制限のない)CE-10 Professionalの14日間試用版を提供しており、氏名や住所などの情報を送ることでライセンスがメールで送られている。14日間というのは、この登録を行なったタイミングから14日間となっている点には注意を要するが、ソフトウェアの善し悪しを見るには十分な期間だろう。

 さて、CodecSys CE-10は、PS3をアクセラレータとして使用すると紹介したが、これは、PS3のメインプロセッサである「Cell/B.E.」でトランスコード処理をさせるということである。ここで、SpursEngineの存在を思い出す読者もおられよう。東芝が開発したSpursEngineは、Cell/B.E.が持つSPE(Synergistic Processor Element)×4基を搭載している映像処理プロセッサであり、類似の仕組みであると感じられるかも知れない。

 しかし、同じアーキテクチャのSPEを持つというだけで、映像処理を行なうプロセッサとして、Cell/B.E.とSpursEngineはまったく異なる。大きく異なるのは、SpursEngineは独立したデコーダ/エンコーダエンジンを内蔵しているのに対し、Cell/B.E.はこれを持っていない(図1)。

【図1】Cell/B.E.(左)とSpursEngineの違い

 SpursEngineでは動画のデコードやエンコードは専用エンジンに任せ、SPEは超解像やフィルタ処理などに割り当てる、といったことができる。しかし、専用エンジンを持たないCell/B.E.の場合は、デコード処理、エンコード処理そのものをSPEを使って行なう必要があるわけだ。当然、ソフトウェア側も、これまでに登場しているSpursEngine対応エンコーダとはまったく異なる仕組みとなる。

 内部構造も大きく異なる。SPEだけを取ってみてもSpursEngineは4基であるのに対し、Cell/B.E.は7基(実際には8基あるが、PS3では内7基のみを利用)を搭載。また、動作クロックもSpursEngineが1.5GHzであるのに対し、Cell/B.E.は3.2GHzで動作する。SPEは、その名の通り、映像処理のようなストリーム処理に向いたプロセッサとされている。ソフトウェア側の作り込み次第では、こうした動画トランスコードにおいて高い性能を発揮させられる可能性がある。その可能性を具現化したソフトウェアが、このCodecSys CE-10といえるだろう。

 さて、本製品のインストールは、PC側、PS3側それぞれに必要となるが、それほど難しい作業ではない。

 PC側では、ダウンロードしたファイルを実行し、一般的なアプリケーション同様に、画面の指示に従ってインストールを進めるだけだ。そのインストールされたファイルのうち、「PS3」フォルダに収められたファイルはPS3側のインストール作業に使うファイルとなるので、丸ごとUSBメモリなどへコピーする(画面1)。

 PS3へのインストール作業は、「PS3」フォルダをコピーしたUSBメモリをPS3に装着し、メニューから「他のシステムのインストール」を選択。このインストール作業を終えたのち、優先起動システムを「他のシステム」へ変更し、再起動するだけだ(画面2~5)。

 PS3がCodecSys CE-10システムから起動すると、PCからのリクエストを待ち受ける画面となる(画面6)。PS3側の準備はこれでOKだ。

【画面1】CodecSys CE-10のソフトウェアをPC側にインストールしたさいに生成される、「PS3」フォルダをUSBメモリなどにコピー。これをPS3へインストールするのに使用する【画面2】USBメモリを装着したうえで起動したPS3の設定メニューから「他のシステムのインストール」を選択【画面3】USBメモリ内のファイルを検出してくれるので、インストールを開始する
【画面4】インストールに要する時間は短く、数秒で完了した【画面5】インストール終了後、優先起動システムを「他のシステム」に設定し、PS3を再起動する【画面6】PS3側で実行されるCodecSys CE-10の画面。この状態でPC側からの命令を待ち受け、トランスコード中もこの画面のままである

 PCとPS3とは、Ethernetケーブルで接続する。PCとPS3を直結する場合はクロスケーブル、ハブなどを経由する場合はストレートケーブルを利用する。使用するポートは、PC側アプリケーション起動時のスプラッシュ画面に提示されている通りである(画面7)。いずれにしても、Ethernetケーブル経由でデータ転送を行なうという点は独特であり、データの流れにおいても、ここがボトルネックとなる可能性は十分に考えられる。この点については、後ほどチェックすることにしたい。

 PC側アプリケーションは非常にシンプルな作りだ。メイン画面はバッチ処理のリスト(エンコードジョブリスト)と、プレビュー画面、エンコード設定を確認する画面、ログ表示の4つのエリアから成る(画面8)。トランスコード処理を行なうには、このメインから、エンコードジョブリストへ1つずつ処理を追加していく(画面9、10)。

【画面7】PC側ソフトウェア起動時のスプラッシュ画面。Ethernetのポートは、TCPポートの21346~21348、UDPポートの21347~21348が使用される【画面8】PC側ソフトウェアのメイン画面。エンコードジョブリストに登録された処理が順次実行される
【画面9】トランスコード処理は、ファイルメニューまたはリスト部分を右クリックし、エンコードジョブを1つ1つ追加していく【画面10】トランスコード設定画面。細かい設定が可能で、出力の設定はテンプレートとしてファイル化することもできる

 対象となるソースファイルは、無圧縮AVI、MPEG-2、YUV(4:2:0 8bit Planar)の3種類。映像出力はH.264のみで、コンテナはMPEG-2 TSまたはH264-ESとなる。音声はMP2またはMPEG-2 AACとなる。リサイズは行なえずソースファイルそのままに出力される。

 入出力映像の仕様に関しては、同社Webページに詳細が記載されているので、一読しておくべきだろう。なお、今後のバージョンアップ予定として、入力解像度の充実や、リサイズ機能、MP4コンテナでの出力対応が表明されている。

 なお、メイン画面のプレビュー画面では、トランスコードの開始ポイントと終了ポイントを指定することができるようになっている(画面11)。現時点では開始/終了ポイントの指定のみだが、やはり9月1日のアップデートでカット編集機能の追加が予定されており、より機能を増すことになる。

 このほか、本アプリケーションからはPS3の簡単な操作が行なえるようになってる(画面12)。とくに重要なのは、ここから実行できる「PLAYSTATION3をゲームOSに戻して再起動」のメニューだ。CodeSYS CE-10のシステムから起動するよう設定したPS3は、電源を投入すると自動的にこのシステムが起動するようになる。これを元に戻すには、PC上のメニューを実行するか、PS3の電源ボタンを5秒以上押して電源を投入する必要がある。ただし、後者の場合、画面設定がSD解像度に戻ってしまう。

【画面11】メイン画面のプレビュー部では開始/終了ポイントの指定が可能。後のアップデートでカット編集機能も追加される予定だ【画面12】PS3の再起動などの一部操作をPC上から実行可能。ゲームOSへ戻す作業はこのメニューから行なうのがベター

●CPU、GPUとの速度差などをチェック

 それでは、CodecSys CE-10を使ったH.264へのトランスコードをチェックしてみることにしたい。テストに用意したPCは表1のスペックのもの。PS3とはマザーボードにオンボード搭載されたAtherosのAR8082を使ったGigabit Ethernetポートとクロスケーブルで接続している。

 2つのCPUがあるが、これはCPUを変えた状況で性能に変化が出るかを確認するため、CPUのみを変更した2種類の環境でテストを行なったからである。Core 2 Quad Q9450を“相当”としたのは、Core 2 Extreme QX9770のFSBクロックと倍率を変更して、2.66GHz動作のCPUを作ったからである。

 このほか、CodecSys CE-10のパフォーマンスを相対的に把握するため、それぞれの環境において、CPU、GPU(GeForce GTX 280)によるトランスコードを実行した場合の速度もチェックする。

【表1】テスト環境
CPUCore 2 Extreme QX9770
Core 2 Quad Q9450相当
チップセットIntel P45+ICH10R
マザーボードASUSTeK P5Q PRO
メモリDDR2-800(1GB×2/5-5-5-18)
ビデオカードNVIDIA GeForce GTX 280(GeForce Release 185.65)
HDDSeagete Barracuda 7200.12(ST3500418AS)
OSWindows Vista Ultimate Service Pack 2

 動画ファイルは、CanonのiVIS HF100のFXPモード(1,920×1,080ドット、平均約17Mbps)で撮影したAVCHD動画を、TMPGEnc 4.0 XPressを用いてMPEG-2(1,920×1,080ドット、平均25Mbps/最大28Mbps) & MP2 Audio(384Kbps)へトランスコードしたファイルを対象とする。映像時間は3分強、フレーム数は5,518枚である。これをH.264動画へトランスコードする際の、1秒当たりの処理フレーム数を比較する。

 トランスコードの設定であるが、CodecSys CE-10では、プロファイルがMain/Highの2種類、エンコードアルゴリズムは画質優先と速度優先の2種類が選べる。ここでは、それぞれを組み合わせた計4パターンをすべて試してみることとする。出力は1,920×1,080ドット、29.97fps、インターレース動画に指定。映像ビットレートは平均13Mbps、最大18Mbps。音声はMPEG-2 AAC/192Kbps、それぞれに設定している。

 CPUによるトランスコードは、TMPGEnc 4.0 XPressを使用。映像の出力設定は、1,920×1,080ドット、平均13MBbps/最大18Mbps、Highプロファイルを使用。音声はMPEG-4 AAC/192Kbpsに設定している。

 GeForce GTX 280によるトランスコードは、サイバーリンクのMediaShow Espressoを使用。前2製品ほど細かい設定は行なえないので、1,920×1,080ドット、平均13Mbps、DolbyDigital音声の出力を指定し、CUDAによる処理を有効にして実行した。

 では、結果を紹介したい。Core 2 Extreme QX9770環境でのテスト結果を表2、Core 2 Quad Q9450相当でのテスト結果を表3に示している。これを見ると、エンコードアルゴリズムを速度優先に設定した場合は27FPS強の性能を出しており、リアルタイムとまではいかないものの、それに近い性能を持っていることが分かる。

 画質優先になると、当然ながら速度優先よりもパフォーマンスが落ちるほか、Mainプロファイル、Highプロファイルの差が生じる結果となった。この当たりは、後述する画質と照らし合わせて、自分に向いた設定を探っていくべきだろう。ただ、筆者の主観でいえば、速度優先による画質劣化よりも、高速であることのメリットのほうが大きいように感じられる。

 CPU、GPUとの比較では、CPUに対してはかなり大きなアドバンテージを持っていることが分かる。CPUでは、Core 2 Extreme QX9770を用いても10FPSに達しないということは、実際の映像時間の3倍以上の時間をトランスコードに費やさなければならないことになる。

 一方で、GPUの速度に対しては、不利な結果となった。GPUはCPU環境の違いによる差が大きいものの、リアルタイムトランスコードを軽く超える処理速度を見せており、このメリットは大きなものといえる。

【表2】トランスコード速度の比較(Core 2 Extreme QX9770環境)

プロファイルエンコード
アルゴリズム
1秒当たりの
処理フレーム数
CodecSys CE-10Main画質優先20.0
速度優先27.5
High画質優先15.0
速度優先27.5
CPU(Core 2 Extreme QX9770)9.1
GPU(GeForce GTX 280)49.7

【表3】トランスコード速度の比較(Core 2 Quad Q9450環境)

プロファイルエンコード
アルゴリズム
1秒当たりの
処理フレーム数
CodecSys CE-10Main画質優先20.1
速度優先27.6
High画質優先15.0
速度優先27.5
CPU(Core 2 Quad Q9450相当)7.6
GPU(GeForce GTX 280)43.8

 Ethernetケーブルの接続方法を変えた場合にパフォーマンスがどう変化するかも確認しておきたい。CodecSys CE-10では、PCとPS3をEthernetケーブルで接続するのは先述の通りだ。ここで、PCとPS3とクロスケーブルで直結してしまうと、PCにEthernetポートが1基しかない場合、占有されてしまうことになる。つまりインターネットやEthernet内PCへのアクセスがそのままでは出来ないことになり、あまりに不便だ。

 その回避方法としては2通りの方法が思い浮かぶ。1つは、PCI Express x1インターフェイスにGigabit Ethernetコントローラを装着する方法だ。これをPS3専用にし、一方のEthernetポートは従来のネットワークへ接続する。

 もう1つの方法は、ハブを使って従来のネットワークをそのまま使う方法である。この方法なら、インターネットなどへのアクセスとCodecSys CE-10の両方を1つのEthernetポートでまかなうことができるが、データストリームがネットワークトラフィックの影響を受ける可能性がある。

 ここでは、図2に示す3パターンの接続別にトランスコードの速度に差が出るかをチェックした。図中、紫色で示した線はマザーボードにオンボード搭載されたAtheros製コントローラのEthernetポートとPS3をクロスケーブルで直結したパターンで、先のテストはこの接続で行なっている。

 水色で示した線は、PCI Express x1接続のGigabit Ethernetカードを接続し、そちらのEthernetポートとPS3をクロスケーブルで直結したものだ。この拡張カードは、Marvellの88E8053をコントローラとして搭載している。

 緑色で示した線は、マザーボードにオンボード搭載されたEthernetポートを、筆者の家庭内Ethernetで使っているハブに接続。PS3も同じハブへ接続している。いずれもケーブルはストレートケーブルだ。このハブへは、ほかのPC、カスケード接続のハブ、ルータなども繋がっている。それほど多くはないが、テスト中も普段通り使っている環境なので、多少のネットワークトラフィックがある環境である。

テストにおけるネットワークの構成

 テスト結果は表4に示した通り。CPUはCore 2 Extreme QX9770を使用している。結果を見ると、いずれの接続パターンも誤差の範囲に留まっており、接続方法によるパフォーマンスの明確な違いがないものとなった。とくに3つ目のパターンに関しては、ホストとなるPCやEthernet内のネットワークトラフィックが多いと、また違った傾向になる可能性はあるが、こうした使い方も非現実的とは言い切れない結果といえる。

【表4】接続方法の違いによる性能差

プロファイルエンコード
アルゴリズム
1秒当たりの
処理フレーム数
Atheros-直結Main画質優先20.1
速度優先27.5
High画質優先15.0
速度優先27.5
Marvell-直結Main画質優先20.0
速度優先27.5
High画質優先15.1
速度優先27.5
Atheros-ハブ経由Main画質優先20.1
速度優先27.3
High画質優先15.0
速度優先27.3

 続いては、トランスコード中のCPU使用率をチェックしておきたい。CodecSys CE-10の結果については、プロファイルやエンコードアルゴリズムによるCPU使用率に明確な差が見られなかったので、性能結果表の先頭に示しているMainプロファイル/画質優先での実行時のみ結果を提示することにする。

 結果は画面13~18に示した。CodecSys CE-10のトランスコード中のCPU使用率は、いずれも20%以下を推移しており、CPUやGPUによるトランスコードに比べて際だって低い。ちなみに、CodecSys CE-10はデコード用のコーデックを持っていないので、ソースファイルのデコードにはMPEG-2コーデックを別途インストールする必要がある。ここでは、併せてインストールしたPowerDVD 8のコーデックを使っており、使用するMPEG-2コーデックによってはもう少しCPU使用率が高くなる可能性はあるが、それでも低いCPU使用率を期待できるソリューションとはいえるだろう。

 ちょっと気になるのはGPU使用時のCPU使用率が高いことだ。以前にGeForce GTX 280を使ってテストを行なったときには、もっと低いCPU使用率となっていた。

 この違いは使用しているソフトウェアが異なることに依るものである。過去のテストではElemental Technologiesの「Badaboom Media Converter」を使っているが、今回はMediaShow Espressoを使用している。前者がオリジナルエンジンを使っているのに対し、後者はNVIDIAが提供しているCUDA用のビデオエンコーディングライブラリを用いたソフトだ。最近、この後者のライブラリを活用したCUDAに対応するソフトウェアが多くなっていることから、テストにもこちらのソフトウェアを利用したのだが、意外にCPU使用率が高いことに驚かされる。ただ、速度については今回試したハードウェアのなかで最高速の結果となっており、PCがトランスコードに占有される時間が短くて済むということも考えると一長一短といったところか。

【画面13】Core 2 Extreme QX9770環境、CodecSys CE-10(PS3)実行時
【画面14】Core 2 Extreme QX9770環境、TMPGEnc 4.0 XPress(CPU)実行時
【画面15】Core 2 Extreme QX9770環境、MediaShow Espresso(GPU)実行時
【画面16】Core 2 Quad Q9450相当環境、CodecSys CE-10(PS3)実行時
【画面17】Core 2 Quad Q9450相当環境、TMPGEnc 4.0 XPress(CPU)実行時
【画面18】Core 2 Quad Q9450相当環境、MediaShow Espresso(GPU)実行時

 最後に出力された画質のチェックである。作成された動画の同一フレームを静止画保存したものである。画面19にオリジナルのMPEG-2ファイル、画面20~23にCodecSys CE-10の各エンコード設定で作成されたファイル、画面24~25にTMPGEnc 4.0 XPressでCPUエンコードしたファイル、画面25にMediaShow EspressoでGPUエンコードしたファイルを示している。

 TMPGEnc 4.0 XPressで作成された画面19と画面24と、他の2種類のエンコーダでは色味が大きく異なるのが分かる。もっとも気になるプロファイルの違いによる画質の違いだが、速度優先だと葉の部分が若干べったりした感じは受けるものの、目を凝らさないと感じない程度の違いであり、先にも述べた通り、この程度の違いであれば速度優先で短時間でトランコードを行なえる方が魅力が大きいように思う。

 ところで、CodecSys CE-10作成されたファイルは、映像を見てもキャプチャした画像を見てもコーミングノイズが目立たずプログレッシブ動画のように見えるが、動画編集ソフトなどで開くとインターレース動画として認識する。実際、CodecSys CE-10は29.97iには対応しておらず、入力ファイルを1,920×1,080i動画に指定して、29.97fpsを選択した場合は内部的にはプログレッシブ化して出力しているように思われる。

 そこで、CPUを用いたTMPGEnc 4.0 XPressでトランスコードした画像は29.97pでのものも掲載した。ちなみにプログレッシブ化した場合、性能にも多少影響があり、1fpsほどトランスコード処理速度が落ちる傾向であった。つまり、TMPGEnc 4.0 XPressを使ってプログレッシブでトランスコードした場合は、先の結果以上にPS3とCPUの差が広がることになる。なお、MediaShow Espressoではプログレッシブ化のオプションがないため、インターレースの結果のみを示している。

【お詫びと訂正】CodeSys CE-10による作成映像について、開発元のフィックスターズよりご指摘を頂きました。CodeSys CE-10では、今回の設定でトランスコードした場合でも、インタレースは保持されており、今回の場合はフィールドレート59.94iの動画として保存されます。コーミングノイズが目立たないのはCodeSys CE-10側の動きによるものではなく、デコーダとなっているPowerDVD 8のDirectShowフィルタがインタレース解除を行ない、CodeSys CE-10が解除後のデータを受け取っているためとのことです。本文中の推測が誤りであったことをお詫びするとともに、以上のように訂正させていただきます。

【画面19】ソースファイルに用いたMPEG-2ファイル
【画面20】CodecSys CE-10(PS3)、Mainプロファイル、画質優先での出力結果
【画面21】CodecSys CE-10(PS3)、Mainプロファイル、速度優先での出力結果
【画面22】CodecSys CE-10(PS3)、Highプロファイル、画質優先での出力結果
【画面23】CodecSys CE-10(PS3)、Highプロファイル、速度優先での出力結果
【画面24】TMPGEnc 4.0 XPress(CPU)、インターレースでの出力結果
【画面25】TMPGEnc 4.0 XPress(CPU)、プログレッシブでの出力結果
【画面26】MediaShow Espresso(GPU)での出力結果

●速度はまずまず、年額制がネックか

 以上の通り、PS3をアクセラレータとして使用するCodecSys CE-10をテストしてきた。速度面では、高速なCPUの2~3倍程度は期待できる結果となっており、まずまずといえるだろう。

 まずまずとやや中途半端な評し方をしたのは、ハイエンドGPUに比べると速度がはっきり劣っているからである。今回の使用GPUはGeForce GTX 280だが、さらに上位となるGeForce GTX 285がPS3並みの価格であることを考えると、トランスコード用ハードウェアとしてのコストパフォーマンスでも見劣りを否めない。もっとも、PS3は本来ゲームコンソールという、PCの性能追求とはまったく異なる価値を持った製品ではあるが、このソリューションを利用するために新たに購入するという選択肢は消えると思う。

 もう1つ気になるのは個人用で年額19,800円という料金体系だ。この料金体系は、例えば、いま持っているPS3を1年ほどトランスコードに活用し、1年後にはさらに安価になっているだろう高性能なビデオカードや、新しいソリューションを待つという”つなぎ”の役割に考えるなら、悪くないかも知れない。それでも2万円という価格は安価とは言えないし、この金額を支払っても1年間しか使えないという点はネックに感じると思う。期間を指定しないライセンス体系の用意があると、それを魅力に感じるユーザーもいるのではないだろうか。

 一方で、導入の容易さという点はコンシューマユースにおいては大きなポイントとなるだろう。ビデオカードにせよ、SpursEngine搭載カードにせよ、PC向けのハードウェアは板モノとして提供されることが多いのに対し、本製品はPS3をEthernetケーブルで接続するだけで利用できるのは魅力だ。ノートPCや省スペースのデスクトップPCと組み合わせて利用しやすいというメリットもある。

 PS3という入手性のよいハードウェアを使い、現状よりも高速なトランスコードを実現可能という点で、非常に興味深い製品であることは間違いない。今後のバージョンアップによって機能強化が明確になっているのも好印象で、こちらにも期待したい。