MediaX v1.0.0rc7 [7e6cb74]
Video streaming for military vehicles
Loading...
Searching...
No Matches
colourspace.h
Go to the documentation of this file.
1//
2// Copyright (c) 2025, Astute Systems PTY LTD
3//
4// This file is part of the VivoeX project developed by Astute Systems.
5//
6// Licensed under the Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)
7// License. See the LICENSE file in the project root for full license details.
8//
13
14#ifndef UTILS_COLOURSPACE_H_
15#define UTILS_COLOURSPACE_H_
16
17#include <stdint.h>
18
19namespace mediax::video {
20
23 public:
28 ColourSpace() = default;
29
34 virtual ~ColourSpace() = default;
35
44 virtual int RgbToYuv(uint32_t height, uint32_t width, uint8_t *rgb, uint8_t *yuv) const = 0;
45
54 virtual int RgbToMono8(uint32_t height, uint32_t width, uint8_t *rgb, uint8_t *mono8) const = 0;
55
64 virtual int RgbToMono16(uint32_t height, uint32_t width, uint8_t *rgb, uint8_t *mono16) const = 0;
65
74 virtual int RgbaToYuv(uint32_t width, uint32_t height, uint8_t *rgba, uint8_t *yuv) const = 0;
75
84 virtual int RgbaToRgb(uint32_t width, uint32_t height, uint8_t *rgba, uint8_t *rgb) const = 0;
85
94 virtual int RgbaToBgra(uint32_t width, uint32_t height, uint8_t *rgba, uint8_t *bgra) const = 0;
95
104 virtual int RgbToBgra(uint32_t width, uint32_t height, uint8_t *rgba, uint8_t *rgb) const = 0;
105
114 virtual int YuvToBgra(uint32_t height, uint32_t width, uint8_t *yuv, uint8_t *rgba) const = 0;
115
124 virtual int Mono8ToBgra(uint32_t width, uint32_t height, uint8_t *mono8, uint8_t *bgra) const = 0;
125
134 virtual int Mono16ToBgra(uint32_t width, uint32_t height, uint8_t *mono16, uint8_t *bgra) const = 0;
135
144 virtual int RgbToRgba(uint32_t width, uint32_t height, uint8_t *rgb, uint8_t *rgba) const = 0;
145
154 virtual int Yuv422ToRgba(uint32_t height, uint32_t width, uint8_t *yuv422, uint8_t *rgba) const = 0;
155
164 virtual int Yuv420ToRgba(uint32_t height, uint32_t width, uint8_t *yuv420, uint8_t *rgba) const = 0;
165
174 virtual int Mono8ToRgba(uint32_t width, uint32_t height, uint8_t *mono8, uint8_t *rgba) const = 0;
175
185 virtual int Mono8ToRgb(uint32_t width, uint32_t height, uint8_t *mono8, uint8_t *rgb) const = 0;
186
195 virtual int Mono16ToRgba(uint32_t width, uint32_t height, uint8_t *mono16, uint8_t *rgba) const = 0;
196
205 virtual int Mono16ToRgb(uint32_t width, uint32_t height, uint8_t *mono16, uint8_t *rgb) const = 0;
206
215 virtual int YuvToRgb(uint32_t height, uint32_t width, uint8_t *yuv, uint8_t *rgb) const = 0;
216
226 virtual int Yuv420pToRgb(uint32_t height, uint32_t width, uint8_t *yuv, uint8_t *rgb) const = 0;
227
238 virtual int ScaleToSizeRgb(uint32_t source_height, uint32_t source_width, uint8_t *source_rgb_buffer,
239 uint32_t target_height, uint32_t target_width, uint8_t *target_rgb_buffer) const = 0;
240
251 virtual int ScaleToSizeRgba(uint32_t source_height, uint32_t source_width, uint8_t *source_rgb_buffer,
252 uint32_t target_height, uint32_t target_width, uint8_t *target_rgb_buffer) const = 0;
253};
254
255} // namespace mediax::video
256
257#endif // UTILS_COLOURSPACE_H_
Helper functions for different colour space options, base class.
Definition colourspace.h:22
virtual int Yuv420pToRgb(uint32_t height, uint32_t width, uint8_t *yuv, uint8_t *rgb) const =0
Convert YUV:420P to RGB.
virtual int RgbaToBgra(uint32_t width, uint32_t height, uint8_t *rgba, uint8_t *bgra) const =0
Convert RGBA to RGB.
virtual int RgbToMono8(uint32_t height, uint32_t width, uint8_t *rgb, uint8_t *mono8) const =0
Convert RGB to Monochrome 8 bits ber pixel.
virtual int Mono8ToRgba(uint32_t width, uint32_t height, uint8_t *mono8, uint8_t *rgba) const =0
Convert Mono8 to RGBA on the CPU.
virtual int RgbToMono16(uint32_t height, uint32_t width, uint8_t *rgb, uint8_t *mono16) const =0
Convert RGB to Monochrome 16 bits ber pixel.
virtual int RgbaToYuv(uint32_t width, uint32_t height, uint8_t *rgba, uint8_t *yuv) const =0
Convert RGBA to YUV.
virtual int Mono16ToRgb(uint32_t width, uint32_t height, uint8_t *mono16, uint8_t *rgb) const =0
Convert Mono16 to RGBA on the CPU.
virtual int Mono16ToRgba(uint32_t width, uint32_t height, uint8_t *mono16, uint8_t *rgba) const =0
Convert Mono16 to RGBA on the CPU.
virtual int Yuv422ToRgba(uint32_t height, uint32_t width, uint8_t *yuv422, uint8_t *rgba) const =0
Convert YUV to RGBA on the CPU.
ColourSpace()=default
Construct a new Colour Space object.
virtual int RgbToRgba(uint32_t width, uint32_t height, uint8_t *rgb, uint8_t *rgba) const =0
Convert RGB to RGBA on the CPU.
virtual int YuvToBgra(uint32_t height, uint32_t width, uint8_t *yuv, uint8_t *rgba) const =0
Convert YUV to RGBA.
virtual int RgbToBgra(uint32_t width, uint32_t height, uint8_t *rgba, uint8_t *rgb) const =0
Convert RGB to RGBA.
virtual int Mono8ToRgb(uint32_t width, uint32_t height, uint8_t *mono8, uint8_t *rgb) const =0
Convert Mono8 to RGB on the CPU.
virtual int YuvToRgb(uint32_t height, uint32_t width, uint8_t *yuv, uint8_t *rgb) const =0
Convert YUV to RGB.
virtual int RgbaToRgb(uint32_t width, uint32_t height, uint8_t *rgba, uint8_t *rgb) const =0
Convert RGBA to RGB.
virtual int Mono16ToBgra(uint32_t width, uint32_t height, uint8_t *mono16, uint8_t *bgra) const =0
Convert Mono16 to RGBA on the CPU.
virtual int ScaleToSizeRgb(uint32_t source_height, uint32_t source_width, uint8_t *source_rgb_buffer, uint32_t target_height, uint32_t target_width, uint8_t *target_rgb_buffer) const =0
Scale the image to the target size for RGB.
virtual int Mono8ToBgra(uint32_t width, uint32_t height, uint8_t *mono8, uint8_t *bgra) const =0
Convert Mono8 to RGBA on the CPU.
virtual int RgbToYuv(uint32_t height, uint32_t width, uint8_t *rgb, uint8_t *yuv) const =0
Convert YUV to RGBA.
virtual ~ColourSpace()=default
Destroy the Colour Space object.
virtual int ScaleToSizeRgba(uint32_t source_height, uint32_t source_width, uint8_t *source_rgb_buffer, uint32_t target_height, uint32_t target_width, uint8_t *target_rgb_buffer) const =0
Scale the image to the target size for RGBA.
virtual int Yuv420ToRgba(uint32_t height, uint32_t width, uint8_t *yuv420, uint8_t *rgba) const =0
The video functions namespace.
Definition colourspace.h:19