Gerenciando projetos de edição de vídeo

[O recurso associado a esta página, DirectShow, é um recurso herdado. Ele foi substituído por MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo na Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo no Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

[Essa API não tem suporte e pode ser alterada ou indisponível no futuro.]

As dicas a seguir ajudarão você a gerenciar projetos nos Serviços de Edição do DirectShow.

Alterações na Linha do Tempo

  • Se você alterar o linha do tempo depois de compilar o grafo de filtro, chame IRenderEngine::ConnectFrontEnd novamente para recompilar o front-end. Normalmente, isso não afeta o restante do grafo. Ocasionalmente, no entanto, o mecanismo de renderização precisa excluir todo o grafo antes de recompilar o front-end. (Por exemplo, isso acontece se você adicionar ou remover um grupo.) O método ConnectFrontEnd retorna S_WARN_OUTPUTRESET para sinalizar que excluiu o grafo. Se isso acontecer, seu aplicativo deverá recompilar a seção de renderização do grafo.
  • Para remover todos os objetos completamente do linha do tempo, chame o método IAMTimeline::ClearAllGroups.

Limpeza

  • Quando terminar de usar um mecanismo de renderização, chame o método IRenderEngine::ScrapIt . Assim como acontece com qualquer objeto COM, certifique-se de liberar cada ponteiro de interface quando terminar de usá-lo.
  • O mecanismo de renderização não mantém uma contagem de referência no linha do tempo. Não libere o linha do tempo antes de terminar de usá-lo e sempre chame ScrapIt no mecanismo de renderização primeiro.
  • Se você liberar todas as referências a um linha do tempo, não use nenhum dos objetos nesse linha do tempo, mesmo que você esteja mantendo contagens de referência neles.

Várias instâncias de linha do tempo

  • Não mova linha do tempo objetos entre linhas do tempo. Cada objeto em um linha do tempo deve ser criado por esse linha do tempo. O linha do tempo contém um cache interno com informações sobre os objetos que ele cria; mover objetos linha do tempo pode interromper o cache.
  • Nunca use a mesma instância de um mecanismo de renderização com mais de um linha do tempo. O mecanismo de renderização contém um cache com informações sobre o linha do tempo. Várias linhas do tempo interromperão o cache e causarão resultados imprevisíveis. Se você precisar de duas linhas do tempo ativas, crie instâncias separadas de mecanismos de renderização para cada linha do tempo.
  • Um linha do tempo pode usar mais de um mecanismo de renderização, mas não ao mesmo tempo. Exclua o mecanismo de renderização antigo antes de usar outro mecanismo de renderização. (Normalmente, você faria isso ao mudar de usar o mecanismo de renderização básico para visualização para o mecanismo de renderização inteligente para gravação de arquivos.)

Persistência

  • O grafo de filtro não é persistente quando você salva o projeto em um arquivo XML. Portanto, você perde todas as informações relacionadas a recompactação inteligente, formato de compactação ou parâmetros de compactação. Cabe ao aplicativo restaurar esses parâmetros depois de carregar um projeto.

Usando os Serviços de Edição do DirectShow