Individuazione delle funzionalità del formato del dispositivo
L'applicazione potrebbe provare a determinare le funzionalità di riproduzione di un dispositivo prima di inviarlo. Se un dispositivo non è in grado di gestire il formato di un file da inviare, l'applicazione potrebbe tentare di eseguire la transcodifica del file in un formato che il dispositivo può usare o informare l'utente che il dispositivo non può supportare il file richiesto.
Si noti che alcuni dispositivi, ad esempio i dispositivi di classe di archiviazione di massa, potrebbero essere usati solo come supporti di archiviazione rimovibili senza funzionalità di riproduzione. In questo caso, sarebbe inappropriato per la transcodifica di un file prima di inviarlo al dispositivo.
Anche se il metodo IWMDMDevice::GetType consente a un dispositivo di segnalarne le funzionalità, alcuni dispositivi restituiscono valori non corretti per questo metodo. Prima di copiare un file in un dispositivo, potrebbe essere necessario chiedere all'utente se la riproduzione è prevista e, in tal caso, tentare di transcodificare il file in uno dei formati segnalati del dispositivo (o un formato ragionevole, se il dispositivo supporta qualsiasi formato). Un altro approccio consiste nel presupporre che tutti i formati elencati specificamente come supportati dal dispositivo siano destinati alla riproduzione e tutti gli altri file devono essere trasferiti senza modifiche.
Dopo aver individuato il formato del file da trasferire e i formati supportati da un dispositivo, è possibile decidere quale sia il formato di destinazione migliore per la transcodifica.
In passato, è stato comune che un'applicazione restituisca zero per una proprietà per indicare il supporto per qualsiasi valore di tale proprietà. Ad esempio, un valore pari a zero per _WAVEFORMATEX.nSamplesPerSec indica il supporto per qualsiasi velocità di bit. A questo punto, il modo consigliato per indicare il supporto per qualsiasi valore consiste nel specificare WMDM_ENUM_PROP_VALID_VALUES_ANY in WMDM_PROP_DESC. ValidValuesForm. Alcune proprietà, tuttavia, possono restituire legittimamente zero per indicare un supporto specifico. Ad esempio, se _BITMAPINFOHEADER.biSizeImage è impostato su zero, questo indica una bitmap BI_RGB. Le eccezioni per i valori zero sono indicate nella documentazione relativa alle strutture pertinenti.
Tuttavia, è importante notare che i dispositivi spesso non segnalano correttamente le funzionalità di formato o in modo standard. Ad esempio, i dispositivi spesso segnalano che supportano qualsiasi formato, quando in realtà possono gestire solo formati specifici o velocità di bit specifiche all'interno di un tipo di formato. Spetta all'utente decidere se l'applicazione deve accettare tali report o se deve presupporre un limite superiore alle capacità di riproduzione di un dispositivo (ad esempio, 192 kbps).
Il metodo consigliato per richiedere il supporto del formato di un dispositivo è IWMDMDevice3::GetFormatCapability. Se questo metodo non è supportato, l'applicazione deve eseguire il fallback in IWMDMDevice::GetFormatSupport. GetFormatSupport, a differenza di GetFormatSupport2, non restituisce informazioni video.
Il modo in cui un'applicazione richiede le funzionalità di formato di un dispositivo dipende dall'interfaccia supportata dall'applicazione. Per informazioni dettagliate, vedere gli argomenti seguenti:
- Recupero delle funzionalità di formato nei dispositivi che supportano IWMDMDevice3
- Recupero delle funzionalità di formato nei dispositivi che supportano solo IWMDMDevice
Argomenti correlati