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) |