Partilhar via


Adicionando coletores ao gravador

[A funcionalidade associada a esta página, Windows Media Format 11 SDK, é uma funcionalidade herdada. Foi substituído por Source Reader e Sink Writer. do Source Reader e Sink Writer foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda vivamente que o novo código utilize Leitor de Origem e Gravador de Sink em vez do SDK do Windows Media Format 11 , sempre que 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.]

Os coletores do gravador são objetos separados do gravador e devem ser adicionados ao gravador a ser usado. Se você estiver gravando em um arquivo, basta chamar IWMWriter::SetOutputFilename, que configurará o coletor de arquivos automaticamente. Caso contrário, para adicionar um coletor ao gravador, chame o IWMWriterAdvanced::AddSink método. AddSink requer um ponteiro para a interface IWMWriterSink do coletor.

Quando terminar de usar um coletor, você deve fechá-lo chamando o método apropriado, dependendo do tipo de coletor e, em seguida, removê-lo do gravador chamando IWMWriterAdvanced::RemoveSink.

O código de exemplo a seguir mostra como criar um coletor de arquivo do gravador e adicioná-lo ao gravador. Para obter mais informações sobre como usar esse código, consulte Usando os exemplos de código.

HRESULT AddFileSink(IWMWriterFileSink** ppFileSink, IWMWriter* pWriter)
{
    HRESULT hr = S_OK;
    IWMWriterSink*     pSinkBase       = NULL;
    IWMWriterAdvanced* pWriterAdvanced = NULL;

    hr = CreateWriterFileSink(ppFileSink);
    GOTO_EXIT_IF_FAILED(hr);

    hr = *ppFileSink->QueryInterface(IID_IWMWriterSink, 
                                     (void**) &pSinkBase);
    GOTO_EXIT_IF_FAILED(hr);

    hr = pWriter->QueryInterface(IID_IWMWriterAdvanced,
                                 (void**) &pWriterAdvanced);
    GOTO_EXIT_IF_FAILED(hr);

    hr = pWriterAdvanced->AddSink(pSinkBase);
    GOTO_EXIT_IF_FAILED(hr);

Exit:
    SAFE_RELEASE(pSinkBase);
    SAFE_RELEASE(pWriterAdvanced);
    return hr;
}

Obtendo mensagens de erro de um coletor de

IWMWriterAdvanced Interface

Trabalhando com o Writer Sinks