FreeCalypso > hg > gsm-codec-lib
changeset 13:30d1d0a705c0
libtest: add WAV reader helper functions
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 20 Nov 2022 01:34:57 +0000 |
parents | f88817a233fb |
children | 69ed7af28473 |
files | libtest/Makefile libtest/wavrdhelp.c libtest/wavrdhelp.h |
diffstat | 3 files changed, 70 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/libtest/Makefile Sun Nov 20 00:44:26 2022 +0000 +++ b/libtest/Makefile Sun Nov 20 01:34:57 2022 +0000 @@ -1,6 +1,6 @@ CC= gcc CFLAGS= -O2 -OBJS= binreader.o pcmwrite.o wavreader.o wavwriter.o +OBJS= binreader.o pcmwrite.o wavrdhelp.o wavreader.o wavwriter.o LIB= libtest.a all: ${LIB}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libtest/wavrdhelp.c Sun Nov 20 01:34:57 2022 +0000 @@ -0,0 +1,61 @@ +/* + * In this module we implement our helper functions + * on top of the basic WAV reader. + */ + +#include <stdio.h> +#include <stdint.h> +#include "wavreader.h" +#include "wavrdhelp.h" + +int wavrd_check_header(void *wav, const char *filename) +{ + int format, sampleRate, channels, bitsPerSample; + + if (!wav_get_header(wav, &format, &channels, &sampleRate, + &bitsPerSample, NULL)) { + fprintf(stderr, "error: %s is not a valid WAV file\n", + filename); + return -1; + } + if (format != 1) { + fprintf(stderr, "error: %s has unsupported WAV format %d\n", + filename, format); + return -1; + } + if (bitsPerSample != 16) { + fprintf(stderr, + "error: %s has unsupported WAV sample depth %d\n", + filename, bitsPerSample); + return -1; + } + if (channels != 1) { + fprintf(stderr, "error: %s has %d channels, need 1\n", + filename, channels); + return -1; + } + if (sampleRate != 8000) { + fprintf(stderr, + "error: %s has %d Hz sample rate, need 8000 Hz\n", + filename, sampleRate); + return -1; + } + return 0; +} + +int wavrd_get_pcm_block(void *wav, int16_t *pcm) +{ + uint8_t bytes[320], *dp; + int cc, i; + + cc = wav_read_data(wav, bytes, 320); + cc >>= 1; + dp = bytes; + for (i = 0; i < cc; i++) { + pcm[i] = dp[0] | (dp[1] << 8); + dp += 2; + } + while (i < 160) + pcm[i++] = 0; + return cc; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libtest/wavrdhelp.h Sun Nov 20 01:34:57 2022 +0000 @@ -0,0 +1,8 @@ +/* + * We implement a couple of helper functions on top of the WAV reader + * which we've lifted out of opencore-amrnb test code; this header file + * provides prototype declarations for these functions. + */ + +extern int wavrd_check_header(void *wav, const char *filename); +extern int wavrd_get_pcm_block(void *wav, int16_t *pcmbuf);