Directshow несколько рендеров в одном потоке - PullRequest
0 голосов
/ 03 июня 2019

У меня есть плеер directshow в приложении VCL для C ++ Builder.Он работает нормально, но у меня есть его как часть приложения для нескольких форм, и я хочу вывести видео на второй монитор.Это значит, что у меня могут быть дополнительные кнопки, плюс видео на мониторе 1 и только видео на мониторе 2.

Поскольку DirectShow не дает события при обновлении дисплея, есть ли способ определить, когдаотображается новое видеоизображение и копируется на второй дисплей?

В качестве альтернативы, возможно ли иметь два видеорендера на одном источнике, если да, то как?

1 Ответ

0 голосов
/ 12 июня 2019

Я разобрался, как это сделать.Я добавил фильтр «Бесконечный тройник», а затем добавил два рендера в тройник.Это тогда позволило отдельным окнам для каждого рендерера выходить из единственного потока.

    // Add an infinite TEE
    hr = AddFilterByCLSID(m_pGraph, CLSID_InfTee, &m_pTee, L"InfTee");
    if (FAILED(hr))
    {
        goto done;
    }

    teeInput  = FindPin(m_pTee, PINDIR_INPUT, 0);
    vidOutput = FindPin(pSource, PINDIR_OUTPUT, 0);
    m_pGraph->Connect(vidOutput, teeInput);
...