Partilhar via


Configurando o gravador WM ASF (QASF)

[A funcionalidade associada a esta página, Windows Media Format 11 SDK, é uma funcionalidade herdada. Foi substituído por Source Reader e Sink Writer. do Source Reader e Sink Writer foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda vivamente que, sempre que possível, o novo código utilize o Leitor de Fonte e o Gravador de Destino em vez do Windows Media Format 11 SDK. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

Quando o filtro WM ASF Writer é criado, ele é configurado automaticamente com o perfil WMProfile_V80_256Video como padrão. Como este perfil usa os codecs Windows Media Audio e Windows Media Video versão 8, é recomendável criar um perfil personalizado que use os codecs do Windows Media 9 Series e depois passar o seu ponteiro de IWMProfile para o filtro usando o método IConfigAsfWriter::ConfigureFilterUsingProfile. O filtro deve ser adicionado ao gráfico antes que o filtro possa ser configurado e deve ser configurado antes de poder ser conectado a filtros upstream. O filtro usa o perfil para determinar que tipo de arquivo do Windows Media Format gravar, quantos pinos de entrada configurar e quais tipos de mídia os pinos podem aceitar.

O filtro permite que os perfis sejam redefinidos enquanto seus pinos de entrada estão conectados, desde que o novo perfil não exija nenhum pino de entrada adicional. Por exemplo, se você alterar o perfil de um perfil somente de áudio de uma entrada para um perfil de áudio e vídeo de duas entradas, apenas o pino de áudio será reconectadoTodos os dados de entrada deverão ter carimbo de data/hora e todos os pinos de entrada deverão ser conectados antes que o filtro possa ser executado ou pausado. Isso significa que, se você configurar o filtro com um perfil que tenha um fluxo de áudio e um fluxo de vídeo, o filtro criará um pino de entrada de áudio e vídeo, e ambos os pinos deverão ser conectados antes que o filtro possa ser executado.

Adicionando extensões de unidade de dados

Você pode configurar um fluxo de perfil para extensões de unidade de dados, como códigos de tempo SMPTE, antes ou depois da conexão do filtro, desde que siga esta ordem de operações:

  1. Adicione uma ou mais extensões de unidade de dados ao fluxo usando IWMStreamConfig2::AddDataUnitExtension.
  2. Chame WMProfile::ReconfigStream para atualizar o perfil.
  3. Chame IConfigAsfWriter::ConfigureFilterUsingProfile utilizando o objeto de perfil atualizado.
  4. Encontre o pino de entrada de vídeo e chame seu método IAMWMBufferPass::SetNotify para registrar seu definido pelo aplicativo IAMWMBufferPassCallback interface.

Quando o gráfico é executado, o seu método IAMWMBufferPassCallback::Notify será chamado para cada quadro, e você poderá obter e definir propriedades sobre a amostra usando os métodos de interface INSSBuffer3.

Observação

Em alguns cenários com uso intensivo de processador, como telecine inverso, o WM ASF Writer pode exigir mais buffers de saída do que alguns filtros downstream podem suportar. O DV Decoder, por exemplo, não aceitará mais de um buffer para seu pino de saída e o mesmo é verdade para o AVI Decompressor em certas condições. Se você encontrar problemas ao tentar se conectar a esses filtros, ou possivelmente ao executar o gráfico, pode ser necessário escrever um filtro intermediário que aceite qualquer número de buffers em seu pino de saída.