Partilhar via


Implementação e suporte do codificador

No Windows XP Service Pack 1, a Microsoft definiu três conjuntos de propriedades de streaming de kernel e uma enumeração em ksmedia.h para dar suporte a dispositivos codificadores somente vídeo. Cada conjunto de propriedades contém uma única propriedade. Em outras palavras, cada propriedade recebe seu próprio conjunto de propriedades. Se o driver fizer chamadas get-property ou Set-property, especifique o GUID do conjunto de propriedades (conforme definido em ksmedia.h) no membro Set da estrutura KSPROPERTY e zero no membro Id ao configurar a chamada:

Set da propriedade Descrição
ENCAPIPARAM_BITRATE

Implemente esse conjunto de propriedades para especificar as taxas de bits de codificação compatíveis com o dispositivo codificador. Confira Exemplos de código do codificador para obter mais detalhes.

ENCAPIPARAM_BITRATE_MODE

Implemente esse conjunto de propriedades para especificar os modos de codificação com suporte do dispositivo. Esse conjunto de propriedades usa a enumeração VIDEOENCODER_BITRATE_MODE para especificar os modos com suporte. Confira Exemplos de código do codificador para obter mais detalhes.

ENCAPIPARAM_PEAK_BITRATE

Implemente esse conjunto de propriedades para especificar a taxa máxima de bits de codificação do dispositivo.

Os clientes acessam essas propriedades derivando a interface COM IVideoEncoder da interface COM IEncoderAPI (descrita na documentação do SDK (Software Development Kit) do Windows.

Um minidriver deve especificar valores padrão para cada uma das propriedades ENCAPIPARAM_Xxx . O tópico Exemplos de Código do Codificador demonstra como especificar valores de propriedade padrão. Durante o desenvolvimento e a depuração de um filtro de codificador, a página de propriedades atual pode ser disparada de um minidriver que dá suporte ao conjunto de propriedades ENCAPIPARAM_BITRATE.

No DirectX 9.0, seis conjuntos de propriedades adicionais e um conjunto de eventos foram definidos em ksmedia.h para fornecer melhor suporte para uma variedade mais ampla de codificadores, incluindo codificadores somente áudio. Assim como acontece com as propriedades ENCAPIPARAM_Xxx , cada propriedade recebe seu próprio conjunto de propriedades:

Set da propriedade Descrição
CODECAPI_VIDEO_ENCODER

Se o dispositivo der suporte à codificação de fluxos de vídeo (incluindo áudio auxiliar, como áudio de TV), implemente o suporte para esse conjunto de propriedades.

CODECAPI_AUDIO_ENCODER

Se o dispositivo for um codificador somente áudio, implemente o suporte para esse conjunto de propriedades em vez de CODECAPI_VIDEO_ENCODER.

CODECAPI_SETALLDEFAULTS

Implemente esse conjunto de propriedades para redefinir todas as configurações internas do dispositivo codificador, como taxa de bits de codificação e modo de codificação para seus valores padrão.

CODECAPI_ALLSETTINGS

Implemente essa propriedade definida para comunicar as configurações atuais do dispositivo codificador. Esse conjunto de propriedades é usado para comunicação de e para clientes.

CODECAPI_SUPPORTSEVENTS

Se o dispositivo der suporte a eventos do modo de usuário, como alterar o modo de codificação, a taxa de bits ou outras configurações, implemente esse conjunto de propriedades. Se você implementar esse conjunto de propriedades, também deverá implementar o suporte para o evento CODECAPI_CHANGELISTS.

CODECAPI_CURRENTCHANGELIST

Implemente esse conjunto de propriedades para determinar quais parâmetros de codificador foram alterados em uma chamada anterior para definir uma ou mais propriedades do codificador.

Conjunto de Eventos Descrição

CODECAPI_CHANGELISTS

Se o dispositivo der suporte à resposta a eventos de modo de usuário por meio do conjunto de propriedades CODECAPI_SUPPORTSEVENTS, implemente esse conjunto de eventos para retornar uma lista de configurações do codificador que foram alteradas como resultado da chamada anterior de set-property de um cliente para CODECAPI_SETALLDEFAULTS ou CODECAPI_ALLSETTINGS.

Os clientes acessam essas propriedades por meio da interface COM ICodecAPI (descrita na documentação do SDK do Windows). Consulte Instalação e registro do codificador para obter mais informações sobre as interfaces COM, incluindo como especificar qual interface KsProxy deve expor.

Um minidriver deve implementar suporte para consultas básicas de propriedade get. O tópico Exemplos de Código do Codificador demonstra como dar suporte a consultas get-property.

Ao desenvolver um filtro de codificador, mova a funcionalidade de codificação para um filtro separado de um filtro de captura de vídeo. Defina seus próprios meios privados para que os construtores de grafo possam conectar corretamente o codificador e capturar filtros. Se o hardware for capaz de dominar o conteúdo não codificado do barramento, você também poderá expor meios públicos. Se você implementar meios públicos e privados, liste primeiro os meios privados porque isso reduz o tempo de construção do grafo; para encontrar o filtro correto ao criar um grafo de filtro.

Para obter mais informações sobre como usar médias e várias instâncias de um filtro (em grafos de filtro separados), consulte Médias e Categorias.