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::InitializeIWICBitmapFrameEncode::SetSizeIWICBitmapFrameEncode::SetPixelFormat,否则此方法将失败。

通过 IWICBitmapFrameEncode::SetPixelFormat 设置的交错像素格式和编解码器特定的编码参数确定支持的平面格式。

WIC JPEG 编码器:QueryInterface 可用于从 WIC JPEG IWICBitmapFrameEncode 实现获取此接口。 使用此方法使用 WIC JPEG 编码器对 Y'CbCr 数据进行编码时,可以在帧创建期间使用编码器选项配置色度子采样。 有关更多详细信息,请参阅 编码概述IWICBitmapEncoder::CreateNewFrame

根据配置的色度子采样,lineCount 参数具有以下限制:

色度子采样 X 坐标 Y 坐标 色度宽度 色度高度
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
Library Windowscodecs.lib
DLL Windowscodecs.dll

另请参阅

编码概述

IWICBitmapEncoder::CreateNewFrame

IWICPlanarBitmapFrameEncode