resampler-test: add tests for 24bit sample formats

This commit is contained in:
Lennart Poettering 2009-05-01 04:18:21 +02:00
parent 76caa270ce
commit 5caf09d4ea

View file

@ -73,6 +73,16 @@ static void dump_block(const pa_sample_spec *ss, const pa_memchunk *chunk) {
break;
}
case PA_SAMPLE_S24_32NE:
case PA_SAMPLE_S24_32RE: {
uint32_t *u = d;
for (i = 0; i < chunk->length / pa_frame_size(ss); i++)
printf("0x%08x ", *(u++));
break;
}
case PA_SAMPLE_FLOAT32NE:
case PA_SAMPLE_FLOAT32RE: {
float *u = d;
@ -85,6 +95,18 @@ static void dump_block(const pa_sample_spec *ss, const pa_memchunk *chunk) {
break;
}
case PA_SAMPLE_S24LE:
case PA_SAMPLE_S24BE: {
uint8_t *u = d;
for (i = 0; i < chunk->length / pa_frame_size(ss); i++) {
printf(" 0x%06x ", PA_READ24NE(u));
u += pa_frame_size(ss);
}
break;
}
default:
pa_assert_not_reached();
}
@ -156,6 +178,23 @@ static pa_memblock* generate_block(pa_mempool *pool, const pa_sample_spec *ss) {
break;
}
case PA_SAMPLE_S24_32NE:
case PA_SAMPLE_S24_32RE: {
uint32_t *u = d;
u[0] = 0x000001;
u[1] = 0xFF0002;
u[2] = 0x7F0003;
u[3] = 0x800004;
u[4] = 0x9f0005;
u[5] = 0x3f0006;
u[6] = 0x107;
u[7] = 0xF00008;
u[8] = 0x2009;
u[9] = 0x210A;
break;
}
case PA_SAMPLE_FLOAT32NE:
case PA_SAMPLE_FLOAT32RE: {
float *u = d;
@ -178,6 +217,23 @@ static pa_memblock* generate_block(pa_mempool *pool, const pa_sample_spec *ss) {
break;
}
case PA_SAMPLE_S24NE:
case PA_SAMPLE_S24RE: {
uint8_t *u = d;
PA_WRITE24NE(u, 0x000001);
PA_WRITE24NE(u+3, 0xFF0002);
PA_WRITE24NE(u+6, 0x7F0003);
PA_WRITE24NE(u+9, 0x800004);
PA_WRITE24NE(u+12, 0x9f0005);
PA_WRITE24NE(u+15, 0x3f0006);
PA_WRITE24NE(u+18, 0x107);
PA_WRITE24NE(u+21, 0xF00008);
PA_WRITE24NE(u+24, 0x2009);
PA_WRITE24NE(u+27, 0x210A);
break;
}
default:
pa_assert_not_reached();
}
@ -205,7 +261,6 @@ int main(int argc, char *argv[]) {
for (a.format = 0; a.format < PA_SAMPLE_MAX; a.format ++) {
for (b.format = 0; b.format < PA_SAMPLE_MAX; b.format ++) {
pa_resampler *forth, *back;
pa_memchunk i, j, k;
@ -223,14 +278,18 @@ int main(int argc, char *argv[]) {
pa_resampler_run(forth, &i, &j);
pa_resampler_run(back, &j, &k);
printf("before: ");
dump_block(&a, &i);
printf("after : ");
dump_block(&b, &j);
printf("reverse: ");
dump_block(&a, &k);
pa_memblock_unref(j.memblock);
pa_memblock_unref(k.memblock);
pa_volume_memchunk(&i, &a, &v);
printf("volume: ");
dump_block(&a, &i);
pa_memblock_unref(i.memblock);