-
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
-
31
-
32
-
33
-
34
-
35
-
36
-
37
-
38
-
39
-
40
-
41
-
42
-
43
-
44
-
45
-
46
-
47
-
48
-
49
-
50
-
51
-
52
-
53
-
54
-
55
-
56
-
57
-
58
-
59
-
60
-
61
-
62
목차
1. 서론 3 page
2. MPEG-2의 인코딩 레퍼런스와 알고리즘 4 page
2-1. 개괄적인 루틴 4 page
2-2. 인코딩 레퍼런스 및 알고리즘 설명 4 page
2-2-1. readparmfile() 4 page
2-2-2. readquantmat() 7 page
2-2-3. init() 7 page 2-2-4. putseq() 8 page
3. 다이렉트쇼 개요 38 page
3-1. 다이렉트쇼의 등장배경 38 page
3-1-1. 비디오 캡처의 역사 38 page
3-1-2. 새로운 구조의 모색 39 page
3-2. 다이렉트쇼의 역사 40 page
3-3. 컴포넌트 구조 41 page 3-3-1. 다양한 입력 41 page
3-3-2. 다양한 포맷 42 page
3-3-3. 다양한 출력 43 page
3-3-4 다양한 하드웨어 장치 43 page
3-4. 제어구조 45 page
3-5. 데이터 흐름 47 page
3-5-1. 버퍼 공유 47 page
3-5-2. 커널 스트리밍 49 page
3-6. 프로그램 배포 51 page
3-7. 다이렉트쇼의 미래 52 page
4. 다이렉트쇼 하부구조 53 page
4-1. 그래프에디터와 다이렉트쇼 하부구조 53 page
4-2. 다이렉트쇼 애플리케이션으로 개념 전환 53 page
5. 다이렉트쇼 애플리케이션 개발 환경 56 page
5-1. 다이렉트X SDK 경로설정 56 page
5-2. 개발에 필요한 헤더 파일과 라이브러리 파일 57 page
6. 소스코드 59 page
6-1. 재생 59 page
6-2. 일시정지 59 page
6-3. 멈춤 60 page
6-4. 위치 찾기 60 page
7. 결과 62 page
8. 맺음말 64 page
9. 참고문헌 64 page
2. MPEG-2의 인코딩 레퍼런스와 알고리즘 4 page
2-1. 개괄적인 루틴 4 page
2-2. 인코딩 레퍼런스 및 알고리즘 설명 4 page
2-2-1. readparmfile() 4 page
2-2-2. readquantmat() 7 page
2-2-3. init() 7 page 2-2-4. putseq() 8 page
3. 다이렉트쇼 개요 38 page
3-1. 다이렉트쇼의 등장배경 38 page
3-1-1. 비디오 캡처의 역사 38 page
3-1-2. 새로운 구조의 모색 39 page
3-2. 다이렉트쇼의 역사 40 page
3-3. 컴포넌트 구조 41 page 3-3-1. 다양한 입력 41 page
3-3-2. 다양한 포맷 42 page
3-3-3. 다양한 출력 43 page
3-3-4 다양한 하드웨어 장치 43 page
3-4. 제어구조 45 page
3-5. 데이터 흐름 47 page
3-5-1. 버퍼 공유 47 page
3-5-2. 커널 스트리밍 49 page
3-6. 프로그램 배포 51 page
3-7. 다이렉트쇼의 미래 52 page
4. 다이렉트쇼 하부구조 53 page
4-1. 그래프에디터와 다이렉트쇼 하부구조 53 page
4-2. 다이렉트쇼 애플리케이션으로 개념 전환 53 page
5. 다이렉트쇼 애플리케이션 개발 환경 56 page
5-1. 다이렉트X SDK 경로설정 56 page
5-2. 개발에 필요한 헤더 파일과 라이브러리 파일 57 page
6. 소스코드 59 page
6-1. 재생 59 page
6-2. 일시정지 59 page
6-3. 멈춤 60 page
6-4. 위치 찾기 60 page
7. 결과 62 page
8. 맺음말 64 page
9. 참고문헌 64 page
본문내용
‘Link' 탭에서 [그림 5-3]과 같이 strmiids.lib를 ’Object/library modules' 항목에 추가 입력하면 된다.
그림 5-3. strmiids.lib 파일을 프로젝트에 추가
6. 소스코드
6-1. 재생
//------------------------------------------------------------------
// 재생
// Calls IMediaControl::Run() method; 재생이 끝나면 다시 초기화가 된다.
//------------------------------------------------------------------
HRESULT CMovie::PlayMovie()
{
HRESULT hr = S_OK;
LONGLONG llCur = 0L;
LONGLONG llD = 0L;
if( !m_Mc )
return E_POINTER;
if( m_Ms )
{
hr = m_Ms->GetCurrentPosition( &llCur);
hr = m_Ms->GetDuration( &llD);
if( llCur >= llD )
{
LONGLONG llStart = 0L;
hr = m_Ms->SetPositions(&llStart, AM_SEEKING_AbsolutePositioning, NULL, AM_SEEKING_NoPositioning);
}
}
hr = m_Mc->Run();
return hr;
}
6-2. 일시정지
//------------------------------------------------------------------
// 일시정지
//------------------------------------------------------------------
HRESULT CMovie::PauseMovie()
{
HRESULT hr = S_OK;
if( !m_Mc)
return E_POINTER;
hr = m_Mc->Pause();
return hr;
}
6-3. 멈춤
//------------------------------------------------------------------
// 멈춤
//------------------------------------------------------------------
HRESULT CMovie::StopMovie()
{
HRESULT hr = S_OK;
if( !m_Mc)
return E_POINTER;
hr = m_Mc->Stop();
return hr;
}
6-4. 위치 찾기
//------------------------------------------------------------------
// 위치 찾기
//------------------------------------------------------------------
BOOL CMovie::SeekToPosition(REFTIME rt, BOOL bFlushData)
{
HRESULT hr=S_OK;
LONGLONG llTime = LONGLONG( m_TimeFormat == TIME_FORMAT_MEDIA_TIME ? rt * double(UNITS) : rt );
if (m_Ms != NULL)
{
FILTER_STATE fs;
m_Mc->GetState(100, (OAFilterState *)&fs);
m_Ms->SetPositions(&llTime, AM_SEEKING_AbsolutePositioning, NULL, 0);
// This gets new data through to the renderers
if (fs == State_Stopped && bFlushData)
{
m_Mc->Pause();
hr = m_Mc->GetState(INFINITE, (OAFilterState *)&fs);
m_Mc->Stop();
}
if (SUCCEEDED(hr))
{
return TRUE;
}
}
return FALSE;
}
7. 결과
그림 7-1. 그래프에디터로 표현한 동영상 플레이어
인코딩
재생시
8. 맺음말
인코딩에는 국제표준인 MPEG-2 기술과 디코딩에는 다이렉트X로 현실적으로 카메라로 화상을 받은 후 그것을 인코딩한 후 디코딩, 즉 동영상 플레이어로 불러들이는 부분까지 구현을 해 보았다. 구현하는데 있어서 인코딩에서는 국제 표준인 MPEG-2 기술을 표준으로서 사용하는 레퍼런스 소스를 사용하여, 인코딩에 들어가는 알고리즘과 소스를 분석함으로서 카메라로 받은 화상을 어떻게 화면으로 구조화하는지, 어떻게 물리적으로 컴퓨터상에서 돌아가는지, 메모리 상에 어떻게 배치되는지, 움직임을 어떻게 예측하는지를 차근차근 한 과정씩 따라가면서 보았고 이를 Visual C++ MFC로 구현해 보았다.
카메라로 화상을 받아 Visual C++ 을 사용하여 메뉴를 만들어 인코딩하여 이것을 다이렉트쇼로 디코딩한 것이 동영상 플레이어로 여러 동영상을 재생가능토록 하였다. 다이렉트X는 국제 표준인 MPEG 기술을 현실적인 방법으로 최신의 기술로 현 운영체제에 최적화시켜 간단히 제공되는 소스들로 디코딩을 구현하고 이것을 동영상 플레이어로 바로 재생할 수 있도록 함으로써 이것을 사용하는 것만으로도 최적화되고 안정적인 화상 구현 기술을 사용할 수 있도록 하였다. 이로써 우리는 이번 논문으로 MPEG-2 라는 전문화된 기술과 다이렉트X라는 최신의 기술을 알고 구현해 봄으로서 이 기술을 습득하고 한 차원 높은 기술을 사용할 수 있게 되었다. 이 논문을 쓰는데 지도 편달해 주신 안양대학교 정보통신공학과 김호경 교수님과 정보통신공학과의 모든 교수님들께 감사의 말씀을 드리며 이 논문을 마치도록 하겠다.
9. 참고문헌
1. 이호준, 김준기, “알기 쉬운 MPEG-2”, 홍릉과학출판사, 2002
2. 신화선, “DirectShow 멀티미디어 프로그래밍”, 한빛미디어, 2002
3. 일본멀티미디어연구소, “그림으로 보는 응용 MPEG”, 교보문고, 1997
4. 일본멀티미디어연구소, “그림으로 보는 최신 MPEG”, 교보문고, 2002
5. http://www.mpeg.org 국제 표준 MPEG
그림 5-3. strmiids.lib 파일을 프로젝트에 추가
6. 소스코드
6-1. 재생
//------------------------------------------------------------------
// 재생
// Calls IMediaControl::Run() method; 재생이 끝나면 다시 초기화가 된다.
//------------------------------------------------------------------
HRESULT CMovie::PlayMovie()
{
HRESULT hr = S_OK;
LONGLONG llCur = 0L;
LONGLONG llD = 0L;
if( !m_Mc )
return E_POINTER;
if( m_Ms )
{
hr = m_Ms->GetCurrentPosition( &llCur);
hr = m_Ms->GetDuration( &llD);
if( llCur >= llD )
{
LONGLONG llStart = 0L;
hr = m_Ms->SetPositions(&llStart, AM_SEEKING_AbsolutePositioning, NULL, AM_SEEKING_NoPositioning);
}
}
hr = m_Mc->Run();
return hr;
}
6-2. 일시정지
//------------------------------------------------------------------
// 일시정지
//------------------------------------------------------------------
HRESULT CMovie::PauseMovie()
{
HRESULT hr = S_OK;
if( !m_Mc)
return E_POINTER;
hr = m_Mc->Pause();
return hr;
}
6-3. 멈춤
//------------------------------------------------------------------
// 멈춤
//------------------------------------------------------------------
HRESULT CMovie::StopMovie()
{
HRESULT hr = S_OK;
if( !m_Mc)
return E_POINTER;
hr = m_Mc->Stop();
return hr;
}
6-4. 위치 찾기
//------------------------------------------------------------------
// 위치 찾기
//------------------------------------------------------------------
BOOL CMovie::SeekToPosition(REFTIME rt, BOOL bFlushData)
{
HRESULT hr=S_OK;
LONGLONG llTime = LONGLONG( m_TimeFormat == TIME_FORMAT_MEDIA_TIME ? rt * double(UNITS) : rt );
if (m_Ms != NULL)
{
FILTER_STATE fs;
m_Mc->GetState(100, (OAFilterState *)&fs);
m_Ms->SetPositions(&llTime, AM_SEEKING_AbsolutePositioning, NULL, 0);
// This gets new data through to the renderers
if (fs == State_Stopped && bFlushData)
{
m_Mc->Pause();
hr = m_Mc->GetState(INFINITE, (OAFilterState *)&fs);
m_Mc->Stop();
}
if (SUCCEEDED(hr))
{
return TRUE;
}
}
return FALSE;
}
7. 결과
그림 7-1. 그래프에디터로 표현한 동영상 플레이어
인코딩
재생시
8. 맺음말
인코딩에는 국제표준인 MPEG-2 기술과 디코딩에는 다이렉트X로 현실적으로 카메라로 화상을 받은 후 그것을 인코딩한 후 디코딩, 즉 동영상 플레이어로 불러들이는 부분까지 구현을 해 보았다. 구현하는데 있어서 인코딩에서는 국제 표준인 MPEG-2 기술을 표준으로서 사용하는 레퍼런스 소스를 사용하여, 인코딩에 들어가는 알고리즘과 소스를 분석함으로서 카메라로 받은 화상을 어떻게 화면으로 구조화하는지, 어떻게 물리적으로 컴퓨터상에서 돌아가는지, 메모리 상에 어떻게 배치되는지, 움직임을 어떻게 예측하는지를 차근차근 한 과정씩 따라가면서 보았고 이를 Visual C++ MFC로 구현해 보았다.
카메라로 화상을 받아 Visual C++ 을 사용하여 메뉴를 만들어 인코딩하여 이것을 다이렉트쇼로 디코딩한 것이 동영상 플레이어로 여러 동영상을 재생가능토록 하였다. 다이렉트X는 국제 표준인 MPEG 기술을 현실적인 방법으로 최신의 기술로 현 운영체제에 최적화시켜 간단히 제공되는 소스들로 디코딩을 구현하고 이것을 동영상 플레이어로 바로 재생할 수 있도록 함으로써 이것을 사용하는 것만으로도 최적화되고 안정적인 화상 구현 기술을 사용할 수 있도록 하였다. 이로써 우리는 이번 논문으로 MPEG-2 라는 전문화된 기술과 다이렉트X라는 최신의 기술을 알고 구현해 봄으로서 이 기술을 습득하고 한 차원 높은 기술을 사용할 수 있게 되었다. 이 논문을 쓰는데 지도 편달해 주신 안양대학교 정보통신공학과 김호경 교수님과 정보통신공학과의 모든 교수님들께 감사의 말씀을 드리며 이 논문을 마치도록 하겠다.
9. 참고문헌
1. 이호준, 김준기, “알기 쉬운 MPEG-2”, 홍릉과학출판사, 2002
2. 신화선, “DirectShow 멀티미디어 프로그래밍”, 한빛미디어, 2002
3. 일본멀티미디어연구소, “그림으로 보는 응용 MPEG”, 교보문고, 1997
4. 일본멀티미디어연구소, “그림으로 보는 최신 MPEG”, 교보문고, 2002
5. http://www.mpeg.org 국제 표준 MPEG
추천자료
- 동영상에 대한 모든 자료 입니다.
- 이동차량에서의 실시간 동영상 데이터 전송에 관한 연구
- 동영상 압축기술_MPEG 표준화
- [동영상][코덱][동영상코덱][동영상 압축][코덱(동영상코덱) 유래]동영상의 압축 고찰과 코덱...
- [동영상][동영상 편집 원리][동영상 편집 프로그램][DVD동영상 개념][DVD동영상 변환][DVD동...
- [동영상][동영상 촬영기법][동영상 저장][편집][타이틀제작]동영상의 포맷, 동영상의 촬영기...
- [동영상][동영상의 종류][동영상의 장단점][동영상의 입력장치][동영상의 제작][동영상 편집...
- [동영상 포맷유형][동영상 장단점][동영상 저장][동영상 편집][동영상 자막제작][동영상 수집...
- 코덱에 대하여,코덱의 정의,코덱의종류와특징,동영상코덱의종류,오디오코덱의종류,코덱개발의...
소개글