RenderStream會自動關閉程式 |
尚未結案
|
blk5743
高階會員 發表:34 回覆:371 積分:236 註冊:2003-11-17 發送簡訊給我 |
請教各位前輩
我如果在compiler中的時候按下F9,不管在Project->Option->compiler->debugging是否有勾選 執行pBuild->RenderStream(&PIN_CATEGORY_PREVIEW, NULL, pCapSourceFilter,NULL,VideoFilter);時 都會在DSPack中的Result := S_OK;執行後,程式自動關閉 如果是直接執行執行檔時,程式可以正常執行,請問可能是有什麼樣的問題發生? 下面是DSPack中的一段程式碼 [code cpp] function TFilterGraph.SelectedFilter(pMon: IMoniker): HResult; stdcall; var PropBag: IPropertyBag; Name: OleVariant; vGuid: OleVariant; Guid: TGUID; begin if Assigned(FOnSelectedFilter) then begin pMon.BindToStorage(nil, nil, IID_IPropertyBag, PropBag); if PropBag.Read('CLSID',vGuid,nil) = S_OK then Guid := StringToGUID(vGuid) else Guid := GUID_NULL; if PropBag.Read('FriendlyName', Name, nil) <> S_OK then Name := ''; PropBag := nil; if FOnSelectedFilter(pMon,Name,Guid) then Result := S_OK else Result := E_FAIL; end else Result := S_OK; end; [/code] 下面是我寫的fucntion [code cpp] IBaseFilter *pCapSourceFilter = NULL;//capture void __fastcall TMainForm::DevicesClick(TObject *Sender) { static int iOrder, iLastOrder; if ( !BChangeResolution ) iOrder = ((TMenuItem *)Sender)->Tag; else iOrder = iLastOrder; if ( iOrder == 0 ) return; iLastOrder = iOrder; FilterGraph->ClearGraph(); FilterGraph->Active = false; Filter->BaseFilter->Moniker = SysDev->GetMoniker(iOrder-1); FilterGraph->Active = true; //encapsulated interface pointer with the specified IID and returns the resulting raw interface pointer in p. CheckDSError(FilterGraph->QueryInterface(IID_ICaptureGraphBuilder2, &pBuild));//find capture interface of filter graph #define WM_GRAPHNOTIFY WM_APP 1 // Private message. pEvent->SetNotifyWindow((OAHWND)MainForm->Handle, WM_GRAPHNOTIFY, 0); CheckDSError(VideoWindow->QueryInterface(IID_IBaseFilter, &VideoFilter)); if ( (hr = Filter->QueryInterface(IID_IBaseFilter, &pCapSourceFilter)) != S_OK ) { Xprintf("%d, pCapSourceFilter fail",iOrder); return; } ///////////////////////////////////////// //for capture use CheckDSError( pBuild->FindInterface(&PIN_CATEGORY_CAPTURE,&MEDIATYPE_Video,pCapSourceFilter ,IID_IAMStreamConfig,(void**)&pConfig)); int iCount = 0, iSize = 0; hr = pConfig->GetNumberOfCapabilities(&iCount, &iSize); // Check the size to make sure we pass in the correct structure. if ( (hr == S_OK) && (iSize == sizeof(VIDEO_STREAM_CONFIG_CAPS)) ) { CheckVideoFmt(READ,0,iCount);//show all resolution }//if ( (hr == S_OK) && (iSize == sizeof(VIDEO_STREAM_CONFIG_CAPS)) ) //********************** for preview use **************************** pBuild->RenderStream(&PIN_CATEGORY_PREVIEW, NULL, pCapSourceFilter,NULL,VideoFilter); ... } [/code] |
ikk
尊榮會員 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
|
blk5743
高階會員 發表:34 回覆:371 積分:236 註冊:2003-11-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |