162 |
m_pVideoMeter = m_pSplitter = m_pSrcFilter = m_pXvidEncoder = 0; |
m_pVideoMeter = m_pSplitter = m_pSrcFilter = m_pXvidEncoder = 0; |
163 |
//m_pEmmsDummy = 0; |
//m_pEmmsDummy = 0; |
164 |
m_pMuxer = m_pFileWriter = m_pChgType = 0; |
m_pMuxer = m_pFileWriter = m_pChgType = 0; |
165 |
|
m_pIChgTypeNorm = 0; |
166 |
m_pXvidConfig = 0; |
m_pXvidConfig = 0; |
167 |
m_bBreakRequested = 0; |
m_bBreakRequested = 0; |
168 |
|
|
196 |
m_szSourceFilePath = m_szDstFilePath = 0; |
m_szSourceFilePath = m_szDstFilePath = 0; |
197 |
m_curSize = 0; |
m_curSize = 0; |
198 |
|
|
|
#if 0 |
|
|
if (m_pEmmsDummy) { |
|
|
m_pGraph->RemoveFilter(m_pEmmsDummy); |
|
|
m_pEmmsDummy->Release(); |
|
|
m_pEmmsDummy = 0; |
|
|
} |
|
|
#endif |
|
|
|
|
199 |
if (m_pVideoMeter) { |
if (m_pVideoMeter) { |
200 |
m_pGraph->RemoveFilter(m_pVideoMeter); |
m_pGraph->RemoveFilter(m_pVideoMeter); |
201 |
m_pVideoMeter->Release(); |
m_pVideoMeter->Release(); |
225 |
m_pXvidConfig = 0; |
m_pXvidConfig = 0; |
226 |
} |
} |
227 |
|
|
228 |
|
if (m_pIChgTypeNorm) { |
229 |
|
m_pIChgTypeNorm->Release(); |
230 |
|
m_pIChgTypeNorm = 0; |
231 |
|
} |
232 |
|
|
233 |
if (m_pChgType) { |
if (m_pChgType) { |
234 |
m_pGraph->RemoveFilter(m_pChgType); |
m_pGraph->RemoveFilter(m_pChgType); |
235 |
m_pChgType->Release(); |
m_pChgType->Release(); |
418 |
if (hr == S_OK) hr = ConnectFilters(m_pGraph, pOutVideoPin, m_pXvidEncoder, GUID_NULL, GUID_NULL, 0); |
if (hr == S_OK) hr = ConnectFilters(m_pGraph, pOutVideoPin, m_pXvidEncoder, GUID_NULL, GUID_NULL, 0); |
419 |
if (hr == S_OK) pCompressedVideoFilter = m_pXvidEncoder; |
if (hr == S_OK) pCompressedVideoFilter = m_pXvidEncoder; |
420 |
|
|
|
#if 0 |
|
|
if (!m_bIsWMV) { |
|
|
// dummy filter - emms instruction only |
|
|
CUnknown *pVidMeterEmms = 0; |
|
|
if (hr == S_OK) pVidMeterEmms = CProgressNotifyFilter::CreateInstance(0, &hr, 0); |
|
|
if (hr == S_OK) hr = pVidMeterEmms->NonDelegatingQueryInterface(IID_IBaseFilter, (void **)&m_pEmmsDummy); |
|
|
//if (hr == S_OK) hr = CoCreateInstance(CLSID_ProgressNotifyFilter, 0, CLSCTX_INPROC_SERVER, IID_IBaseFilter, (void **)&m_pEmmsDummy); |
|
|
if (hr == S_OK) hr = m_pGraph->AddFilter(m_pEmmsDummy, TEXT("Video meter emms")); |
|
|
IPin *pOutPin = 0, *pInPin=0; |
|
|
|
|
|
if (hr == S_OK) hr = GetFilterPin(m_pXvidEncoder, PINDIR_INPUT, 1, &pInPin, GUID_NULL, GUID_NULL); |
|
|
if (hr == S_OK) hr = pInPin->ConnectedTo(&pOutPin); |
|
|
if (hr == S_OK) hr = m_pGraph->Disconnect(pInPin); |
|
|
if (hr == S_OK) hr = m_pGraph->Disconnect(pOutPin); |
|
|
if (hr == S_OK) hr = ConnectFilters(m_pGraph, pOutPin, m_pEmmsDummy, GUID_NULL, GUID_NULL, 1); |
|
|
if (hr == S_OK) hr = ConnectFilters(m_pGraph, m_pEmmsDummy, pInPin, GUID_NULL, GUID_NULL, 1); |
|
|
|
|
|
if (pInPin) pInPin->Release(); |
|
|
if (pOutPin) pOutPin->Release(); |
|
|
} |
|
|
#endif |
|
|
|
|
421 |
m_ToAlloc = 0; |
m_ToAlloc = 0; |
422 |
if (hr == S_OK) hr = m_pXvidEncoder->QueryInterface(IID_IAMVfwCompressDialogs, (void **)&m_pXvidConfig); |
if (hr == S_OK) hr = m_pXvidEncoder->QueryInterface(IID_IAMVfwCompressDialogs, (void **)&m_pXvidConfig); |
423 |
|
|
502 |
if (pIConfigInterleaving) pIConfigInterleaving->Release(); |
if (pIConfigInterleaving) pIConfigInterleaving->Release(); |
503 |
#endif |
#endif |
504 |
|
|
505 |
if (hr == S_OK) hr = ConnectFilters(m_pGraph, m_pChgType, m_pMuxer, MEDIATYPE_Video, GUID_NULL, 1); |
if (hr == S_OK) hr = m_pChgType->QueryInterface(IID_IRecProgressNotify, (void **)&m_pIChgTypeNorm); |
506 |
|
if (hr == S_OK) hr = m_pIChgTypeNorm->SetTotalFrames(m_TotalFrames); |
507 |
|
if (hr == S_OK) m_pIChgTypeNorm->SetPass(in_Pass); |
508 |
|
|
509 |
|
if (in_Pass == 2) { |
510 |
|
LONGLONG FpsNom = m_MaxETime - m_MinETime, FpsDen = m_CountedFrames > 1 ? m_CountedFrames-1 : 1; |
511 |
|
LONGLONG cAvgTimeForFrame = FpsNom/FpsDen; |
512 |
|
//if (((ULONGLONG)m_AvgTimeForFrame*m_CountedFrames - FpsNom) > m_AvgTimeForFrame + m_CountedFrames) { |
513 |
|
if (!m_AvgTimeForFrame) { |
514 |
|
m_pIChgTypeNorm->SetForceTimeParams(m_MinSTime, FpsNom, FpsDen); |
515 |
|
} |
516 |
|
} |
517 |
|
|
518 |
IRecProgressNotify *pChgN = 0; |
if (hr == S_OK) hr = ConnectFilters(m_pGraph, m_pChgType, m_pMuxer, MEDIATYPE_Video, GUID_NULL, 1); |
|
if (hr == S_OK) hr = m_pChgType->QueryInterface(IID_IRecProgressNotify, (void **)&pChgN); |
|
|
if (hr == S_OK) hr = pChgN->SetTotalFrames(m_TotalFrames); |
|
|
if (pChgN) pChgN->Release(); |
|
519 |
|
|
520 |
if (hr == S_OK) hr = AddFileWriter(m_szDstFilePath); |
if (hr == S_OK) hr = AddFileWriter(m_szDstFilePath); |
521 |
if (hr == S_OK) hr = ConnectFilters(m_pGraph, m_pMuxer, m_pFileWriter, GUID_NULL, GUID_NULL, 1); |
if (hr == S_OK) hr = ConnectFilters(m_pGraph, m_pMuxer, m_pFileWriter, GUID_NULL, GUID_NULL, 1); |
523 |
if ((hr == S_OK) && ((in_Pass ==2) || (!m_pXvidEncoder))) hr = AddAudioStreams(0); |
if ((hr == S_OK) && ((in_Pass ==2) || (!m_pXvidEncoder))) hr = AddAudioStreams(0); |
524 |
else if (hr == S_OK) hr = AddAudioStreams(1); |
else if (hr == S_OK) hr = AddAudioStreams(1); |
525 |
|
|
|
#if 0 |
|
|
IConfigAviMux *pIConfigAviMux = 0; |
|
|
if (hr == S_OK) hr = m_pMuxer->QueryInterface(IID_IConfigAviMux, (void **)&pIConfigAviMux); |
|
|
pIConfigAviMux->SetMasterStream(0); |
|
|
if (pIConfigAviMux) pIConfigAviMux->Release(); |
|
|
#endif |
|
|
|
|
526 |
if (pVMeterInVideoPin) pVMeterInVideoPin->Release(); |
if (pVMeterInVideoPin) pVMeterInVideoPin->Release(); |
527 |
if (pOutVideoPin) pOutVideoPin->Release(); |
if (pOutVideoPin) pOutVideoPin->Release(); |
528 |
DeleteFile(m_szDstFilePath); |
DeleteFile(m_szDstFilePath); |
693 |
(void **)&pIMp3Normalizer); |
(void **)&pIMp3Normalizer); |
694 |
if (hr == S_OK) hr = m_pGraph->AddFilter(pIMp3Normalizer, 0); |
if (hr == S_OK) hr = m_pGraph->AddFilter(pIMp3Normalizer, 0); |
695 |
|
|
696 |
|
IRecProgressNotify *pAudioRecNotify = 0; |
697 |
|
pIMp3Normalizer->QueryInterface(IID_IRecProgressNotify, (void **)&pAudioRecNotify); |
698 |
|
pAudioRecNotify->SetAudioBitrate(UsedDataRate); |
699 |
|
pAudioRecNotify->Release(); |
700 |
|
|
701 |
IPin *pNormMp3Pin = 0; |
IPin *pNormMp3Pin = 0; |
702 |
if (hr == S_OK) hr = GetFilterPin(pIMp3Normalizer, PINDIR_INPUT, 0, &pNormMp3Pin, GUID_NULL, GUID_NULL); |
if (hr == S_OK) hr = GetFilterPin(pIMp3Normalizer, PINDIR_INPUT, 0, &pNormMp3Pin, GUID_NULL, GUID_NULL); |
703 |
if (hr == S_OK) hr = m_pGraph->ConnectDirect(pMp3Pin, pNormMp3Pin, pMp3mt); |
if (hr == S_OK) hr = m_pGraph->ConnectDirect(pMp3Pin, pNormMp3Pin, pMp3mt); |
803 |
HRESULT |
HRESULT |
804 |
RecompressGraph::AddSourceFilter(LPCTSTR in_szFilePath) |
RecompressGraph::AddSourceFilter(LPCTSTR in_szFilePath) |
805 |
{ |
{ |
806 |
|
HRESULT hr = S_OK; |
807 |
if (!m_pGraph || m_pSrcFilter) return E_UNEXPECTED; |
if (!m_pGraph || m_pSrcFilter) return E_UNEXPECTED; |
808 |
|
|
809 |
|
BYTE StartBytes[512]; |
810 |
|
DWORD cbReadHdr=0; |
811 |
|
int ExpectedType=0; |
812 |
|
HANDLE hFile = CreateFile(in_szFilePath, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0); |
813 |
|
if (hFile != INVALID_HANDLE_VALUE) { |
814 |
|
if (ReadFile(hFile, StartBytes, sizeof(StartBytes), &cbReadHdr, 0) && cbReadHdr == sizeof(StartBytes)) { |
815 |
|
if ((*(int *)StartBytes) == 'FFIR') ExpectedType = 1; // AVI |
816 |
|
else if (((int *)StartBytes)[1] == 'pytf' || ((int *)StartBytes)[1] == 'tadm' || ((int *)StartBytes)[1] == 'voom') ExpectedType = 2; // MOV/MP4 |
817 |
|
else if (((int *)StartBytes)[0] == 0xA3DF451A) { |
818 |
|
for (int iPos = 4; (ExpectedType == 0 && iPos +11 < sizeof(StartBytes)); iPos++) { |
819 |
|
if ((*(int *)&(StartBytes[iPos]) == 0x6D888242) && (*(int *)&(StartBytes[iPos+3]) == 'rtam') |
820 |
|
&& (*(int *)&(StartBytes[iPos+7]) == 'akso')) { |
821 |
|
ExpectedType = 3; // MKV |
822 |
|
} |
823 |
|
} |
824 |
|
} else if (((int *)StartBytes)[0] == 0x75B22630) ExpectedType = 4; // WMV/ASF |
825 |
|
} else hr = VFW_E_FILE_TOO_SHORT; |
826 |
|
CloseHandle(hFile); |
827 |
|
} else return VFW_E_NOT_FOUND; |
828 |
|
if (hr != S_OK) return hr; |
829 |
|
|
830 |
int sLen = _tcslen(in_szFilePath); |
int sLen = _tcslen(in_szFilePath); |
831 |
OLECHAR *pwName = new OLECHAR [sLen+1]; |
OLECHAR *pwName = new OLECHAR [sLen+1]; |
832 |
#ifndef UNICODE |
#ifndef UNICODE |
835 |
wcsncpy(pwName, in_szFilePath, sLen+1); |
wcsncpy(pwName, in_szFilePath, sLen+1); |
836 |
#endif |
#endif |
837 |
|
|
838 |
HRESULT hr = TrySourceFilter(pwName, (GUID *)&CLSID_AsyncReader); |
// preferred configuration: |
839 |
// |
// ASF/WMV : WM ASF Reader |
840 |
// AddFilterByCLSID((GUID *)&CLSID_AsyncReader, &m_pSrcFilter); |
// AVI: Async Reader -> Avi Splitter |
841 |
//IFileSourceFilter* pSrc =0 ; |
// MOV/MP4: Async Reader -> Lav splitter (secondary Haali splitter) (Haali has problems with some movs and mp4 files) |
842 |
//if (hr == S_OK) hr = m_pSrcFilter->QueryInterface(IID_IFileSourceFilter, (void **)(&pSrc)); |
// MKV: Async Reader -> Haali splitter (secondary Lav splitter) |
843 |
//if (hr == S_OK) hr = pSrc->Load(in_szFilePath, 0);//&m_SrcFileMediaType); |
// if configuration Reader->Splitter is not available for mov/mp4/mkv, then reader+splitter is tried. |
844 |
|
// if everything fails, we let the GraphBuilder to choose filters by default. |
845 |
|
|
846 |
IPin* pOutSrcPin=0, *pVideoPin=0; |
IPin* pOutSrcPin=0, *pVideoPin=0; |
847 |
|
if (ExpectedType == 4) m_bIsWMV = 1; |
848 |
|
else { |
849 |
|
hr = TrySourceFilter(pwName, (GUID *)&CLSID_AsyncReader); |
850 |
|
|
851 |
if (hr == S_OK) hr = GetFilterPin(m_pSrcFilter, PINDIR_OUTPUT, 0, &pOutSrcPin, GUID_NULL, GUID_NULL); |
if (hr == S_OK) hr = GetFilterPin(m_pSrcFilter, PINDIR_OUTPUT, 0, &pOutSrcPin, GUID_NULL, GUID_NULL); |
852 |
IEnumMediaTypes* pEnumSrcMediaTypes=0; |
IEnumMediaTypes* pEnumSrcMediaTypes=0; |
853 |
if (hr == S_OK) hr = pOutSrcPin->EnumMediaTypes(&pEnumSrcMediaTypes); |
if (hr == S_OK) hr = pOutSrcPin->EnumMediaTypes(&pEnumSrcMediaTypes); |
|
//if (hr == S_OK) hr = pEnumSrcMediaTypes->Reset(); |
|
854 |
AM_MEDIA_TYPE *pMt =0; |
AM_MEDIA_TYPE *pMt =0; |
855 |
if (hr == S_OK) do hr = pEnumSrcMediaTypes->Next(1, &pMt, 0); |
if (hr == S_OK) hr = pEnumSrcMediaTypes->Next(1, &pMt, 0); |
856 |
while (hr == S_OK && (pMt->majortype != MEDIATYPE_Stream || pMt->subtype == GUID_NULL)); |
while (hr == S_OK && (pMt->majortype != MEDIATYPE_Stream || pMt->subtype == GUID_NULL)) { |
857 |
|
DeleteMediaType(pMt); |
858 |
|
pMt = 0; |
859 |
|
hr = pEnumSrcMediaTypes->Next(1, &pMt, 0); |
860 |
|
} |
861 |
if (hr == S_OK) m_SrcFileMediaType = *pMt; |
if (hr == S_OK) m_SrcFileMediaType = *pMt; |
862 |
if (pMt) DeleteMediaType(pMt); |
if (pMt) DeleteMediaType(pMt); |
863 |
if (pEnumSrcMediaTypes) pEnumSrcMediaTypes->Release(); |
if (pEnumSrcMediaTypes) pEnumSrcMediaTypes->Release(); |
868 |
m_bIsWMV = 1; |
m_bIsWMV = 1; |
869 |
} else if (m_SrcFileMediaType.subtype == MEDIASUBTYPE_Avi) |
} else if (m_SrcFileMediaType.subtype == MEDIASUBTYPE_Avi) |
870 |
hr = AddFilterByCLSID((GUID *)&CLSID_AviSplitter, &m_pSplitter); |
hr = AddFilterByCLSID((GUID *)&CLSID_AviSplitter, &m_pSplitter); |
871 |
else {//if (m_SrcFileMediaType.subtype == MEDIASUBTYPE_MP4) |
else { |
872 |
hr = AddFilterByCLSID((GUID *)&CLSID_LAVSplitter, &m_pSplitter); |
hr = AddFilterByCLSID((GUID *)((ExpectedType == 3) ? &CLSID_HaaliMediaSplitter_AR : &CLSID_LAVSplitter), &m_pSplitter); |
873 |
if (hr == S_OK) { |
if (hr == S_OK) { |
874 |
hr = ConnectFilters(m_pGraph, pOutSrcPin, m_pSplitter); |
hr = ConnectFilters(m_pGraph, pOutSrcPin, m_pSplitter); |
875 |
if (hr == S_OK) hr = GetFilterPin(m_pSplitter, PINDIR_OUTPUT, 0, &pVideoPin, MEDIATYPE_Video, GUID_NULL); |
if (hr == S_OK) hr = GetFilterPin(m_pSplitter, PINDIR_OUTPUT, 0, &pVideoPin, MEDIATYPE_Video, GUID_NULL); |
876 |
if (m_pSplitter || !pVideoPin) { |
if (m_pSplitter && !pVideoPin) { |
877 |
m_pGraph->RemoveFilter(m_pSplitter); |
m_pGraph->RemoveFilter(m_pSplitter); |
878 |
m_pSplitter->Release(); |
m_pSplitter->Release(); |
879 |
m_pSplitter = 0; |
m_pSplitter = 0; |
881 |
if (pVideoPin) {pVideoPin->Release(); pVideoPin = 0;} |
if (pVideoPin) {pVideoPin->Release(); pVideoPin = 0;} |
882 |
} |
} |
883 |
if (!m_pSplitter) { |
if (!m_pSplitter) { |
884 |
hr = AddFilterByCLSID((GUID *)&CLSID_HaaliMediaSplitter_AR, &m_pSplitter); |
hr = AddFilterByCLSID((GUID *)((ExpectedType != 3) ? &CLSID_HaaliMediaSplitter_AR : &CLSID_LAVSplitter), &m_pSplitter); |
885 |
if (hr == S_OK) { |
if (hr == S_OK) { |
886 |
hr = ConnectFilters(m_pGraph, pOutSrcPin, m_pSplitter); |
hr = ConnectFilters(m_pGraph, pOutSrcPin, m_pSplitter); |
887 |
if (hr == S_OK) hr = GetFilterPin(m_pSplitter, PINDIR_OUTPUT, 0, &pVideoPin, MEDIATYPE_Video, GUID_NULL); |
if (hr == S_OK) hr = GetFilterPin(m_pSplitter, PINDIR_OUTPUT, 0, &pVideoPin, MEDIATYPE_Video, GUID_NULL); |
888 |
if (m_pSplitter || !pVideoPin) { |
if (m_pSplitter && !pVideoPin) { |
889 |
m_pGraph->RemoveFilter(m_pSplitter); |
m_pGraph->RemoveFilter(m_pSplitter); |
890 |
m_pSplitter->Release(); |
m_pSplitter->Release(); |
891 |
m_pSplitter = 0; |
m_pSplitter = 0; |
896 |
} |
} |
897 |
} else hr = VFW_E_TYPE_NOT_ACCEPTED; |
} else hr = VFW_E_TYPE_NOT_ACCEPTED; |
898 |
} |
} |
899 |
|
} |
900 |
|
|
901 |
if (m_bIsWMV || !m_pSplitter) { |
if (m_bIsWMV || !m_pSplitter) { |
902 |
if (m_pSrcFilter) { |
if (m_pSrcFilter) { |
906 |
m_pSrcFilter = 0; |
m_pSrcFilter = 0; |
907 |
if (m_bIsWMV) hr = TrySourceFilter(pwName, (GUID *)&CLSID_WMAsfReader ); |
if (m_bIsWMV) hr = TrySourceFilter(pwName, (GUID *)&CLSID_WMAsfReader ); |
908 |
else { |
else { |
909 |
//if (m_SrcFileMediaType.majortype == MEDIATYPE_Stream && m_SrcFileMediaType.subtype != GUID_NULL) { |
hr = TrySourceFilter(pwName, (GUID *)(ExpectedType == 3 ? &CLSID_HaaliMediaSplitter : &CLSID_LAVSource)); |
|
hr = TrySourceFilter(pwName, (GUID *)&CLSID_LAVSource); |
|
910 |
if (hr == S_OK) hr = GetFilterPin(m_pSrcFilter, PINDIR_OUTPUT, 0, &pVideoPin, MEDIATYPE_Video, GUID_NULL); |
if (hr == S_OK) hr = GetFilterPin(m_pSrcFilter, PINDIR_OUTPUT, 0, &pVideoPin, MEDIATYPE_Video, GUID_NULL); |
911 |
if (!m_pSrcFilter || !pVideoPin) { |
if (!m_pSrcFilter || !pVideoPin) { |
912 |
if (!pVideoPin && m_pSrcFilter) { |
if (!pVideoPin && m_pSrcFilter) { |
914 |
m_pSrcFilter->Release(); |
m_pSrcFilter->Release(); |
915 |
m_pSrcFilter = 0; |
m_pSrcFilter = 0; |
916 |
} |
} |
917 |
if (!m_pSrcFilter) TrySourceFilter(pwName, (GUID *)&CLSID_HaaliMediaSplitter); |
if (!m_pSrcFilter) hr = TrySourceFilter(pwName, (GUID *)(ExpectedType != 3 ? &CLSID_HaaliMediaSplitter : &CLSID_LAVSource)); |
918 |
if (hr == S_OK) hr = GetFilterPin(m_pSrcFilter, PINDIR_OUTPUT, 0, &pVideoPin, MEDIATYPE_Video, GUID_NULL); |
if (hr == S_OK) hr = GetFilterPin(m_pSrcFilter, PINDIR_OUTPUT, 0, &pVideoPin, MEDIATYPE_Video, GUID_NULL); |
919 |
if (!pVideoPin && m_pSrcFilter) { |
if (!pVideoPin && m_pSrcFilter) { |
920 |
m_pGraph->RemoveFilter(m_pSrcFilter); |
m_pGraph->RemoveFilter(m_pSrcFilter); |
926 |
pVideoPin->Release(); |
pVideoPin->Release(); |
927 |
pVideoPin = 0; |
pVideoPin = 0; |
928 |
} |
} |
|
//} else { |
|
|
// hr = TrySourceFilter(in_szFilePath, (GUID *)&CLSID_HaaliMediaSplitter); |
|
|
// if (!m_pSrcFilter) TrySourceFilter(in_szFilePath, (GUID *)&CLSID_LAVSource); |
|
|
//} |
|
929 |
} |
} |
930 |
if (!m_pSrcFilter) hr = m_pGraph->AddSourceFilter(pwName, 0, &m_pSrcFilter); |
if (!m_pSrcFilter) hr = m_pGraph->AddSourceFilter(pwName, 0, &m_pSrcFilter); |
931 |
} |
} |
932 |
if (pOutSrcPin) pOutSrcPin->Release(); |
if (pOutSrcPin) pOutSrcPin->Release(); |
|
#if 0 |
|
|
HRESULT hr = AddFilterByCLSID((GUID *)&CLSID_AsyncReader, &this->m_pSrcFilter); |
|
|
IFileSourceFilter* pSrc =0 ; |
|
|
if (hr == S_OK) hr = m_pSrcFilter->QueryInterface(IID_IFileSourceFilter, (void **)(&pSrc)); |
|
|
if (hr == S_OK) hr = pSrc->Load(pwName, &m_SrcFileMediaType); |
|
|
if (pSrc) pSrc->Release(); |
|
|
#endif |
|
|
|
|
|
delete [] pwName; |
|
933 |
|
|
934 |
return hr; |
return hr; |
935 |
} |
} |
964 |
RecompressGraph::WaitForCompletion(long *out_Evt) |
RecompressGraph::WaitForCompletion(long *out_Evt) |
965 |
{ |
{ |
966 |
long Evt, P1, P2; |
long Evt, P1, P2; |
967 |
TCHAR szErrorStr[150]; |
// TCHAR szErrorStr[150]; |
968 |
HRESULT hr = S_OK; |
HRESULT hr = S_OK; |
969 |
do { |
do { |
970 |
hr = m_pEvent->GetEvent(&Evt, &P1, &P2, INFINITE); |
hr = m_pEvent->GetEvent(&Evt, &P1, &P2, INFINITE); |
971 |
if (Evt == EC_ERRORABORT) { |
if (Evt == EC_ERRORABORT) { |
972 |
_stprintf(szErrorStr, _TEXT("Error ocurred\nCode=%08X, %08X\nContinue?"), P1, P2); |
// _stprintf(szErrorStr, _TEXT("Error ocurred\nCode=%08X, %08X\nContinue?"), P1, P2); |
973 |
if (MessageBox(ghDlg, szErrorStr, 0, MB_YESNO) == IDYES) Evt = 0; |
// if (MessageBox(ghDlg, szErrorStr, 0, MB_YESNO) == IDYES) Evt = 0; |
974 |
|
if (P1 == 0xC00D002F && m_bIsWMV) |
975 |
|
Evt = 0; |
976 |
} |
} |
977 |
} while (Evt != EC_COMPLETE && Evt != EC_STREAM_ERROR_STOPPED && Evt != EC_USERABORT && Evt != EC_ERRORABORT); |
} while (Evt != EC_COMPLETE && Evt != EC_STREAM_ERROR_STOPPED && Evt != EC_USERABORT && Evt != EC_ERRORABORT); |
978 |
*out_Evt = Evt; |
*out_Evt = Evt; |
1061 |
m_pEvent = 0; |
m_pEvent = 0; |
1062 |
int bBreakRequested = m_bBreakRequested; |
int bBreakRequested = m_bBreakRequested; |
1063 |
//if (hr == S_OK) |
//if (hr == S_OK) |
1064 |
|
|
1065 |
|
m_pIChgTypeNorm->GetMeasuredTimes(m_MinETime, m_MaxETime, m_MinSTime, m_MaxSTime); |
1066 |
|
|
1067 |
CleanUp(); |
CleanUp(); |
1068 |
m_szSourceFilePath = pSrcStr; |
m_szSourceFilePath = pSrcStr; |
1069 |
m_szDstFilePath = pDstStr; |
m_szDstFilePath = pDstStr; |