summaryrefslogtreecommitdiff
path: root/firmware/export
diff options
context:
space:
mode:
authorMichael Sevakis <jethead71@rockbox.org>2007-06-08 23:42:04 +0000
committerMichael Sevakis <jethead71@rockbox.org>2007-06-08 23:42:04 +0000
commit2d48d0ffa6baddd19e6ff077f25068f90af7be3d (patch)
tree68c80646a748496fee423d77aa43afafb783b269 /firmware/export
parenta85793fc54a0079f5483d5a5c6c60b7d17ca688c (diff)
Straighten out some audio path APIs and misc. audio stuff. Having recording is not a prerequisite to having input/output source selection which is probably most useful when adding a audio input features like FM to a new port without forcing recording to be implemented first.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13599 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/export')
-rw-r--r--firmware/export/audio.h20
-rw-r--r--firmware/export/config_caps.h9
-rw-r--r--firmware/export/spdif.h8
3 files changed, 29 insertions, 8 deletions
diff --git a/firmware/export/audio.h b/firmware/export/audio.h
index a79a734e29..e6fed90069 100644
--- a/firmware/export/audio.h
+++ b/firmware/export/audio.h
@@ -194,12 +194,7 @@ void audio_record(const char *filename);
void audio_stop_recording(void);
void audio_pause_recording(void);
void audio_resume_recording(void);
-#if CONFIG_CODEC == SWCODEC
-static inline void audio_new_file(const char *filename)
- { audio_record(filename); }
-#else
void audio_new_file(const char *filename);
-#endif /* CONFIG_CODEC == SWCODEC */
void audio_set_recording_options(struct audio_recording_options *options);
void audio_set_recording_gain(int left, int right, int type);
unsigned long audio_recorded_time(void);
@@ -211,11 +206,22 @@ unsigned long audio_num_recorded_bytes(void);
bool audio_load_encoder(int afmt);
void audio_remove_encoder(void);
unsigned char *audio_get_recording_buffer(size_t *buffer_size);
-void audio_set_source(int source, unsigned flags);
-void audio_set_output_source(int source);
#endif /* CONFIG_CODEC == SWCODEC */
+
#endif /* HAVE_RECORDING */
+#if CONFIG_CODEC == SWCODEC
+/* SWCODEC misc. audio functions */
+#if INPUT_SRC_CAPS != 0
+/* audio.c */
+void audio_set_input_source(int source, unsigned flags);
+/* audio_input_mux: target-specific implementation used by audio_set_source
+ to set hardware inputs and audio paths */
+void audio_input_mux(int source, unsigned flags);
+void audio_set_output_source(int source);
+#endif /* INPUT_SRC_CAPS */
+#endif /* CONFIG_CODEC == SWCODEC */
+
#ifdef HAVE_SPDIF_IN
/* returns index into rec_master_sampr_list */
int audio_get_spdif_sample_rate(void);
diff --git a/firmware/export/config_caps.h b/firmware/export/config_caps.h
index 8e3832d3a7..62cae8f8d8 100644
--- a/firmware/export/config_caps.h
+++ b/firmware/export/config_caps.h
@@ -66,6 +66,10 @@
#define HAVE_FMRADIO_IN_(...)
#endif
+#if INPUT_SRC_CAPS != 0 && (INPUT_SRC_CAPS & (INPUT_SRC_CAPS-1)) != 0
+#define HAVE_MULTI_INPUT_SRC
+#endif
+
#ifdef HAVE_RECORDING
/* Recordable source implies it has the input as well */
@@ -104,4 +108,9 @@
#else
#define HAVE_FMRADIO_REC_(...)
#endif
+
+#if REC_SRC_CAPS != 0 && (REC_SRC_CAPS & (REC_SRC_CAPS-1)) != 0
+#define HAVE_MULTI_REC_SRC
+#endif
+
#endif /* HAVE_RECORDING */
diff --git a/firmware/export/spdif.h b/firmware/export/spdif.h
index f4712fb88f..4179c7873f 100644
--- a/firmware/export/spdif.h
+++ b/firmware/export/spdif.h
@@ -20,6 +20,12 @@
#ifndef SPDIF_H
#define SPDIF_H
+#ifdef HAVE_SPDIF_POWER
+#define IF_SPDIF_POWER_(...) __VA_ARGS__
+#else
+#define IF_SPDIF_POWER_(...)
+#endif
+
/* Initialize the S/PDIF driver */
void spdif_init(void);
/* Return the S/PDIF frequency in herz - unrounded */
@@ -27,7 +33,7 @@ unsigned long spdif_measure_frequency(void);
#ifdef HAVE_SPDIF_OUT
/* Set the S/PDIF audio feed - Use AUDIO_SRC_* values -
will be off if not powered or !on */
-void spdif_set_output_source(int source, bool on);
+void spdif_set_output_source(int source IF_SPDIF_POWER_(, bool on));
/* Return the last set S/PDIF audio source - literally the last value passed
to spdif_set_monitor regardless of power state */
int spdif_get_output_source(bool *src_on);