DirectShow DirectShow 레퍼런스 DirectShow 의 필터 WM ASF 라이터 필터   [목차열람] [주소복사] [슬롯비우기]
WM ASF 라이터 필터
 
Microsoft DirectX 9.0

WM ASF 라이터 필터

WM ASF 라이터는 Windows Media™ Format SDK 에 마련된 라이터 개체의 래퍼 필터이다. 이 필터는, 가변수의 입력 스트림을 받아들여 ASF (Advanced Systems Format) 파일을 생성 한다. 이 필터는, 모든 압축과 다중화를 취급하지만, 압축 메카니즘은 우회도로 하는 경우가 있다. 디지털 비디오 (DV) 캡춰, 오디오재압축, 네트워크 트리밍의 AVI (Audio-Video Interleaved) 파일이나 MPEG 멀티미디어 파일의 변환 등, 다양한 상황으로 WM ASF 라이터를 사용할 수 있다. Microsoft DirectShow 로 Microsoft® Windows Media™ Audio 파일 및 Windows Media Video 파일을 생성 하려면 , 이 필터를 사용하는 것이 유일한 방법이다.

더 자세한 정보는, 「DirectShow 에서의 ASF 파일의 생성」을 참조할것.

필터 인터페이스 IAMFilterMiscFlags ,IBaseFilter ,IConfigAsfWriter ,IFileSinkFilter2 ,IMediaSeeking ,IPersistStream,IServiceProvider,ISpecifyPropertyPages
입력 핀 미디어 타입 ASF 프로파일에 의존한다. 일반적으로, 비압축 오디오 및 비디오 타입. 다만 이 필터는, ASF 프로파일에 적합하는 압축 타입은 받아들인다.
입력 핀인타페이스 IPin ,IMemInputPin ,IAMStreamConfig
출력 핀 미디어 타입 해당 없음.
출력 핀인타페이스 해당 없음.
필터 CLSID CLSID_WWAsfWriter
프로퍼티 페이지 CLSID CLSID_AsfWriterProperties
실행 모듈 Qasf.dll
메리트 MERIT_DO_NOT_USE
필터 카테고리 지정 없음.

주의

이 필터에는, Windows Media Format Software Development Kit (SDK) 및 그 필수 조건을 필요로 한다.

이 필터의 입력 핀의 수는, ASF 스트림의 프로파일 또는 프로파일 식별자에 응해 다르다.

입력 핀은,IAMStreamConfig 인터페이스의 1 개의 메서드 IAMStreamConfig::GetFormat 를 지원 한다. 다른 모든 메서드는 E_NOTIMPL 를 돌려준다. 핀의 목적지 압축 포맷을 문의하려면 ,GetFormat 메서드를 호출한다. 이것은, 현재의 ASF 프로파일로 정의된다. 프로파일을 설정하려면 ,IConfigAsfWriter 인터페이스를 사용한다.

필터의 IServiceProvider 인터페이스에 의해, 애플리케이션은,IWMWriterAdvanced2 인터페이스를 취득할 수 있다. 이것은, Windows Media Format SDK 로 정의되고 있다. 이 인터페이스는, 필터 그래프에 필터가 추가된 후에만 취득할 수 있다. IWMWriterAdvanced2 인터페이스는, 비디오의 비인터레이스화를 제어하기 위해(때문에), 입력이 DV 비디오와 같은 인터레이스 소스의 경우에 편리하다. 비인터레이스화를 제어하려면 ,GetInputSettingSetInputSetting 메서드를 사용한다. 클라이언트가 이 인터페이스상에서 다른 메서드를 사용하는 것은 추천 하지 않는다. 이하에, 이 인터페이스의 문의의 예를 나타낸다.

// m_pGraph 가 유효한 IGraphBuilder 인터페이스 포인터이며,
// pAsfWriter 가 WM ASF Writer 필터의 IBaseFilter 인터페이스에의
// 포인터이라고 가정한다.

IServiceProvider *pProvider = NULL;
IWMWriterAdvanced2 *pWMWA2 = NULL;

hr = m_pGraph->AddFilter(pAsfWriter, L"WM ASF Writer");
...
hr = pAsfWriter->QueryInterface(IID_IServiceProvider, (void**) &pProvider)
if (SUCCEEDED(hr))
{
    hr = pProvider->QueryService(IID_IWMWriterAdvanced2,
        IID_IWMWriterAdvanced2, (void**) &pWMWA2);
    pProvider->Release();
}
↑TOP