int VideoWin::dsplay()\r
{\r
if (!initted) return 0;\r
-\r
+ CleanupDS();\r
//Build filter graph\r
HRESULT hres;\r
\r
allocatorvmr=new DsAllocator();\r
dsvmrsurfnotify->AdviseSurfaceAllocator(NULL,allocatorvmr);\r
allocatorvmr->AdviseNotify(dsvmrsurfnotify);\r
+ \r
\r
\r
\r
if (hres=fg2->RenderEx(sourcefilter->GetPin(1)/*video*/,\r
AM_RENDEREX_RENDERTOEXISTINGRENDERERS,NULL)!=S_OK) {\r
Log::getInstance()->log("VideoWin", Log::WARN , "Failed rendering Video!");\r
+ fg2->Release();\r
CleanupDS();\r
ReleaseMutex(filtermutex);\r
return 0;\r
}\r
+ fg2->Release();\r
}\r
#endif\r
if (hres=CoCreateInstance(CLSID_SystemClock,NULL,CLSCTX_INPROC_SERVER,\r
void VideoWin::CleanupDS()\r
{\r
WaitForSingleObject(filtermutex,INFINITE);\r
+ if (dsmediacontrol)dsmediacontrol->Stop();\r
if (cur_audio_media_sample) {\r
cur_audio_media_sample->Release();\r
cur_audio_media_sample=NULL;\r
}\r
\r
\r
+\r
if (dsmediacontrol) {\r
dsmediacontrol->Stop();\r
dsmediacontrol->Release();\r