MediaX v1.0.0rc7 [7e6cb74]
Video streaming for military vehicles
Loading...
Searching...
No Matches
colourspace_cpu.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_CPU_H_
15#define UTILS_COLOURSPACE_CPU_H_
16
17#include <stdint.h>
18
19#include "rtp/rtp_types.h"
20#include "utils/colourspace.h"
21
22extern "C" {
23#include "libswscale/swscale.h"
24}
25namespace mediax::video {
26
29 public:
34 ColourSpaceCpu() = default;
35
40 ~ColourSpaceCpu() final = default;
41
54 int Convert(mediax::rtp::Resolution res, uint8_t *in, AVPixelFormat in_format, uint8_t in_bytes, uint8_t *out,
55 AVPixelFormat out_format, uint8_t out_bytes) const;
56
65 int RgbToYuv(uint32_t height, uint32_t width, uint8_t *rgb, uint8_t *yuv) const final;
66
75 int RgbToMono8(uint32_t height, uint32_t width, uint8_t *rgb, uint8_t *mono8) const final;
76
85 int RgbToMono16(uint32_t height, uint32_t width, uint8_t *rgb, uint8_t *mono16) const final;
86
95 int RgbaToYuv(uint32_t width, uint32_t height, uint8_t *rgba, uint8_t *yuv) const final;
96
105 int RgbaToRgb(uint32_t width, uint32_t height, uint8_t *rgba, uint8_t *rgb) const final;
106
116 int RgbaToBgra(uint32_t width, uint32_t height, uint8_t *rgba, uint8_t *bgra) const final;
117
126 int RgbToBgra(uint32_t width, uint32_t height, uint8_t *rgb, uint8_t *bgra) const final;
127
136 int YuvToBgra(uint32_t height, uint32_t width, uint8_t *yuv, uint8_t *bgra) const final;
137
146 int Mono8ToBgra(uint32_t width, uint32_t height, uint8_t *mono8, uint8_t *bgra) const final;
147
156 int Mono16ToBgra(uint32_t width, uint32_t height, uint8_t *mono16, uint8_t *bgra) const final;
157
166 int Nv12ToBgra(uint32_t height, uint32_t width, uint8_t *nv12, uint8_t *bgra) const;
167
177 int Nv12ToRgb(uint32_t height, uint32_t width, uint8_t *nv12, uint8_t *rgb) const;
178
187 int RgbToRgba(uint32_t width, uint32_t height, uint8_t *rgb, uint8_t *rgba) const final;
188
197 int Yuv422ToRgba(uint32_t height, uint32_t width, uint8_t *yuv422, uint8_t *rgba) const final;
198
207 int Yuv420ToRgba(uint32_t height, uint32_t width, uint8_t *yuv420, uint8_t *rgba) const final;
208
217 int Mono8ToRgba(uint32_t width, uint32_t height, uint8_t *mono8, uint8_t *rgba) const final;
218
228 int Mono8ToRgb(uint32_t width, uint32_t height, uint8_t *mono8, uint8_t *rgb) const final;
229
238 int Mono16ToRgba(uint32_t width, uint32_t height, uint8_t *mono16, uint8_t *rgba) const final;
239
248 int Mono16ToRgb(uint32_t width, uint32_t height, uint8_t *mono16, uint8_t *rgb) const final;
249
259 int YuvToArgb(uint32_t height, uint32_t width, uint8_t *yuv, uint8_t *argb) const;
260
269 int YuvToRgb(uint32_t height, uint32_t width, uint8_t *yuv, uint8_t *rgb) const final;
270
279 int Yuv420pToRgb(uint32_t height, uint32_t width, uint8_t *yuv, uint8_t *rgb) const final;
280
291 int ScaleToSizeRgb(uint32_t source_height, uint32_t source_width, uint8_t *source_rgb_buffer, uint32_t target_height,
292 uint32_t target_width, uint8_t *target_rgb_buffer) const final;
293
305 int ScaleToSizeRgba(uint32_t source_height, uint32_t source_width, uint8_t *source_rgb_buffer, uint32_t target_height,
306 uint32_t target_width, uint8_t *target_rgba_buffer) const final;
307
319 int ScaleToSizeBgra(uint32_t source_height, uint32_t source_width, uint8_t *source_rgb_buffer, uint32_t target_height,
320 uint32_t target_width, uint8_t *target_bgra_buffer) const;
321};
322
323} // namespace mediax::video
324
325#endif // UTILS_COLOURSPACE_CPU_H_
Helper functions for different colour space options, optimised for CPU.
Definition colourspace_cpu.h:28
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 final
Scale the image to the target size.
Definition colourspace_cpu.cc:231
int Yuv422ToRgba(uint32_t height, uint32_t width, uint8_t *yuv422, uint8_t *rgba) const final
Convert YUV to RGBA on the CPU.
Definition colourspace_cpu.cc:207
int RgbaToBgra(uint32_t width, uint32_t height, uint8_t *rgba, uint8_t *bgra) const final
Convert RGBA to BGRA on the CPU.
Definition colourspace_cpu.cc:113
int Nv12ToRgb(uint32_t height, uint32_t width, uint8_t *nv12, uint8_t *rgb) const
Construct a new Nv12 To Rgb object.
Definition colourspace_cpu.cc:172
int YuvToArgb(uint32_t height, uint32_t width, uint8_t *yuv, uint8_t *argb) const
Convert YUV to RGBA on the CPU.
Definition colourspace_cpu.cc:199
int Mono16ToRgb(uint32_t width, uint32_t height, uint8_t *mono16, uint8_t *rgb) const final
Convert Mono16 to RGBA on the CPU.
Definition colourspace_cpu.cc:227
int RgbToMono8(uint32_t height, uint32_t width, uint8_t *rgb, uint8_t *mono8) const final
Convert RGB to Monochrome 8 bits ber pixel on the CPU.
Definition colourspace_cpu.cc:125
~ColourSpaceCpu() final=default
Destroy the Colour Space Cpu object.
int RgbaToYuv(uint32_t width, uint32_t height, uint8_t *rgba, uint8_t *yuv) const final
Convert RGBA to YUV on the CPU.
Definition colourspace_cpu.cc:117
int Mono8ToBgra(uint32_t width, uint32_t height, uint8_t *mono8, uint8_t *bgra) const final
Convert Mono8 to RGBA on the CPU.
Definition colourspace_cpu.cc:137
int Convert(mediax::rtp::Resolution res, uint8_t *in, AVPixelFormat in_format, uint8_t in_bytes, uint8_t *out, AVPixelFormat out_format, uint8_t out_bytes) const
Convert the image from one format to another.
Definition colourspace_cpu.cc:28
int Yuv420ToRgba(uint32_t height, uint32_t width, uint8_t *yuv420, uint8_t *rgba) const final
Convert YUV420P to RGBA on the CPU.
Definition colourspace_cpu.cc:211
int RgbToBgra(uint32_t width, uint32_t height, uint8_t *rgb, uint8_t *bgra) const final
Convert RGB to RGBA on the CPU.
Definition colourspace_cpu.cc:133
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_rgba_buffer) const final
Scale the image to the target size.
Definition colourspace_cpu.cc:258
int RgbToYuv(uint32_t height, uint32_t width, uint8_t *rgb, uint8_t *yuv) const final
Convert YUV to RGBA on the CPU.
Definition colourspace_cpu.cc:121
int RgbToMono16(uint32_t height, uint32_t width, uint8_t *rgb, uint8_t *mono16) const final
Convert RGB to Monochrome 16 bits ber pixel on the CPU.
Definition colourspace_cpu.cc:129
int Mono8ToRgba(uint32_t width, uint32_t height, uint8_t *mono8, uint8_t *rgba) const final
Convert Mono8 to RGBA on the CPU.
Definition colourspace_cpu.cc:215
ColourSpaceCpu()=default
Construct a new Colour Space object.
int Mono16ToRgba(uint32_t width, uint32_t height, uint8_t *mono16, uint8_t *rgba) const final
Convert Mono16 to RGBA on the CPU.
Definition colourspace_cpu.cc:223
int RgbaToRgb(uint32_t width, uint32_t height, uint8_t *rgba, uint8_t *rgb) const final
Convert RGBA to RGB on the CPU.
Definition colourspace_cpu.cc:109
int Nv12ToBgra(uint32_t height, uint32_t width, uint8_t *nv12, uint8_t *bgra) const
Construct a new Nv12 To Bgra object.
Definition colourspace_cpu.cc:145
int YuvToBgra(uint32_t height, uint32_t width, uint8_t *yuv, uint8_t *bgra) const final
Convert YUV to RGBA on the CPU.
Definition colourspace_cpu.cc:105
int ScaleToSizeBgra(uint32_t source_height, uint32_t source_width, uint8_t *source_rgb_buffer, uint32_t target_height, uint32_t target_width, uint8_t *target_bgra_buffer) const
Scale the image to the target size.
Definition colourspace_cpu.cc:285
int YuvToRgb(uint32_t height, uint32_t width, uint8_t *yuv, uint8_t *rgb) const final
Convert YUV to RGB on the CPU.
Definition colourspace_cpu.cc:55
int Mono16ToBgra(uint32_t width, uint32_t height, uint8_t *mono16, uint8_t *bgra) const final
Convert Mono16 to RGBA on the CPU.
Definition colourspace_cpu.cc:141
int Yuv420pToRgb(uint32_t height, uint32_t width, uint8_t *yuv, uint8_t *rgb) const final
Convert YUV to RGBA on the CPU.
Definition colourspace_cpu.cc:63
int Mono8ToRgb(uint32_t width, uint32_t height, uint8_t *mono8, uint8_t *rgb) const final
Convert Mono8 to RGB on the CPU.
Definition colourspace_cpu.cc:219
int RgbToRgba(uint32_t width, uint32_t height, uint8_t *rgb, uint8_t *rgba) const final
Convert RGB to RGBA on the CPU.
Definition colourspace_cpu.cc:203
Helper functions for different colour space options, base class.
Definition colourspace.h:22
Functions to convert between different colour spaces.
The video functions namespace.
Definition colourspace.h:19
The Astute Systems (MediaX) library for video streaming.
Definition rtp_av1_depayloader.cc:34
RTP streaming video types.
The video resolution structure.
Definition datatypes.h:34