[Bug 796354] wasapi: playback noise

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Thu Aug 2 11:42:12 UTC 2018


https://bugzilla.gnome.org/show_bug.cgi?id=796354

Nirbheek Chauhan <nirbheek.chauhan at gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|normal                      |blocker

--- Comment #47 from Nirbheek Chauhan <nirbheek.chauhan at gmail.com> ---
(In reply to Christoph Reiter (lazka) from comment #45)
> (In reply to Philippe Renon from comment #41)
> > Created attachment 372432 [details]
> > gst-launch-1.0.exe audiotestsrc ! wasapisink low-latency=true exclusive=true
> > 2> log2.txt
> > 
> > With the last two patches, all uses cases work except the last one
> > (low-latency=true exclusive=true). See attached log2.txt.
> 
> Yeah, I don't really know how this is supposed to work. Some questions I've
> had
> 
> * What's the advantage of using audioclient3?

The latency is much lower, and currently we only enable audioclient3 when
low-latency is TRUE. 

> * If we want to use audioclient3 do we need an extra buffer in the element
> so we can respect buffer-time and latency-time?
> * Do we need an extra buffer for exclusive mode?

We already have our own audio ringbuffer in all cases, so we already have an
extra buffer, I am not sure what you mean by this?

> * Why is there a low-latency mode instead of just setting
> buffer-time/latency-time?

Because it is impossible for the user to know which values of
buffer-time/latency-time will yield the lowest possible safe values in the
audio interface, only we can know by querying the AudioClient3 API;
specifically see low_latency conditionals in
gst_wasapi_util_initialize_audioclient().

audioclient3 should always be safe to enable on Windows 10, because if the
underlying driver doesn't support the low device periods that it enables, we
will stick with the 10ms period that we get with audioclient.

(In reply to Philippe Renon from comment #35)
> Created attachment 372419 [details]
> GST_DEBUG=wasapi*:5;gst-launch-1.0.exe audiotestsrc ! wasapisink
> low-latency=true exclusive=false 2> log1.txt
> 
> Log of below command (with all 5 patches) attached as log1.txt:
> 
> GST_DEBUG=wasapi*:5;gst-launch-1.0.exe audiotestsrc ! wasapisink
> low-latency=true exclusive=false 2> log1.txt
> 
> Strange thing is that with wasapi debug option there is almost no crackling
> (just a bit of crackling when starting the pipeline but none after).

In these logs, the device period is 480 frames, which is 10ms at 48KHz, and
that's what we'd get without audioclient3 too. We need to figure out why the
crackling is happening.

(In reply to Philippe Renon from comment #44)
> Created attachment 372434 [details]
> GST_DEBUG=wasapi*:5;gst-launch-1.0.exe audiotestsrc ! wasapisink
> low-latency=true exclusive=true 2> log2.txt
> 
> again...

What device is this? The device period is 144 frames, which is 3ms, and that's
not achievable without audioclient3 at all, afaik. Can you paste the wasapi*:4
log with audioclient3 disabled?

And then the same with exclusive=false?

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list