IDMOVideoOutputOptimizations-Schnittstelle (mediaobj.h)

Die IDMOVideoOutputOptimizations Schnittstelle unterstützt Videooptimierungen für ein Microsoft DirectX Media Object (DMO).

Vererbung

Die IDMOVideoOutputOptimizations-Schnittstelle erbt von der IUnknown-Schnittstelle . IDMOVideoOutputOptimizations verfügt auch über folgende Membertypen:

Methoden

Die IDMOVideoOutputOptimizations-Schnittstelle verfügt über diese Methoden.

 
IDMOVideoOutputOptimizations::GetCurrentOperationMode

Die GetCurrentOperationMode-Methode ruft die wirksamen Optimierungsfeatures ab.
IDMOVideoOutputOptimizations::GetCurrentSampleRequirements

Die GetCurrentSampleRequirements-Methode ruft die Optimierungsfeatures ab, die zum Verarbeiten des nächsten Beispiels erforderlich sind, da die Features bereits von der Anwendung vereinbart wurden.
IDMOVideoOutputOptimizations::QueryOperationModePreferences

Die QueryOperationModePreferences-Methode ruft die bevorzugten Optimierungsfeatures der DMO ab.
IDMOVideoOutputOptimizations::SetOperationMode

Die SetOperationMode-Methode benachrichtigt den DMO über die optimierungsfeatures, die in Kraft sind.

Hinweise

Diese Schnittstelle ermöglicht es einer Anwendung, mit einem DMO über Videoausgabeoptimierungen zu verhandeln. Ein DMO macht diese Schnittstelle verfügbar, wenn sie Optimierungen durchführen kann, die unterstützung von der Anwendung erfordern. Die Anwendung kann die DMO nach ihren bevorzugten Features abfragen und dann zustimmen (oder nicht zustimmen), sie bereitzustellen. Die DMO muss die Ausgabe auch dann verarbeiten, wenn die Anwendung die Optimierungen ablehnt.

Beispielsweise kann ein Videodecoder einen Ausgabeframe generieren, indem Deltas auf den vorherigen Ausgabeframe angewendet werden. Bei der Abfrage fordert sie an, dass die Anwendung den vorherigen Frame im Ausgabepuffer bereitstellt. Die Anwendung kann dieser Anforderung zustimmen oder nicht.

Videooptimierungen werden für jeden Ausgabestream separat ausgehandelt.

Der folgende Pseudocode zeigt, wie eine Anwendung mit dem DMO aushandeln kann:

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.
}

Requirements (Anforderungen)

   
Zielplattform Windows
Kopfzeile mediaobj.h (include Dmo.h)