Flutter Engine
The Flutter Engine
|
#include <SkYUVAInfo.h>
Classes | |
struct | YUVALocation |
Public Types | |
enum | YUVAChannels { kY , kU , kV , kA , kLast = kA } |
enum class | PlaneConfig { kUnknown , kY_U_V , kY_V_U , kY_UV , kY_VU , kYUV , kUYV , kY_U_V_A , kY_V_U_A , kY_UV_A , kY_VU_A , kYUVA , kUYVA , kLast = kUYVA } |
enum class | Subsampling { kUnknown , k444 , k422 , k420 , k440 , k411 , k410 , kLast = k410 } |
enum class | Siting { kCentered } |
using | YUVALocations = std::array< YUVALocation, kYUVAChannelCount > |
Static Public Member Functions | |
static std::tuple< int, int > | SubsamplingFactors (Subsampling) |
static std::tuple< int, int > | PlaneSubsamplingFactors (PlaneConfig, Subsampling, int planeIdx) |
static int | PlaneDimensions (SkISize imageDimensions, PlaneConfig, Subsampling, SkEncodedOrigin, SkISize planeDimensions[kMaxPlanes]) |
static constexpr int | NumPlanes (PlaneConfig) |
static constexpr int | NumChannelsInPlane (PlaneConfig, int i) |
static YUVALocations | GetYUVALocations (PlaneConfig, const uint32_t *planeChannelFlags) |
static bool | HasAlpha (PlaneConfig) |
Static Public Attributes | |
static constexpr int | kYUVAChannelCount = static_cast<int>(YUVAChannels::kLast + 1) |
static constexpr int | kMaxPlanes = 4 |
Specifies the structure of planes for a YUV image with optional alpha. The actual planar data is not part of this structure and depending on usage is in external textures or pixmaps.
Definition at line 26 of file SkYUVAInfo.h.
using SkYUVAInfo::YUVALocations = std::array<YUVALocation, kYUVAChannelCount> |
Definition at line 32 of file SkYUVAInfo.h.
|
strong |
Specifies how YUV (and optionally A) are divided among planes. Planes are separated by underscores in the enum value names. Within each plane the pixmap/texture channels are mapped to the YUVA channels in the order specified, e.g. for kY_UV Y is in channel 0 of plane 0, U is in channel 0 of plane 1, and V is in channel 1 of plane 1. Channel ordering within a pixmap/texture given the channels it contains: A: 0:A Luminance/Gray: 0:Gray Luminance/Gray + Alpha: 0:Gray, 1:A RG 0:R, 1:G RGB 0:R, 1:G, 2:B RGBA 0:R, 1:G, 2:B, 3:A
Enumerator | |
---|---|
kUnknown | |
kY_U_V | Plane 0: Y, Plane 1: U, Plane 2: V. |
kY_V_U | Plane 0: Y, Plane 1: V, Plane 2: U. |
kY_UV | Plane 0: Y, Plane 1: UV. |
kY_VU | Plane 0: Y, Plane 1: VU. |
kYUV | Plane 0: YUV. |
kUYV | Plane 0: UYV. |
kY_U_V_A | Plane 0: Y, Plane 1: U, Plane 2: V, Plane 3: A. |
kY_V_U_A | Plane 0: Y, Plane 1: V, Plane 2: U, Plane 3: A. |
kY_UV_A | Plane 0: Y, Plane 1: UV, Plane 2: A. |
kY_VU_A | Plane 0: Y, Plane 1: VU, Plane 2: A. |
kYUVA | Plane 0: YUVA. |
kUYVA | Plane 0: UYVA. |
kLast |
Definition at line 47 of file SkYUVAInfo.h.
|
strong |
Describes how subsampled chroma values are sited relative to luma values.
Currently only centered siting is supported but will expand to support additional sitings.
Enumerator | |
---|---|
kCentered | Subsampled chroma value is sited at the center of the block of corresponding luma values. |
Definition at line 91 of file SkYUVAInfo.h.
|
strong |
UV subsampling is also specified in the enum value names using J:a:b notation (e.g. 4:2:0 is 1/2 horizontal and 1/2 vertical resolution for U and V). If alpha is present it is not sub- sampled. Note that Subsampling values other than k444 are only valid with PlaneConfig values that have U and V in different planes than Y (and A, if present).
Definition at line 73 of file SkYUVAInfo.h.
|
default |
|
default |
SkYUVAInfo::SkYUVAInfo | ( | SkISize | dimensions, |
PlaneConfig | planeConfig, | ||
Subsampling | subsampling, | ||
SkYUVColorSpace | yuvColorSpace, | ||
SkEncodedOrigin | origin = kTopLeft_SkEncodedOrigin , |
||
Siting | sitingX = Siting::kCentered , |
||
Siting | sitingY = Siting::kCentered |
||
) |
'dimensions' should specify the size of the full resolution image (after planes have been oriented to how the image is displayed as indicated by 'origin').
Definition at line 302 of file SkYUVAInfo.cpp.
size_t SkYUVAInfo::computeTotalBytes | ( | const size_t | rowBytes[kMaxPlanes], |
size_t | planeSizes[kMaxPlanes] = nullptr |
||
) | const |
Given a per-plane row bytes, determine size to allocate for all planes. Optionally retrieves the per-plane byte sizes in planeSizes if not null. If total size overflows will return SIZE_MAX and set all planeSizes to SIZE_MAX.
Definition at line 325 of file SkYUVAInfo.cpp.
|
inline |
Dimensions of the full resolution image (after planes have been oriented to how the image is displayed as indicated by fOrigin).
Definition at line 171 of file SkYUVAInfo.h.
|
static |
Given a PlaneConfig and a set of channel flags for each plane, convert to YUVALocations representation. Fails if channel flags aren't valid for the PlaneConfig (i.e. don't have enough channels in a plane) by returning an invalid set of locations (plane indices are -1).
Definition at line 191 of file SkYUVAInfo.cpp.
|
inline |
Definition at line 185 of file SkYUVAInfo.h.
|
static |
Does the PlaneConfig have alpha values?
Definition at line 281 of file SkYUVAInfo.cpp.
|
inline |
Definition at line 173 of file SkYUVAInfo.h.
|
inline |
Definition at line 233 of file SkYUVAInfo.h.
SkYUVAInfo SkYUVAInfo::makeDimensions | ( | SkISize | dimensions | ) | const |
Makes a SkYUVAInfo that is identical to this one but with the passed dimensions. If the passed dimensions is empty then the result will be an invalid SkYUVAInfo.
Definition at line 366 of file SkYUVAInfo.cpp.
SkYUVAInfo SkYUVAInfo::makeSubsampling | ( | SkYUVAInfo::Subsampling | subsampling | ) | const |
Makes a SkYUVAInfo that is identical to this one but with the passed Subsampling. If the passed Subsampling is not k444 and this info's PlaneConfig is not compatible with chroma subsampling (because Y is in the same plane as UV) then the result will be an invalid SkYUVAInfo.
Definition at line 362 of file SkYUVAInfo.cpp.
Definition at line 206 of file SkYUVAInfo.h.
|
staticconstexpr |
Number of Y, U, V, A channels in the ith plane for a given PlaneConfig (or 0 if i is invalid).
Definition at line 272 of file SkYUVAInfo.h.
|
inline |
Definition at line 204 of file SkYUVAInfo.h.
|
staticconstexpr |
Number of planes for a given PlaneConfig.
Definition at line 253 of file SkYUVAInfo.h.
|
inline |
Definition at line 231 of file SkYUVAInfo.h.
|
default |
bool SkYUVAInfo::operator== | ( | const SkYUVAInfo & | that | ) | const |
Definition at line 370 of file SkYUVAInfo.cpp.
|
inline |
Definition at line 179 of file SkYUVAInfo.h.
|
inline |
Definition at line 181 of file SkYUVAInfo.h.
|
inline |
Definition at line 160 of file SkYUVAInfo.h.
|
static |
Given image dimensions, a planer configuration, subsampling, and origin, determine the expected size of each plane. Returns the number of expected planes. planeDimensions[0] through planeDimensions[<ret>] are written. The input image dimensions are as displayed (after the planes have been transformed to the intended display orientation). The plane dimensions are output as the planes are stored in memory (may be rotated from image dimensions).
Definition at line 77 of file SkYUVAInfo.cpp.
Returns the number of planes and initializes planeDimensions[0]..planeDimensions[<ret>] to the expected dimensions for each plane. Dimensions are as stored in memory, before transformation to image display space as indicated by origin().
Definition at line 192 of file SkYUVAInfo.h.
Definition at line 163 of file SkYUVAInfo.h.
|
static |
SubsamplingFactors(Subsampling) if planedIdx refers to a U/V plane and otherwise {1, 1} if inputs are valid. Invalid inputs consist of incompatible PlaneConfig/Subsampling/planeIdx combinations. {0, 0} is returned for invalid inputs.
Definition at line 42 of file SkYUVAInfo.cpp.
|
inline |
Definition at line 176 of file SkYUVAInfo.h.
|
inline |
Definition at line 177 of file SkYUVAInfo.h.
|
inline |
Definition at line 161 of file SkYUVAInfo.h.
|
static |
ratio of Y/A values to U/V values in x and y.
Definition at line 29 of file SkYUVAInfo.cpp.
SkYUVAInfo::YUVALocations SkYUVAInfo::toYUVALocations | ( | const uint32_t * | channelFlags | ) | const |
Given a set of channel flags for each plane, converts this->planeConfig() to YUVALocations representation. Fails if the channel flags aren't valid for the PlaneConfig (i.e. don't have enough channels in a plane) by returning default initialized locations (all plane indices are -1).
Definition at line 358 of file SkYUVAInfo.cpp.
|
inline |
Definition at line 172 of file SkYUVAInfo.h.
|
inline |
Definition at line 175 of file SkYUVAInfo.h.
|
staticconstexpr |
Definition at line 98 of file SkYUVAInfo.h.
|
staticconstexpr |
Definition at line 29 of file SkYUVAInfo.h.