| #ifndef RBCODECCONFIG_H_INCLUDED |
| #define RBCODECCONFIG_H_INCLUDED |
| |
| /* Explicit path to avoid issues with name clashes (libopus) */ |
| #include "../firmware/export/config.h" |
| |
| #ifndef __ASSEMBLER__ |
| |
| /* NULL, offsetof, size_t */ |
| #include <stddef.h> |
| |
| /* ssize_t, off_t, open, close, read, lseek, SEEK_SET, SEEK_CUR, SEEK_END, |
| * O_RDONLY, O_WRONLY, O_CREAT, O_APPEND, MAX_PATH, filesize */ |
| #include "file.h" |
| |
| /* {,u}int{8,16,32,64}_t, , intptr_t, uintptr_t, bool, true, false, swap16, |
| * swap32, hto{be,le}{16,32}, {be,le}toh{16,32}, ROCKBOX_{BIG,LITTLE}_ENDIAN, |
| * {,U}INT{8,16,32,64}_{MIN,MAX} */ |
| #include "system.h" |
| |
| /* HZ, TIME_AFTER, current_tick */ |
| #include "kernel.h" |
| |
| /* Structure to record some info during processing call */ |
| struct dsp_loop_context |
| { |
| long last_yield; |
| #ifdef CPU_COLDFIRE |
| unsigned long old_macsr; |
| #endif |
| }; |
| |
| static inline void dsp_process_start(struct dsp_loop_context *ctx) |
| { |
| /* At least perform one yield before starting */ |
| ctx->last_yield = current_tick; |
| yield(); |
| #if defined(CPU_COLDFIRE) |
| /* set emac unit for dsp processing, and save old macsr, we're running in |
| codec thread context at this point, so can't clobber it */ |
| ctx->old_macsr = coldfire_get_macsr(); |
| coldfire_set_macsr(EMAC_FRACTIONAL | EMAC_SATURATE); |
| #endif |
| } |
| |
| static inline void dsp_process_loop(struct dsp_loop_context *ctx) |
| { |
| /* Yield at least once each tick */ |
| long tick = current_tick; |
| if (TIME_AFTER(tick, ctx->last_yield)) |
| { |
| ctx->last_yield = tick; |
| yield(); |
| } |
| } |
| |
| static inline void dsp_process_end(struct dsp_loop_context *ctx) |
| { |
| #if defined(CPU_COLDFIRE) |
| /* set old macsr again */ |
| coldfire_set_macsr(ctx->old_macsr); |
| #endif |
| (void)ctx; |
| } |
| |
| #define DSP_PROCESS_START() \ |
| struct dsp_loop_context __ctx; \ |
| dsp_process_start(&__ctx) |
| |
| #define DSP_PROCESS_LOOP() \ |
| dsp_process_loop(&__ctx) |
| |
| #define DSP_PROCESS_END() \ |
| dsp_process_end(&__ctx) |
| |
| #endif |
| |
| #define DSP_OUT_MIN_HZ PLAY_SAMPR_HW_MIN |
| #define DSP_OUT_MAX_HZ PLAY_SAMPR_MAX |
| #define DSP_OUT_DEFAULT_HZ PLAY_SAMPR_DEFAULT |
| |
| #endif |