Configurando o GRAVADOR ASF do WM (QASF)
Quando o filtro gravador ASF do WM é criado, ele é configurado automaticamente com o perfil WMProfile_V80_256Video como padrão. Como esse perfil usa os codecs windows media audio e windows media video versão 8, é recomendável criar um perfil personalizado que usa os codecs da Série Windows Media 9 e, em seguida, passar seu ponteiro IWMProfile para o filtro usando o método IConfigAsfWriter::ConfigureFilterUsingProfile . O filtro deve ser adicionado ao grafo antes que o filtro possa ser configurado e deve ser configurado antes que possa 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 estiverem 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 áudio de entrada para um perfil de áudio e vídeo de duas entradas, apenas o pino de áudio será reconectadoTodos os dados de entrada devem ter carimbo de data/hora e todos os pinos de entrada devem 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 pin 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 que o filtro estiver conectado, desde que você siga esta ordem de operações:
- Adicione uma ou mais extensões de unidade de dados ao fluxo usando IWMStreamConfig2::AddDataUnitExtension.
- Chame WMProfile::ReconfigStream para atualizar o perfil.
- Chame IConfigAsfWriter::ConfigureFilterUsingProfile com o objeto de perfil atualizado.
- Localize o pin de entrada de vídeo e chame seu método IAMWMBufferPass::SetNotify para registrar sua interface IAMWMBufferPassCallback definida pelo aplicativo.
Quando o grafo for executado, o método IAMWMBufferPassCallback::Notify será chamado para cada quadro e você poderá obter e definir propriedades no exemplo usando seus métodos de interface INSSBuffer3 .
Observação
Em alguns cenários com uso intensivo de processador, como o telecine inverso, o Gravador ASF do WM pode exigir mais buffers de saída do que alguns filtros downstream podem dar suporte. O Decodificador DV, por exemplo, não aceitará mais de um buffer para seu pino de saída e o mesmo é verdadeiro para o Descompactador AVI em determinadas condições. Se você encontrar problemas ao tentar se conectar a esses filtros ou possivelmente ao executar o grafo, talvez seja necessário escrever um filtro intermediário que aceite qualquer número de buffers em seu pino de saída.