SSブログ

NVENCをC言語のソースに組み入れたい [プログラミング]

NVENCを既存のC言語のソースに入れ込みたいと考えているのですが、SDKのソースがC++で書かれていて容易にC言語のものには組み込めないようです。C++のソースにC言語の関数を取り入れるのは難しくはないけど、逆はちょっと面倒くさい。APIの関数はC言語っぽいんだけどな。

最終的にはC++で処理を書いて、extern "C"で処理の入り口を書くという事になるのでしょう。正直、キメラっぽくて気持ち悪い状態なわけですが、そうしないとVideo Codec SDK側のソースをC言語で書かないといけないのだろうと思われます。具体的にはNvHWEncoder.cpp、dynlink_nvcuvid.cpp、dynlink_cuda.cppなどC++の記述があるところで、これをC言語に書き換えれば問題ないのかもしれませんが、SDKの中身が変わった時にソースのコピペで対応することができなくなってしまいます。自分が書いた側の対応も必要でしょうが、いちいち両方とも手を入れないといけないのはしんどすぎます。

そんなわけでVideo Codec SDK側のソースには手を入れないことにしました。一番手間のかからない方法でかつ確実性のある方法でやろうと。でも、C言語のバイナリにC++のバイナリを組み合わせて動作させるのは気持ち悪い気はします。その前にCUDA用にnvccでコンパイルしたバイナリをC言語のソースに混在させていたので、それと大した違いはないのかなと思って我慢します。

移植のために意気込んで色々準備していましたが、CプログラミングではなくC++とMakefileの扱いになってしまいますね。特殊な使い方をしていないもののC++はあんまりやりたくないんだよなぁ。Objective-Cよりかやだ。

タグ:NVENC
コメント(0) 
共通テーマ:パソコン・インターネット

コメント 0