Обнаружение возможностей формата устройства
Приложение может попытаться определить возможности воспроизведения устройства перед отправкой файла в него. Если устройство не может обрабатывать формат файла, который нужно отправить, приложение может попытаться перекодировать файл в формат, который может использовать устройство, или уведомить пользователя о том, что устройство не может поддерживать запрошенный файл.
Обратите внимание, что некоторые устройства, такие как устройства класса массового хранения, могут использоваться только в качестве съемного носителя без функций воспроизведения. В этом случае было бы неуместно, чтобы ваше приложение перекодировало файл перед отправкой на устройство.
Хотя метод IWMDMDevice::GetType позволяет устройству сообщать о своих возможностях, некоторые устройства возвращают неверные значения для этого метода. Прежде чем копировать файл на устройство, может потребоваться попросить пользователя о том, предназначено ли воспроизведение, и если да, попытайтесь перекодировать файл в один из сообщаемых форматов устройства (или разумный формат, если устройство утверждает поддержку любого формата). Другой подход заключается в том, чтобы предположить, что любые форматы, специально перечисленные в качестве поддерживаемых устройством, предназначены для воспроизведения, а все остальные файлы должны передаваться неизмененные.
После обнаружения формата передаваемых файлов и форматов, поддерживаемых устройством, можно решить, какой из лучших целевых форматов для перекодирования.
В прошлом приложение часто возвращает ноль для свойства, указывающего поддержку любых значений этого свойства. Например, значение нуля для _WAVEFORMATEX.nSamplesPerSec указывает на поддержку любой скорости битов. Теперь рекомендуемый способ указать поддержку любого значения — указать WMDM_ENUM_PROP_VALID_VALUES_ANY в WMDM_PROP_DESC. ValidValuesForm. Однако некоторые свойства могут законно возвращать ноль, чтобы указать конкретную поддержку. Например, если _BITMAPINFOHEADER.biSizeImage равно нулю, это означает BI_RGB растровое изображение. Исключения для нулевого значения отмечены в документации для соответствующих структур.
Однако важно отметить, что устройства часто не сообщают о своих возможностях формата должным образом или в стандартном режиме. Например, устройства часто сообщают о том, что они поддерживают любой формат, если на самом деле они могут обрабатывать только определенные форматы или определенные скорости битов в типе формата. Вы можете решить, следует ли приложению принимать такие отчеты или принимать какой-то верхний предел для возможностей воспроизведения устройства (например, 192 кб/с).
Рекомендуемый метод для запроса поддержки формата устройства — IWMDMDevice3::GetFormatCapability. Если этот метод не поддерживается, приложение должно вернуться к IWMDMDevice::GetFormatSupport. GetFormatSupport, в отличие от GetFormatSupport2, не возвращает сведения о видео.
Как приложение запрашивает возможности формата устройства, зависит от того, какой интерфейс поддерживает приложение. Дополнительные сведения см. в следующих разделах:
- Получение информации о возможностях форматирования на устройствах, поддерживающих IWMDMDevice3
- Получение возможностей форматирования на устройствах, которые поддерживают только IWMDMDevice
Связанные разделы