DircetShow transform filter 如何取的frame的高跟寬 |
答題得分者是:ikk
|
chiganlin
一般會員 發表:1 回覆:3 積分:0 註冊:2009-04-02 發送簡訊給我 |
|
ikk
尊榮會員 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
|
chiganlin
一般會員 發表:1 回覆:3 積分:0 註冊:2009-04-02 發送簡訊給我 |
|
ikk
尊榮會員 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
你有這個function嗎?
CheckInputType(const CMediaType *pMediaType) pMediaType就可以取得 [code cpp] // Get the format area of the media type VIDEOINFO *pvi = (VIDEOINFO *) pMediaType->Format(); iBitsPerSample = pvi->bmiHeader.biBitCount; iImageWidth = pvi->bmiHeader.biWidth; iImageHeight = pvi->bmiHeader.biHeight; iSizeImage = pvi->bmiHeader.biSizeImage; [/code]
------
FPGA驗證, FPGA開發平台, http://smims.com |
chiganlin
一般會員 發表:1 回覆:3 積分:0 註冊:2009-04-02 發送簡訊給我 |
恩恩 我有這個函式
typedef struct tagBITMAPINFOHEADER{ DWORD biSize; LONG biWidth; LONG biHeight; WORD biPlanes; WORD biBitCount; DWORD biCompression; DWORD biSizeImage; LONG biXPelsPerMeter; LONG biYPelsPerMeter; DWORD biClrUsed; DWORD biClrImportant; } BITMAPINFOHEADER; typedef struct tagVIDEOINFOHEADER { RECT rcSource; // The bit we really want to use RECT rcTarget; // Where the video should go DWORD dwBitRate; // Approximate bit data rate DWORD dwBitErrorRate; // Bit error rate for this stream REFERENCE_TIME AvgTimePerFrame; // Average time per frame (100ns units) BITMAPINFOHEADER bmiHeader; } VIDEOINFOHEADER; HRESULT CH264Decoder::CheckInputType(const CMediaType *mtIn) { // BYTE* test = mtIn->Format(); VIDEOINFOHEADER * temp; temp =(VIDEOINFOHEADER *) mtIn->Format(); pvi.AvgTimePerFrame = temp->AvgTimePerFrame; pvi.bmiHeader = temp->bmiHeader; if (*mtIn->Type() != MEDIATYPE_Video || *mtIn->Subtype() != MEDIASUBTYPE_264VEDIO) return VFW_E_TYPE_NOT_ACCEPTED; return S_OK; } 我用debug模式,把值show出來看了,但是高寬值的位置好像不對,我列在下面: - temp 0x000dca18 rcSource {top=0 bottom=0 left=0 right=0} rcTarget {top=0 bottom=0 left=0 right=0} dwBitRate 0 dwBitErrorRate 0 AvgTimePerFrame 333666 - bmiHeader {...} biSize 0 biWidth 0 biHeight 0 biPlanes 0 biBitCount 0 biCompression 0 biSizeImage 0 biXPelsPerMeter 40 biYPelsPerMeter 320 biClrUsed 240 biClrImportant 1572865 我也不知道為什麼會這樣,麻煩前輩幫我看一下
編輯記錄
chiganlin 重新編輯於 2009-04-03 10:17:23, 註解 無‧
|
ikk
尊榮會員 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
請用以下code試
[code cpp] // // CheckInputType // // Check if the pin can support this specific proposed type and format // HRESULT CDumpInputPin::CheckInputType(const CMediaType *pMediaType) { if ( IsEqualGUID(*pMediaType->Type(), MEDIATYPE_Video)) { if(pMediaType->formattype == FORMAT_VideoInfo) { // Get the format area of the media type VIDEOINFO *pvi = (VIDEOINFO *) pMediaType->Format(); iBitsPerSample = pvi->bmiHeader.biBitCount; iImageWidth = pvi->bmiHeader.biWidth; iImageHeight = pvi->bmiHeader.biHeight; iSizeImage = pvi->bmiHeader.biSizeImage; return S_OK; } else { return S_FALSE; } } else { return S_FALSE; } } [/code]
------
FPGA驗證, FPGA開發平台, http://smims.com
編輯記錄
ikk 重新編輯於 2009-04-03 10:20:29, 註解 無‧
|
chiganlin
一般會員 發表:1 回覆:3 積分:0 註冊:2009-04-02 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |