다이렉트쇼

    기초 - Indroduction

    기초 - Indroduction

    요즘 진행하는 프로젝중에 DirectShow를 사용하는 프로젝이 있어서 스터디중입니다. DirectShow에 대해 소개하는 글을 계속 올립니다. 역사니 뭐니 하는건 다 생략하구... 개념부터... - Filter, Filter Graphs DirectShow의 기본 빌딩 블럭은 filter라 불리는 콤포넌트이다. 필터는 멀티미디어 스트림을 어떤 연산을 해서, 내용을 변화시킨 후 출력해 주는 콤포넌트라 할 수 있다. 예를 들면 파일을 읽는 필터는 HDD에서 파일을 읽어서, 해당 파일을 스트림으로 만들어서 출력으로 내놓게 된다. 디코더나 출력장치로 출력하는 콤포넌트도 DirectShow에서는 필터라 부른다. DiretShow에서는 이런 필터를 연결해서 필요한 작업을 진행한다. 예를 들어 파일필터의 출력을 디..

    File Play

    이 예는 MSDN에 나온 샘플 DirectShow어플리케이션이다. 앞에서 말했던 DirectShow 어플리케이션 작성의 4가지 스텝을 다시 기억해 보자. 필터그래프 매니저의 인스턴스 생성 매니저를 이용해서 필터 그래프 생성 매니저를 이용해서 필터그래프에서 데이터를 처리하도록 함 사용이 끝나면 리소스 반환 1. 인스턴스 생성 앞에서 이야기했듯이 매니저나 필터 모두 COM객체이기 때문에, 우선 COM라이브러리를 초기화 해야 한다. 이 작업은 CoInitialize를 호출함으로써 이루어진다. HRESULT hr = CoInitialize(NULL); if (FAILED(hr)) { // 에러처리 코드(간단하게 하기 위해 생략) } 에러처리는 생략했으며, 필요한 분은 COM책을 들여다 보시면 다 있다. (참고로..

    필터와 필터 그래프

    필터란? MSDN에 따르면 다음과 같다. A key component in the DirectShow architecture, a filter is a COM object that supports DirectShow interfaces or base classes. It might operate on streams of data in a variety of ways, such as reading, copying, modifying, or writing the data to a file. Sources, transform filters, and renderers are all particular types of filters. A filter contains pins that it uses to conne..

    필터와 핀

    여러번 반복해서 지겨운 생각도 들겠지만, DirectShow구조는 필터들을 연결해서 데이터가 흘러가게 하고, 필터그래프 매니저가 데이터의 흐름을 제어하는 구조로 되어있다. 그렇다면 필터와 필터는 어떻게 연결할 수 있을까? 이 연결을 위한 객체가 바로 핀(pin)이다. IC에 핀이 있어서 다른 소자와 연결할 수 있는 것 처럼 필터에도 핀이 있어 다른 필터와 연결을 할 수 있는 것이다. IC마다 핀의 종류와 성격이 다르 듯, 필터의 성격에 따라 하나의 핀만을 노출할 수도 있고, 둘 이상의 핀을 노출할 수도 있다. MSDN의 설명에 따르면, 핀은 필터에 의해 생성되는 COM 객체로써, 필터에 대한 단방향 데이터 스트림(unidirectional data stream)의 연결점 역활을 한다. 입력핀은 데이터를 ..

    DirectShow 리퍼런스 모음

    IMediaFilter 인터페이스 이름 : IMediaFilter 설명 : 시간에 기반한 데이터를 제공하는 모든 멀티미디어 콤포넌트들이 제공해야 하는 인터페이스. 콤포넌트의 실행 상태 제어와 상태를 다른 객체와 동기화 시키는 방법을 제공하기 위해 사용함 상속 : IPersist 구현 : 모든 filter에서 구현되어야 함. CBaseFilter를 사용해서 구현 가능 사용 : 보통은 IMediaFilter를 상속한 IBaseFilter를 많이 사용하기 때문에, 직접 어플리케이션에서 사용되는 경우는 거의 없음. 필터그래프 매니저가 사용하며, 플러그인 배급자에 의해 필터그래프 매니저가 노출시킨 IMediaFilter의 메소드들이 호출되는 경우가 있음. 메소드 : - IUnknown 메소드들 : COM객체니까 ..

    다이렉트 쇼 사용 및 스트림에 관한 자료

    동영상 제어( 플레이, 영상/소리 분리, 자막넣기, 합치기 등등)을 하시려면, DirectX 의 DirectShow를 사용해서 하실수 있습니다.. 하지만 현재까지 나온 DirectX SDK는 C#용 DirectShow를 제공하고 있지 않았습니다.. 그래서 어느 한 사람이 답답해서, DirectShow API를 Wrapping 해서 C#용으로 재구성 했습니다.. 이름은 Managed DirectShow 입니다.. http://kristoffer.vinther.name/projects/managed-directshow/ 위 사이트에 가시면 다양하게 사용하는 방법이 설명되어 있습니다.. 저도 한번 사용해봤는데, 기본적으로 동영상 플레이, 이미지 추출까지는 가능한 수준입니다.. 라이센스는 Kristoffer V..