7. 역할 분담
7
안 진 왕(PL)
• Project Managment
• User Interface
신 동 인
• Software Architecture
• Animation, X-File Load
• 3D Engine
장 진 우
• Sound Implementation
• Video Clip compress
8. 개발 환경
8
• Windows XP
Professional SP2
OS
• Visual Studio 20
05
• DirectX9.0c
• 3DMax9
• Photoshop7
Tool
• C++
• MFC
Language
17. • TimeLineManager는 TimeLine의 Data를 관리하고
TimeLineView는 화면 출력만 나타냄.
• 화면에 보이는 것만 출력하고 MemDC를 이용해 갱신
속도를 최적화 했음!
TimeLine 구현
17
버
튼
현재 Frame을 나타내는
커서
레이어 이
름
Frame 눈금
자
18. • 타임라인의 데이터를 관리하며, 다른 Manager급 Class
와 서로 정보를 주고 받음.
• 특히 시간적인 정보를 타임라인에 표시하기 위한 데이터
를 가지고 있음.
TimeLineManager
18
Sectio
n
Layer
19. Sound play
• Timeline에 정해진 시간에 따라 소리를 재
생.
– 조건
• 메모리에 한번에 올리기 힘든 큰 파일을 재생 가능.
• 여러 소리가 동시에 재생 가능.
• 중간부터 재생이 가능.
• 볼륨조절이 가능.
– Direct sound 라이브러리를 사용.
20. Sound play
• 지원하는 기능 설명.
– Play
– Stop
– Seek
– Volume 조절
– Fade In/Out
• 지원하는 포멧.
– Wav 파일 만 지원(무압축)
– 44100Hz, 22050Hz, 11025Hz
– 8bit, 16bit
– mono, stereo
22. Sound play
• Stream 방식의 재생
– 2차 버퍼의 재생 모드를
LOOP로 설정
– 현재 재생 포인터가 자신이
이미 재생한 데이터를 재생
하기 전에 새로운 데이터를
채워 넣음
: 현재 재생 위치
: 이전 재생 위치
: 이미 재생한 부분
23. Sound play
• 현재 재생 위치를 계산 할 때 주의 할 점.
– 소리가 재생되는 동안 GetTickCount 같은 실
시간적인 요소로 계산을 하면 안됨.
– 2차 버퍼 유효 반복 회수와 버퍼에서 현재 재
생중인 위치 및 이전 위치를 고려하여 계산.
24. Sound mixing
• 믹싱 과정
1. 각 파일로 부터 일정 크기의 Wave 데이터를 읽음.
2. 한가지 포멧으로 통일.
3. 입력 버퍼 채우기.
4. Data 덧셈 연산.
입력 버퍼
쓰기 버퍼 포멧 변환
Sample rate
Channel
Bit
Wave
data
Wave
data
Wave
data
26. Sound mixing
• 포멧 변환 예
– 44100Hz 를 22050Hz로 변환
L R L R L R L R L R L R
L R L R L R
27. Sound mixing
• Bit 변환 예
– 8Bit를 16Bit로
• 65535/255 x Data
– 16Bit를 8Bit로
• 255/65535 x Data
• Channel 변환 예
– Stereo를 Mono로
– Mono를 Stereo로
L R Dat
a
(L + R) / 2
Dat
a
L R
28. 동영상 출력
• 최종 동영상 출력은
– 일반적인 플레이에서 재생 할 수 있는 AVI 파
일.
– VFW 라이브러리를 사용 하면 쉽게 출력 가능
.
29. 동영상 출력
• 동영상 생성 과정(VFW 사용)
1. AVI파일을 생성.
2. Video Stream 생성. 이때 codec 및 압축률, FPS, 영상 정보
등을 설정.
3. 3D 화면을 렌더링 하여 2D Bitmap 데이터로 저장.
4. 2D Bitmap 데이터를 Video stream에 쓰기.
5. Audio stream을 생성하여 믹싱된 sound를 동영상에 추가.
6. AVI파일 닫기.