summaryrefslogtreecommitdiff
path: root/nuttx/audio
diff options
context:
space:
mode:
authorGregory Nutt <gnutt@nuttx.org>2014-07-22 15:54:56 -0600
committerGregory Nutt <gnutt@nuttx.org>2014-07-22 15:54:56 -0600
commitf485ee1c197bd29727218dbb68b48df47f816dda (patch)
tree65dca766843dc4befd19d5a83fd295d197d204fa /nuttx/audio
parente793665a9bb98dcb75143f60bacdf958e5128f33 (diff)
downloadnuttx-f485ee1c197bd29727218dbb68b48df47f816dda.tar.gz
nuttx-f485ee1c197bd29727218dbb68b48df47f816dda.tar.bz2
nuttx-f485ee1c197bd29727218dbb68b48df47f816dda.zip
Rename pcm_decode.h to pcm.h since it will hold more than just decoding definitions. Fix some porting errors like idbg should auddbg, etc. Add wav file header and a few low-level wav utilities.
Diffstat (limited to 'nuttx/audio')
-rw-r--r--nuttx/audio/pcm_decode.c49
1 files changed, 48 insertions, 1 deletions
diff --git a/nuttx/audio/pcm_decode.c b/nuttx/audio/pcm_decode.c
index ba817a313..6cf7327fc 100644
--- a/nuttx/audio/pcm_decode.c
+++ b/nuttx/audio/pcm_decode.c
@@ -55,7 +55,7 @@
#include <nuttx/kmalloc.h>
#include <nuttx/audio/audio.h>
-#include <nuttx/audio/pcm_decode.h>
+#include <nuttx/audio/pcm.h>
#if defined(CONFIG_AUDIO) && defined(CONFIG_AUDIO_FORMAT_PCM)
@@ -99,6 +99,10 @@ struct pcm_decode_s
* Private Function Prototypes
****************************************************************************/
+#ifdef CONFIG_PCM_DEBUG
+static void pcm_dump(FAR const struct wav_header_s *wav)
+#endif
+
/* struct audio_lowerhalf_s methods *****************************************/
static int pcm_getcaps(FAR struct audio_lowerhalf_s *dev, int type,
@@ -178,6 +182,49 @@ static int pcm_release(FAR struct audio_lowerhalf_s *dev);
****************************************************************************/
/****************************************************************************
+ * Name: pcm_dump
+ *
+ * Description:
+ * Dump a WAV file header.
+ *
+ ****************************************************************************/
+
+#ifdef CONFIG_PCM_DEBUG
+static void pcm_dump(FAR const struct wav_header_s *wav)
+{
+ printf( "Wave file header\n");
+ printf( " Chunk ID: 0x%08x\n", wav->chkid);
+ printf( " Chunk Size: %u\n", wav->chklen);
+ printf( " Format: 0x%08x\n", wav->format);
+ printf( " SubChunk ID: 0x%08x\n", wav->subchkid1);
+ printf( " Subchunk1 Size: %u\n", wav->subchklen1);
+ printf( " Audio Format: 0x%04x\n", wav->compression);
+ printf( " Num. Channels: %d\n", wav->nchannels);
+ printf( " Sample Rate: %u\n", wav->samprate);
+ printf( " Byte Rate: %u\n", wav->byterate);
+ printf( " Block Align: %d\n", wav->align);
+ printf( " Bits Per Sample: %d\n", wav->bpsamp);
+ printf( " Subchunk2 ID: 0x%08x\n", wav->subchkid2);
+ printf( " Subchunk2 Size: %u\n", wav->subchklen2);
+}
+#endif
+
+/****************************************************************************
+ * Name: pcm_validwav
+ *
+ * Description:
+ * Return true if this is a valid WAV file header
+ *
+ ****************************************************************************/
+
+static inline bool pcm_validwav(FAR const struct wav_header_s *wav)
+{
+ return (wav->chkid == WAV_CHUNKID &&
+ wav->format == WAV_FORMAT &&
+ wav->subchklen1 == WAV_SUBCHKLEN1);
+}
+
+/****************************************************************************
* Name: pcm_getcaps
*
* Description: