トポロジーは健全に見えません。色空間コンバーターが 3 つ並んでいるということは、フィルター グラフが、スクリーン キャプチャーのメディア タイプ (ピクセル形式) を VP8 エンコーダーで受け入れられるものに合わせるのに苦労したことを意味します。
あなたが抱えている問題は、品質が著しく低下しているときにエンコーダーが低ビットレートモードに設定されているか、エンコーディングが CPU を使い果たしてフレームをスキップするか、またはその両方であるということです。どうやら、設定が意味を成し、妥当な出力を提供するために、バランスを取ることに関心があるようです。
VPB エンコーダー フィルターは、IVP8Encoder インターフェイスを使用してセットアップされます。その定義 (およびインライン コメント) は、ソース コード パッケージのファイルにあります\IDL\vp8encoder.idl
。
[
object,
uuid(ED311151-5211-11DF-94AF-0026B977EEAA),
helpstring("VP8 Encoder Filter Interface")
]
interface IVP8Encoder : IUnknown
{
//ApplySettings
//
//The filter maintains a set of encoder configuration values, held
//in cache. Any parameters set (using the methods below) are always
//applied to the cached value, irrespective of the state of the graph.
//
//When the graph is started, the filter initializes the VP8 encoder
//using the cached configuration values. This is done automatically,
//as part of the activities associated with transitioning the filter
//from the stopped state.
//
//If the graph has been started, then any parameters set by the user
//are still applied to the cache (as before). However, to apply the
//configuration values in cache to the VP8 encoder, the user must also
//call ApplySettings.
//
//It is harmless to call ApplySettings while the graph is stopped.
HRESULT ApplySettings();
//ResetSettings
//
//Sets the configuration values in cache to their defaults, the same
//as they had when the filter instance was originally created.
HRESULT ResetSettings();
//Deadline
//
//Time to spend encoding, in microseconds. (0=infinite)
HRESULT SetDeadline([in] int Deadline);
HRESULT GetDeadline([out] int* pDeadline);
//ThreadCount
//
//For multi-threaded implementations, use no more than this number of
//threads. The codec may use fewer threads than allowed. The value
//0 is equivalent to the value 1.
HRESULT SetThreadCount([in] int Threads);
HRESULT GetThreadCount([out] int* pThreads);
...
以下も参照してください。