Interface IKsDataTypeHandler (ksproxy.h)
A interface IKsDataTypeHandler fornece métodos que executam pré-processamento opcional e pós-processamento de amostras de mídia. Essa interface também pode retornar o tamanho de informações extras de cabeçalho de fluxo necessárias para processamento e pode determinar se um tipo de mídia específico está dentro de um determinado conjunto de intervalos de dados de streaming de kernel.
O IID dessa interface é IID_IKsDataTypeHandler.
Herança
A interface IKsDataTypeHandler herda da interface IUnknown .
Métodos
A interface IKsDataTypeHandler tem esses métodos.
IKsDataTypeHandler::KsCompleteIoOperation O método KsCompleteIoOperation limpa o cabeçalho estendido e conclui a operação de entrada e saída (E/S). |
IKsDataTypeHandler::KsIsMediaTypeInRanges O método KsIsMediaTypeInRanges valida se um tipo de mídia está dentro dos intervalos de dados fornecidos. |
IKsDataTypeHandler::KsPrepareIoOperation O método KsPrepareIoOperation inicializa o cabeçalho estendido e prepara o exemplo de mídia para uma operação de E/S. |
IKsDataTypeHandler::KsQueryExtendedSize O método KsQueryExtendedSize recupera informações de cabeçalho estendidas necessárias para operações de E/S (entrada e saída). |
IKsDataTypeHandler::KsSetMediaType O método KsSetMediaType define o tipo de mídia para um manipulador de tipo de dados. |
Comentários
Para manter o tipo de dados proxy neutro, manipuladores opcionais de tipo de dados podem ser carregados para massagear o fluxo de dados conforme ele passa para ou de filtros no modo kernel. Você deve implementar um manipulador de tipo de dados como um servidor COM que, pelo menos, dê suporte à interface IKsDataTypeHandler . Opcionalmente, o manipulador de tipo de dados pode dar suporte à interface IKsDataTypeCompletion .
Um manipulador de tipo de dados normalmente é carregado durante o processo de conexão de pino e descarregado quando a conexão é interrompida. No entanto, às vezes, um manipulador de tipo de dados é carregado brevemente para outras finalidades. Por exemplo, se um aplicativo usar o método IAMStreamConfig::SetFormat do DirectShow, o aplicativo possivelmente usará um manipulador de tipo de dados para concluir um parâmetro de tipo de mídia parcial enviado ao método.
O proxy usa os GUIDs do tipo de mídia como classes de servidor COM para determinar se algum manipulador de tipo de dados deve ser carregado. Desde que o manipulador de tipo de dados seja registrado como um servidor COM em uma classe GUID esperada que o proxy procura, o manipulador de tipo de dados é carregado. O tipo de formato principal é usado pela primeira vez para tentar abrir um servidor COM do manipulador de tipo de dados, seguido pelo subtipo e pelo especificador de formato se a abertura do manipulador de tipo de dados falhar usando o tipo de formato principal. Se qualquer uma das tentativas for bem-sucedida, o proxy consultará a interface IKsDataTypeHandler e chamará o método KsSetMediaType da interface para estabelecer o tipo de mídia atual que está sendo usado com o manipulador, caso o manipulador dê suporte a muitos tipos. Se nenhum manipulador for encontrado, o proxy pressupõe que nenhum é necessário ao realizar marshaling do fluxo para ou do modo kernel ou para executar quaisquer outras tarefas necessárias.
Em uma solicitação de criação de manipulador de tipo de dados por meio de CoCreateInstance, o servidor sempre recebe um IUnknown externo com o qual criar o objeto COM. Esse IUnknown é uma interface no objeto pin que está carregando esse manipulador. O ponteiro da interface IUnknown pode ser usado para consultar informações ou interfaces do pino, como as interfaces IKsPin ou IKsControl , embora o pin do modo kernel não tenha sido criado no momento em que o manipulador é carregado. Nenhuma referência deve ser deixada no objeto externo por meio da aquisição de interfaces, pois isso resultará em uma contagem de referência circular. Usar as interfaces sem uma contagem de referência é aceitável, pois o objeto externo é proprietário do manipulador e, por definição, é destruído quando a contagem de referência do objeto externo atinge zero.
Para obter mais informações sobre IAMStreamConfig::SetFormat e CoCreateInstance, consulte a documentação do SDK do Microsoft Windows.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Windows |
Cabeçalho | ksproxy.h |