Compartilhar via


Descobrindo funcionalidades de formato de dispositivo

Seu aplicativo pode tentar determinar os recursos de reprodução de um dispositivo antes de enviar um arquivo para ele. Se um dispositivo não puder manipular o formato de um arquivo que você deseja enviar, seu aplicativo poderá tentar transcodificar o arquivo em um formato que o dispositivo pode usar ou notificar o usuário de que o dispositivo não pode dar suporte ao arquivo solicitado.

Observe que alguns dispositivos, como dispositivos de classe de armazenamento em massa, podem servir apenas como mídia de armazenamento removível sem recursos de reprodução. Nesse caso, seria inadequado para seu aplicativo transcodificar um arquivo antes de enviá-lo para o dispositivo.

Embora o método IWMDMDevice::GetType permita que um dispositivo relate seus recursos, alguns dispositivos retornam valores incorretos para esse método. Antes de copiar um arquivo para um dispositivo, convém perguntar ao usuário se a reprodução é pretendida e, nesse caso, tentar transcodificar o arquivo para um dos formatos relatados do dispositivo (ou um formato razoável, se o dispositivo solicitar suporte para qualquer formato). Outra abordagem é pressupor que todos os formatos especificamente listados como compatíveis com o dispositivo se destinam à reprodução, e todos os outros arquivos devem ser transferidos sem modificações.

Depois de descobrir o formato do arquivo a ser transferido e os formatos compatíveis com um dispositivo, você pode decidir qual é o melhor formato de destino para transcodificação.

No passado, era comum que um aplicativo retornasse zero para uma propriedade para indicar suporte para quaisquer valores dessa propriedade. Por exemplo, um valor zero para _WAVEFORMATEX.nSamplesPerSec indicaria suporte para qualquer taxa de bits. Agora, a maneira recomendada de indicar o suporte para qualquer valor é especificar WMDM_ENUM_PROP_VALID_VALUES_ANY em WMDM_PROP_DESC. ValidValuesForm. Algumas propriedades, porém, podem retornar zero legitimamente para indicar suporte específico. Por exemplo, se _BITMAPINFOHEADER.biSizeImage estiver definido como zero, isso indicará um BI_RGB bitmap. Exceções para valores zero são indicadas na documentação das estruturas relevantes.

No entanto, é importante observar que os dispositivos geralmente não relatam seus recursos de formato corretamente ou de maneira padrão. Por exemplo, os dispositivos geralmente relatam que dão suporte a qualquer formato, quando, na verdade, só podem lidar com formatos específicos ou taxas de bits específicas dentro de um tipo de formato. Cabe a você decidir se seu aplicativo deve aceitar esses relatórios ou se ele deve assumir algum tipo de limite superior para as habilidades de reprodução de um dispositivo (por exemplo, 192 kbps).

O método recomendado para solicitar o suporte ao formato de um dispositivo é IWMDMDevice3::GetFormatCapability. Se esse método não tiver suporte, seu aplicativo deverá fazer fallback em IWMDMDevice::GetFormatSupport. GetFormatSupport, ao contrário de GetFormatSupport2, não retorna informações de vídeo.

A forma como um aplicativo solicita os recursos de formato de um dispositivo depende de qual interface o aplicativo dá suporte. Para obter mais detalhes, consulte os seguintes tópicos:

Gravando arquivos no dispositivo