Partilhar via


Atribuindo formatos de saída

Alguns codecs podem descompactar dados de mídia digital em vários formatos descompactados. Você pode encontrar todos os formatos com suporte para uma saída específica usando o leitor assíncrono ou o leitor síncrono.

Para examinar todos os formatos disponíveis para uma saída, execute as etapas a seguir. Esses procedimentos são idênticos para o leitor assíncrono e o leitor síncrono. Quando os nomes da interface variam, os métodos de leitor síncrono são listados entre parênteses após os métodos do leitor assíncrono.

  1. Crie um objeto leitor e carregue um arquivo para leitura. Para obter mais informações, consulte Para criar um leitor e abrir um arquivo (ou Para criar um leitor síncrono e abrir um arquivo).

  2. Determine a saída para a qual você deseja encontrar os formatos disponíveis. Se você ainda não souber qual saída deseja usar, poderá identificar as saídas no arquivo usando os procedimentos em Para identificar números de saída.

  3. Recupere o número total de formatos disponíveis para a saída desejada chamando IWMReader::GetOutputFormatCount (ou IWMSyncReader::GetOutputFormatCount).

  4. Faça um loop pelos formatos disponíveis um de cada vez, executando as seguintes etapas para cada um:

    • Recupere a interface IWMOutputMediaProps para o formato de saída atual chamando IWMReader::GetOutputFormat (ou IWMSyncReader::GetOutputFormat).

    • Recupere a estrutura WM_MEDIA_TYPE para o formato de saída fazendo duas chamadas para IWMMediaProps::GetMediaType. Faça a primeira chamada para obter o tamanho da estrutura e, em seguida, aloque memória para ela e passe um ponteiro para a memória alocada na segunda chamada.

    • Localize o subtipo de mídia do formato de saída em WM_MEDIA_TYPE.subtipo.

    • Para vídeo, se o subtipo atual for o formato que você deseja usar para saída, saia do loop. Caso contrário, vá para a próxima iteração.

      Para áudio, você deve marcar os valores na estrutura WAVEFORMATEX em relação aos seus requisitos. WM_MEDIA_TYPE.pbFormat aponta para a estrutura WAVEFORMATEX para saídas de áudio.

  5. Quando encontrar a saída desejada, defina-a para uso com o leitor chamando IWMReader::SetOutputProps (ou IWMSyncReader::SetOutputProps). Você deve passar um ponteiro para a interface IWMOutputMediaProps obtida na primeira etapa do loop.

IWMMediaProps Interface

IWMOutputMediaProps Interface

IWMReader Interface

IWMSyncReader Interface

Trabalhando com saídas