12345678910111213141516171819202122232425262728293031323334353637383940 |
- /*
- * Copyright (c) 2020 Actions Technology Co., Ltd
- *
- * SPDX-License-Identifier: Apache-2.0
- */
- #include <string.h>
- #include <display/sw_draw.h>
- #include <display/display_hal.h>
- 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;
- }
|