최상단

컨텐츠

[Direct Show] 한 프레임씩 재생하기-.

글 정보

Category
컴퓨터 이야기
2007. 6. 5. 15:29

본문

리눅스만 하는 회사일 줄 알고 입사했더니..
윈도우 프로그램을 시키네요-0-;;ㅋㅋㅋㅋㅋ뭐..잠깐 동안만 하는 일이지만...

제가 속한 부서가 미디어를 처리하는 부서인데.........오자말자 플레이어를 만들다보니..
이것저것 도움은 많이 됩니다만......생전 처음 해보는 COM 프로그래밍이라.
신기하네요.ㅋㅋ 처음에는 뭐가뭔지 하나도 모르겠더니...
이제 대충 감이 오는듯;;ㅋㅋㅋㅋㅋ

제가 요즘 만들고 있는 플레이어는 일반 플레이어와는 다른..
Ethereal나 tcpdump에서 패킷을 캡쳐한 뒤, 캡쳐된 파일을 기반으로 각 스트림(SRC->DST, payload별로 구분)하여 재생시키는 플레이어입니다.ㅋ

작업하는걸 매일 정리해야지 하다가...오늘에서야 처음으로 포스팅을 하네요..

- 오늘 작업 했던 내용은 한 프레임씩 재생하기............-
처음에는 단순히 Run()했다가 Pause()하면 될줄 알았는데..
이게 왠일!;; 안되는겁니다;ㅡㅜ..........

그래서 구글링 하다가 알아낸 사실이...........
IVideoFrameStep 인터페이스를 사용하면 된다는 사실..;
간단하게 해결되버렸다면서-_-;;;;;;;;;

HRESULT CMPlayer6App::OnOneStepClip(void)
{
	HRESULT hr ;

	// 필터그패프매니저가 생성되지 않은 경우
	if (m_pGB == NULL)
		JIF(OnFileOpen()) ;

	// Query for media control interfaces
	CComQIPtr<IVideoFrameStep> pMC(m_pGB);
	if (pMC != NULL)
	{
		// Run the graph to play the media file
		LIF(pMC->Step(1,NULL));
	}

	OutputDebugString("call");

	return hr ;
}

허무해-_-;;

참고자료 : http://msdn2.microsoft.com/en-us/library/ms786910.aspx

But!! 앞으로는 가능하지만 뒤로는 안된다는거~~~.....-_-
이건 코덱이란 놈의 특성상.........(이전 프레임을 참조하는..)

I-frame까지 뛰어넘어야지 가능하다는..........I-frame까지 후진했다가
다시 직전 프레임까지 전진해야될것 같습니다-_-;;;;;
아직 구현은......안했음.ㅋㅋ

트랙백과 댓글 여닫기

TOP