Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Audio cracking, robotic sound on MacOS with Meta Quest Pro (Related to Unity Best Latency setting) #4141

Open
2 tasks
ludzeller opened this issue Jul 5, 2023 · 22 comments

Comments

@ludzeller
Copy link

ludzeller commented Jul 5, 2023

  • I have read the FAQ.
  • I have searched in existing issues.

There have been reports on cracking audio, some of them have been (partly) resolved:

#3793
#4055

This issue ticket here is also for audio crackling but for this specific configuration:

Environment

  • OS: MacOS 12.6.6,
  • scrcpy version: 2.1
  • installation method: brew
  • device model: MacBook 14" M1 Max
  • Android version: Meta Quest Pro, Android 12, Meta Quest-Build 54.0

Describe the bug
I am mirroring my audio app OpenSoundLab. The image seems fine as usual, but audio is never clean and glitch free. Sounds like plenty of buffer underruns. I have increased both audio buffers up to seconds, but it doesnt change the glitches. Very low settings make it worse though. If I record the sound has the same glitch to it. adb via TCP/IP is a bit worse than USB.

I am speculating it might be something on the sender side?

scrcpy -m 2560 --crop 1850:1900:0:0 -b 30M --max-fps 30 --video-codec=h264 --audio-codec=raw --display-buffer=300 --audio-buffer=1000 --audio-output-buffer=1000 -Vverbose

scrcpy 2.1 <https://github.com/Genymobile/scrcpy>
DEBUG: ADB device found:
DEBUG:     -->   (usb)  xxxxxx                  device  Quest_Pro
DEBUG: Device serial: xxxxxx
DEBUG: Using server: /opt/homebrew/Cellar/scrcpy/2.1/share/scrcpy/scrcpy-server
/opt/homebrew/Cellar/scrcpy/2.1/share/scrcpy/scrcpy-server: 1 file pushed, 0 skipped. 195.9 MB/s (56955 bytes in 0.000s)
[server] INFO: Device: [Oculus] oculus Quest Pro (Android 12)
[server] DEBUG: Using video encoder: 'OMX.qcom.video.encoder.avc'
DEBUG: Server connected
DEBUG: Starting controller thread
DEBUG: Starting receiver thread
INFO: Renderer: metal
DEBUG: Trilinear filtering disabled (not an OpenGL renderer
DEBUG: Using icon: /opt/homebrew/Cellar/scrcpy/2.1/share/icons/hicolor/256x256/apps/scrcpy.png
DEBUG: Demuxer 'video': starting thread
DEBUG: Demuxer 'audio': starting thread
INFO: Texture: 1848x1896
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Inserting initial buffering silence: 48 samples
VERBOSE: [Audio] Buffering: target=48000 avg=46595.167969 cur=46896 compensation=1404
VERBOSE: [Audio] Buffering: target=48000 avg=46921.710938 cur=46847 compensation=1078
VERBOSE: [Audio] Buffering: target=48000 avg=47194.734375 cur=46781 compensation=805
@rom1v
Copy link
Collaborator

rom1v commented Jul 5, 2023

--audio-buffer=1000 --audio-output-buffer=1000

It is not correct to set them to the same value, it means that the audio output requests samples every second by block of 1 second, and it reads them in the audio buffer which attempts to keep on average 1 second of samples, it will often underrun.

Firstly, if you record, is the recorded file (played with VLC for example) correct, with correct audio?

scrcpy --record=file.mp4

Then, does it work with only more audio buffering:

scrcpy --audio-buffer=200

?

If not, does it work better with a greater output buffer:

scrcpy --audio-buffer=65 --audio-output-buffer=15

?

@ludzeller
Copy link
Author

Thanks for the swift reply.

I ran the commands you suggested

scrcpy --record=file.mp4
scrcpy --audio-buffer=200
scrcpy --audio-buffer=65 --audio-output-buffer=15

But the problem is in all cases the same – at least I can't hear any significant improvements or differences.

By the way the audio playback seems super slow, like a time streatch at 50% speed or so.

BUT I just opened up other Quest apps, they work fine with all configurations of scrpy!

So, unfortunately, it seems that the combination of my app (OpenSoundLab) and scrcpy does not work well together.

OpenSoundLab is based on Unity and I guess I set the buffer size to the minimum setting there... will try to set it to normal and test that.

@rom1v
Copy link
Collaborator

rom1v commented Jul 5, 2023

By the way the audio playback seems super slow, like a time streatch at 50% speed or so.

Oh, so it might be a capture problem (stereo vs mono, or wrong bit-depth somewhere).

Could you post the video file you recorded with scrcpy --record=file.mp4?

@ludzeller
Copy link
Author

ludzeller commented Jul 5, 2023

Two results of scrcpy --record=file.mp4 can be downloaded from there:

https://drive.switch.ch/index.php/s/QiidYCHDf5wSmGs
https://drive.switch.ch/index.php/s/DzzmEF1aQnEh36M

Haven't changed the app's audio buffer yet.

@rom1v
Copy link
Collaborator

rom1v commented Jul 5, 2023

OK, so ignore audio buffers, the problem is on the capture side (since it is recorded).

Are you comfortable to build the project from sources?

In particular, it would be interesting to get the results with this additional log: #4055 (comment) (but the provided binary was for client 2.0).

@ludzeller
Copy link
Author

Yes, I can try that.

Do you have a theory? I find it weird that apparently all other Quest apps seem to work...

@rom1v
Copy link
Collaborator

rom1v commented Jul 6, 2023

I don't know, but it looks like this post (see the whole discussion).

I don't have another mobile, my phone ui (infinix xOS) has like built in equilizer which i cannot turn off it either goes to music, gaming and other presets but cannot be turned off

Also try to increase READ_MS to see if it changes something.

@ludzeller
Copy link
Author

ludzeller commented Jul 6, 2023

Building went smooth, but you could add to the build instructions that Android Studio must be run once in order for it to write the sdk to ~/Library/Android/sdk.

Here is a part of the log output:

[server] INFO: === [28844329] pts=28842001, 960 samples 
[server] INFO: === [28869529] pts=28863021, 960 samples 
[server] INFO: === [28880137] pts=28863021, 960 samples 
[server] INFO: === [28885217] pts=28884337, 960 samples 
[server] INFO: === [28903168] pts=28884337, 960 samples 
[server] INFO: === [28907416] pts=28906223, 960 samples

I increased READ_MS to 20 but it did not help. Meta Quest home environment played without glitches, but my app had them again.

I tried the suggested parameters again:

./run x --record=file.mp4
./run x --audio-buffer=200
./run x --audio-buffer=65 --audio-output-buffer=15

@ludzeller
Copy link
Author

Just found out that at least one other Meta Quest app (Gorilla Tag) is also suffering from the glitches...

@rom1v
Copy link
Collaborator

rom1v commented Jul 6, 2023

[server] INFO: === [28844329] pts=28842001, 960 samples
[server] INFO: === [28869529] pts=28863021, 960 samples
[server] INFO: === [28880137] pts=28863021, 960 samples
[server] INFO: === [28885217] pts=28884337, 960 samples
[server] INFO: === [28903168] pts=28884337, 960 samples
[server] INFO: === [28907416] pts=28906223, 960 samples

There's a problem here: it gives 1920 samples every 20ms of pts, while at 48KHz it should give 960 samples every 20ms. Is it the same with the apps which work?

@ludzeller
Copy link
Author

ludzeller commented Jul 7, 2023

Ah, I see. So here are some longer excerpts:

Glitchy, within my app:

[server] INFO: === [28844329] pts=28842001, 960 samples
[server] INFO: === [28869529] pts=28863021, 960 samples
[server] INFO: === [28880137] pts=28863021, 960 samples
[server] INFO: === [28885217] pts=28884337, 960 samples
[server] INFO: === [28903168] pts=28884337, 960 samples
[server] INFO: === [28907416] pts=28906223, 960 samples
[server] INFO: === [28931198] pts=28927259, 960 samples
[server] INFO: === [28950452] pts=28948581, 960 samples
[server] INFO: === [28970101] pts=28969904, 960 samples
[server] INFO: === [28993202] pts=28991683, 960 samples
[server] INFO: === [29015852] pts=29012824, 960 samples
[server] INFO: === [29035369] pts=29034042, 960 samples
[server] INFO: === [29055687] pts=29055378, 960 samples
[server] INFO: === [29077852] pts=29076655, 960 samples
[server] INFO: === [29098150] pts=29097972, 960 samples
[server] INFO: === [29105353] pts=29097972, 960 samples
[server] INFO: === [29119747] pts=29119419, 960 samples
[server] INFO: === [29142516] pts=29140617, 960 samples
[server] INFO: === [29162352] pts=29140617, 960 samples
[server] INFO: === [29183797] pts=29183393, 960 samples
[server] INFO: === [29206781] pts=29204822, 960 samples
[server] INFO: === [29227758] pts=29226166, 960 samples
[server] INFO: === [29249512] pts=29247629, 960 samples
[server] INFO: === [29271669] pts=29271538, 960 samples
[server] INFO: === [29292595] pts=29290446, 960 samples
[server] INFO: === [29312068] pts=29311921, 960 samples
[server] INFO: === [29334550] pts=29332828, 960 samples
[server] INFO: === [29354277] pts=29354100, 960 samples

Glitchy, within Gorilla Tag:

[server] INFO: === [525924356] pts=525924264, 960 samples
[server] INFO: === [525946044] pts=525945634, 960 samples
[server] INFO: === [525967408] pts=525966960, 960 samples
[server] INFO: === [525989167] pts=525988271, 960 samples
[server] INFO: === [526009714] pts=525988271, 960 samples
[server] INFO: === [526031348] pts=526030976, 960 samples
[server] INFO: === [526052784] pts=526052509, 960 samples
[server] INFO: === [526073716] pts=526073601, 960 samples
[server] INFO: === [526095053] pts=526094937, 960 samples
[server] INFO: === [526116377] pts=526116270, 960 samples
[server] INFO: === [526137803] pts=526116270, 960 samples
[server] INFO: === [526159139] pts=526159022, 960 samples
[server] INFO: === [526180416] pts=526180270, 960 samples
[server] INFO: === [526201755] pts=526201619, 960 samples
[server] INFO: === [526223306] pts=526222959, 960 samples
[server] INFO: === [526225045] pts=526222959, 960 samples
[server] INFO: === [526244411] pts=526244305, 960 samples
[server] INFO: === [526266494] pts=526265743, 960 samples
[server] INFO: === [526287064] pts=526286973, 960 samples
[server] INFO: === [526308394] pts=526308292, 960 samples
[server] INFO: === [526329764] pts=526329658, 960 samples

Not glitchy, within home environment:

[server] INFO: === [246684109] pts=246683221, 960 samples
[server] INFO: === [246705101] pts=246704375, 960 samples
[server] INFO: === [246706522] pts=246704375, 960 samples
[server] INFO: === [246728785] pts=246726026, 960 samples
[server] INFO: === [246747250] pts=246747067, 960 samples
[server] INFO: === [246768888] pts=246768386, 960 samples
[server] INFO: === [246790331] pts=246789997, 960 samples
[server] INFO: === [246812426] pts=246811098, 960 samples
[server] INFO: === [246833615] pts=246833115, 960 samples
[server] INFO: === [246856641] pts=246856478, 960 samples
[server] INFO: === [246875208] pts=246875080, 960 samples
[server] INFO: === [246896655] pts=246896513, 960 samples
[server] INFO: === [246917931] pts=246917804, 960 samples
[server] INFO: === [246939285] pts=246939179, 960 samples
[server] INFO: === [246961177] pts=246960554, 960 samples
[server] INFO: === [246981808] pts=246981711, 960 samples

So every now and then the AudioRecorder is repeating a timestamp.

I will try to increase the READ_MS even more.

As a hotfix, I will try to catch these cases and skip the read when the pointer hasn't moved.

What else could be tried?

@rom1v
Copy link
Collaborator

rom1v commented Jul 7, 2023

OK, so with longer excerpts, it looks ok (on average you get 20ms of samples every 20ms).

If you record with some recorder app directly on the device, does it work better?

@ludzeller
Copy link
Author

It looked OK, but it did not sound OK...

Increasing the READ_MS more did not help...

The hotfix I was not able to get working correctly due to the complexity of the code...

BUT: I just rebuilt my app with the "Good Latency" setting in Unity instead of "Best Latency" and the glitches are gone without any patches and with default parameters!

Should I change the title of this ticket to indicate the source of the trouble? I assume all Unity apps can be affected.

So, now some new questions arise, since I want to use scrcpy for capturing or streaming OpenSoundLab performances wirelessly:

Is there a way to play the sound both on the headset and on the receiving computer simulataneously? Apparently not yet, but that would be great, see #3891 and #3875.

Is there any chance to get to super low latencies? At the moment I really have to keep --audio-buffer at the default of 50 while on USB, lower values give dropouts. And even if I lower the settings, the audio always seems to have some minimum latency of at least 100ms, while the video can be very low latency. I am on wired speakers. For performance settings that is too high. Couldn't find a solution in the existing issues.

@rom1v
Copy link
Collaborator

rom1v commented Jul 7, 2023

BUT: I just rebuilt my app with the "Good Latency" setting in Unity instead of "Best Latency" and the glitches are gone without any patches and with default parameters!

Oh, interesting!

Is there any chance to get to super low latencies?

One problem is that AudioRecord provides samples every 20ms. Another problem is that the encoders provide encoded data every 20ms (for OPUS) or 21.67ms (for AAC). Yet another problem is that the audio capture API is not very low-latency friendly. See https://blog.rom1v.com/2023/03/scrcpy-2-0-with-audio/#audio-capture

With lower capture/encoding values, we could theoretically use a smaller audio buffer;

And even if I lower the settings, the audio always seems to have some minimum latency of at least 100ms

Paradoxically, if you lower the audio buffer and get buffer underruns, it will probably temporarily increase the latency (because you will "play" silence during the underrun + the real audio samples when they arrive, with compensation to speed them up).

Is there a way to play the sound both on the headset and on the receiving computer simulataneously? Apparently not yet, but that would be great, see #3891 and #3875.

Indeed, currently not possible 😞

@rom1v
Copy link
Collaborator

rom1v commented Jul 7, 2023

I increased READ_MS to 20 but it did not help.

Could you post the logs when READ_MS is 5ms (or even lower)?

@ludzeller
Copy link
Author

I increased READ_MS to 20 but it did not help.

Could you post the logs when READ_MS is 5ms (or even lower)?

Yes, but do you mean with low or normal audio buffers in Unity?

@rom1v
Copy link
Collaborator

rom1v commented Jul 7, 2023

With "Best Latency" (when there are glitches).

@ludzeller
Copy link
Author

Output with 5ms:

[server] INFO: === [168102057] pts=168101901, 240 samples
[server] INFO: === [168108985] pts=168101901, 240 samples
[server] INFO: === [168113261] pts=168101901, 240 samples
[server] INFO: === [168114513] pts=168101901, 240 samples
[server] INFO: === [168115511] pts=168101901, 240 samples
[server] INFO: === [168124919] pts=168123560, 240 samples
[server] INFO: === [168126237] pts=168123560, 240 samples
[server] INFO: === [168129595] pts=168123560, 240 samples
[server] INFO: === [168130304] pts=168123560, 240 samples
[server] INFO: === [168145333] pts=168144538, 240 samples
[server] INFO: === [168146885] pts=168144538, 240 samples
[server] INFO: === [168147483] pts=168144538, 240 samples
[server] INFO: === [168149057] pts=168144538, 240 samples
[server] INFO: === [168166787] pts=168166678, 240 samples
[server] INFO: === [168168489] pts=168166678, 240 samples
[server] INFO: === [168169526] pts=168166678, 240 samples
[server] INFO: === [168171168] pts=168166678, 240 samples
[server] INFO: === [168188291] pts=168187764, 240 samples
[server] INFO: === [168189168] pts=168187764, 240 samples
[server] INFO: === [168190899] pts=168187764, 240 samples
[server] INFO: === [168191925] pts=168187764, 240 samples
[server] INFO: === [168193608] pts=168187764, 240 samples
[server] INFO: === [168212060] pts=168209742, 240 samples
[server] INFO: === [168213265] pts=168209742, 240 samples
[server] INFO: === [168221869] pts=168209742, 240 samples
[server] INFO: === [168223853] pts=168209742, 240 samples
[server] INFO: === [168230226] pts=168209742, 240 samples
[server] INFO: === [168231151] pts=168229860, 240 samples
[server] INFO: === [168233654] pts=168229860, 240 samples
[server] INFO: === [168234313] pts=168229860, 240 samples
[server] INFO: === [168251628] pts=168251448, 240 samples
[server] INFO: === [168258792] pts=168251448, 240 samples
[server] INFO: === [168260156] pts=168251448, 240 samples
[server] INFO: === [168261092] pts=168251448, 240 samples
[server] INFO: === [168272787] pts=168272528, 240 samples
[server] INFO: === [168274605] pts=168272528, 240 samples
[server] INFO: === [168275650] pts=168272528, 240 samples
[server] INFO: === [168279314] pts=168272528, 240 samples
[server] INFO: === [168280889] pts=168272528, 240 samples
[server] INFO: === [168294023] pts=168293898, 240 samples
[server] INFO: === [168297951] pts=168293898, 240 samples
[server] INFO: === [168302163] pts=168293898, 240 samples
[server] INFO: === [168303188] pts=168293898, 240 samples
[server] INFO: === [168315332] pts=168315203, 240 samples
[server] INFO: === [168316428] pts=168315203, 240 samples
[server] INFO: === [168317797] pts=168315203, 240 samples

Output with 2ms:

[server] INFO: === [265740966] pts=265722161, 96 samples
[server] INFO: === [265743437] pts=265743357, 96 samples
[server] INFO: === [265744466] pts=265743357, 96 samples
[server] INFO: === [265745911] pts=265743357, 96 samples
[server] INFO: === [265746521] pts=265743357, 96 samples
[server] INFO: === [265747469] pts=265743357, 96 samples
[server] INFO: === [265748455] pts=265743357, 96 samples
[server] INFO: === [265749042] pts=265743357, 96 samples
[server] INFO: === [265752558] pts=265743357, 96 samples
[server] INFO: === [265754117] pts=265743357, 96 samples
[server] INFO: === [265758386] pts=265743357, 96 samples
[server] INFO: === [265764857] pts=265743357, 96 samples
[server] INFO: === [265765848] pts=265764737, 96 samples
[server] INFO: === [265766423] pts=265764737, 96 samples
[server] INFO: === [265767298] pts=265764737, 96 samples
[server] INFO: === [265768783] pts=265764737, 96 samples
[server] INFO: === [265769621] pts=265764737, 96 samples
[server] INFO: === [265769985] pts=265764737, 96 samples
[server] INFO: === [265774510] pts=265764737, 96 samples
[server] INFO: === [265776063] pts=265764737, 96 samples
[server] INFO: === [265777110] pts=265764737, 96 samples
[server] INFO: === [265778965] pts=265764737, 96 samples
[server] INFO: === [265785991] pts=265785910, 96 samples
[server] INFO: === [265787528] pts=265785910, 96 samples
[server] INFO: === [265788572] pts=265785910, 96 samples
[server] INFO: === [265789806] pts=265785910, 96 samples
[server] INFO: === [265790408] pts=265785910, 96 samples
[server] INFO: === [265791026] pts=265785910, 96 samples
[server] INFO: === [265793120] pts=265785910, 96 samples
[server] INFO: === [265794340] pts=265785910, 96 samples
[server] INFO: === [265796465] pts=265785910, 96 samples
[server] INFO: === [265797608] pts=265785910, 96 samples
[server] INFO: === [265801241] pts=265785910, 96 samples
[server] INFO: === [265807329] pts=265807214, 96 samples
[server] INFO: === [265811365] pts=265807214, 96 samples
[server] INFO: === [265812161] pts=265807214, 96 samples
[server] INFO: === [265813396] pts=265807214, 96 samples
[server] INFO: === [265814251] pts=265807214, 96 samples
[server] INFO: === [265817406] pts=265807214, 96 samples
[server] INFO: === [265818002] pts=265807214, 96 samples
[server] INFO: === [265818764] pts=265807214, 96 samples
[server] INFO: === [265819873] pts=265807214, 96 samples
[server] INFO: === [265821031] pts=265807214, 96 samples
[server] INFO: === [265828707] pts=265828561, 96 samples

Output with 1ms:

[server] INFO: === [298375880] pts=298371218, 48 samples
[server] INFO: === [298376915] pts=298371218, 48 samples
[server] INFO: === [298378054] pts=298371218, 48 samples
[server] INFO: === [298378773] pts=298371218, 48 samples
[server] INFO: === [298380833] pts=298371218, 48 samples
[server] INFO: === [298381499] pts=298371218, 48 samples
[server] INFO: === [298383156] pts=298371218, 48 samples
[server] INFO: === [298385399] pts=298371218, 48 samples
[server] INFO: === [298386618] pts=298371218, 48 samples
[server] INFO: === [298389791] pts=298371218, 48 samples
[server] INFO: === [298390729] pts=298371218, 48 samples
[server] INFO: === [298391907] pts=298371218, 48 samples
[server] INFO: === [298393638] pts=298391873, 48 samples
[server] INFO: === [298398036] pts=298391873, 48 samples
[server] INFO: === [298399403] pts=298391873, 48 samples
[server] INFO: === [298403224] pts=298391873, 48 samples
[server] INFO: === [298406373] pts=298391873, 48 samples
[server] INFO: === [298408187] pts=298391873, 48 samples
[server] INFO: === [298409977] pts=298391873, 48 samples
[server] INFO: === [298415148] pts=298413198, 48 samples
[server] INFO: === [298415981] pts=298413198, 48 samples
[server] INFO: === [298417585] pts=298413198, 48 samples
[server] INFO: === [298418578] pts=298413198, 48 samples
[server] INFO: === [298419581] pts=298413198, 48 samples
[server] INFO: === [298421091] pts=298413198, 48 samples
[server] INFO: === [298421817] pts=298413198, 48 samples
[server] INFO: === [298422905] pts=298413198, 48 samples
[server] INFO: === [298424074] pts=298413198, 48 samples
[server] INFO: === [298424911] pts=298413198, 48 samples
[server] INFO: === [298426955] pts=298413198, 48 samples
[server] INFO: === [298428117] pts=298413198, 48 samples
[server] INFO: === [298429060] pts=298413198, 48 samples
[server] INFO: === [298429999] pts=298413198, 48 samples
[server] INFO: === [298430875] pts=298413198, 48 samples
[server] INFO: === [298431931] pts=298413198, 48 samples
[server] INFO: === [298433092] pts=298413198, 48 samples
[server] INFO: === [298443266] pts=298437868, 48 samples
[server] INFO: === [298449559] pts=298437868, 48 samples
[server] INFO: === [298450937] pts=298437868, 48 samples
[server] INFO: === [298452983] pts=298437868, 48 samples
[server] INFO: === [298453906] pts=298437868, 48 samples
[server] INFO: === [298454918] pts=298437868, 48 samples
[server] INFO: === [298456009] pts=298437868, 48 samples
[server] INFO: === [298456696] pts=298456545, 48 samples
[server] INFO: === [298457482] pts=298456545, 48 samples

@ludzeller
Copy link
Author

ludzeller commented Jul 7, 2023

Of course it would be great if the Best Latency setting could be glitch free as well...

@rom1v
Copy link
Collaborator

rom1v commented Jul 7, 2023

OK, so like all Android devices, even when we read blocks of 5ms, it gives 4 blocks of 5ms at a time every 20ms.

[server] INFO: === [168124919] pts=168123560, 240 samples
[server] INFO: === [168126237] pts=168123560, 240 samples
[server] INFO: === [168129595] pts=168123560, 240 samples
[server] INFO: === [168130304] pts=168123560, 240 samples

Did you test with some Android recording app? (there is probably a native recording feature on your system)

Is the sound correctly recorded?

And with sndcpy?

@ludzeller
Copy link
Author

The native recorder seems to record without glitches in the low latency setting (but is not really suitable for me since it is mono only).

sndcpy I just tried for the first time, but doesn't play sound:

sndcpy-v1.1 % ./sndcpy   
Waiting for device...
Performing Streamed Install
Success
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.rom1v.sndcpy/.MainActivity }
Playing audio...
VLC media player 3.0.18 Vetinari (revision 3.0.18-0-ge9eceaed4d)
[00007fe932f07860] dummy interface: using the dummy interface module...
[00007fe934d06d40] main stream error: connection error: Connection refused
[00007fe943822af0] main stream error: connection error: Connection refused
[00007fe942f084a0] main stream error: connection error: Connection refused
[00007fe942f084a0] main stream error: connection error: Connection refused
[00007fe942f084a0] main stream error: connection error: Connection refused
[00007fe942f084a0] main stream error: connection error: Connection refused

@ludzeller ludzeller changed the title Audio cracking, robotic sound on MacOS with Meta Quest Pro Audio cracking, robotic sound on MacOS with Meta Quest Pro (Related to Unity Best Latency setting) Jul 7, 2023
@ludzeller
Copy link
Author

Is it a firewall thing? I am on a corporate laptop where I cannot edit the ports.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants