So implementieren Sie den OnSample-Rückruf
Der asynchrone Reader übermittelt Beispiele in der Reihenfolge der Präsentationszeit an die steuernde Anwendung, indem er Aufrufe der Rückrufmethode IWMReaderCallback::OnSample vornimmt. Wenn Sie eine Anwendung mit dem asynchronen Reader erstellen, müssen Sie OnSample implementieren, um nicht komprimierte Beispiele zu behandeln. In der Regel werden Funktionen oder Methoden, die zum Rendern von Inhalten erstellt wurden, in OnSample aufgerufen.
Die typische Implementierung des OnSample-Rückrufs umfasst die folgenden Schritte.
- Rufen Sie die Position und Größe des Puffers ab, der das Beispiel enthält, indem Sie INSSBuffer::GetBufferAndLength für den Puffer aufrufen, der als pSample übergeben wird.
- Verzweigen Sie Ihre Logik abhängig von der Ausgabenummer. Die Ausgabenummer wird als dwOutputNumber an OnSample übergeben.
- Fügen Sie Renderinglogik für jede Ausgabenummer ein, die Sie unterstützen möchten. Wenn Sie Beispiele aus mehreren Ausgaben rendern, müssen Sie das Rendering möglicherweise synchronisieren.
Anwendungen, die komprimierte Beispiele aus ASF-Dateien bereitstellen, müssen die Rückrufmethode IWMReaderCallbackAdvanced::OnStreamSample implementieren. OnStreamSample funktioniert fast identisch mit OnSample, mit der Ausnahme, dass komprimierte Stichproben nach Streamnummer anstelle von unkomprimierten Stichproben nach Ausgabenummer empfangen werden.