>
> Are you sure about sizeof(n_bytes) here? That's 4. ;-)
>
my bad!
>
> Volker's point was that "silence" is the center of the wave range. With
> signed
> range that's zero, yes, but with unsigned range that's 2^(bitdepth) / 2.
>
> So you need to memset() the correct value to generate "silence".
>
I understand now, Thanks. I guess it should work for signed range, so I
would do:
@@ -117,7 +117,9 @@ playback_on_process(void *data)
}
if (avail == 0) {
- memset(p, 0, n_bytes);
+ memset(p, 0, (int32_t) n_bytes);
CMIIW
Thanks,
Dorinda.
On Mon, Mar 13, 2023 at 2:37 PM Christian Schoenebeck <
[email protected]> wrote:
> On Monday, March 13, 2023 2:11:11 PM CET Dorinda Bassey wrote:
> > Hi Volker,
> >
> >
> > > To hear this,
> > > start QEMU with qemu-system-x86_64 -machine pcspk-audiodev=audio0
> > > -device ich9-intel-hda -device hda-duplex,audiodev=audio0 -audiodev
> > > pipewire,id=audio0,out.mixing-engine=off ...
> > >
> > I hear the clipped audio stream with these options. IMO, I don't think
> > memset is responsible for that behaviour, I still hear the harsh sound
> with
> > "-audiodev pa". I also tried using an alternative like:
> >
> > @@ -117,7 +118,7 @@ playback_on_process(void *data)
> > }
> >
> > if (avail == 0) {
> > - memset(p, 0, n_bytes);
> > + p = g_malloc0(sizeof(n_bytes));
> > } else {
> >
> > The clipped audio issue is still persistent.
>
> Are you sure about sizeof(n_bytes) here? That's 4. ;-)
>
> Volker's point was that "silence" is the center of the wave range. With
> signed
> range that's zero, yes, but with unsigned range that's 2^(bitdepth) / 2.
>
> So you need to memset() the correct value to generate "silence".
>
> Best regards,
> Christian Schoenebeck
>
>
>