发现设备格式功能

应用程序可能会在向设备发送文件之前尝试确定设备的播放功能。 如果设备无法处理要发送的文件格式,应用程序可能会尝试将文件转码为设备可以使用的格式,或通知用户该设备不支持请求的文件。

请注意,某些设备(如大容量存储类设备)可能仅用作没有播放功能的可移动存储媒体。 在这种情况下,应用程序在将文件发送到设备之前对其进行转码是不合适的。

尽管 IWMDMDevice::GetType 方法允许设备报告其功能,但某些设备为此方法返回不正确的值。 在将文件复制到设备之前,你可能想要询问用户是否要播放,如果是这样,尝试将文件转码为设备报告的格式之一 (或合理的格式(如果设备声明支持任何格式) )。 另一种方法是假定设备专门列出的任何格式都用于播放,所有其他文件应未修改传输。

在发现要传输的文件格式以及设备支持的格式后,你可以决定哪种格式是转码的最佳目标格式。

过去,应用程序通常会为属性返回零,以指示对该属性的任何值的支持。 例如,_WAVEFORMATEX.nSamplesPerSec 的值为零表示支持任何比特率。 现在,指示支持任何值的建议方法是在 WMDM_PROP_DESC 中指定 WMDM_ENUM_PROP_VALID_VALUES_ANY。ValidValuesForm。 不过,某些属性可以合法地返回零以指示特定支持。 例如,如果 _BITMAPINFOHEADER.biSizeImage 设置为零,则表示BI_RGB位图。 相关结构的文档中记录了零值的异常。

但是,请务必注意,设备通常不会正确或以标准方式报告其格式功能。 例如,设备通常报告它们支持任何格式,但实际上它们只能处理特定格式或格式类型中的特定比特率。 由你决定应用程序是否应接受此类报告,或者它是否应假定设备的播放功能某种上限 (例如,) 192 kbps。

请求设备格式支持的建议方法是 IWMDMDevice3::GetFormatCapability。 如果不支持此方法,则应用程序应在 IWMDMDevice::GetFormatSupport 上回退。 GetFormatSupportGetFormatSupport2 不同,不返回视频信息。

应用程序请求设备的格式功能的方式取决于应用程序支持的接口。 有关更多详细信息,请参阅下列主题:

将文件写入设备