IWICPlanarBitmapFrameEncode::WriteSource 方法 (wincodec.h)
將行從來源平面寫入編碼格式。
語法
HRESULT WriteSource(
[in] IWICBitmapSource **ppPlanes,
UINT cPlanes,
WICRect *prcSource
);
參數
[in] ppPlanes
類型: IWICBitmapSource**
指定代表影像平面的 IWICBitmapSource 陣列。
cPlanes
類型: UINT
平面參數所指定的元件平面數目。
prcSource
類型: WICRect*
要從 IWICBitmapSource 平面編碼的圖元來源矩形。 Null 表示整個來源。 來源矩形寬度必須符合透過 SetSize 設定的寬度。 只要累積的來源矩形高度總計與透過 SetSize設定相同,就可以進行重複的 WriteSource呼叫。
傳回值
類型: HRESULT
如果平面和來源矩形不符合需求,此方法會失敗並 WINCODEC_ERR_IMAGESIZEOUTOFRANGE。
如果 IWICBitmapSource 格式不符合編碼器需求,此方法會因為 WINCODEC_ERR_UNSUPPORTEDPIXELFORMAT而失敗。
備註
後續 的 WriteSource 呼叫會假設會循序將掃描線新增至輸出影像。 必須先呼叫 IWICBitmapFrameEncode::Initialize、 IWICBitmapFrameEncode::SetSize 和 IWICBitmapFrameEncode::SetPixelFormat ,否則此方法將會失敗。
透過 IWICBitmapFrameEncode::SetPixelFormat 設定 的交錯像素格式,以及編解碼器特定的編碼參數會決定支援的平面格式。
WIC JPEG 編碼器:QueryInterface 可用來從 WIC JPEG IWICBitmapFrameEncode 實作取得此介面。 使用此方法以 WIC JPEG 編碼器編碼 Y'CbCr 資料時,可以在畫面建立期間使用編碼器選項來設定 chroma 子取樣。 如需詳細資訊,請參閱 編碼概觀 和 IWICBitmapEncoder::CreateNewFrame 。
根據設定的 chroma 子取樣,lineCount 參數有下列限制:
Chroma 子取樣 | X 座標 | Y 座標 | Chroma Width | Chroma Height |
---|---|---|---|---|
4:2:0 | 2 的倍數 | 2 的倍數 | lumaWidth / 2 四捨五入到最接近的整數。 | lumaHeight / 2 四捨五入為最接近的整數。 |
4:2:2 | 2 的倍數 | 任意 | lumaWidth / 2 四捨五入到最接近的整數。 | 任意 |
4:4:4 | 任意 | 任意 | 任意 | 任意 |
4:4:0 | 任意 | 2 的倍數 | lumaWidth | llumaHeight / 2 四捨五入為最接近的整數。 |
完整掃描線寬度必須經過編碼,而點陣圖來源的寬度必須符合其平面設定。
此外,如果像素格式是透過 IWICBitmapFrameEncode::SetPixelFormat 設定,則必須GUID_WICPixelFormat24bppBGR。
傳入此方法之點陣圖來源支援的像素格式如下:
平面計數 | 平面 1 | 平面 2 | 平面 3 |
---|---|---|---|
3 | GUID_WICPixelFormat8bppY | GUID_WICPixelFormat8bppCb | GUID_WICPixelFormat8bppCr |
2 | GUID_WICPixelFormat8bppY | GUID_WICPixelFormat16bppCbCr | N/A |
規格需求
最低支援的用戶端 | Windows 8.1 [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2012 R2 [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | wincodec.h |
程式庫 | Windowscodecs.lib |
Dll | Windowscodecs.dll |