IDMOVideoOutputOptimizations 介面 (mediaobj.h)

介面 IDMOVideoOutputOptimizations 支援 Microsoft DirectX Media 物件 (DMO) 上的視訊優化。

繼承

IDMOVideoOutputOptimizations介面繼承自IUnknown介面。 IDMOVideoOutputOptimizations 也有下列類型的成員:

方法

IDMOVideoOutputOptimizations介面具有這些方法。

 
IDMOVideoOutputOptimizations::GetCurrentOperationMode

GetCurrentOperationMode 方法會擷取作用中的優化功能。
IDMOVideoOutputOptimizations::GetCurrentSampleRequirements

GetCurrentSampleRequirements 方法會擷取處理下一個範例所需的優化功能,因為應用程式已經同意的功能。
IDMOVideoOutputOptimizations::QueryOperationModePreferences

QueryOperationModePreferences 方法會擷取 DMO 慣用的優化功能。
IDMOVideoOutputOptimizations::SetOperationMode

SetOperationMode 方法會通知有效優化功能的 DMO。

備註

此介面可讓應用程式與 DMO 交涉有關視訊輸出優化的資訊。 當 DMO 可以執行需要應用程式支援的優化時,就會公開此介面。 應用程式可以查詢 DMO 的慣用功能,然後同意 (或不同意) 提供這些功能。 即使應用程式拒絕優化,DMO 也必須處理輸出。

例如,視訊解碼器可能會藉由將差異套用至前一個輸出畫面格來產生輸出畫面。 查詢時,它會要求應用程式在輸出緩衝區中提供上一個框架。 應用程式可以同意此要求。

視訊優化會針對每個輸出資料流程個別交涉。

下列虛擬程式碼示範應用程式如何與 DMO 交涉:

IDMOVideoOutputOptimizations *pVidOpt;
// Query the DMO for IDMOVideoOutputOptimizations (not shown).

BOOL  bWantsPreviousBuffer = FALSE;
DWORD wFlags;
pVidOpt->QueryOperationModePreferences(0,&dwFlags);

if (dwFlags & DMO_VOSF_NEEDS_PREVIOUS_SAMPLE) 
{
    // Agree to the request.      
    pVidOpt->SetOperationMode(0, DMO_VOSF_NEEDS_PREVIOUS_SAMPLE);
    bWantsPreviousBuffer = TRUE;
}

// Processing loop
while (there is input).
{
    ProcessInput(0, ...);
    if (bWantsPreviousBuffer)
        pDMO->ProcessOutput(0, ...) // Use the same buffer as last time.
    else
        pDMO->ProcessOutput(0, ...) // OK to use a new buffer.
}

規格需求

   
目標平臺 Windows
標頭 mediaobj.h (包含 Dmo.h)