summaryrefslogtreecommitdiffstats
path: root/parecord/audio_types.c
diff options
context:
space:
mode:
Diffstat (limited to 'parecord/audio_types.c')
-rw-r--r--parecord/audio_types.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/parecord/audio_types.c b/parecord/audio_types.c
index 916a5cf..eda78bd 100644
--- a/parecord/audio_types.c
+++ b/parecord/audio_types.c
@@ -7,6 +7,23 @@ static const struct audio_types_info support_types[] = {
{NULL, 0}
};
+static const struct audio_formats_info support_formats[] = {
+ {"U8", PA_SAMPLE_U8},
+ {"A_LAW", PA_SAMPLE_ALAW},
+ {"MU_LAW", PA_SAMPLE_ULAW},
+ {"S16_LE", PA_SAMPLE_S16LE},
+ {"S16_BE", PA_SAMPLE_S16BE},
+ {"FLOAT32_LE", PA_SAMPLE_FLOAT32LE},
+ {"FLOAT32_BE", PA_SAMPLE_FLOAT32BE},
+ {"S32_LE", PA_SAMPLE_S32LE},
+ {"S32_BE", PA_SAMPLE_S32BE},
+ {"S24_LE", PA_SAMPLE_S24LE},
+ {"S24_BE", PA_SAMPLE_S24BE},
+ {"S24_32LE", PA_SAMPLE_S24_32LE},
+ {"S24_32BE", PA_SAMPLE_S24_32BE},
+ {NULL, 0}
+};
+
struct wav_header *init_wav_header(struct wav_header *header,
uint32_t size, uint16_t audioFormat, uint16_t numChannels,
uint32_t sampleRate, uint32_t bitsPerSample)
@@ -43,4 +60,16 @@ int checkAudioType(char *source)
off_t getOffset(int format)
{
return support_types[format].rsv_bytes;
+}
+
+pa_sample_format_t checkAudioFormat(char *source)
+{
+ int i;
+ for(i = 0; support_formats[i].name != NULL; i++) {
+ if(strcmp(source, support_formats[i].name) == 0) {
+ return support_formats[i].pa_format;
+ }
+ }
+
+ return PA_SAMPLE_INVALID;
} \ No newline at end of file