Поделиться через


Обнаружение возможностей формата устройства

Приложение может попытаться определить возможности воспроизведения устройства перед отправкой на него файла. Если устройство не может обработать формат файла, который вы хотите отправить, приложение может попытаться перекодировать файл в формат, который может использовать устройство, или уведомить пользователя о том, что устройство не поддерживает запрошенный файл.

Обратите внимание, что некоторые устройства, например запоминающие устройства класса , могут служить только съемными носителями без возможности воспроизведения. В этом случае приложение будет неуместно перекодировать файл перед его отправкой на устройство.

Хотя метод 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, не возвращает сведения о видео.

То, как приложение запрашивает возможности формата устройства, зависит от того, какой интерфейс поддерживает приложение. Дополнительные сведения см в следующих разделах.

Запись файлов на устройство