この記事を参考にエンコーダをパイプラインで実装しようかと思ってクラスを書き始めたけれども、なんか非効率な感じがしてきた。
この前にはプレイヤーを作ってみたのだけれども、ソースコードを見るとセッションを作るところは同じで、エンコーダと異なるのはトポロジーだけなのだ。あとは再利用できそうな気がするので、セッションをラップしてそこにトポロジーを突っ込む形(まあこれはMedia Foundationのセオリー通りだが)にして、エンコーダとプレイヤーの固有実装だけを抜き出してクラス化すればよいように思うのだ。
ヘルパークラスとかも作ろうかなと思っている。MFTやデバイスを列挙するところはCoroutine使ってみようかなと。
Windows 7から追加されたSink/Writerによる実装も試してみたいね。データ変換などはこちらの方が楽そうなので。
soxやOpenCVとの連携など、夢は広がるね。。