피터지고 치열하게 삶을 유지하다  
Front Page
Notice | Keyword | Tag | Location | Guestbook | Admin | Write Article   
 
DirectShow에 해당하는 글 2건
2007/05/09   DirectShow & DirectX - Debug 중 "Protection Error"를 만나다!
2007/04/14   What Causes Interlacing - Directshow Video De-Interlace Filter


DirectShow & DirectX - Debug 중 "Protection Error"를 만나다!
진행중인 프로젝트에서 캡처 보드로 부터의 영상을 프로그램에 보여주기 위한 모듈을 별도의 dll로 제작하였다.
하나의 View만 사용할 때는 문제가 없다가 동시에 두개 이상의 View를 보여주기 위해 dll을 수정하고 디버깅을 하던중 다음의 창을 보게 되었다.

첫번째 View를 초기화 완료하고 두번째 View를 똑같은 과정으로 초기화 하는중에 영상 출력 Graph를 생성하는 루틴에서 문제의 다음 창과 조우하였다.

사용자 삽입 이미지



이 문제와 관련은 없지만 참고로 DirectShow나 DirectX의 Dubug용 Library를 로드하기 위해서는 다음의 함수를 사용해야 한다.
(그러나 아래 설명에서 처럼 대부분의 DirectShow 응용 프로그램이 Strmbase.lib 을 사용하기 때문에 별도로 DbgInitialise를 할 필요는 없어 보인다.)

DbgInitialise

Initializes the debug library. Ignored in retail builds.

Syntax

void DbgInitialise(
    HINSTANCE hInst
);

Parameters

hInst

Handle to the module instance.

Remarks

In an executable, call this method before using the DirectShow debug facilities. Before the executable quits, call the DbgTerminate function to clean up the debug library.

In a DLL that links to the base-class library (Strmbase.lib), it is not necessary to call this function. The function is called automatically when the DLL is loaded.

구체적으로 다음의 함수에서 Protection Error가 발생했다.

ICaptureGraphBuilder2::RenderStream

The RenderStream method connects an output pin on a source filter to a sink filter, optionally through an intermediate filter.

Syntax

HRESULT RenderStream(
  const GUID *pCategory,
  const GUID *pType,
  IUnknown *pSource,
  IBaseFilter *pIntermediate,
  IBaseFilter *pSink
);

이유는 ....

헉 ㅠ.ㅠ; USB PC 카메라들을 사용하여 테스트하고 있는데, PC에 연결되지 않은 카메라(두번째 View) Driver를 사용하여 Graph 필터를 만들려고 해서 발생한 문제였다. PC에 해당 카메라를 연결하니 바로 해결되었다.

뭐 ... --; 이런 경우에도 Protection Error가 발생할 수 있음을 기억하자...

그럼 추가로 구글링을 해볼까?!

Keyword : DirectShow Protection Error

Visual Studion 2005 Debugger Halts on DirectShow mixed debugging - Graph Filter들 중에 Debugger가 활성화 되어 있는지 체크하는 Filter가 있기때문 이다는 요지이다. 따라서 해당 필터(Nero Digital AVC Video Enc) 를 제거해줌으로서(--;) 문제를 해결하였다고 한다.

그외 대부분 일부 filter때문이라는 비슷한 의견이다.

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기
Tag : DirectShow
Track this back : http://www.codeforum.net/blog/pitoosung/trackback/76

name    password    homepage
 hidden


What Causes Interlacing - Directshow Video De-Interlace Filter
현재 DirectShow를 근간으로 하는 프로젝트도 진행중이다. 주 용도는 외부 영상기기의 Video 캡처와 관련이 있는데 Interlacing이 화제에 올라 예전 DirectShow 관련 프로젝트에서 문제가 되어 해결을 위해 De-Interlace Filter를 사용했던 기억과 함께 관련 자료를 링크해 두었던 것이 생각나 글을 쓴다.

Interlacing으로 인해 동영상 Display시 어떤 현상이 일어나며, De-Interlace Filter를 사용하면 화면이 어떻게 보정되는지를 보여주는 좋은 예이다
http://www.leadtools.com/SDK/MULTIMEDIA/DIRECT-SHOW-FILTERS/Multimedia-DirectShow-DeInterlace.htm

왜 이런 현상이 나타나는 지를 약간 설명한 링크이다.(그러나 기술적으로 명쾌한 설명은 아닌듯 하다)
http://www.gamedonga.co.kr/theme/themeview.asp?subno=379&gpage=6&gtype=computer#contents

위의 글에서도 나오는 단적인 비교 영상은 다음과 같다.

다음은 Interlacing 에 따른 현상이다.



다음은 DeInterlace 필터를 사용해 보정한 영상이다.



따라서 이를 해결하기 위해서는 De-Intelace 필터의 사용이 필수적이다.

공개 소스로 활용할만한 De-Interace 필터는 다음의 사이트에서 참고할 수 있다.
http://www.dscaler.org/about.htm#deinterlacing

다음 사이트에서 위 프로젝트 관련 유용한 파일을 받을 수 있다.
고맙게도 DirectShow용으로 제작된 Deinterace 필터를 개발하였다
(ax 와 소스를 다운받을 수 있다.)
http://sourceforge.net/project/showfiles.php?group_id=7420


이번에 알고 싶은 것은 위의 현상에 대한 정확하고 명쾌한 기술적 설명이다. 한번 찾아볼까?

화면에 줄이 가는 현상(Interlace현상)은 일반 TV나 캠코더에서 사용하는 비월주사방식(interlace)과 컴퓨터에서 사용하는 순차주사 방식(progressive scan)의 차이에서 오는 현상입니다. 움직임이 많은 화면에서 옆으로 줄이가는것처럼 보이기도 하고, 잔상이 남는것처럼 보이기도 하는 현상으로, 일반TV와 컴퓨터 모니터의 주사방식이 다르기때문에 나타나는 것입니다. 하드디스크에 저장된 영상은 원본의 것과 동일한 것이며, 단지 컴퓨터 모니터상으로 Preview되는 화면이 인터레이스현상으로 인해 화면에 줄이 가는것처럼 보이는 것입니다.

다음의 글은 약 60 Frames(60Hz)의 Progressive 주사 방식을 갖는 Dispaly(컴퓨터 모니터)에서 Interlaced 소스를 Display했을 때 발생할 수 있는 현상을 비교적 잘 설명하고 있습니다.

DVD Player S/W 종류와 기능, 선택은?

<저작권자ⓒ테크노아. 무단전재-재배포금지>
스크랩원본글: http://www.technoa.co.kr/content/View.asp?pPageID=48124
출처웹사이트: Digital Community - 테크노아 http://www.technoa.co.kr/

사용자 삽입 이미지

또한 다음의 글도 유용합니다. Filed와 Frame의 개념을 알 수 있습니다.

출처 : http://digital.ni.com/public.nsf/websearch/C2F152C5F8E8B83686256FBE0045AEF5?OpenDocument&node=133080_KO

문제점: Frame/Field 모드와 Interlaced/Non-Interlaced 모드의 관계는 무엇입니까?

솔루션: "Interlaced" 방식과 "Non-Interlaced" 방식은 아날로그 카메라 같은 장치로부터 비디오 라인이 출력되는 방식을 말합니다. interlaced 모드에서는 한 번에 수평 라인의 절반씩이 출력됩니다. 즉, 홀수 라인들이 먼저 출력되고, 이후 짝수라인들이 출력됩니다.
"Frame"과 "Field"는 이미지 수집 보드가 수집한 라인들을 이미지로 복원하는 방법을 의미합니다. 예를 들어, Frame은 홀수와 짝수 라인들을 모두 받아서 이미지로 만드는 것이고, Field는 홀수 혹은 짝수 라인들이 들어왔을때 즉각적으로 이미지로 만드는 것을 의미합니다.


즉 NTSC Interlaced 30fps 는 초당 30 Frames를 의미하는 것으로 Interlaced 임으로 초당 60 fields로 구성됩니다.

기회가 되면 영문 리소스들도 살펴보고 명쾌한 답을 유추해 보겠습니다.

VMR7, 9의 렌더러에서 H/W 기능을 이용한 DeInterlace 지원을 사용하는 방법을 다루고 있다(참고할 만한다. 그러나 아예 De-Interlaced 처리된 영상을 캡처하는 것이 나을 것 같다.)
http://msdn2.microsoft.com/en-us/library/ms787638.aspx

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기
Tag : de-interlace, DirectShow, Interlace
Track this back : http://www.codeforum.net/blog/pitoosung/trackback/62

name    password    homepage
 hidden


BLOG main image
피투성의 IT 분투기
 Notice
(2009.11.30) - ㅠ.ㅠ 안녕! 서버 H/W 시스템 교체(서버보드 사망, HP Workstation으로 교체)
(2008.2.2) IP : 195.225.178.29 - 스팸 차단 조치
(2008.1.14) 오후 06:34 ~ 08:07 : 시스템 복구
(2008.1.14) 오전 00:25(?) : 시스템 다운 - 흠 심각하군!
(2008.1.13) 오후 11:31 : 시스템 리부팅됨
(2008.1.13) 시스템 복구 : 오전(?)~오후 1:00
 Category
전체 (148)
프로그래밍 (42)
IT 세상속으로 (42)
세상 엿보기 (26)
지하창고 (18)
책의 향기 (12)
생각의 힘(바둑) (4)
OCR-내가 다 읽어줄께 (1)
두발의 짐승 (2)
지능형 로봇 (1)
 Calendar
«   2010/09   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
 Recent Entries
투명 Display 그리고 Augm... (2)
64bits(x64) Windows OS...
NFS & Eclipse & CDT & In...
행복에 대해 생각하며
Virtual Audio Cable (가...
 Recent Comments
^^ 안녕! 축하축하. 난 아...
피투성 - 03/16
오랜만에들림니다 아이폰...
쭌 - 03/15
Thanks for your kind tra...
hyungju - 2009
정보 감사합니다 덕분에...
허수 - 2009
관리자만 볼 수 있는 댓글...
- 2009
 Recent Trackbacks
내가 생각하는 한의학의...
Life Is Always Emergency
FreeBSD 6.2, 64bit, 메모...
엘레노아의 작업로그
알약 백신 제대로 사용하...
촌철살인
유용한 블로그 툴 몇개..
ENTClic@blog...just anot...
국내의 검색엔진에 등록하...
케이알선의 이야기
 Archive
2010/01
2009/12
2009/07
2008/09
2008/03
 Link Site
00_피투성의 지식창고_00
 Visitor Statistics
Total : 70721
Today : 60
Yesterday : 47
텍스트큐브 배너
Eolin
rss