WMP の場合、コーデックの検索ポリシーは何ですか。
Windows Media Player 7.0 までは、純粋な DirectShow プレーヤーでした。7.0 以降、Microsoft はさまざまなファイル タイプを異なる方法で処理し始めました。これは主に WMV ファイルに当てはまります。WMP は現在、Vista および 7 で一部のファイル タイプに対して MediaFoundation メディア パイプラインを使用します。
たとえば、カスタム ファイル形式を mpeg-3 形式と区別するにはどうすればよいですか。このための標準とプログラミング構造は何ですか。(私がめちゃくちゃになっている本当の部分はこれです。コンテナ形式、ビデオ形式、fourccコード...などは私を死に至らしめます)
独自のカスタム コンテナー形式を作成している場合は、これを行うことができます(笑、MSDN のリンクで申し訳ありません)。ただし、自分の作業を楽にしたい場合は、既存のコンテナーやオープンソースのコンテナーを選択します。 AVIまたはMKVとして。これらの形式のいずれかでストリームを作成する場合は、ビデオの fourcc やオーディオの形式タグなどのコーデック コードを指定します。独自のカスタム フォーマットを実行しているので、独自の fourcc またはフォーマット タグの値を作成する必要がありますが、既に使用されているものを選択しないように注意してください。
AVI を使用していたとしましょう。組み込みの avi demux は、AVI ヘッダーを読み取り、ファイル内の各ストリームのメタ データを調べます。fourcc DX50 を含むビデオ ストリームと、WAVE_FORMAT_PCM のフォーマット タグを含むオーディオ ストリームが見つかる場合があります。DirectShow は、登録されたフィルターを列挙し、それらのピンをクエリして、DX50 ビデオまたは WAVE_FORMAT_PCM オーディオの取得をサポートしているかどうかを確認します。したがって、AVI に XXXX の fourcc がある場合、DirectShow は、XXXX を受け取る型を探してフィルターを列挙します。次に、fourcc XXXX を受け入れる変換フィルターを作成します。変換フィルターはビデオをデコードし、非圧縮形式で出力します。たぶんRGB24。DirectShow は、出力ピンがそのメディア タイプを出力することを検出し、おそらくレンダラーに直接接続します。プロセスはオーディオと同じです。
For this work on Windows what method do you suggest to write codec(DMO or Filter)
個人的に DMO を書いたことはありませんが、検討することを強くお勧めします。ボイラー プレート COM と IIRC が少ないと聞いたことがあります。MediaFoundation には DMO ラッパーがあるため、MediaFoundation の自動サポートが得られる可能性があります。
DShow SDK サンプルの他に、この をチェックしてみてください。始めるのに役立つかもしれません。また、このウェブサイトには素晴らしいサンプルもありますが、あなたが望むものではないかもしれません.