유형 2 파일에서 전송

미리 보기 중에 2 형식 파일을 전송 하려면 다음 다이어그램에 표시 된 필터 그래프를 사용 합니다.

유형 2 전송 미리 보기

유형 2 파일에는 두 개의 스트림, 하나의 오디오 스트림과 하나의 DV 인코딩된 비디오 스트림이 있습니다. 이 그래프는 DV Muxer 필터를 사용 하 여 오디오 및 비디오 스트림을 결합 합니다. 인터리브 스트림을 MSDV 필터로 전송 하지만 미리 보기를 위해 스트림을 다시 분할 합니다.

이 그래프는 다음과 같이 작성 합니다.

// Add the DV Mux filter to the graph.
IBaseFilter *pDVMux;
hr = CoCreateInstance(CLSID_DVMux, 0, CLSCTX_INPROC_SERVER
    IID_IBaseFilter, reinterpret_cast<void**>)(&pDVMux));
hr = pGraph->AddFilter(pDVMux, L"DV Mux");

// Add the File Source filter to the graph.
IBaseFilter *pFileSource;
hr = pGraph->AddSourceFilter(L"C:\\Example2.avi", L"Source", 
    &pFileSource);

hr = pBuilder->RenderStream(0, 0, pFileSource, 0, pDVMux);
hr = pBuilder->RenderStream(0, 0, pFileSource, 0, pDVMux);

// Add the Infinite Pin Tee filter to the graph.
IBaseFilter *pTee;
hr = CoCreateInstance(CLSID_InfTee, 0, CLSCTX_INPROC_SERVER
    IID_IBaseFilter, reinterpret_cast<void**>)(&pTee));
hr = pGraph->AddFilter(pTee, L"Tee");

hr = pBuilder->RenderStream(0, 0, pDVMux, 0, pTee);
hr = pBuilder->RenderStream(0, 0, pTee, 0, pDV);
hr = pBuilder->RenderStream(0, &MEDIATYPE_Interleaved, pTee, 0, 0);

이 코드는 Renderstream 에 대 한 여러 호출을 수행 합니다.

처음 두 개는 원본 필터를 AVI 분할자에 연결 하 고 AVI 분할자를 DV Mux에 연결 합니다. 첫 번째 호출에서 캡처 Graph 빌더는 자동으로 avi 분할자를 그래프에 추가 하 고 avi 분할자의 출력 핀 중 하나를 DV Mux에 연결 합니다. 두 번째 호출에서 캡처 Graph 빌더는 AVI 분할자의 두 번째 출력 핀을 찾아 DV Mux에 연결 합니다.

Renderstream 에 대 한 세 번째 호출은 DV Muxer을 무한 핀의 티 핀에 연결 합니다. 다음 호출에서는 무한 핀 t 1의 스트림을 MSDV 캡처 필터로 연결 합니다. 이 스트림은 장치에 전송 됩니다. Renderstream 에 대 한 마지막 호출에서는 그래프의 미리 보기 섹션을 만듭니다.

전송 하는 동안 미리 보기를 원하지 않는 경우 무한 Pin을 생략 하 고, DV Mux를 MSDV 필터에 연결 하면 됩니다.

hr = pBuilder->RenderStream(0, 0, pDVMux, 0, pDV);

DirectShow의 디지털 비디오