Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este tópico fornece algumas diretrizes para implementar um decodificador ou codificador como um MFT (Media Foundation Transform).
Codificadores
Negociação de formato de codificador
O procedimento a seguir é usado para inicializar um codificador:
- Consulte o MFT para a interface ICodecAPI .
- Chame ICodecAPI::SetValue para definir propriedades de codificação.
- Chame IMFTransform::SetOutputType para definir o formato de codificação.
- Chame IMFTransform::GetInputAvailableType para obter uma lista de tipos de entrada compatíveis. (Esta etapa pode ser ignorada.)
- Chame IMFTransform::SetInputType para definir o formato de entrada não compactado.
Depois que o tipo de saída for definido na etapa 3, o método GetInputAvailableType deverá retornar uma lista de tipos de entrada compatíveis com o tipo de saída atual. Em outras palavras, todos os tipos retornados por GetInputAvailableType neste ponto devem ser válidos para SetInputType.
Para decodificadores, a ordem na qual os tipos são definidos é invertida: o tipo de entrada é definido primeiro, seguido pelo tipo de saída. Depois que o tipo de entrada é definido, o método IMFTransform::GetOutputAvailableType deve retornar uma lista de tipos que podem ser passados para o método IMFTransform::SetOutputType .
Codificadores e decodificadores devem dar suporte a NV12 como um formato comum não compactado. Isso garante que os componentes de pipeline possam interoperar com conversões mínimas de colorspace. É claro que outros formatos também podem ter suporte.
Decodificadores
Decodificadores de Transcode-Only
Alguns decodificadores são otimizados para transcodificação (decodificação e recodificação de um fluxo) e não são adequados para uso durante a reprodução.
Se um MFT decodificador for destinado apenas à transcodificação, defina o sinalizador MFT_ENUM_FLAG_TRANSCODE_ONLY ao registrar o MFT. (Consulte MFTRegister.)
Por padrão, os decodificadores de transcodificação não são retornados pela função MFTEnumEx . Para enumerar decodificadores de transcodificação, chame MFTEnumEx e defina o sinalizador MFT_ENUM_FLAG_TRANSCODE_ONLY no parâmetro Flags . Quando usado na função MFTEnumEx , esse sinalizador enumerava decodificadores transcodificados e outros decodificadores.
MFTRegister MFT_ENUM_FLAG_TRANSCODE_ONLY | MFTEnumEx MFT_ENUM_FLAG_TRANSCODE_ONLY | O MFT é enumerado? |
---|---|---|
1 | 1 | Sim |
1 | 0 | Não |
0 | 1 | Sim |
0 | 0 | Sim |
Atributos do Telecine
A fonte de mídia pode anexar os seguintes atributos telecine aos exemplos de mídia que ele fornece.
Atributo | Descrição |
---|---|
MFSampleExtension_RepeatFirstField | Equivalente a "repetir o primeiro campo" (RFF). |
MFSampleExtension_BottomFieldFirst | Inverso do sinalizador "primeiro campo superior" (TFF). |
Esses sinalizadores fornecem uma dica para o EVR (renderizador de vídeo) aprimorado quando ele executa a desinterlacização. Um decodificador deve propagar esses sinalizadores downstream copiando-os para os exemplos de saída, para que eles cheguem ao EVR.
Tópicos relacionados