Arquitetura de DMO
[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEnginee Audio/Video Capture na Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Audio/Video Capture no Media Foundation em vez de DirectShow, 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.]
Esta seção descreve a arquitetura geral de um DMO.
Streams
Um DMO é um objeto que usa m entradas e produz n saídas. As entradas e saídas são chamadas fluxos. Cada DMO tem pelo menos um fluxo. Fluxos não são objetos; eles são simplesmente referenciados no DMO por número de índice. O número de fluxos é corrigido em tempo de design.
tipos de mídia
Todos os dados são digitado usando um tipo de mídia , que define como interpretar o conteúdo dos dados. Por exemplo, o vídeo RGB de 320 x 240 24 bits é um tipo; O áudio PCM estéreo de 16 bits de 16 bits (kHz) de 44,1 quilohertz é outro tipo. Os tipos de mídia são descritos usando a estrutura DMO_MEDIA_TYPE. Antes que o cliente possa processar qualquer dado, ele deve definir o tipo de mídia para cada fluxo no DMO.
Normalmente, um fluxo pode aceitar uma variedade de tipos de mídia. Alguns DMOs dão suporte a uma gama maior de tipos do que outros. As interfaces DMO definem métodos para o cliente descobrir os tipos com suporte. Por exemplo, um DMO pode dar suporte a vídeo RGB em qualquer profundidade de bit, enquanto outro pode dar suporte apenas a RGB de 24 bits. Além disso, um DMO pode ser limitado a determinadas combinações de entradas e saídas. Por exemplo, se o tipo de entrada for um vídeo de 16 bits, o fluxo de saída poderá exigir a mesma profundidade de bit. O cliente pode enumerar os tipos preferenciais de cada fluxo e testar combinações específicas.
buffers
No modelo DMO padrão, o cliente aloca buffers de entrada e buffers de saída separados. Ele preenche os buffers de entrada com dados e os entrega ao DMO e o DMO grava novos dados nos buffers de saída.
Opcionalmente, um DMO pode dar suporte ao processamento "in-loco". Com o processamento in-loco, o DMO grava a saída diretamente no buffer de entrada, sobre os dados originais. O processamento in-loco elimina a necessidade de buffers separados. Por outro lado, ele altera os dados originais, o que pode não ser aceitável para alguns aplicativos.
O modelo de buffer padrão (não in-loco) tem suporte por meio da interface deIMediaObject. Todos os DMOs devem implementar essa interface. Se um DMO der suporte ao processamento in-loco, ele também exporá a interfaceIMediaObjectInPlace. O cliente é responsável por alocar todos os buffers, tanto de entrada quanto de saída.
Tópicos relacionados
-
sobre de DMOs