ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
ra8_camera_stream.c
Go to the documentation of this file.
1
16
17#include "ra8_camera_stream.h"
18
19#include <stddef.h>
20#include <stdint.h>
21
22#include "ra8_camera.h"
23#include "ra8_err.h"
24#include "ra8_io_stream.h"
25
27 const ra8_camera_frame_t* input,
28 const ra8_camera_buffer_t* output_buffer,
29 ra8_io_stream_t* stream,
30 uint32_t* out_written)
31{
32 if (stream == nullptr) {
33 return k_ra8_err_null_ptr;
34 }
35 if (out_written != nullptr) {
36 *out_written = 0U;
37 }
38 ra8_camera_frame_t encoded = {};
39 const ra8_err_t codec_err = ra8_camera_codec_encode(codec, input, output_buffer, &encoded);
40 if (codec_err != k_ra8_ok) {
41 return codec_err;
42 }
43 uint32_t written = 0U;
44 const ra8_err_t stream_err = ra8_io_stream_write(stream, encoded.data, encoded.bytes, &written);
45 if (out_written != nullptr) {
46 *out_written = written;
47 }
48 if (stream_err != k_ra8_ok) {
49 return stream_err;
50 }
51 return (written == encoded.bytes) ? k_ra8_ok : k_ra8_err_invalid_size;
52}
Transport-neutral camera source and image-codec facade.
ra8_err_t ra8_camera_codec_encode(ra8_camera_codec_t *codec, const ra8_camera_frame_t *input, const ra8_camera_buffer_t *output_buffer, ra8_camera_frame_t *out_frame)
Encode or transform one frame through a bound codec.
Definition ra8_camera.c:187
ra8_err_t ra8_camera_codec_encode_to_stream(ra8_camera_codec_t *codec, const ra8_camera_frame_t *input, const ra8_camera_buffer_t *output_buffer, ra8_io_stream_t *stream, uint32_t *out_written)
Encode one frame and write the complete result to a byte stream.
Bridge encoded camera frames to ra8_io_stream sinks.
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
ra8_io targetable byte-stream facade – one writer, many destinations.
ra8_err_t ra8_io_stream_write(ra8_io_stream_t *s, const uint8_t *buf, uint32_t len, uint32_t *out_written)
Write len bytes to the bound sink.
Caller-owned writable byte-buffer description.
Definition ra8_camera.h:80
Caller-owned handle binding one image codec and its context.
Definition ra8_camera.h:145
Immutable view of one captured or encoded image.
Definition ra8_camera.h:96
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
Caller-allocated byte-stream handle binding a sink to its context.