Share via


Ermitteln von Geräteformatfunktionen

Ihre Anwendung versucht möglicherweise, die Wiedergabefunktionen eines Geräts zu ermitteln, bevor sie eine Datei an sie sendet. Wenn ein Gerät das Format einer Datei, die Sie senden möchten, nicht verarbeiten kann, versucht Ihre Anwendung möglicherweise, die Datei in ein Format zu transcodieren, das das Gerät verwenden kann, oder benachrichtigt den Benutzer, dass das Gerät die angeforderte Datei nicht unterstützen kann.

Beachten Sie, dass einige Geräte, z. B. Massenspeicherklassengeräte, möglicherweise nur als Wechselmedien ohne Wiedergabefunktionen dienen. In diesem Fall wäre es für Ihre Anwendung ungeeignet, eine Datei zu transcodieren, bevor sie an das Gerät gesendet wird.

Obwohl die IWMDMDevice::GetType-Methode einem Gerät ermöglicht, seine Funktionen zu melden, geben einige Geräte falsche Werte für diese Methode zurück. Bevor Sie eine Datei auf ein Gerät kopieren, sollten Sie den Benutzer fragen, ob die Wiedergabe beabsichtigt ist, und wenn ja, versuchen Sie, die Datei in eines der gemeldeten Formate des Geräts zu transcodieren (oder ein angemessenes Format, wenn das Gerät unterstützung für ein beliebiges Format beansprucht). Ein weiterer Ansatz besteht darin, davon auszugehen, dass alle Formate, die speziell als vom Gerät unterstützt aufgeführt werden, für die Wiedergabe vorgesehen sind, und alle anderen Dateien unverändert übertragen werden sollten.

Nachdem Sie das Format der zu übertragenden Datei und die von einem Gerät unterstützten Formate ermittelt haben, können Sie entscheiden, welches das beste Zielformat für die Transcodierung ist.

In der Vergangenheit war es üblich, dass eine Anwendung null für eine Eigenschaft zurückgibt, um die Unterstützung für alle Werte dieser Eigenschaft anzugeben. Ein Wert von 0 für _WAVEFORMATEX.nSamplesPerSec würde beispielsweise die Unterstützung für eine beliebige Bitrate angeben. Nun wird empfohlen, die Unterstützung für einen beliebigen Wert anzugeben, WMDM_ENUM_PROP_VALID_VALUES_ANY in WMDM_PROP_DESC anzugeben. ValidValuesForm. Einige Eigenschaften können jedoch legitim null zurückgeben, um eine bestimmte Unterstützung anzugeben. Wenn beispielsweise _BITMAPINFOHEADER.biSizeImage auf Null festgelegt ist, gibt dies eine BI_RGB Bitmap an. Ausnahmen für Nullwerte sind in der Dokumentation für die relevanten Strukturen notiert.

Es ist jedoch wichtig zu beachten, dass Geräte ihre Formatfunktionen häufig nicht ordnungsgemäß oder standardmäßig melden. Geräte berichten beispielsweise häufig, dass sie jedes Format unterstützen, wenn sie in der Tat nur bestimmte Formate oder bestimmte Bitraten innerhalb eines Formattyps verarbeiten können. Es liegt an Ihnen, zu entscheiden, ob Ihre Anwendung solche Berichte akzeptieren soll oder ob sie eine Art Obergrenze für die Wiedergabefähigkeiten eines Geräts (z. B. 192 KBit/s) annehmen soll.

Die empfohlene Methode zum Anfordern der Formatunterstützung eines Geräts ist IWMDMDevice3::GetFormatCapability. Wenn diese Methode nicht unterstützt wird, sollte Ihre Anwendung auf IWMDMDevice::GetFormatSupport zurückgreifen. GetFormatSupport gibt im Gegensatz zu GetFormatSupport2 keine Videoinformationen zurück.

Wie eine Anwendung die Formatfunktionen eines Geräts anfordert, hängt davon ab, welche Schnittstelle die Anwendung unterstützt. Weitere Einzelheiten dazu finden Sie in folgenden Themen:

Schreiben von Dateien auf das Gerät