spek

Acoustic spectrum analyser
git clone http://git.hanabi.in/repos/spek.git
Log | Files | Refs | README

commit 389fed7a147070b32c736e5313236d56df7c624a
parent b1b102044e625bad87c5664c1c8fe26ffddd71f0
Author: Alexander Kojevnikov <alexander@kojevnikov.com>
Date:   Sun, 10 Feb 2013 20:48:53 -0800

Measure sample width in bytes

Diffstat:
Msrc/spek-audio.cc | 5++---
Msrc/spek-pipeline.cc | 10+++++-----
2 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/src/spek-audio.cc b/src/spek-audio.cc @@ -116,7 +116,7 @@ struct spek_audio_context * spek_audio_open(const char *path) return cx; } cx->is_planar = av_sample_fmt_is_planar(cx->codec_context->sample_fmt); - cx->properties.width = 8 * av_get_bytes_per_sample(cx->codec_context->sample_fmt); + cx->properties.width = av_get_bytes_per_sample(cx->codec_context->sample_fmt); switch (cx->codec_context->sample_fmt) { case AV_SAMPLE_FMT_S16: case AV_SAMPLE_FMT_S16P: @@ -176,8 +176,7 @@ int spek_audio_read(struct spek_audio_context *cx) { } // We have data, return it and come back for more later. int buffer_size = - cx->frame->nb_samples * cx->properties.channels * - (cx->properties.width / 8); + cx->frame->nb_samples * cx->properties.channels * cx->properties.width; if (buffer_size > cx->buffer_size) { cx->properties.buffer = (uint8_t*)av_realloc(cx->properties.buffer, buffer_size); cx->buffer_size = buffer_size; diff --git a/src/spek-pipeline.cc b/src/spek-pipeline.cc @@ -200,7 +200,7 @@ static void * reader_func(void *pp) } int pos = 0, prev_pos = 0; - int block_size = p->properties->width * p->properties->channels / 8; + int block_size = p->properties->width * p->properties->channels; int size; while ((size = spek_audio_read(p->cx)) > 0) { if (p->quit) break; @@ -342,26 +342,26 @@ static float average_input(const struct spek_pipeline *p, void *buffer) int channels = p->properties->channels; float res = 0.0f; if (p->properties->fp) { - if (p->properties->width == 32) { + if (p->properties->width == 4) { float *b = (float*)buffer; for (int i = 0; i < channels; i++) { res += b[i]; } } else { - assert(p->properties->width == 64); + assert(p->properties->width == 8); double *b = (double*)buffer; for (int i = 0; i < channels; i++) { res += (float) b[i]; } } } else { - if (p->properties->width == 16) { + if (p->properties->width == 2) { int16_t *b = (int16_t*)buffer; for (int i = 0; i < channels; i++) { res += b[i] / (float) INT16_MAX; } } else { - assert (p->properties->width == 32); + assert (p->properties->width == 4); int32_t *b = (int32_t*)buffer; for (int i = 0; i < channels; i++) { res += b[i] / (float) INT32_MAX;