From acb25b35102dfca08f66e155560f6c99cb8fa841 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 23 Jun 2004 23:17:30 +0000 Subject: main part of the native protocol git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@31 fefdeb5f-60dc-0310-8127-8f9354f1896f --- src/sample.c | 94 ++++-------------------------------------------------------- 1 file changed, 5 insertions(+), 89 deletions(-) (limited to 'src/sample.c') diff --git a/src/sample.c b/src/sample.c index c270f255..2454630c 100644 --- a/src/sample.c +++ b/src/sample.c @@ -1,50 +1,8 @@ -#include #include #include "sample.h" -struct sample_spec default_sample_spec = { - .format = SAMPLE_S16NE, - .rate = 44100, - .channels = 2 -}; - -struct memblock *silence_memblock(struct memblock* b, struct sample_spec *spec) { - assert(b && b->data && spec); - memblock_assert_exclusive(b); - silence_memory(b->data, b->length, spec); - return b; -} - -void silence_memchunk(struct memchunk *c, struct sample_spec *spec) { - assert(c && c->memblock && c->memblock->data && spec && c->length); - memblock_assert_exclusive(c->memblock); - silence_memory(c->memblock->data+c->index, c->length, spec); -} - -void silence_memory(void *p, size_t length, struct sample_spec *spec) { - char c = 0; - assert(p && length && spec); - - switch (spec->format) { - case SAMPLE_U8: - c = 127; - break; - case SAMPLE_S16LE: - case SAMPLE_S16BE: - case SAMPLE_FLOAT32: - c = 0; - break; - case SAMPLE_ALAW: - case SAMPLE_ULAW: - c = 80; - break; - } - - memset(p, c, length); -} - -size_t sample_size(struct sample_spec *spec) { +size_t pa_sample_size(struct pa_sample_spec *spec) { assert(spec); size_t b = 1; @@ -66,56 +24,14 @@ size_t sample_size(struct sample_spec *spec) { return b * spec->channels; } -size_t bytes_per_second(struct sample_spec *spec) { +size_t pa_bytes_per_second(struct pa_sample_spec *spec) { assert(spec); - return spec->rate*sample_size(spec); + return spec->rate*pa_sample_size(spec); } -size_t mix_chunks(struct mix_info channels[], unsigned nchannels, void *data, size_t length, struct sample_spec *spec, uint8_t volume) { - unsigned c, d; - assert(channels && data && length && spec); - assert(spec->format == SAMPLE_S16NE); - - for (d = 0;; d += sizeof(int16_t)) { - int32_t sum = 0; - - if (d >= length) - return d; - - for (c = 0; c < nchannels; c++) { - int32_t v; - uint8_t volume = channels[c].volume; - - if (d >= channels[c].chunk.length) - return d; - - if (volume == 0) - v = 0; - else { - v = *((int16_t*) (channels[c].chunk.memblock->data + channels[c].chunk.index + d)); - - if (volume != 0xFF) - v = v*volume/0xFF; - } - - sum += v; - } - - if (volume == 0) - sum = 0; - else if (volume != 0xFF) - sum = sum*volume/0xFF; - - if (sum < -0x8000) sum = -0x8000; - if (sum > 0x7FFF) sum = 0x7FFF; - - *((int16_t*) data) = sum; - data += sizeof(int16_t); - } -} -uint32_t samples_usec(size_t length, struct sample_spec *spec) { +uint32_t pa_samples_usec(size_t length, struct pa_sample_spec *spec) { assert(spec); - return (uint32_t) (((double) length /sample_size(spec))/spec->rate*1000000); + return (uint32_t) (((double) length /pa_sample_size(spec))/spec->rate*1000000); } -- cgit