[問題] directshow GetFormat SetFormat

看板C_and_CPP作者 (小強)時間9年前 (2015/02/22 20:57), 編輯推噓4(404)
留言8則, 3人參與, 最新討論串1/1
開發平台(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): -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.134.117.70 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1424609840.A.4AA.html

02/24 20:31, , 1F
HRESULT hr = pVSC->SetFormat(...) 請看一下 hr 的值
02/24 20:31, 1F

02/25 21:26, , 2F
測試過回傳值是正常
02/25 21:26, 2F

02/25 22:17, , 3F
你是在 filter pin 腳接起來前設定的,還是之後設定的?
02/25 22:17, 3F

02/26 00:23, , 4F
在 SetFormat 前使用 GetStreamCaps ?
02/26 00:23, 4F

02/26 00:24, , 5F
改 GetStreamCaps 回傳的 W&H, 再丟到 SetFormat ?
02/26 00:24, 5F

02/27 18:25, , 6F
在getdevice之後addfilter之前加入這段程式
02/27 18:25, 6F

02/27 18:27, , 7F
getstreamcaps 沒用過正在看如何使用 謝謝
02/27 18:27, 7F

02/28 22:10, , 8F
應該在 AddFilter 之後,接起 Output Pin 之前設定。
02/28 22:10, 8F
文章代碼(AID): #1KwT8mIg (C_and_CPP)