diff options
author | Yuan Tong <tongyuan200097@gmail.com> | 2021-03-20 23:22:08 +0800 |
---|---|---|
committer | Frank Barchard <fbarchard@chromium.org> | 2021-03-31 20:46:02 +0000 |
commit | 8a13626e42f7fdcf3a6acbb0316760ee54cda7d8 (patch) | |
tree | ab34de049749adec1366344b02be882797ace6a4 /include/libyuv/planar_functions.h | |
parent | 2525698acba9bf9b701ba6b4d9584291a1f62257 (diff) | |
download | libyuv-8a13626e42f7fdcf3a6acbb0316760ee54cda7d8.tar.gz |
Add MergeAR30Plane, MergeAR64Plane, MergeARGB16To8Plane
These functions merge high bit depth planar RGB pixels into packed format.
Change-Id: I506935a164b069e6b2fed8bf152cb874310c0916
Bug: libyuv:886, libyuv:889
Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/2780468
Reviewed-by: Frank Barchard <fbarchard@chromium.org>
Commit-Queue: Frank Barchard <fbarchard@chromium.org>
Diffstat (limited to 'include/libyuv/planar_functions.h')
-rw-r--r-- | include/libyuv/planar_functions.h | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/include/libyuv/planar_functions.h b/include/libyuv/planar_functions.h index 85dda98c..def773cb 100644 --- a/include/libyuv/planar_functions.h +++ b/include/libyuv/planar_functions.h @@ -229,6 +229,60 @@ void MergeARGBPlane(const uint8_t* src_r, int width, int height); +// Merge separate 'depth' bit R, G and B planes stored in lsb +// into one interleaved XR30 plane. +// depth should in range [10, 16] +LIBYUV_API +void MergeXR30Plane(const uint16_t* src_r, + int src_stride_r, + const uint16_t* src_g, + int src_stride_g, + const uint16_t* src_b, + int src_stride_b, + uint8_t* dst_ar30, + int dst_stride_ar30, + int width, + int height, + int depth); + +// Merge separate 'depth' bit R, G, B and A planes stored in lsb +// into one interleaved AR64 plane. +// src_a can be NULL to fill opaque value to alpha. +// depth should in range [1, 16] +LIBYUV_API +void MergeAR64Plane(const uint16_t* src_r, + int src_stride_r, + const uint16_t* src_g, + int src_stride_g, + const uint16_t* src_b, + int src_stride_b, + const uint16_t* src_a, + int src_stride_a, + uint16_t* dst_ar64, + int dst_stride_ar64, + int width, + int height, + int depth); + +// Merge separate 'depth' bit R, G, B and A planes stored in lsb +// into one interleaved ARGB plane. +// src_a can be NULL to fill opaque value to alpha. +// depth should in range [8, 16] +LIBYUV_API +void MergeARGB16To8Plane(const uint16_t* src_r, + int src_stride_r, + const uint16_t* src_g, + int src_stride_g, + const uint16_t* src_b, + int src_stride_b, + const uint16_t* src_a, + int src_stride_a, + uint8_t* dst_argb, + int dst_stride_argb, + int width, + int height, + int depth); + // Copy I400. Supports inverting. LIBYUV_API int I400ToI400(const uint8_t* src_y, |