Compartir a través de


Detección de funcionalidades de formato de dispositivo

La aplicación podría intentar determinar las funcionalidades de reproducción de un dispositivo antes de enviar un archivo a ella. Si un dispositivo no puede controlar el formato de un archivo que desea enviar, la aplicación podría intentar transcodificar el archivo en un formato que el dispositivo pueda usar o notificar al usuario que el dispositivo no puede admitir el archivo solicitado.

Tenga en cuenta que algunos dispositivos, como los dispositivos de clase de almacenamiento masivo, pueden servir solo como medios de almacenamiento extraíbles sin funcionalidades de reproducción. En este caso, sería inadecuado que la aplicación transcodifique un archivo antes de enviarlo al dispositivo.

Aunque el método IWMDMDevice::GetType permite a un dispositivo notificar sus funcionalidades, algunos dispositivos devuelven valores incorrectos para este método. Antes de copiar un archivo en un dispositivo, es posible que quiera preguntar al usuario si la reproducción está prevista y, si es así, intentar transcodificar el archivo a uno de los formatos notificados del dispositivo (o un formato razonable, si el dispositivo admite cualquier formato). Otro enfoque consiste en suponer que todos los formatos enumerados específicamente como compatibles con el dispositivo están diseñados para la reproducción, y todos los demás archivos deben transferirse sin modificar.

Después de detectar el formato del archivo que se va a transferir y los formatos admitidos por un dispositivo, puede decidir cuál es el mejor formato de destino para la transcodificación.

En el pasado, era habitual que una aplicación devuelva cero para una propiedad para indicar la compatibilidad con los valores de esa propiedad. Por ejemplo, un valor de cero para _WAVEFORMATEX.nSamplesPerSec indicaría compatibilidad con cualquier velocidad de bits. Ahora, la manera recomendada de indicar la compatibilidad con cualquier valor es especificar WMDM_ENUM_PROP_VALID_VALUES_ANY en WMDM_PROP_DESC. ValidValuesForm. Sin embargo, algunas propiedades pueden devolver legítimamente cero para indicar compatibilidad específica. Por ejemplo, si _BITMAPINFOHEADER.biSizeImage está establecido en cero, esto indica un mapa de bits BI_RGB. Las excepciones de valores cero se indican en la documentación de las estructuras pertinentes.

Sin embargo, es importante tener en cuenta que los dispositivos a menudo no notifican sus funcionalidades de formato correctamente o de forma estándar. Por ejemplo, los dispositivos suelen notificar que admiten cualquier formato, cuando de hecho solo pueden controlar formatos específicos o velocidades de bits específicas dentro de un tipo de formato. Es responsabilidad de usted decidir si la aplicación debe aceptar dichos informes o si debe asumir algún tipo de límite superior para las capacidades de reproducción de un dispositivo (por ejemplo, 192 kbps).

El método recomendado para solicitar la compatibilidad con el formato de un dispositivo es IWMDMDevice3::GetFormatCapability. Si no se admite este método, la aplicación debe recurrir a IWMDMDevice::GetFormatSupport. GetFormatSupport, a diferencia de GetFormatSupport2, no devuelve información de vídeo.

La forma en que una aplicación solicita las funcionalidades de formato de un dispositivo depende de la interfaz que admita la aplicación. Para obtener más información, consulte los siguientes temas:

Escribir archivos en el dispositivo