Segmentos de envelope

[O recurso associado a esta página, DirectShow, é um recurso herdado. Ele foi substituído por MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo 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 Captura de Áudio/Vídeo 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.]

Uma curva de parâmetro consiste em um ou mais segmentos de envelope, definidos usando a estrutura MP_ENVELOPE_SEGMENT . Essa estrutura contém as seguintes informações:

  • Os horários de início e término.
  • Os valores iniciais e finais.
  • O tipo de curva (linear, quadrado e assim por diante).
  • Sinalizadores opcionais, descritos em breve.

O cliente adiciona segmentos de envelope a um parâmetro chamando o método IMediaParams::AddEnvelope e passando uma matriz de estruturas de MP_ENVELOPE_SEGMENT . O cliente deve classificar os segmentos em ordem de tempo crescente antes de chamar o método . À medida que o DMO processa dados, você pode imaginar o parâmetro viajando por cada segmento de envelope, como um carro dirigindo por uma série de colinas. O método IMediaParams::GetParam retorna o valor mais recente.

Dois segmentos adjacentes podem ter uma lacuna entre eles. Durante as lacunas, o parâmetro mantém seu valor anterior, da seguinte maneira:

  • Antes do primeiro segmento, o valor é o valor neutro.
  • Entre segmentos, o valor é o valor final do segmento anterior.
  • Após o último segmento, o valor permanece no valor final desse segmento.
  • Se o cliente liberar o DMO, o valor será revertido para o valor neutro.

Você pode alterar um segmento definindo um dos seguintes sinalizadores:

  • MPF_ENVLP_BEGIN_CURRENTVAL. O DMO usa o valor mais recente do parâmetro como o valor inicial para o segmento. Esse pode ser o valor neutro ou o valor final do segmento anterior. O DMO ignora o membro valStart da estrutura MP_ENVELOPE_SEGMENT .
  • MPF_ENVLP_BEGIN_NEUTRALVAL. O DMO usa o valor neutro do parâmetro como o valor inicial para o segmento. Ele ignora valStart.

Você pode considerar esses sinalizadores como agarrando o ponto de partida do segmento e movendo-o para cima ou para baixo, enquanto o valor final permanece fixo. O segmento será "estendido" adequadamente.

Parâmetros de mídia