Transcript
Page 1: V Player convinent video explorer

V PlayerV Playerconvinent video explorerconvinent video explorer

03309331 03309331 이웅주이웅주

Page 2: V Player convinent video explorer

목차목차 기능기능 구현 방법구현 방법 개발 도구개발 도구 구조구조 구현구현 스크린샷스크린샷 개선할 사항개선할 사항

Page 3: V Player convinent video explorer

기능기능 편리한 탐색 기능편리한 탐색 기능

• 트랙바에 커서를 올려놓아 해당 시점의 영상을 트랙바에 커서를 올려놓아 해당 시점의 영상을 별도 창으로 플레이별도 창으로 플레이

Previewvideo

Main video

Navigation bar

Page 4: V Player convinent video explorer

구현 방법구현 방법 VMR windowless controlVMR windowless control 을 사용을 사용 : VMR Pla: VMR Pla

yer yer 샘플 참조샘플 참조 하나의 비디오 파일을 두 개의 비디오 관리 하나의 비디오 파일을 두 개의 비디오 관리

클래스로 읽어들인다클래스로 읽어들인다 .. 하나는 메인하나는 메인 , , 하나는 프리뷰 용으로 하나는 프리뷰 용으로

사용하고 이들을 관리할 클래스를 사용하고 이들을 관리할 클래스를 구현한다구현한다 ..

Page 5: V Player convinent video explorer

개발 도구개발 도구 IDE/CompilerIDE/Compiler

• Visual C++ 2005 ExpressVisual C++ 2005 Express SDKSDK

• Microsoft Platform SDK for Windows Microsoft Platform SDK for Windows Server 2003 R2Server 2003 R2

Page 6: V Player convinent video explorer

구조구조 제어를 쉽게 하기 위해 제어를 쉽게 하기 위해 Manager Manager 클래스를 클래스를

통해 세부 작업을 추상화시킴통해 세부 작업을 추상화시킴

_movie : Movie _moviePreview: Movie

Manager : Manager trackBar : TrackBar

Send event to Manager

controlcontrol

Vplayer 의 객체 다이어그램

Page 7: V Player convinent video explorer

구현구현 : : 프리뷰 윈도우프리뷰 윈도우 Windowless Windowless 모드에서는 두 개의 비디오 화면을 모드에서는 두 개의 비디오 화면을

겹칠 경우겹칠 경우 , , 깜박거림깜박거림 (flicker) (flicker) 현상이 발생함현상이 발생함 .. 이를 해결하려면 이를 해결하려면 Renderless Renderless 모드를 사용해야 모드를 사용해야

하나하나 , , 자료 부족으로 인한 기술적 어려움으로 자료 부족으로 인한 기술적 어려움으로 사용하지 못함사용하지 못함 : : 두 개의 비디오 스트림을 하나의 두 개의 비디오 스트림을 하나의 출력으로 출력으로 compositecomposite 하는 문제하는 문제 . . 이를 위해 이를 위해 ImagImage Compositore Compositor 를 커스터마이징해야함를 커스터마이징해야함

대안으로 대안으로 Windowless Windowless 모드로 구성하되모드로 구성하되 , , 메인과 메인과 프리뷰 화면이 겹쳐지지 않도록 구성프리뷰 화면이 겹쳐지지 않도록 구성

Page 8: V Player convinent video explorer

구현구현 : : 트랙바 처리트랙바 처리 트랙바는 트랙바는 WM_MOUSEMOVE WM_MOUSEMOVE 이벤트를 이벤트를

처리하지 않음처리하지 않음 : : 포커스있는 이벤트만 포커스있는 이벤트만 처리 가능처리 가능

메시지 루프 때마다 트랙바의 메시지 루프 때마다 트랙바의 onMouseMoonMouseMove()ve() 를 호출하여 커서의 현재 위치가 를 호출하여 커서의 현재 위치가 트랙바인지 검사하고 처리트랙바인지 검사하고 처리

이벤트 처리를 단순화하기 위해이벤트 처리를 단순화하기 위해 , , 별도의 별도의 클래스로 구성클래스로 구성

Page 9: V Player convinent video explorer

구현구현 : : 인터페이스 처리 단순화인터페이스 처리 단순화 인터페이스를 일시에 호출하고 해제하는 것은 인터페이스를 일시에 호출하고 해제하는 것은

리소스 관리 측면에서 효율적임리소스 관리 측면에서 효율적임 그러나 인터페이스가 많이 필요하고그러나 인터페이스가 많이 필요하고 , , 특정 특정

인터페이스들이 의존 관계에 있을 경우 구조 인터페이스들이 의존 관계에 있을 경우 구조 파악과 관리가 어려워짐파악과 관리가 어려워짐

이에 인터페이스는 필요할 때 가져오고이에 인터페이스는 필요할 때 가져오고 , , 사용 사용 후에는 해제시킴후에는 해제시킴

이로써 코드 작성 및 유지보수가 수월해짐이로써 코드 작성 및 유지보수가 수월해짐 : : 코드는 전반적으로 증가함코드는 전반적으로 증가함

Page 10: V Player convinent video explorer

스크린샷스크린샷 : : 일반 플레이일반 플레이

Page 11: V Player convinent video explorer

스크린샷스크린샷 : : 프리뷰 모드프리뷰 모드

Page 12: V Player convinent video explorer

개선할 사항개선할 사항 화면 공간 활용을 극대화하기 위해 화면 공간 활용을 극대화하기 위해 RenderRender

less less 모드 및 모드 및 custom compositor custom compositor 사용하여 프리뷰 화면이 겹쳐지도록 사용하여 프리뷰 화면이 겹쳐지도록 구성해야함구성해야함

유저 편의를 위한 컨트롤 필요유저 편의를 위한 컨트롤 필요 : : 음량 조절 음량 조절 등등


Recommended