=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/sndiod/dev.c,v retrieving revision 1.29 retrieving revision 1.30 diff -u -r1.29 -r1.30 --- src/usr.bin/sndiod/dev.c 2017/11/03 17:12:59 1.29 +++ src/usr.bin/sndiod/dev.c 2017/11/07 11:41:07 1.30 @@ -1,4 +1,4 @@ -/* $OpenBSD: dev.c,v 1.29 2017/11/03 17:12:59 ratchov Exp $ */ +/* $OpenBSD: dev.c,v 1.30 2017/11/07 11:41:07 ratchov Exp $ */ /* * Copyright (c) 2008-2012 Alexandre Ratchov * @@ -1709,7 +1709,20 @@ enc_init(&s->sub.enc, &s->par, slot_nch); s->sub.encbuf = xmalloc(s->round * slot_nch * sizeof(adata_t)); - enc_sil_do(&s->sub.enc, s->sub.buf.data, s->appbufsz); + } + + /* + * cmap_copy() doesn't write samples in all channels, + * for instance when mono->stereo conversion is + * disabled. So we have to prefill cmap_copy() output + * with silence. + */ + if (s->sub.resampbuf) { + memset(s->sub.resampbuf, 0, + d->round * slot_nch * sizeof(adata_t)); + } else if (s->sub.encbuf) { + memset(s->sub.encbuf, 0, + s->round * slot_nch * sizeof(adata_t)); } else { memset(s->sub.buf.data, 0, s->appbufsz * slot_nch * sizeof(adata_t));