IWICPlanarBitmapFrameEncode::WriteSource method

Writes lines from the source planes to the encoded format.

Syntax


HRESULT WriteSource(
  [in]     IWICBitmapSource **ppPlanes,
           UINT             cPlanes,
  [unique] WICRect          *prcSource
);

Parameters

ppPlanes [in]

Type: IWICBitmapSource**

Specifies an array of IWICBitmapSource that represent image planes.

cPlanes

Type: UINT

The number of component planes specified by the planes parameter.

prcSource

Type: WICRect*

The source rectangle of pixels to encode from the IWICBitmapSource planes. Null indicates the entire source. The source rect width must match the width set through SetSize. Repeated WriteSource calls can be made as long as the total accumulated source rect height is the same as set through SetSize.

Return value

Type: HRESULT

If the planes and source rectangle do not meet the requirements, this method fails with WINCODEC_ERR_IMAGESIZEOUTOFRANGE.

If the IWICBitmapSource format does not meet the encoder requirements, this method fails with WINCODEC_ERR_UNSUPPORTEDPIXELFORMAT.

Remarks

Successive WriteSource calls are assumed sequentially add scanlines to the output image. IWICBitmapFrameEncode::Initialize, IWICBitmapFrameEncode::SetSize and IWICBitmapFrameEncode::SetPixelFormat must be called before this method or it will fail.

The interleaved pixel format set via IWICBitmapFrameEncode::SetPixelFormat and the codec specific encode parameters determine the supported planar formats.

WIC JPEG Encoder: QueryInterface can be used to obtain this interface from the WIC JPEG IWICBitmapFrameEncode implementation. When using this method to encode Y’CbCr data with the WIC JPEG encoder, chroma subsampling can be configured with encoder options during frame creation. See the Encoding Overview and IWICBitmapEncoder::CreateNewFrame for more details.

Depending upon the configured chroma subsampling, the lineCount parameter has the following restrictions:

Chroma SubsamplingX CoordinateY CoordinateChroma WidthChroma Height
4:2:0Multiple of 2Multiple of 2lumaWidth / 2 Rounded up to the nearest integer.lumaHeight / 2 Rounded up to the nearest integer.
4:2:2Multiple of 2AnylumaWidth / 2 Rounded up to the nearest integer.Any
4:4:4AnyAnyAnyAny
4:4:0AnyMultiple of 2lumaWidthllumaHeight / 2 Rounded up to the nearest integer.

 

The full scanline width must be encoded, and the width of the bitmap sources must match their planar configuration.

Additionally, if a pixel format is set via IWICBitmapFrameEncode::SetPixelFormat, it must be GUID_WICPixelFormat24bppBGR.

The supported pixel formats of the bitmap sources passed into this method are as follows:

Plane CountPlane 1Plane 2Plane 3
3GUID_WICPixelFormat8bppYGUID_WICPixelFormat8bppCbGUID_WICPixelFormat8bppCr
2GUID_WICPixelFormat8bppYGUID_WICPixelFormat16bppCbCrN/A

 

Requirements

Minimum supported client

Windows 8.1 [desktop apps | Windows Store apps]

Minimum supported server

Windows Server 2012 R2 [desktop apps | Windows Store apps]

Header

Wincodec.h

IDL

Wincodec.idl

Library

Windowscodecs.lib

DLL

Windowscodecs.dll

See also

IWICPlanarBitmapFrameEncode
Encoding Overview
IWICBitmapEncoder::CreateNewFrame

 

 

Show: