[pulseaudio-discuss] [PATCH 3/6 v3] core: Add stereo to mono special case remapping
Peter Meerwald
pmeerw at pmeerw.net
Wed Oct 17 07:20:53 PDT 2012
> > +static void remap_stereo_to_mono_c(pa_remap_t *m, void *dst, const void *src, unsigned n) {
> > + unsigned i;
> > +
> > + switch (*m->format) {
> > + case PA_SAMPLE_FLOAT32NE:
> > + {
> > + float *d = (float *) dst, *s = (float *) src;
> > +
> > + for (i = n >> 2; i > 0; i--) {
> > + d[0] = s[0] + s[1];
> > + d[1] = s[2] + s[3];
> > + d[2] = s[4] + s[5];
> > + d[3] = s[6] + s[7];
> > + s += 8;
> > + d += 4;
> > + }
> > + for (i = n & 3; i; i--) {
> Shouldn't this (and the next case) be (n & 2)?
the first loop processes floor(n/4)*4 elements, the second loop processes
the remaining n % 4 == n & 3 elements
> > + d[0] = s[0] + s[1];
> > + s += 2;
> > + d += 1;
> > + }
> > + break;
> > + }
> > + case PA_SAMPLE_S16NE:
> > + {
> > + int16_t *d = (int16_t *) dst, *s = (int16_t *) src;
> > +
> > + for (i = n >> 2; i > 0; i--) {
> > + *d++ += s[0] + s[1];
> > + *d++ += s[2] + s[3];
> > + *d++ += s[4] + s[5];
> > + *d++ += s[6] + s[7];
> > + s += 8;
> > + }
> Out of curiosity, is there a reason that you index d in the first case
> and increment it in the second?
no; this should be made consistent
I'll collect further comments and send out a v4 in due time
> > + for (i = n & 3; i; i--) {
> > + *d++ += s[0] + s[1];
> > + s += 2;
> > + }
> > + break;
> > + }
> > + default:
> > + pa_assert_not_reached();
> > + }
> > +}
--
Peter Meerwald
+43-664-2444418 (mobile)
More information about the pulseaudio-discuss
mailing list