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