Partilhar via


Implementação e suporte do codificador

No Windows XP Service Pack 1, a Microsoft definiu três conjuntos de propriedades de streaming do kernel e uma enumeração em ksmedia.h para oferecer suporte a dispositivos codificadores somente de vídeo. Cada conjunto de propriedades contém uma única propriedade. Em outras palavras, cada propriedade recebe o seu próprio conjunto de propriedades. Se o driver efetuar 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 coloque zero no membro Id ao configurar a chamada:

Conjunto de propriedades Descrição
ENCAPIPARAM_TAXA_BITE

Implemente este conjunto de propriedades para especificar as taxas de bits de codificação suportadas pelo dispositivo codificador. Consulte Exemplos de código do codificador para obter mais detalhes.

ENCAPIPARAM_BITRATE_MODE

Implemente este conjunto de propriedades para especificar os modos de codificação suportados pelo dispositivo. Este conjunto de propriedades usa a enumeração VIDEOENCODER_BITRATE_MODE para especificar os modos suportados. Consulte Exemplos de código do codificador para obter mais detalhes.

ENCAPIPARAM_PEAK_BITRATE

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

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

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 acionada a partir de um minidriver que suporta o 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 maior variedade de codificadores, incluindo codificadores somente de áudio. Tal como acontece com as propriedades ENCAPIPARAM_Xxx , cada propriedade recebe o seu próprio conjunto de propriedades:

Conjunto de propriedades Descrição
CODECAPI_VIDEO_ENCODER

Se o seu dispositivo suportar a codificação de fluxos de vídeo (incluindo áudio auxiliar, como áudio de TV), implemente o suporte para este conjunto de propriedades.

CODECAPI_AUDIO_ENCODER

Se o dispositivo for um codificador somente de á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 esse conjunto de propriedades para comunicar as configurações atuais do dispositivo codificador. Este conjunto de propriedades é usado para comunicação de e para clientes.

CODECAPI_SUPPORTSEVENTS

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

CODECAPI_CURRENTCHANGELIST

Implemente esse conjunto de propriedades para determinar quais parâmetros do 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 oferecer 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 propriedade set 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 get-property. 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 gráficos possam conectar corretamente o codificador e capturar filtros. Se o seu hardware é capaz de domínio de barramento de conteúdo não codificado, então também pode-se expor mídias públicas. Se você implementar meios públicos e privados, liste os meios privados primeiro porque isso reduz o tempo de construção do gráfico; para encontrar o filtro correto ao criar um gráfico de filtro.

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