Visualização direta do Directshow e captura e visualização com um único gráfico

Eu tenho um aplicativo DirectShow que precisa visualizar um vídeo da webcam e, quando o usuário clica em 'Gravar', ele precisa começar a capturar o vídeo em um arquivo.

Para esse fim, criei um único Capture Graph, com o pino PREVIEW conectado a um filtro RENDER e um pino CAPTURE conectado a um filtro AVI_MUX que salva em um arquivo.

Parece algo como isto:

                        /[PREVIEW PIN]-->[VIDEO_RENDERER]--->[SCREEN]
[VIDEO CAPTURE FILTER] /
                       \
                        \[CAPTURE PIN]--->[AVI_MUX]--->[FILE WRITER]

Quando eu chamo Run () no gráfico, o vídeo aparece na tela e é salvo no arquivo corretamente.

Minha pergunta é: como posso executar somente a seção PREVIEW PIN do gráfico sem a seção CAPTURE_PIN.

Minha ideia inicial era iniciar / parar manualmente os respectivos filtros, mas então eu olhei para o exemplo de amcap do Microsoft Directshow e eles criaram dois gráficos separados. Um para pré-visualização e outro para captura. Se o usuário quiser visualizar o vídeo, ele destrói o gráfico de captura e cria um gráfico de visualização. E se o usuário quiser gravar vídeo, ele destrói o gráfico de visualização e cria um gráfico de captura.

Isso parece meio que um desperdício, especialmente porque um único gráfico já contém os botões PREVIEW e CAPTURE. Qual é a abordagem correta aqui?

questionAnswers(2)

yourAnswerToTheQuestion