Optionale Streams

Ein DMO kann einige seiner Ausgabestreams als optional festlegen. Ein optionaler Stream erzeugt Daten, die die Anwendung entweder vollständig oder gelegentlich verwerfen kann. Beispielsweise kann ein optionaler Stream zusätzliche Informationen zu einem primären Stream enthalten.

Rufen Sie zum Abfragen, ob ein Stream optional ist, die IMediaObject::GetOutputStreamInfo-Methode auf, und überprüfen Sie den pdwFlags-Parameter. Optionale Streams geben entweder das DMO OUTPUT STREAMF DISCARDABLE-Flag oder das DMO _ _ OUTPUT _ _ _ STREAMF _ OPTIONAL-Flag zurück. Diese Flags bedeuten fast dasselbe. ein kleiner Unterschied zwischen ihnen wird in Kürze erläutert.

Wenn ein Stream optional ist, kann der Client den DMO anweisen, Daten aus diesem Stream zu verwerfen, wenn er die Ausgabe verarbeitet. Rufen Sie dazu die IMediaObject::P rocessOutput-Methode auf, und legen Sie den Ausgabepuffer für jeden Stream, den Sie verwerfen möchten, auf NULL fest. (Der Ausgabepuffer wird im pBuffer-Member des DMO OUTPUT DATA BUFFER _ _ _ angegeben.) Legen Sie außerdem das DMO _ PROCESS OUTPUT DISCARD WHEN NO _ _ _ _ _ BUFFER-Flag im dwFlags-Parameter fest.

Für jeden Stream, bei dem der pBuffer-Zeiger NULL ist, versucht DMO, die Daten zu verwerfen. Wenn der Stream optional ist, DMO die Daten garantiert verworfen. Wenn der Stream nicht optional ist, verwirft DMO Daten nach Möglichkeit, dies ist jedoch nicht garantiert. Wenn die Daten nicht verworfen werden können, wird das DMO _ OUTPUT _ DATA _ BUFFERF _ INCOMPLETE-Flag festgelegt. Wenn Sie einen pBuffer-Zeiger auf NULL festlegen, aber nicht das flag DMO PROCESS OUTPUT DISCARD WHEN NO BUFFER festlegen, verwirft der DMO die _ _ Daten _ _ _ _ nicht. In diesem Fall puffert DMO die Ausgabe entweder intern oder schlägt einfach mit dem ProcessOutput-Aufruf fehl.

Der einzige funktionale Unterschied zwischen dem DMO OUTPUT STREAMF OPTIONAL und dem DMO _ _ OUTPUT _ _ _ STREAMF _ DISCARDABLE-Flag ist:

  • Das DMO OUTPUT STREAMF OPTIONAL gibt an, dass der Client keinen Medientyp für _ _ diesen Stream festlegen _ muss. Wenn der Client jedoch mit der Verarbeitung von Daten beginnt, ohne den Medientyp für diesen Stream festlegen zu müssen, muss er die Daten aus diesem Stream für die gesamte Dauer des Streamings verwerfen. Wenn Sie Stichproben selektiv verwerfen möchten, müssen Sie den Medientyp festlegen.
  • Das DMO OUTPUT STREAMF DISCARDABLE-Flag gibt an, dass der Stream zwar _ _ optional _ ist, aber immer einen Medientyp erfordert.

Direktes Hosten DMO