wasapisrc captures more audio buffers than expected
When using our audio streaming tool we noticed after some minutes an increase of the delay on the receiver side. The issue seems triggered by the wasapisrc element that is producing more buffers than expected, with respect to the elapsed time and the 10 msec duration.
To confirm the issue we used a test code that counts the number of buffer emitted by the audio source using a probe callback. According our test code in some cases the audio source generates 2 or more audio buffers of 10 msec every 10 seconds.
Setup pipeline: wasapisrc do-timestamp=true name=audiosrc ! fakesink
Start grabber
Pipeline state changed from NULL to READY
Pipeline state changed from READY to PAUSED
Pipeline state changed from PAUSED to PLAYING
Reset counters
Report: elapsed= 10009 msec, grabbed=10020 msec, expected=1000, counter=1002
Report: elapsed= 20009 msec, grabbed=20020 msec, expected=2000, counter=2002
Report: elapsed= 30010 msec, grabbed=30050 msec, expected=3001, counter=3005
Report: elapsed= 40019 msec, grabbed=40070 msec, expected=4001, counter=4007
Report: elapsed= 50019 msec, grabbed=50070 msec, expected=5001, counter=5007
Report: elapsed= 60029 msec, grabbed=60080 msec, expected=6002, counter=6008
Report: elapsed= 70030 msec, grabbed=70080 msec, expected=7003, counter=7008
Report: elapsed= 80030 msec, grabbed=80090 msec, expected=8003, counter=8009
Report: elapsed= 90030 msec, grabbed=90110 msec, expected=9003, counter=9011
...
By enabling the debug logs of wasapisrc we noticed that for every buffer emitted we have a log line like this one
0:08:00.499909000 7872 000001E052015490 DEBUG wasapisrc gstwasapisrc.c:855:gst_wasapi_src_read:<audiosrc> frames captured: 480 (3840 bytes), can read: 480 (3840 bytes), will read: 480 (3840 bytes), adapter has: 480 (3840 bytes)
The issue has been reproduced so far only in a remote virtual instance, while we are not able to reproduce in a local machine.