久々のこんな感じの技術ネタです。なぜ「Brynhildr」は、ネイティブでH.264を採用していないのか?
既に時代はH.265(HEVC)なんじゃ?とは言われつつもまだまだ現役のH.264さんでございます。巷ではまだまだ良く御見かけします。
さて、そんな中「Brynhildr」は、映像圧縮に独自形式(GBVC)とVP8形式を採用しておりますが、なんで高性能と言われるH.264をネイティブで採用していないのか。理由は簡単。
パテント料でございます。
皆様御存知の通り、H.264のパテントはMPEG-LA社でございます。ウェブ上で無料で動画を配信するよーなサービスだとパテント料は発生せず、シスコのモジュールを組み込んでもパテント料は発生せず(正確にはシスコが払ってます)のH.264ですが、ソフトウェアやハードウェアでエンコード処理やデコード処理を行うと、とたんにパテント料を支払う義務が発生してしまうんですね。当たり前ですが。
ちなみに、H.264形式を扱えるx264を利用してエンコード、デコードの場合は、x264LLC社を通じてH.264のパテント料の支払いが可能ですね。GPUのハードウェア支援を利用しないようなソフトウェアだけでエンコードやデコードを行う場合はこのパティーンですかね。
では、GPUのハードウェア支援の場合はどうでしょうか?例えば、IntelのQSV(Quick Sync Video)やAMDのVCE(Video Coding Engine )やNVIDIAのCUDA(Compute Unified Device Architecture)の場合はどうでしょうか?
普通に考えて、ハードウェア側で支払っているはずだからソフトウェアでエンコード、デコードしても大丈夫ですよね・・・本当にそうでしょうか?IntelやAMDやNVIDIAは、H.264用のAPIは用意していますが、そのAPI部分だけで本当にパテントの支払い義務が発生してるんでしょうか。
QSV等のAPIを呼び出したソフトウェア側にパテント料の支払い義務が発生するのでは?
と考えるとちょっと怖くてネイティブ実装を躊躇ってしまいます。あと、関連してちょっと気になる情報が。
https://aws.amazon.com/jp/ec2/faqs/
AWSのNVIDIAのGPUの質問のとこなんですが、「オンボードH.264ビデオエンコーダを利用する場合は、MPEG-LA社に問い合わせてください」とあります。これ、AWSの利用ユーザーがH.264のパテント料を支払わなければいけないかもしれないフラグが立っていませんかね。気のせいですかね。
てな事で、GPUのハードウェア支援を利用したソフトウェアは、全てH.264のパテント料の支払い義務が発生してしまうんじゃないかと思ってしまってるんです。どなたか詳しい方がいらっしゃいましたら情報を頂けると幸いでございます。Intelの方とかAMDの方とかNVIDIAの方とか。
てな事で、未だにBrynhildrではH.264をネイティブでは実装できていないワケなんですが、BrynhildrはVFW(Video for Windows)に対応しております(設定ファイルにFOURCCを記述するだけ)ので、x264のVFWなんぞ御用意する事ができましたらそれで動作させる事もできるんですね。もちろんx264以外にもAMV4とかでも動作しますですよ。ま、古い技術ですのでいつまで続くかVFWとゆー気もしますけど。
ただ、ちょっとx264のVFWの最新版で動作させてみたところ、設定によっては動作しないトコを発見してしまいましたので、次回バージョンアップでキチンと対応致します。それ以外にもちょっとFOURCC周りで調整もあります。御楽しみに。
そんなところのH.264周りの自分用メモでございました。