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:
|
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:
|
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:
|
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:
|
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:
|
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. |