影片範例對象是 IMFSample 介面的專門實作,用於與 增強式視訊轉譯器 (EVR)搭配使用。 若要建立此對象的實例,請呼叫 MFCreateVideoSampleFromSurface 函式。 函式會接收 Direct3D 表面的指標,並傳回 IMFSample 介面的指標。 下列類型的物件應該使用此函式來設定範例:
自定義EVR展示器。 主持人會分配影片樣本,並將其傳送至混音器 IMFTransform::ProcessOutput 方法。 如需詳細資訊,請參閱 如何撰寫 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。
如果您需要透過IMF2DBuffer介面存取表面記憶體,請使用此方法。
相關主題