ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
ra8_jpeg_sw.h
Go to the documentation of this file.
1
37
38#pragma once
39
40#ifdef __cplusplus
41extern "C" {
42#endif
43
44#include <stddef.h>
45#include <stdint.h>
46
47#include "ra8_err.h"
48
59typedef enum : uint8_t {
62
80
136[[nodiscard]] ra8_err_t ra8_jpeg_sw_get_dimensions(const uint8_t* jpeg_buf,
137 uint32_t jpeg_len,
138 uint16_t* out_w,
139 uint16_t* out_h);
140
196[[nodiscard]] ra8_err_t ra8_jpeg_sw_decode(const uint8_t* jpeg_buf,
197 uint32_t jpeg_len,
198 uint8_t* out_buf,
199 uint32_t out_buf_len,
200 uint16_t* out_w,
201 uint16_t* out_h);
202
263[[nodiscard]] ra8_err_t ra8_jpeg_sw_encode(const uint8_t* rgb_buf,
264 uint16_t width,
265 uint16_t height,
266 uint8_t quality,
267 uint8_t* out_buf,
268 uint32_t out_buf_len,
269 uint32_t* out_len);
270
271/* ------------------------------------------------------------------ */
272/* Streaming stripe decode (#231): bounded-RAM MCU-row decoding */
273/* ------------------------------------------------------------------ */
274
293
310typedef ra8_err_t (*ra8_jpeg_sw_pull_fn)(void* ctx, uint8_t* buf, size_t cap, size_t* got);
311
335typedef ra8_err_t (*ra8_jpeg_sw_geom_fn)(void* ctx,
336 uint16_t width,
337 uint16_t height,
338 uint8_t channels,
339 uint16_t stripe_rows,
340 uint8_t** out_stripe,
341 uint32_t* out_stripe_cap);
342
363typedef ra8_err_t (*ra8_jpeg_sw_rows_fn)(void* ctx,
364 const uint8_t* px,
365 uint16_t width,
366 uint16_t y0,
367 uint16_t nrows,
368 uint8_t channels);
369
379
429 void* pull_ctx,
430 uint8_t* window,
431 uint32_t window_cap,
432 ra8_jpeg_sw_geom_fn on_geom,
433 ra8_jpeg_sw_rows_fn on_rows,
434 void* cb_ctx);
435
436#ifdef __cplusplus
437}
438#endif
Error Code Definitions for ra8-firmware.
ra8_err_codes_t ra8_err_t
Canonical error-return type used by every ra8-firmware API.
Definition ra8_err.h:546
ra8_jpeg_sw_quality_t
Convenience quality presets for ra8_jpeg_sw_encode().
Definition ra8_jpeg_sw.h:73
@ k_ra8_jpeg_sw_quality_default
IJG cjpeg default.
Definition ra8_jpeg_sw.h:76
@ k_ra8_jpeg_sw_quality_high
Visually lossless on photos.
Definition ra8_jpeg_sw.h:77
@ k_ra8_jpeg_sw_quality_min
Lowest legal quality.
Definition ra8_jpeg_sw.h:74
@ k_ra8_jpeg_sw_quality_max
Largest legal quality.
Definition ra8_jpeg_sw.h:78
@ k_ra8_jpeg_sw_quality_low
IJG default lower bound.
Definition ra8_jpeg_sw.h:75
ra8_jpeg_sw_stream_geom_t
Stripe geometry constant exposed for consumer buffer sizing.
@ k_ra8_jpeg_sw_stream_mcu_rows_max
Max rows per stripe (4:2:0).
ra8_jpeg_sw_stream_limits_t
Sizing floors for the streaming stripe decoder.
@ k_ra8_jpeg_sw_stream_scan_margin
Refill trigger, bytes.
@ k_ra8_jpeg_sw_stream_min_window
Minimum window bytes.
ra8_err_t(* ra8_jpeg_sw_pull_fn)(void *ctx, uint8_t *buf, size_t cap, size_t *got)
Forward byte source for the streaming decoder (DIP seam).
ra8_err_t ra8_jpeg_sw_decode_stripes(ra8_jpeg_sw_pull_fn pull, void *pull_ctx, uint8_t *window, uint32_t window_cap, ra8_jpeg_sw_geom_fn on_geom, ra8_jpeg_sw_rows_fn on_rows, void *cb_ctx)
Decode a baseline JPEG in bounded RAM, one MCU-row stripe at a time.
ra8_err_t(* ra8_jpeg_sw_rows_fn)(void *ctx, const uint8_t *px, uint16_t width, uint16_t y0, uint16_t nrows, uint8_t channels)
Stripe sink: receives each completed run of decoded pixel rows.
ra8_err_t(* ra8_jpeg_sw_geom_fn)(void *ctx, uint16_t width, uint16_t height, uint8_t channels, uint16_t stripe_rows, uint8_t **out_stripe, uint32_t *out_stripe_cap)
Geometry callback: fires once, right after SOF0 parses.
ra8_jpeg_sw_pixfmt_t
Output pixel layout produced by ra8_jpeg_sw_decode().
Definition ra8_jpeg_sw.h:59
@ k_ra8_jpeg_sw_pixfmt_rgb888
24-bit packed R,G,B per pixel.
Definition ra8_jpeg_sw.h:60
ra8_err_t ra8_jpeg_sw_get_dimensions(const uint8_t *jpeg_buf, uint32_t jpeg_len, uint16_t *out_w, uint16_t *out_h)
Parse the SOF0 marker of a JPEG stream and report its image dimensions without performing entropy dec...
ra8_err_t ra8_jpeg_sw_decode(const uint8_t *jpeg_buf, uint32_t jpeg_len, uint8_t *out_buf, uint32_t out_buf_len, uint16_t *out_w, uint16_t *out_h)
Decode a baseline JPEG stream into packed RGB888.
ra8_err_t ra8_jpeg_sw_encode(const uint8_t *rgb_buf, uint16_t width, uint16_t height, uint8_t quality, uint8_t *out_buf, uint32_t out_buf_len, uint32_t *out_len)
Encode a packed RGB888 frame as a baseline JPEG.