So erzwingen sie Key-Frame Einfügen
Der Windows Media Video 9-Codec unterstützt das erzwungene Einfügen von Keyframes. Wenn Sie ein Beispiel an den Writer übergeben, können Sie angeben, dass es als Keyframe codiert werden muss.
Um das Einfügen eines Keyframes für ein Beispiel zu erzwingen, führen Sie die folgenden Schritte aus.
- Ordnen Sie einen Puffer zum Speichern des Beispiels zu, und rufen Sie einen Zeiger auf die INSSBuffer-Schnittstelle ab, die den Puffer enthält, indem Sie IWMWriter::AllocateSample aufrufen.
- Rufen Sie den Speicherort und die Größe des in Schritt 1 erstellten Puffers ab, indem Sie INSSBuffer::GetBufferAndLength aufrufen.
- Kopieren Sie die Beispieldaten an die Pufferposition, und stellen Sie sicher, dass das übergebene Beispiel in den zugeordneten Puffer passt. Abhängig von der Quelle Ihrer Beispiele können Sie eine Vielzahl von Funktionen verwenden, um die Daten zu kopieren. Wenn Sie beispielsweise einen Stream aus einer AVI-Datei kopieren, können Sie die AVI-Funktion AVIStreamRead verwenden.
- Aktualisieren Sie die im Puffer verwendete Datenmenge, um die tatsächliche Größe des Beispiels widerzurufen, indem Sie INSSBuffer::SetLength aufrufen.
- Rufen Sie einen Zeiger auf die INSSBuffer3-Schnittstelle ab, indem Sie INSSBuffer::QueryInterface aufrufen.
- Legen Sie das Beispiel als erzwungenen Keyframe fest, indem Sie die INSSBuffer3::SetProperty-Methode aufrufen, um die WM _ SampleExtensionGUID _ OutputCleanPoint-Eigenschaft festlegen. Diese Eigenschaft ist ein boolescher Wert. Legen Sie ihn auf TRUE fest.
- Übergeben Sie mithilfe der IWMWriter::WriteSample-Methode die Pufferschnittstelle zusammen mit der Eingabenummer und der Stichprobenzeit an den Writer.