Compartilhar via


Para desinterlacear vídeo

[O recurso associado a esta página, Windows Media Format 11 SDK, é um recurso herdado. Ele foi substituído por Leitor de Origem e Gravador de Coletor. O Leitor de Origem e o Gravador de Coletor foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use o Leitor de Origem e o Gravador de Coletor em vez do SDK do Windows Media Format 11, 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.]

Algumas fontes de vídeo, como placas de captura de vídeo, fornecem dados de vídeo para exibição entrelaçada. Cada quadro de vídeo entrelaçado é composto por dois campos. O campo superior contém a primeira linha de vídeo e todas as outras linhas depois disso. O campo inferior contém a segunda linha de vídeo e todas as outras linhas depois disso. Portanto, um campo contém todas as linhas numeradas pares e o outro contém todas as linhas numeradas ímpares. Os campos que compõem um quadro representam tempos de apresentação ligeiramente diferentes para que, quando intercalados, eles não formem uma imagem estática.

Quando você quiser exibir vídeo em um monitor de computador, cada quadro do vídeo deve ser exibido como uma imagem (esse método de exibição de vídeo um quadro inteiro por vez é chamado de vídeo progressivo ).) Se você exibir vídeo entrelaçado progressivamente, os quadros podem não parecer corretos devido à diferença de tempo entre os dois campos. O codec do Windows Media Video e o codec perfil avançado de vídeo do Windows Media dão suporte a um recurso de pré-processamento que converte conteúdo entrelaçado em quadros progressivos.

Para ter o vídeo de entrada de desinterlace codec, chame o método IWMWriterAdvanced2::SetInputSetting . A configuração a ser usada é g_wszDeinterlaceMode. Defina o modo de desinterlacagem como um dos valores a seguir.

Valor Descrição
WM_DM_NOTINTERLACED A entrada é progressiva. Use essa configuração para interromper o desinterlacamento quando você tiver definido anteriormente o modo de desinterlacing como outro valor.
WM_DM_DEINTERLACE_NORMAL Selecione esse modo para mesclar os campos par e ímpar de um quadro entrelaçado (usando um mecanismo de compensação de movimento). Benefícios:
  • Os artefatos de entrelaçamento da exibição progressiva são significativamente reduzidos.
  • O codec do Windows Media Video produz um vídeo compactado de maior qualidade.
WM_DM_DEINTERLACE_HALFSIZE Selecione esse modo quando a resolução de saída for metade ou menos da resolução de entrada. Por exemplo, use esse modo quando a resolução de vídeo de entrada for de 640 x 480 pixels e a resolução de vídeo de saída for de 320 x 240 pixels. Benefícios:
  • Os artefatos de entrelaçamento da exibição progressiva são significativamente reduzidos.
WM_DM_DEINTERLACE_HALFSIZEDOUBLERATE Selecione esse modo quando a resolução de saída for metade ou menos da resolução de entrada e a taxa de quadros de saída for duas vezes maior. Por exemplo, use esse modo quando a resolução de vídeo de entrada for de 640 x 480 pixels a 30 quadros entrelaçados/s e a resolução de vídeo de saída for de 320 x 240 pixels a 60 quadros/s. Benefícios:
  • Isso produz quadros progressivos de alta qualidade, pois cada campo é convertido em um quadro e, portanto, não há necessidade de mesclar nenhuma informação.
  • O movimento completo dos campos entrelaçados é capturado.
WM_DM_DEINTERLACE_INVERSETELECINE Selecione esse modo para converter o vídeo telecined de 30 quadros/s em 24 quadros/s do filme original. Benefícios:
  • A qualidade da compactação melhora significativamente porque apenas 24 quadros/s em vez de 30 quadros/s precisam ser codificados.
  • Como o resultado é progressivo, os mesmos benefícios de compactação e exibição de desinterlacing são realizados.
WM_DM_DEINTERLACE_VERTICALHALFSIZEDOUBLERATE Selecione esse modo quando a resolução de saída vertical for metade ou menos da resolução vertical de entrada e a taxa de quadros de saída for duas vezes maior. Por exemplo, a resolução vertical de vídeo de entrada é de 640 x 480 pixels a 30 quadros entrelaçados/s e a resolução vertical de vídeo de saída é de 320 x 240 pixels a 60 quadros/s. Benefícios:
  • Isso produz quadros progressivos de alta qualidade, pois cada campo é convertido em um quadro e, portanto, não há necessidade de mesclar nenhuma informação.
  • O movimento completo dos campos entrelaçados é capturado.

Para conteúdo misto, defina o modo de desinterlacagem conforme necessário antes de passar amostras de um novo tipo. Por exemplo, para iniciar a codificação com entrada progressiva, você não precisa definir nenhum modo de desinterlacização. Se alguns exemplos exigirem desinterlacagem normal, você deverá definir o modo de desinterlacing como WM_DM_DEINTERLACE_NORMAL. Para processar exemplos progressivos adicionais, você deve definir o modo de desinterlacagem como WM_DM_NOTINTERLACED.

Configurações inversas do Telecine

Para obter uma descrição do telecine inverso, consulte Para usar o Telecine Inverso.

Se você definir o modo de desinterlacagem como WM_DM_DEINTERLACE_INVERSETELECINE, poderá especificar o padrão telecine do primeiro quadro de entrada chamando iWMWriterAdvanced2::SetInputSetting. A configuração a ser usada é g_wszInitialPatternForInverseTelecine. Defina o padrão inicial como um dos valores a seguir.

Valor Descrição
WM_DM_IT_DISABLE_COHERENT_MODE Especifica que a mídia de entrada passou pelo processo telecine, mas que os quadros não estão mais em um padrão previsível. Isso geralmente indica que a mídia foi editada após o processamento do telecine. Quando você usa essa configuração, o codec tenta reconstruir os quadros originais por conta própria.
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_AA_TOP Especifica que o campo superior do quadro AA é o primeiro exemplo.
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_BB_TOP Especifica que o campo superior do quadro BB é o primeiro exemplo.
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_BC_TOP Especifica que o campo superior do quadro BC é o primeiro exemplo.
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_CD_TOP Especifica que o campo superior do quadro de CD é o primeiro exemplo.
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_DD_TOP Especifica que o campo superior do quadro DD é o primeiro exemplo.
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_AA_BOTTOM Especifica que o campo inferior do quadro AA é o primeiro exemplo.
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_BB_BOTTOM Especifica que o campo inferior do quadro BB é o primeiro exemplo.
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_BC_BOTTOM Especifica que o campo inferior do quadro BC é o primeiro exemplo.
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_CD_BOTTOM Especifica que o campo inferior do quadro de CD é o primeiro exemplo.
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_DD_BOTTOM Especifica que o campo inferior do quadro DD é o primeiro exemplo.

Tópicos Avançados