1

ビデオ出力PINを持つファイルソースフィルターを書いています。出力ピンタイプはH.264raw形式です。

HRESULT CVideoOutPin::GetMediaType(CMediaType *pMediaType)
{
    CAutoLock lock(m_pFilter->pStateLock());

    ZeroMemory(pMediaType, sizeof(CMediaType));


    pMediaType->InitMediaType();
    // {7807c3af-524f-11ce-9f53-0020af0ba770}
    pMediaType->SetSubtype(&MEDIASUBTYPE_h264raw);

    unsigned int * pSize = (unsigned int *) pMediaType->ReallocFormatBuffer(sizeof(unsigned int) * 2);
    pSize[0] = m_pFlvFile->GetWidth();
    pSize[1] = m_pFlvFile->GetHeight();

    pMediaType->SetFormat((BYTE *)pSize, sizeof(unsigned int) * 2);

    //*pMediaType = m_oVideoMediaType;

    return S_OK;
}

GraphEdit.exeでいくつかの解凍フィルターを試しましたが、どれも出力ピンに接続できません。

グラフを完成させるために使用できるDirectShowフィルターはありますか?

4

1 に答える 1

4

MEDIASUBTYPE_h264raw標準のメディア サブタイプのようには見えません。代わりに (MEDIASUBTYPE_AVC1開始コードなし) または(開始コードあり)を使用する必要があります。H.264 メディア タイプMEDIASUBTYPE_H264を参照してください。これらのサブタイプのいずれかを使用する場合、適切な H.264 デコーダーを出力ピンに接続できるはずです。Windows 7 にはこのような H.264 デコーダーが付属しており、サードパーティのデコーダーは適切な入力フィルターを提供する必要があります。

于 2012-08-24T04:01:58.220 に答える