ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
ra8_camera_source_memory.c
Go to the documentation of this file.
1
16
18
19#include <stddef.h>
20#include <string.h>
21
22#include "ra8_attributes.h"
23#include "ra8_camera_internal.h"
24#include "ra8_err.h"
25
44{
45 if (ctx == nullptr) {
46 return k_ra8_err_null_ptr;
47 }
48 if (out_info == nullptr) {
49 return k_ra8_err_null_ptr;
50 }
52 *out_info = (ra8_camera_source_info_t){
53 .frame_bytes_max = state->frame.bytes,
54 .stride_bytes = state->frame.stride_bytes,
55 .width = state->frame.width,
56 .height = state->frame.height,
57 .format = state->frame.format,
58 };
59 return k_ra8_ok;
60}
61
82{
83 if (ctx == nullptr) {
84 return k_ra8_err_null_ptr;
85 }
86 if (buffer == nullptr) {
87 return k_ra8_err_null_ptr;
88 }
89 if (out_frame == nullptr) {
90 return k_ra8_err_null_ptr;
91 }
93 if (buffer->capacity < state->frame.bytes) {
95 }
96 (void)memcpy(buffer->data, state->frame.data, (size_t)state->frame.bytes);
97 *out_frame = state->frame;
98 out_frame->data = buffer->data;
99 return k_ra8_ok;
100}
101
107
110 const ra8_camera_frame_t* frame)
111{
112 if (source == nullptr) {
113 return k_ra8_err_null_ptr;
114 }
115 if (state == nullptr) {
116 return k_ra8_err_null_ptr;
117 }
118 if (frame == nullptr) {
119 return k_ra8_err_null_ptr;
120 }
121 const ra8_err_t valid = ra8_camera_frame_validate(frame);
122 if (valid != k_ra8_ok) {
123 return valid;
124 }
125 state->frame = *frame;
126 source->iface = &s_memory_source_iface;
127 source->ctx = state;
128 return k_ra8_ok;
129}
Annotation-attribute framework macros for ra8-firmware.
#define RA8_INTERNAL
Marker that a function is intended to be static (file-local).
static const ra8_audio_source_iface_t s_memory_source_iface
static ra8_err_t internal_memory_get_info(void *ctx, ra8_audio_source_info_t *out_info)
Report metadata for the fixed memory frame.
static ra8_err_t internal_memory_capture(void *ctx, const ra8_audio_buffer_t *buffer, ra8_audio_frame_t *out_frame)
Copy the fixed memory frame into a caller buffer.
ra8_err_t ra8_camera_frame_validate(const ra8_camera_frame_t *frame)
Validate the geometry and storage coverage of a frame view.
Definition ra8_camera.c:61
struct ra8_camera_source_iface ra8_camera_source_iface_t
Opaque source vtable; concrete source backends define its rows.
Definition ra8_camera.h:48
Private source and codec vtables for ra8_camera backends.
static ra8_err_t internal_memory_capture(void *ctx, const ra8_camera_buffer_t *buffer, ra8_camera_frame_t *out_frame)
Copy the fixed frame into the caller's capture buffer.
ra8_err_t ra8_camera_source_memory_init(ra8_camera_source_t *source, ra8_camera_source_memory_state_t *state, const ra8_camera_frame_t *frame)
Bind a repeatable source backed by one immutable frame.
static ra8_err_t internal_memory_get_info(void *ctx, ra8_camera_source_info_t *out_info)
Query the fixed frame's native geometry.
Fixed in-memory frame source backend for ra8_camera.
Error Code Definitions for ra8-firmware.
@ k_ra8_ok
Success – operation completed with all postconditions satisfied.
Definition ra8_err.h:119
@ k_ra8_err_null_ptr
Pointer was NULL where a valid pointer was required.
Definition ra8_err.h:478
@ k_ra8_err_invalid_size
Invalid size parameter (too large, too small, or misaligned).
Definition ra8_err.h:167
ra8_err_codes_t ra8_err_t
Canonical error-return type used by every ra8-firmware API.
Definition ra8_err.h:546
void * memcpy(void *dst, const void *src, size_t n)
Copy memory area between non-overlapping regions.
Caller-owned writable byte-buffer description.
Definition ra8_camera.h:80
uint32_t capacity
Writable byte capacity.
Definition ra8_camera.h:82
uint8_t * data
First writable byte, or NULL when capacity is zero.
Definition ra8_camera.h:81
Immutable view of one captured or encoded image.
Definition ra8_camera.h:96
ra8_camera_format_t format
Pixel or compressed-image layout.
Definition ra8_camera.h:102
const uint8_t * data
Borrowed immutable image bytes.
Definition ra8_camera.h:97
uint32_t bytes
Valid bytes beginning at data.
Definition ra8_camera.h:98
uint16_t height
Image height in pixels.
Definition ra8_camera.h:101
uint16_t width
Image width in pixels.
Definition ra8_camera.h:100
uint32_t stride_bytes
Bytes between uncompressed rows.
Definition ra8_camera.h:99
Native geometry and worst-case storage required by a source.
Definition ra8_camera.h:114
Caller-owned state for a fixed-frame memory source.
ra8_camera_frame_t frame
Borrowed fixed frame (private).
Caller-owned handle binding one source backend and its context.
Definition ra8_camera.h:131
void * ctx
Caller-owned backend context.
Definition ra8_camera.h:133
const ra8_camera_source_iface_t * iface
Bound source vtable (private).
Definition ra8_camera.h:132