Videoqualitätsverwaltung

In diesem Thema werden einige Verbesserungen an der Videopipeline in Windows 7 beschrieben, sowohl für Microsoft Media Foundation als auch für Microsoft DirectShow.

In einer perfekten Welt würde das Video unabhängig von der Videoauflösung oder der CPU-/GPU-Last nie zu einer Störung werden. In Wirklichkeit muss die Videopipeline in der Lage sein, begrenzte Hardwareressourcen zu bewältigen, und sie muss die Wiedergabe an die Systemumgebung anpassen. Die Ziele für die Verwaltung der Videoqualität sind:

  • Reduzieren der Glättung (gelöschte oder späte Frames).
  • Reduzieren Sie die Speicherauslastung, insbesondere in der GPU.
  • Reduzieren Sie den Stromverbrauch, insbesondere bei Laptops, die mit Akkubetrieb betrieben werden.
  • Erzielen Sie die bestmögliche Imagequalität, wenn Ressourceneinschränkungen gegeben sind.
  • Halten Sie das Video mit Audio synchronisiert.

Einige dieser Ziele sind im Gegenteil, insbesondere bei Low-End-Systemen. Im Allgemeinen gibt es einen Ausgleich zwischen Geschwindigkeit und Qualität. Die Glättigkeit ist anstößiger als eine moderate Verringerung der visuellen Qualität. Die relative Bedeutung des Stromverbrauchs variiert je nach Umgebung. In einem Laptop mit Akkubetrieb ist dies sehr wichtig.

In Windows 7 bietet der erweiterte Videorenderer (EVR) eine bessere Unterstützung für die Verwaltung der Videoqualität. Sowohl die Media Foundation- als auch die DirectShow-Pipeline wurden aktualisiert, um diese Funktionen zu nutzen. Es wird ein zweistufiger Ansatz verwendet:

  • Bevor die Wiedergabe gestartet wird, kann die Pipeline statische Optimierungen basierend auf den Energieverwaltungseinstellungen des Benutzers und Informationen zur Hardware durchführen.
  • Nachdem die Wiedergabe gestartet wurde, kann die Pipeline dynamische Optimierungen basierend auf der Laufzeitleistung anwenden.

Qualitätsverwaltung in Media Foundation

Um statische Optimierungen zu aktivieren, legen Sie das MF _ TOPOLOGY _ STATIC PLAYBACK _ _ OPTIMIZATIONS-Attribut für die partielle Topologie fest, bevor Sie die Topologie auflösen. Das Topologieladeprogramm fragt dieses Attribut in der ZUGEHÖRIGENTOPOLOADER::Load-Methode ab.

Wenn Sie statische Optimierungen aktivieren, sollten Sie zwei weitere Attribute für die Topologie festlegen:

attribute BESCHREIBUNG
_MF-TOPOLOGIE _ – WIEDERGABE _ _ MAX. DIMS
Gibt die maximale Größe des Videowiedergabefensters an.
_MF-TOPOLOGIE _ – _ WIEDERGABEFRAMERATE
Gibt die Aktualisierungsrate des Monitors an.

Diese beiden Attribute helfen der Pipeline, die effektivste Einstellung für die Qualitätsverwaltung zu berechnen.

Dynamische Optimierungen werden vom Qualitätsmanager ausgeführt. Sie müssen nichts unternehmen, um den Qualitätsmanager zu aktivieren. sie wird automatisch aktiviert. Der Qualitätsmanager war in Windows Vista vorhanden. in Windows 7 kann die EVR besser auf Nachrichten vom Qualitätsmanager reagieren.

Qualitätsverwaltung in DirectShow

DirectShow unterstützt statische und dynamische Optimierungen für die DVD-Wiedergabe. Um diese Optimierungen in einer DVD-Wiedergabeanwendung zu aktivieren, legen Sie die folgenden Flags im dwFlags-Parameter der IDvdGraphBuilder::RenderDvdVideoVolume-Methode fest:

Flag Beschreibung
AM _ DVD _ ADAPT _ GRAPH Aktiviert statische Optimierungen.
AM _ DVD _ EVR _ QOS Aktiviert dynamische Optimierungen.

Andere DirectShow-Anwendungen können dynamische Optimierungen aktivieren, indem sie die IEVRFilterConfigEx::SetConfigPrefs-Methode direkt im EVR-Filter aufrufen. Geben Sie das Flag EVRFilterConfigPrefs _ EnableQoS an.

Hinweis

Statische Optimierungen in DirectShow sind auf die DVD-Wiedergabe beschränkt.

Qualitätsmanagement in der EVR

Die EVR unterstützt einige neue Konfigurationsflags für die Qualitätsverwaltung. Wenn Sie die zuvor beschriebenen Qualitätsverwaltungsoptimierungen aktivieren, müssen Sie diese Flags nicht direkt festlegen. Sie sind jedoch für Anwendungen dokumentiert, die eine präzisere Kontrolle über die EVR wünschen.

Legen Sie die folgenden Flags für den EVR-Mixer fest, indem Sie die METHODE THICKNESSVideoMixerControl2::SetMixingPrefs aufrufen:

Flags BESCHREIBUNG
  • MFVideoMixPrefs_ForceHalfInterlace
  • MFVideoMixPrefs_AllowDropToHalfInterlace
Überspringen Sie das zweite Feld jedes geschachtelten Frames.
  • MFVideoMixPrefs_AllowDropToBob
  • MFVideoMixPrefs_ForceBob
Verwenden Sie bob deinterlacing, auch wenn der Treiber einen deinterlace-Modus höherer Qualität unterstützt.

Legen Sie die folgenden Flags für den EVR-Presenter fest, indem Sie die METHODE THICKNESSVideoDisplayControl::SetRenderingPrefs aufrufen:

Flags BESCHREIBUNG
  • MFVideoRenderPrefs_ForceOutputThrottling
  • MFVideoRenderPrefs_AllowOutputThrottling
Drosseln Sie die Ausgabe entsprechend der GPU-Bandbreite.
  • MFVideoRenderPrefs_ForceBatching
  • MFVideoRenderPrefs_AllowBatching
Batch Direct3D Present-Aufrufe. Durch diese Optimierung kann das System häufiger in den Leerlaufzustand versetzt werden, wodurch der Stromverbrauch reduziert werden kann.
  • MFVideoRenderPrefs_ForceScaling
  • MFVideoRenderPrefs_AllowScaling
Führen Sie eine Videomischung mit einem Rechteck durch, das kleiner als das Ausgaberechteck ist. Skalieren Sie das Ergebnis auf die richtige Ausgabegröße.

Darüber hinaus unterstützt die EVR-Mediensenke Konfigurationsattribute, die jedem dieser Flags entsprechen:

Bevor die Wiedergabe gestartet wird, können Sie diese Attribute direkt in der EVR-Mediensenke als Alternative zum Aufrufen der METHODEN THICKNESSVideoMixerControl2 und ALTERNATIVESVideoDisplayControl festlegen. Um diese Attribute festzulegen, fragen Sie die EVR-Mediensenke nach DEN ATTRIBUTEAttributen ab.

Mediensitzung