[問題] directshow GetFormat SetFormat

作者: liang168 (小強)   2015-02-22 20:57:17
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
vc6 windowsXP
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
Directshow
問題(Question):
設定輸出usb camera解析度正確流程?
己知先用 GetFormat 讀入目前 usb camera 設定解析度
修改過後再用SetFormat 寫入設定
但是測試發現解析度變成最小,不知問題在那裡
只要求改預設輸出解析度
程式碼(Code):(請善用置底文網頁, 記得排版)
IAMStreamConfig *pVSC;
hr =
g_pCapture->FindInterface(&PIN_CATEGORY_CAPTURE,&MEDIATYPE_Video,m_pVidDeviceFilter,IID_IAMStreamConfig,(void
**)&pVSC);
if(FAILED(hr))
{
printf("Findinterface error \n");
return -1;
}
AM_MEDIA_TYPE *aMediaType ;
pVSC->GetFormat(&aMediaType);
VIDEOINFOHEADER *vih = (VIDEOINFOHEADER*)aMediaType->pbFormat;
AM_MEDIA_TYPE *out_set = aMediaType ;
VIDEOINFOHEADER *pOut_set =(VIDEOINFOHEADER*)out_set->pbFormat;
pOut_set->bmiHeader.biWidth = 1280;
pOut_set->bmiHeader.biHeight = 720;
out_set->pbFormat = (unsigned char *)pOut_set;
pVSC->SetFormat(out_set);
補充說明(Supplement):
作者: LiloHuang (十年一刻)   2015-02-24 20:31:00
HRESULT hr = pVSC->SetFormat(...) 請看一下 hr 的值
作者: liang168 (小強)   2015-02-25 21:26:00
測試過回傳值是正常
作者: LiloHuang (十年一刻)   2015-02-25 22:17:00
你是在 filter pin 腳接起來前設定的,還是之後設定的?
作者: lf5471 (lf)   2015-02-26 00:23:00
在 SetFormat 前使用 GetStreamCaps ?改 GetStreamCaps 回傳的 W&H, 再丟到 SetFormat ?
作者: liang168 (小強)   2015-02-27 18:25:00
在getdevice之後addfilter之前加入這段程式getstreamcaps 沒用過正在看如何使用 謝謝
作者: LiloHuang (十年一刻)   2015-02-28 22:10:00
應該在 AddFilter 之後,接起 Output Pin 之前設定。

Links booklink

Contact Us: admin [ a t ] ucptt.com