2011-10-30 16:05:04 +00:00
|
|
|
#ifndef RBCODECCONFIG_H_INCLUDED
|
|
|
|
#define RBCODECCONFIG_H_INCLUDED
|
|
|
|
|
2013-07-01 19:59:44 +00:00
|
|
|
/* Explicit path to avoid issues with name clashes (libopus) */
|
|
|
|
#include "../firmware/export/config.h"
|
2011-10-30 16:05:04 +00:00
|
|
|
|
|
|
|
#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"
|
|
|
|
|
2013-12-04 16:06:17 +00:00
|
|
|
/* HZ, TIME_AFTER, current_tick */
|
2014-01-05 00:22:19 +00:00
|
|
|
#include "kernel.h"
|
|
|
|
|
2012-05-03 13:54:48 +00:00
|
|
|
/* 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)
|
|
|
|
|
2011-10-30 16:05:04 +00:00
|
|
|
#endif
|
|
|
|
|
2013-05-23 17:58:51 +00:00
|
|
|
#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
|
|
|
|
|
2011-10-30 16:05:04 +00:00
|
|
|
#endif
|