# HG changeset patch # User Mychaela Falconia # Date 1668908097 0 # Node ID 30d1d0a705c07f6547e7fa1480b755d60b907abb # Parent f88817a233fb689b456822411c129938d7626e9c libtest: add WAV reader helper functions diff -r f88817a233fb -r 30d1d0a705c0 libtest/Makefile --- 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} diff -r f88817a233fb -r 30d1d0a705c0 libtest/wavrdhelp.c --- /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 +#include +#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; +} diff -r f88817a233fb -r 30d1d0a705c0 libtest/wavrdhelp.h --- /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);