forked from Tr0n/client
convert comments in cpp files to utf8
This commit is contained in:
@ -55,7 +55,7 @@ void CMovieMan::FillRect( RECT& fillRect, DWORD fillColor )
|
||||
|
||||
if (fillRect.bottom == fillRect.top || fillRect.left == fillRect.right)
|
||||
{
|
||||
// ä<EFBFBD><EFBFBD> <20>ʿ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// 채울 필요 없음
|
||||
return;
|
||||
}
|
||||
|
||||
@ -83,7 +83,7 @@ inline void CMovieMan::GDIFillRect( RECT& fillRect, DWORD fillColor )
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Ư<EFBFBD><EFBFBD> <20><><EFBFBD>ǽ<EFBFBD><C7BD><EFBFBD> GDI<44><49> <20><><EFBFBD><EFBFBD>ȭ<EFBFBD>鿡 <20>Ѹ<EFBFBD><D1B8><EFBFBD>
|
||||
// 특정 서피스를 GDI로 바탕화면에 뿌린다
|
||||
//
|
||||
inline void CMovieMan::GDIBlt(IDirectDrawSurface *pSrcSurface, RECT *pDestRect)
|
||||
{
|
||||
@ -105,7 +105,7 @@ void CMovieMan::PlayLogo(const char *pcszName)
|
||||
|
||||
void CMovieMan::PlayIntro()
|
||||
{
|
||||
// <EFBFBD><EFBFBD>Ʈ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ű<><C5B0><EFBFBD><EFBFBD> <20>Է<EFBFBD><D4B7>̳<EFBFBD> <20><><EFBFBD>콺 Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ŵ <20><><EFBFBD><EFBFBD>
|
||||
// 인트로 영상은 키보드 입력이나 마우스 클릭으로 스킵 가능
|
||||
PlayMovie( INTRO_FILE, MOVIEMAN_SKIPPABLE_YES, MOVIEMAN_POSTEFFECT_FADEOUT, 0xFFFFFF );
|
||||
}
|
||||
|
||||
@ -146,7 +146,7 @@ BOOL CMovieMan::PlayMovie( const char *cpFileName, const bool bSkipAllowed, cons
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// 32<EFBFBD><EFBFBD>Ʈ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>˾ƺ<CBBE><C6BA><EFBFBD>
|
||||
// 32비트인지 알아본다
|
||||
ZeroMemory(&ddsd, sizeof(ddsd));
|
||||
ddsd.dwSize = sizeof(ddsd);
|
||||
ddsd.dwFlags = DDSD_PIXELFORMAT;
|
||||
@ -178,12 +178,12 @@ BOOL CMovieMan::PlayMovie( const char *cpFileName, const bool bSkipAllowed, cons
|
||||
hr = pDDStream->GetFormat(&ddsd, NULL, NULL, NULL);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ũ<><C5A9><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ũ<>⸦ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// 동영상 크기와 윈도우 크기를 기준으로 동영상 재생될 적당한 영역을 설정
|
||||
m_movieWidth = ddsd.dwWidth;
|
||||
m_movieHeight = ddsd.dwHeight;
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۴<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RGB32<33><32> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PrimarySurface<63><65> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٸ<EFBFBD><D9B8><EFBFBD>
|
||||
// GDI fallback <EFBFBD>ؼ<EFBFBD> StretchBlt <EFBFBD>Ѵ<EFBFBD>
|
||||
// 백버퍼는 무조건 RGB32로 만들고 PrimarySurface와 형식이 다르면
|
||||
// GDI fallback 해서 StretchBlt 한다
|
||||
DDSURFACEDESC ddsdBackSurface;
|
||||
ZeroMemory(&ddsdBackSurface, sizeof(ddsdBackSurface));
|
||||
ddsdBackSurface.ddpfPixelFormat.dwSize = sizeof(ddsdBackSurface.ddpfPixelFormat);
|
||||
@ -228,7 +228,7 @@ BOOL CMovieMan::PlayMovie( const char *cpFileName, const bool bSkipAllowed, cons
|
||||
|
||||
pDD->Release();
|
||||
|
||||
// Ű<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD>콺 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// 키보드, 마우스 버퍼 비우기
|
||||
MSG msg;
|
||||
while (PeekMessage(&msg, hWnd, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE));
|
||||
while (PeekMessage(&msg, hWnd, WM_MOUSEFIRST, WM_MOUSELAST, PM_REMOVE));
|
||||
@ -237,7 +237,7 @@ BOOL CMovieMan::PlayMovie( const char *cpFileName, const bool bSkipAllowed, cons
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Screen <20><>ǥ<EFBFBD><C7A5> <20><>ȯ
|
||||
// 메인 윈도우의 Screen 좌표를 반환
|
||||
//
|
||||
void CMovieMan::GetWindowRect(RECT& windowRect)
|
||||
{
|
||||
@ -256,12 +256,12 @@ void CMovieMan::GetWindowRect(RECT& windowRect)
|
||||
//
|
||||
GetClientRect( hWnd, &windowRect );
|
||||
|
||||
// clientRect<EFBFBD><EFBFBD> ClientToScreen <EFBFBD>ϴ<EFBFBD> <20>Ͱ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// clientRect를 ClientToScreen 하는 것과 같음
|
||||
OffsetRect( &windowRect, p.x, p.y );
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>쿡 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ä<EFBFBD><C3A4><EFBFBD><EFBFBD> RECT <20><>ȯ(<28><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
// 메인 윈도우에 동영상을 꽉채우는 RECT 반환(가로/세로 비율 유지)
|
||||
//
|
||||
void CMovieMan::CalcMovieRect(int srcWidth, int srcHeight, RECT& movieRect)
|
||||
{
|
||||
@ -290,7 +290,7 @@ void CMovieMan::CalcMovieRect(int srcWidth, int srcHeight, RECT& movieRect)
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// ȭ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><EFBFBD> 2<><32><EFBFBD><EFBFBD> RECT<43><54> ǥ<><C7A5> <20><><EFBFBD><EFBFBD>
|
||||
// 화면 위에서 동영상이 아닌 검은색 영역, 항상 2개의 RECT로 표현 가능
|
||||
//
|
||||
void CMovieMan::CalcBackgroundRect(const RECT& movieRect, RECT& upperRect, RECT& lowerRect)
|
||||
{
|
||||
@ -299,20 +299,20 @@ void CMovieMan::CalcBackgroundRect(const RECT& movieRect, RECT& upperRect, RECT&
|
||||
|
||||
if (m_movieWidth > m_movieHeight)
|
||||
{
|
||||
// <EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD> <20>ΰ<EFBFBD>
|
||||
// 위아래 두개
|
||||
SetRect(&upperRect, windowRect.left, windowRect.top, windowRect.right, movieRect.top);
|
||||
SetRect(&lowerRect, windowRect.left, movieRect.bottom, windowRect.right, windowRect.bottom);
|
||||
}
|
||||
else
|
||||
{
|
||||
// <EFBFBD>¿<EFBFBD> <20>ΰ<EFBFBD>
|
||||
// 좌우 두개
|
||||
SetRect(&upperRect, windowRect.left, windowRect.top, movieRect.left, windowRect.bottom);
|
||||
SetRect(&lowerRect, movieRect.right, windowRect.top, windowRect.right, windowRect.bottom);
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Ư<EFBFBD><EFBFBD> <20><><EFBFBD>ǽ<EFBFBD><C7BD><EFBFBD> Blocking<6E><67><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><D7B8><EFBFBD>
|
||||
// 특정 서피스에 Blocking으로 동영상을 그린다
|
||||
//
|
||||
HRESULT CMovieMan::RenderStreamToSurface(IDirectDrawSurface *pSurface, IDirectDrawMediaStream *pDDStream, IMultiMediaStream *pMMStream, bool bSkipAllowed, int nPostEffectID, DWORD dwPostEffectData)
|
||||
{
|
||||
@ -322,7 +322,7 @@ HRESULT CMovieMan::RenderStreamToSurface(IDirectDrawSurface *pSurface, IDirectDr
|
||||
HRESULT hr = pDDStream->CreateSample(pSurface, NULL, 0, &pSample);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ѹ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ĥ<><C4A5><EFBFBD>ش<EFBFBD>
|
||||
// 최초 한번 검은색으로 배경을 칠해준다
|
||||
RECT movieRect;
|
||||
RECT upperRect, lowerRect;
|
||||
CalcMovieRect(m_movieWidth, m_movieHeight, movieRect);
|
||||
@ -333,21 +333,21 @@ HRESULT CMovieMan::RenderStreamToSurface(IDirectDrawSurface *pSurface, IDirectDr
|
||||
pMMStream->SetState(STREAMSTATE_RUN);
|
||||
while (pSample->Update(0, NULL, NULL, NULL) == S_OK)
|
||||
{
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߾<EFBFBD><DFBE><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><D7B8><EFBFBD>
|
||||
// 윈도우 중앙을 기준으로 꽉차게 그린다
|
||||
CalcMovieRect(m_movieWidth, m_movieHeight, movieRect);
|
||||
if (FAILED(m_pPrimarySurface->Blt(&movieRect, pSurface, NULL, DDBLT_WAIT, NULL)))
|
||||
{
|
||||
GDIBlt(pSurface, &movieRect);
|
||||
}
|
||||
|
||||
// <EFBFBD>߰<EFBFBD><EFBFBD><EFBFBD> <20><>ŵ <20><><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD> Ű<><C5B0><EFBFBD><EFBFBD>ESC/<2F><><EFBFBD>콺 <20>Է½<D4B7> Ż<><C5BB>
|
||||
// 중간에 스킵 가능하면 키보드ESC/마우스 입력시 탈출
|
||||
if (bSkipAllowed && (KEY_DOWN(VK_LBUTTON) || KEY_DOWN(VK_ESCAPE) || KEY_DOWN(VK_SPACE)))
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD> 2<><32> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD><CCB5>ƿ<EFBFBD>
|
||||
// 동영상 재생 종료시에 2초 동안 페이드아웃
|
||||
switch(nPostEffectID)
|
||||
{
|
||||
case MOVIEMAN_POSTEFFECT_FADEOUT:
|
||||
@ -393,15 +393,15 @@ HRESULT CMovieMan::RenderFileToMMStream(const char *cpFilename, IMultiMediaStrea
|
||||
if (ext == "mpg")
|
||||
{
|
||||
// 2007-08-01, nuclei
|
||||
// MPG<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵٰ<D1B4> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20>Ŵ<EFBFBD><C5B4><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ڵ<EFBFBD><DAB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <EFBFBD>ܺ<EFBFBD> <20>ڵ<EFBFBD>(ffdshow <EFBFBD><EFBFBD>)<29><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʵ<EFBFBD><CAB5><EFBFBD> <20>Ѵ<EFBFBD>
|
||||
// (<EFBFBD><EFBFBD>Ÿ <20><><EFBFBD>ϵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڵ<EFBFBD><DAB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>)
|
||||
// MPG만 재생한다고 가정하고 매뉴얼로 각종 코덱을 연결해
|
||||
// 외부 코덱(ffdshow 등)에 영향을 받지 않도록 한다
|
||||
// (기타 파일도 재생은 되지만 코덱에 영향을 받을 수 있음)
|
||||
hr = BuildFilterGraphManually(wPath, pAMStream, CLSID_MPEG1Splitter, CLSID_CMpegVideoCodec, CLSID_CMpegAudioCodec);
|
||||
}
|
||||
else if (ext == "mp43")
|
||||
{
|
||||
// 2007-08-12, nuclei
|
||||
// MPEG-4, MP3 <EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD> <20>̿<EFBFBD><CCBF><EFBFBD> AVI<56><49> <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD>(Ȯ<><C8AE><EFBFBD>ڴ<EFBFBD> .mp43<34><33><EFBFBD><EFBFBD> <20>ؾ<EFBFBD><D8BE><EFBFBD>)
|
||||
// MPEG-4, MP3 코덱을 이용한 AVI의 재생 추가(확장자는 .mp43으로 해야함)
|
||||
hr = BuildFilterGraphManually(wPath, pAMStream, CLSID_AviSplitter, CLSID_MP4VideoCodec, CLSID_MP3AudioCodec);
|
||||
}
|
||||
else
|
||||
@ -409,7 +409,7 @@ HRESULT CMovieMan::RenderFileToMMStream(const char *cpFilename, IMultiMediaStrea
|
||||
hr = pAMStream->OpenFile(wPath, 0);
|
||||
}
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> hr<EFBFBD><EFBFBD> S_OK
|
||||
// 재생 성공시 hr은 S_OK
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
pAMStream->QueryInterface(IID_IMultiMediaStream, (void**) ppMMStream);
|
||||
@ -421,11 +421,11 @@ HRESULT CMovieMan::RenderFileToMMStream(const char *cpFilename, IMultiMediaStrea
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Ư<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȭ<><C8AD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ų<EFBFBD> <20><><EFBFBD>ο<EFBFBD><CEBF><EFBFBD>
|
||||
// 특정색으로 화면이 밝아지거나 어두워짐
|
||||
//
|
||||
HRESULT CMovieMan::RenderPostEffectFadeOut(IDirectDrawSurface *pSurface, int fadeOutDuration, DWORD fadeOutColor)
|
||||
{
|
||||
// Lock <EFBFBD>ɱ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ
|
||||
// Lock 걸기 위해 초기화
|
||||
DDSURFACEDESC lockedSurfaceDesc;
|
||||
|
||||
int *pCopiedSrcSurBuf = NULL;
|
||||
@ -441,7 +441,7 @@ HRESULT CMovieMan::RenderPostEffectFadeOut(IDirectDrawSurface *pSurface, int fad
|
||||
return hr;
|
||||
}
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1ȸ<31><C8B8> <20><><EFBFBD>ǽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20><><EFBFBD>纻<EFBFBD><E7BABB> FadeOut ó<EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>
|
||||
// 최초 1회에 서피스 복사하고 복사본에 FadeOut 처리한다
|
||||
if (!pCopiedSrcSurBuf)
|
||||
{
|
||||
if (!(pCopiedSrcSurBuf = (int*)malloc((LONG)lockedSurfaceDesc.lPitch * m_movieHeight)))
|
||||
@ -452,7 +452,7 @@ HRESULT CMovieMan::RenderPostEffectFadeOut(IDirectDrawSurface *pSurface, int fad
|
||||
CopyMemory(pCopiedSrcSurBuf, lockedSurfaceDesc.lpSurface, (LONG)lockedSurfaceDesc.lPitch * m_movieHeight);
|
||||
}
|
||||
|
||||
// <EFBFBD>ȼ<EFBFBD> <20>ö<EFBFBD><C3B6><EFBFBD>(32<33><32>Ʈ)
|
||||
// 픽셀 플랏팅(32비트)
|
||||
int *pSrcSurfaceBuf = pCopiedSrcSurBuf;
|
||||
int *pDestSurfaceBuf = (int*)lockedSurfaceDesc.lpSurface;
|
||||
|
||||
@ -476,7 +476,7 @@ HRESULT CMovieMan::RenderPostEffectFadeOut(IDirectDrawSurface *pSurface, int fad
|
||||
}
|
||||
pSurface->Unlock(lockedSurfaceDesc.lpSurface);
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٲ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̹<EFBFBD><CCB9><EFBFBD> <20><EFBFBD><D7B8><EFBFBD>
|
||||
// 색상이 바뀐 동영상 이미지 그리기
|
||||
RECT movieRect;
|
||||
CalcMovieRect(m_movieWidth, m_movieHeight, movieRect);
|
||||
if (FAILED(m_pPrimarySurface->Blt(&movieRect, pSurface, NULL, DDBLT_WAIT, NULL)))
|
||||
@ -484,23 +484,23 @@ HRESULT CMovieMan::RenderPostEffectFadeOut(IDirectDrawSurface *pSurface, int fad
|
||||
GDIBlt(pSurface, &movieRect);
|
||||
}
|
||||
|
||||
// <EFBFBD><EFBFBD> <20>Ǵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ĭ <20><>ä<EFBFBD><C3A4><EFBFBD><EFBFBD>
|
||||
// 위 또는 좌측 빈칸 색채우기
|
||||
RECT upperRect, lowerRect;
|
||||
CalcBackgroundRect(movieRect, upperRect, lowerRect);
|
||||
FillRect(upperRect, (fadeOutColorRed << 16) | (fadeOutColorGreen << 8) | fadeOutColorBlue);
|
||||
FillRect(lowerRect, (fadeOutColorRed << 16) | (fadeOutColorGreen << 8) | fadeOutColorBlue);
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// 음량 조절
|
||||
if (m_pBasicAudio)
|
||||
{
|
||||
m_pBasicAudio->put_Volume((long)(-10000 * fadeProgress));
|
||||
}
|
||||
}
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// 메모리 해제
|
||||
free(pCopiedSrcSurBuf);
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1.0<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FadeOut<75><74> ȭ<><C8AD> <20><EFBFBD><D7B8><EFBFBD>
|
||||
// 마지막엔 1.0을 기준으로 완전히 FadeOut된 화면 그리기
|
||||
RECT windowRect;
|
||||
GetWindowRect(windowRect);
|
||||
FillRect(windowRect, fadeOutColor);
|
||||
@ -509,7 +509,7 @@ HRESULT CMovieMan::RenderPostEffectFadeOut(IDirectDrawSurface *pSurface, int fad
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// MPEG-1 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ܺ<EFBFBD> <20>ڵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20>Լ<EFBFBD>
|
||||
// MPEG-1 비디오 파일을 외부 코덱 간섭없이 렌더링하는 함수
|
||||
//
|
||||
HRESULT CMovieMan::BuildFilterGraphManually(
|
||||
WCHAR* wpFilename,
|
||||
@ -537,8 +537,8 @@ HRESULT CMovieMan::BuildFilterGraphManually(
|
||||
CoCreateInstance(clsidVideoCodec, NULL, CLSCTX_INPROC_SERVER, IID_IBaseFilter, (void **) &pVideoFilter);
|
||||
CoCreateInstance(clsidAudioCodec, NULL, CLSCTX_INPROC_SERVER, IID_IBaseFilter, (void **) &pAudioFilter);
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> MP43 <EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ٸ<EFBFBD> DMO <20>ڵ<EFBFBD><DAB5><EFBFBD> <20><><EFBFBD><EFBFBD> <20>־<EFBFBD><D6BE>ش<EFBFBD>
|
||||
// MONSTER<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߰ߵ<DFB0> <20><><EFBFBD>̽<EFBFBD>(<28>ڵ<EFBFBD><DAB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
// 만약 MP43 디코더가 없다면 DMO 코덱을 대신 넣어준다
|
||||
// MONSTER팀에서 발견된 케이스(코덱을 누군가 강제로 삭제)
|
||||
if (!pVideoFilter && IsEqualGUID(clsidVideoCodec, CLSID_MP4VideoCodec))
|
||||
{
|
||||
// Create the DMO Wrapper filter.
|
||||
@ -580,7 +580,7 @@ HRESULT CMovieMan::BuildFilterGraphManually(
|
||||
pOutPin->Release();
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD> Output <20>ɵ<EFBFBD><C9B5><EFBFBD> <20><>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD>
|
||||
// 연결후에만 Output 핀들이 나타난다
|
||||
pSplitterFilter->EnumPins(&pEnumPins);
|
||||
PIN_INFO pinInfo;
|
||||
while( SUCCEEDED(pEnumPins->Next(1, &pInPin, NULL)) )
|
||||
@ -589,7 +589,7 @@ HRESULT CMovieMan::BuildFilterGraphManually(
|
||||
pinInfo.pFilter->Release();
|
||||
if (pinInfo.dir == PINDIR_OUTPUT)
|
||||
{
|
||||
// Pin<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// Pin의 순서를 비디오-오디오로 가정
|
||||
pSplitterVideoOutPin = pInPin;
|
||||
pEnumPins->Next(1, &pSplitterAudioOutPin, NULL);
|
||||
break;
|
||||
@ -606,12 +606,12 @@ HRESULT CMovieMan::BuildFilterGraphManually(
|
||||
hr = pGraphBuilder->Connect(pSplitterVideoOutPin, pInPin);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// 비디오 렌더
|
||||
hr = pGraphBuilder->Render(pOutPin);
|
||||
pInPin->Release();
|
||||
pOutPin->Release();
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ִ<EFBFBD>
|
||||
// 오디오는 파일에 따라 없을 수도 있다
|
||||
if (pSplitterAudioOutPin && pAudioFilter)
|
||||
{
|
||||
pAudioFilter->EnumPins(&pEnumPins);
|
||||
@ -619,7 +619,7 @@ HRESULT CMovieMan::BuildFilterGraphManually(
|
||||
pEnumPins->Next(1, &pOutPin, NULL);
|
||||
pEnumPins->Release();
|
||||
pGraphBuilder->Connect(pSplitterAudioOutPin, pInPin);
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD> <20>Ѿ <20><> <20><><EFBFBD><EFBFBD>
|
||||
// 오디오 렌더는 실패해도 넘어갈 수 있음
|
||||
pGraphBuilder->Render(pOutPin);
|
||||
pInPin->Release();
|
||||
pOutPin->Release();
|
||||
@ -627,7 +627,7 @@ HRESULT CMovieMan::BuildFilterGraphManually(
|
||||
}
|
||||
}
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// 해제
|
||||
//#ifdef _DEBUG
|
||||
// RemoveFromRot(dwRegister);
|
||||
//#endif
|
||||
|
Reference in New Issue
Block a user