Método CBaseOutputPin.Deliver
[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEngine e Audio/Video Capture in 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 in 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.]
O Deliver
método fornece um exemplo de mídia para o pino de entrada conectado.
Sintaxe
virtual HRESULT Deliver(
IMediaSample *pSample
);
Parâmetros
-
pSample
-
Ponteiro para a interface IMediaSample do exemplo.
Retornar valor
Retorna um valor HRESULT . Os valores possíveis incluem aqueles listados na tabela a seguir.
Código de retorno | Descrição |
---|---|
|
Êxito. |
|
O pin não está conectado. |
Comentários
Esse método chama o método IMemInputPin::Receive no pin de entrada. Receive poderá bloquear se o método IMemInputPin::ReceiveCanBlock retornar S_OK.
Libere o exemplo depois de chamar esse método. O pino de entrada pode conter uma contagem de referência no exemplo, portanto, não reutilize o exemplo. Sempre chame o método CBaseOutputPin::GetDeliveryBuffer para obter um novo exemplo.
Mantenha a seção crítica do filtro antes de chamar esse método. Caso contrário, o pino poderá ser desconectado durante a chamada de método. Se o filtro usar um thread de trabalho para fornecer exemplos, mantenha a seção crítica quando o filtro estiver pronto para fornecer uma amostra. Caso contrário, você pode manter a seção crítica no método IMemInputPin::Receive do filtro, em que o filtro processa exemplos.
Os threads de trabalho podem criar um possível deadlock. Quando o thread mantém a seção crítica, ele pode aguardar uma alteração de estado no filtro. Ao mesmo tempo, a alteração de estado pode estar aguardando a conclusão do thread. Para evitar isso, o código de alteração de estado deve sinalizar um evento que encerra o thread e aguardar o thread sinalizar a conclusão.
Requisitos
Requisito | Valor |
---|---|
parâmetro |
|
Biblioteca |
|