影片範例
影片範例物件是 IMFSample 介面的特製化實作,可與增強式 視訊轉譯器 (EVR) 搭配使用。 若要建立這個物件的實例,請呼叫 MFCreateVideoSampleFromSurface 函式。 函式會採用 Direct3D 介面的指標,並傳回 IMFSample 介面的指標。 下列類型的物件應該使用此函式來配置範例:
自訂 EVR 簡報者。 簡報者會配置影片範例,並將其傳送至混音器的 IMFTransform::P rocessOutput 方法。 如需詳細資訊,請參閱 如何撰寫 EVR 簡報者。
支援影片加速的視訊解碼器。 如需詳細資訊,請參閱 在媒體基礎中支援 DXVA 2.0。
影片範例物件會實作下列介面:
如果MFCreateVideoSampleFromSurface的pUnkSurface參數不是Null,產生的視訊範例會包含封裝 Direct3D 介面的單一媒體緩衝區。 此緩衝區物件的功能有限:
緩衝區的 IMFMediaBuffer::Lock 方法會傳回E_NOTIMPL。
緩衝區不會實作 IMF2DBuffer 介面。
從緩衝區存取表面的唯一方法是使用服務識別碼MR_BUFFER_SERVICE呼叫 IMFGetService::GetService。
如果 pUnkSurface 參數為 Null,則會使用零個媒體緩衝區建立影片範例。 若要新增範例的緩衝區,請執行下列動作:
建立 Direct3D 介面。
呼叫 MFCreateDXSurfaceBuffer來建立介面緩衝區。 如需詳細資訊,請參閱 DirectX Surface Buffer。
呼叫 IMFSample::AddBuffer,將緩衝區新增至範例。
如果您需要透過 IMF2DBuffer 介面存取表面記憶體,請使用此方法。