音声ファイルから動画ファイルを作成する(8) – IMFSinkWriter::GetServiceForStreamの使い方がよくわからない

公開:2013-12-03 21:15
更新:2020-02-15 04:37
カテゴリ:windows store apps,media foundation,音声動画出力プログラム,c++,windows,audio,windows api

画質向上のためにエンコーダーのパラメータをいじるべく調査を進めていて、SinkWriterの出力エンコーダーの設定のいじり方がなんとなくわかってきた。IMFSinkWriter::GetServiceForStreamでエンコーダーMFTを取得->IPropertyStoreを取得->設定の順で行えばよいようである。しかしIMFSinkWriter::GetServiceForStreamをどう使えばいいのかよくわからない。おそらくQIのイメージなんだろうけれども(WASAPIでも似たようなメソッドはある)なんのインターフェースを取得すれば最終的にエンコーダーMFTを取得->IPropertyStoreに行き着くのか、いやそもそもエンコーダーMFTにIPropertyStoreがあるのか?とか考えてなかなか処理の流れがイメージできない。SinkWriterってそもそもどんな構造をしているのだろうか。よくわからないことだらけだ。 IMFSinkWriter::GetServiceForStreamでググってもコード片の一つも出てきやしない。。これを使えばほんとにエンコーダパラメータがいじれるのであろうか。。

あと気づいたのはPropertyStoreの生成に関するAPIはWindows Store Appではほとんど使えないこと。すでにあるPropertyStoreのインスタンスをいじることしかできないのだ。デスクトップだと生成もできるし、APIもアップデートされているのでObsoluteなことも全然ないのだ。デスクトップAPIは自由度が高いのでついそちらに戻りたくなるが、Windows Store AppのUIフレームワークが魅力的なので頑張ってみることにする。デスクトップでWinRTのUIフレームワークが使えればいうことないのだけれども、MSの政策的にはそんなことしないだろうしなぁ。。