/* * Copyright (c) 2020 Actions Technology Co., Ltd * * SPDX-License-Identifier: Apache-2.0 */ #include #include #include static inline void cvt_buf_argb8888_to_bgr888(void * dest, const void * src, uint32_t len) { uint8_t *dest8 = dest; const uint8_t *src8 = src; for (; len > 0; len--) { *dest8++ = src8[2]; *dest8++ = src8[1]; *dest8++ = src8[0]; src8 += 4; } } int sw_convert_color_buffer(void * dest_buf, uint32_t dest_cf, const void * src_buf, uint32_t src_cf, uint32_t len) { if (dest_cf == src_cf) { uint8_t px_size = hal_pixel_format_get_bits_per_pixel(dest_cf); memcpy(dest_buf, src_buf, px_size * len); return 0; } if (dest_cf == HAL_PIXEL_FORMAT_BGR_888) { if (src_cf == HAL_PIXEL_FORMAT_ARGB_8888 || src_cf == HAL_PIXEL_FORMAT_XRGB_8888) { cvt_buf_argb8888_to_bgr888(dest_buf, src_buf, len); return 0; } } return -ENOSYS; }