Skip to content

Fill vchan partially before uncorking stream #207

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

Closed
wants to merge 2 commits into from

Conversation

DemiMarie
Copy link
Contributor

This ensures that pacat-simple-vchan has some data to play and doesn't immediately underrun. There are still A/V sync problems but these are due to not properly reporting latency.

pw_log_trace("Uncorking stream after trying to send %" PRIu32 " bytes",
size);
uint32_t cmd = QUBES_PA_SINK_UNCORK_CMD;
if (libvchan_send(stream->impl->stream[PW_DIRECTION_OUTPUT].vchan, &cmd, sizeof(cmd)) != (int)sizeof(cmd))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wrong vchan?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I had used the wrong vchan for a while. Took a long time to debug. In this case, PW_DIRECTION_OUTPUT is the PipeWire output stream, which corresponds to audio capture, so the code is correct. I will add a comment.

@qubesos-bot
Copy link

qubesos-bot commented Feb 13, 2024

OpenQA test summary

Complete test suite and dependencies: https://openqa.qubes-os.org/tests/overview?distri=qubesos&version=4.2&build=2024021900-4.2&flavor=pull-requests

New failures, excluding unstable

Compared to: https://openqa.qubes-os.org/tests/overview?distri=qubesos&version=4.2&build=2024012304-4.2&flavor=update

  • system_tests_pvgrub_salt_storage

    • TC_42_PVHGrub_fedora-38-xfce: test_000_standalone_vm (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
  • system_tests_vm_qrexec_gui_pipewire

  • system_tests_basic_vm_qrexec_gui_btrfs

    • TC_20_AudioVM_Pulse_debian-12-xfce-pool: test_220_audio_play_pulseaudio (failure)
      AssertionError: too short audio, expected 10s, got 9.34596371882086...

    • TC_20_AudioVM_Pulse_fedora-38-xfce-pool: test_220_audio_play_pulseaudio (failure)
      AssertionError: too short audio, expected 10s, got 8.88138321995464...

    • TC_20_AudioVM_PipeWire_fedora-38-xfce-pool: test_226_audio_playback_pipewire (failure)
      AssertionError: too short audio, expected 10s, got 9.48276643990929...

    • TC_20_NonAudio_debian-12-xfce-pool: test_000_start_shutdown (error + timed out)
      qubes.exc.QubesVMShutdownTimeoutError: Domain shutdown timed out: '...

  • system_tests_gui_interactive@hw1

    • clipboard_and_web: unnamed test (unknown)
    • clipboard_and_web: Failed (test died)
      # Test died: no candidate needle with tag(s) 'menu-vm-work' matched...
  • system_tests_gui_tools@hw1

    • qubesmanager_createnewvm: unnamed test (unknown)
    • qubesmanager_createnewvm: Failed (test died)
      # Test died: no candidate needle with tag(s) 'qubes-vm-create' matc...

Failed tests

22 failures
  • system_tests_pvgrub_salt_storage

    • [unstable] TC_41_HVMGrub_fedora-38-xfce: test_000_standalone_vm (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...

    • [unstable] TC_41_HVMGrub_fedora-38-xfce: test_010_template_based_vm (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...

    • TC_42_PVHGrub_fedora-38-xfce: test_000_standalone_vm (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...

  • system_tests_splitgpg

  • system_tests_network_updates

  • system_tests_devices

    • [unstable] TC_00_List_debian-12-xfce: test_001_list_loop_mounted (failure)
      AssertionError: Device test-inst-vm:loop0 (/tmp/test.img) should no...
  • system_tests_vm_qrexec_gui_pipewire

  • system_tests_basic_vm_qrexec_gui_zfs

    • [unstable] TC_20_AudioVM_Pulse_debian-12-xfce-pool: test_220_audio_play_pulseaudio (failure)
      AssertionError: too short audio, expected 10s, got 9.18873015873016...
  • system_tests_basic_vm_qrexec_gui_btrfs

    • TC_20_AudioVM_Pulse_debian-12-xfce-pool: test_220_audio_play_pulseaudio (failure)
      AssertionError: too short audio, expected 10s, got 9.34596371882086...

    • TC_20_AudioVM_Pulse_fedora-38-xfce-pool: test_220_audio_play_pulseaudio (failure)
      AssertionError: too short audio, expected 10s, got 8.88138321995464...

    • TC_20_AudioVM_PipeWire_fedora-38-xfce-pool: test_226_audio_playback_pipewire (failure)
      AssertionError: too short audio, expected 10s, got 9.48276643990929...

    • TC_20_NonAudio_debian-12-xfce-pool: test_000_start_shutdown (error + timed out)
      qubes.exc.QubesVMShutdownTimeoutError: Domain shutdown timed out: '...

  • system_tests_basic_vm_qrexec_gui_xfs

    • [unstable] TC_20_AudioVM_Pulse_fedora-38-xfce-pool: test_220_audio_play_pulseaudio (failure)
      AssertionError: too short audio, expected 10s, got 9.38458049886621...
  • system_tests_basic_vm_qrexec_gui@hw1

  • system_tests_gui_interactive@hw1

    • clipboard_and_web: unnamed test (unknown)
    • clipboard_and_web: Failed (test died)
      # Test died: no candidate needle with tag(s) 'menu-vm-work' matched...
  • system_tests_gui_tools@hw1

    • qubesmanager_createnewvm: unnamed test (unknown)
    • qubesmanager_createnewvm: Failed (test died)
      # Test died: no candidate needle with tag(s) 'qubes-vm-create' matc...
  • system_tests_basic_vm_qrexec_gui_ext4

    • [unstable] TC_20_AudioVM_Pulse_fedora-38-xfce-pool: test_220_audio_play_pulseaudio (failure)
      AssertionError: too short audio, expected 10s, got 9.01521541950113...
  • system_tests_basic_vm_qrexec_gui

    • [unstable] TC_20_AudioVM_Pulse_debian-12-xfce: test_220_audio_play_pulseaudio (failure)
      AssertionError: too short audio, expected 10s, got 9.09609977324263...

Fixed failures

Compared to: https://openqa.qubes-os.org/tests/90505#dependencies

10 fixed
  • system_tests_pvgrub_salt_storage

    • TC_40_PVGrub_debian-12-xfce: test_000_standalone_vm (failure)
      AssertionError: Failed command: apt-get update && apt-get install -...

    • TC_40_PVGrub_debian-12-xfce: test_010_template_based_vm (failure)
      AssertionError: Failed command: apt-get update && apt-get install -...

    • TC_41_HVMGrub_debian-12-xfce: test_000_standalone_vm (failure)
      AssertionError: Failed command: apt-get update && apt-get install -...

    • TC_41_HVMGrub_debian-12-xfce: test_010_template_based_vm (failure)
      AssertionError: Failed command: apt-get update && apt-get install -...

    • TC_42_PVHGrub_debian-12-xfce: test_000_standalone_vm (failure)
      AssertionError: Failed command: apt-get update && apt-get install -...

    • TC_42_PVHGrub_debian-12-xfce: test_010_template_based_vm (failure)
      AssertionError: Failed command: apt-get update && apt-get install -...

    • TC_10_VMSalt_debian-12-xfce: test_003_update (failure)
      AssertionError: Salt command '['qubesctl', '--skip-dom0', '--show-o...

  • system_tests_guivm_gui_interactive

    • guivm_startup: unnamed test (unknown)
    • guivm_startup: Failed (test died)
      # Test died: no candidate needle with tag(s) 'desktop' matched...
  • system_tests_basic_vm_qrexec_gui_zfs

    • TC_20_AudioVM_Pulse_fedora-38-xfce-pool: test_223_audio_play_hvm (failure)
      AssertionError: too short audio, expected 10s, got 9.40260770975056...

Unstable tests

  • system_tests_suspend

    suspend/Failed (1/5 times with errors)
    • job 91086 # Test died: command 'true' timed out at /usr/lib/os-autoinst/autot...
    suspend/wait_serial (1/5 times with errors)
    • job 91086 # wait_serial expected: qr/p5~T5-\d+-/...
  • system_tests_pvgrub_salt_storage

    TC_40_PVGrub_debian-12-xfce/test_000_standalone_vm (2/5 times with errors)
    • job 90533 AssertionError: Failed command: apt-get update && apt-get install -...
    • job 92022 AssertionError: Failed command: apt-get update && apt-get install -...
    TC_41_HVMGrub_debian-12-xfce/test_000_standalone_vm (2/5 times with errors)
    • job 90533 AssertionError: Failed command: apt-get update && apt-get install -...
    • job 92022 AssertionError: Failed command: apt-get update && apt-get install -...
    TC_41_HVMGrub_fedora-38-xfce/test_000_standalone_vm (2/5 times with errors)
    • job 91783 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    • job 92022 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    TC_42_PVHGrub_debian-12-xfce/test_000_standalone_vm (2/5 times with errors)
    • job 90533 AssertionError: Failed command: apt-get update && apt-get install -...
    • job 92022 AssertionError: Failed command: apt-get update && apt-get install -...
    TC_10_VMSalt_debian-12-xfce/test_003_update (2/5 times with errors)
    • job 90533 AssertionError: Salt command '['qubesctl', '--skip-dom0', '--show-o...
    • job 92022 AssertionError: Salt command '['qubesctl', '--skip-dom0', '--show-o...
    TC_40_PVGrub_debian-12-xfce/test_010_template_based_vm (2/5 times with errors)
    • job 90533 AssertionError: Failed command: apt-get update && apt-get install -...
    • job 92022 AssertionError: Failed command: apt-get update && apt-get install -...
    TC_41_HVMGrub_debian-12-xfce/test_010_template_based_vm (3/5 times with errors)
    • job 90533 AssertionError: Failed command: apt-get update && apt-get install -...
    • job 91783 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    • job 92022 AssertionError: Failed command: apt-get update && apt-get install -...
    TC_41_HVMGrub_fedora-38-xfce/test_010_template_based_vm (2/5 times with errors)
    • job 91783 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    • job 92022 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    TC_42_PVHGrub_debian-12-xfce/test_010_template_based_vm (2/5 times with errors)
    • job 90533 AssertionError: Failed command: apt-get update && apt-get install -...
    • job 92022 AssertionError: Failed command: apt-get update && apt-get install -...
    TC_42_PVHGrub_fedora-38-xfce/test_010_template_based_vm (1/5 times with errors)
    • job 92022 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
  • system_tests_splitgpg

    TC_10_Thunderbird_fedora-38-xfce/test_000_send_receive_default (1/5 times with errors)
    • job 91785 Exception: Failed to send message with error 'unknown'
    TC_10_Thunderbird_fedora-38-xfce/test_010_send_receive_inline_signed_only (2/5 times with errors)
    • job 91085 Exception: Failed to send message with error 'unknown'
    • job 91785 Exception: Failed to send message with error 'unknown'
  • system_tests_usbproxy

    TC_20_USBProxy_core3_debian-12-xfce/test_060_auto_detach_on_remove (1/5 times with errors)
    • job 91059 AssertionError: 0 == 0 : Device disconnection failed
    TC_20_USBProxy_core3_fedora-38-xfce/test_070_attach_not_installed_front (1/5 times with errors)
    • job 89645 qubesusbproxy.core3ext.QubesUSBException: Device attach failed: 202...
    TC_20_USBProxy_core3_whonix-gateway-17/test_070_attach_not_installed_front (1/5 times with errors)
    • job 91759 qubesusbproxy.core3ext.QubesUSBException: Device attach failed: 202...
  • system_tests_network_updates

    VmUpdates_debian-12-xfce/test_000_simple_update (1/5 times with errors)
    • job 91144 AssertionError: 1 not found in [0] : set -o pipefail; apt-get updat...
    TC_10_QvmTemplate_debian-12-xfce/test_000_template_list (1/5 times with errors)
    • job 90501 AssertionError: libvirt event impl drain timeout
    TC_10_QvmTemplate_debian-12-xfce/test_010_template_install (1/5 times with errors)
    • job 89290 AssertionError: libvirt event impl drain timeout
    VmUpdates_debian-12-xfce/test_131_no_network_qubes_vm_update_cli (2/5 times with errors)
    • job 91144 AssertionError: qubes-vm-update return unexpected code: 0 in (1, 2)
    • job 91791 AssertionError: qubes-vm-update return unexpected code: 0 in (1, 2)
  • system_tests_devices

    TC_00_List_debian-12-xfce/test_001_list_loop_mounted (1/5 times with errors)
    • job 91775 AssertionError: Device test-inst-vm:loop0 (/tmp/test.img) should no...
  • system_tests_basic_vm_qrexec_gui_zfs

    TC_20_AudioVM_Pulse_debian-12-xfce-pool/test_220_audio_play_pulseaudio (2/5 times with errors)
    • job 91761 AssertionError: too short audio, expected 10s, got 9.13544217687074...
    • job 91798 AssertionError: too short audio, expected 10s, got 9.19061224489796...
    TC_20_AudioVM_Pulse_fedora-38-xfce-pool/test_220_audio_play_pulseaudio (1/5 times with errors)
    • job 91798 AssertionError: too short audio, expected 10s, got 8.94136054421768...
    TC_20_AudioVM_Pulse_fedora-38-xfce-pool/test_223_audio_play_hvm (1/5 times with errors)
    • job 90538 AssertionError: too short audio, expected 10s, got 9.40260770975056...
    TC_20_AudioVM_PipeWire_debian-12-xfce-pool/test_227_audio_rec_muted_pipewire (1/5 times with errors)
    • job 91761 AttributeError: 'NoneType' object has no attribute 'read'
  • system_tests_basic_vm_qrexec_gui_btrfs

    TC_20_AudioVM_Pulse_debian-12-xfce-pool/test_222_audio_rec_unmuted_pulseaudio (1/5 times with errors)
    • job 90170 qubes.exc.QubesVMError: Failed to attach audio input from dom0 to t...
    TC_20_NonAudio_whonix-gateway-17-pool/test_300_bug_1028_gui_memory_pinning (1/5 times with errors)
    • job 89654 AssertionError: Dom0 window doesn't match VM window content, saved ...
  • system_tests_basic_vm_qrexec_gui_xfs

    TC_20_AudioVM_Pulse_debian-12-xfce-pool/test_220_audio_play_pulseaudio (2/5 times with errors)
    • job 91774 AssertionError: too short audio, expected 10s, got 9.48501133786848...
    • job 91797 AssertionError: too short audio, expected 10s, got 8.22698412698412...
    TC_20_AudioVM_Pulse_fedora-38-xfce-pool/test_220_audio_play_pulseaudio (2/5 times with errors)
    • job 91774 AssertionError: too short audio, expected 10s, got 8.41195011337868...
    • job 91797 AssertionError: too short audio, expected 10s, got 9.39836734693877...
    TC_20_AudioVM_PipeWire_debian-12-xfce-pool/test_227_audio_rec_muted_pipewire (1/5 times with errors)
    • job 89656 AttributeError: 'NoneType' object has no attribute 'read'
  • system_tests_basic_vm_qrexec_gui@hw1

    TC_20_AudioVM_Pulse_debian-12-xfce/test_220_audio_play_pulseaudio (1/5 times with errors)
    • job 91771 AssertionError: too short audio, expected 10s, got 8.76888888888888...
    TC_20_AudioVM_Pulse_fedora-38-xfce/test_220_audio_play_pulseaudio (1/5 times with errors)
    • job 91771 AssertionError: too short audio, expected 10s, got 9.33428571428571...
    TC_20_AudioVM_PipeWire_debian-12-xfce/test_226_audio_playback_pipewire (1/5 times with errors)
    • job 91771 AssertionError: too short audio, expected 10s, got 9.22444444444444...
    TC_20_AudioVM_PipeWire_fedora-38-xfce/test_226_audio_playback_pipewire (1/5 times with errors)
    • job 90153 AssertionError: Command 'pw-play --format=f32 --rate=44100 --channe...
    TC_20_NonAudio_whonix-gateway-17/test_300_bug_1028_gui_memory_pinning (1/5 times with errors)
    • job 90153 AssertionError: Dom0 window doesn't match VM window content, saved ...
  • system_tests_suspend@hw1

    suspend/Failed (1/5 times with errors)
    • job 91086 # Test died: command 'true' timed out at /usr/lib/os-autoinst/autot...
    suspend/wait_serial (1/5 times with errors)
    • job 91086 # wait_serial expected: qr/p5~T5-\d+-/...
  • system_tests_basic_vm_qrexec_gui_ext4

    TC_20_AudioVM_Pulse_debian-12-xfce-pool/test_220_audio_play_pulseaudio (2/5 times with errors)
    • job 91773 AssertionError: too short audio, expected 10s, got 9.06770975056689...
    • job 91796 AssertionError: too short audio, expected 10s, got 9.01487528344671...
    TC_20_AudioVM_Pulse_fedora-38-xfce-pool/test_220_audio_play_pulseaudio (1/5 times with errors)
    • job 91796 AssertionError: too short audio, expected 10s, got 8.55206349206349...
    TC_20_AudioVM_PipeWire_debian-12-xfce-pool/test_226_audio_playback_pipewire (1/5 times with errors)
    • job 91796 AssertionError: too short audio, expected 10s, got 9.41421768707483...
    TC_20_AudioVM_PipeWire_fedora-38-xfce-pool/test_226_audio_playback_pipewire (1/5 times with errors)
    • job 91796 AssertionError: too short audio, expected 10s, got 9.44544217687074...
  • system_tests_basic_vm_qrexec_gui

    TC_20_AudioVM_Pulse_debian-12-xfce/test_220_audio_play_pulseaudio (1/5 times with errors)
    • job 91771 AssertionError: too short audio, expected 10s, got 8.76888888888888...
    TC_20_AudioVM_Pulse_fedora-38-xfce/test_220_audio_play_pulseaudio (1/5 times with errors)
    • job 91771 AssertionError: too short audio, expected 10s, got 9.33428571428571...
    TC_20_AudioVM_PipeWire_debian-12-xfce/test_226_audio_playback_pipewire (1/5 times with errors)
    • job 91771 AssertionError: too short audio, expected 10s, got 9.22444444444444...
    TC_20_AudioVM_PipeWire_fedora-38-xfce/test_226_audio_playback_pipewire (1/5 times with errors)
    • job 90153 AssertionError: Command 'pw-play --format=f32 --rate=44100 --channe...
    TC_20_NonAudio_whonix-gateway-17/test_300_bug_1028_gui_memory_pinning (1/5 times with errors)
    • job 90153 AssertionError: Dom0 window doesn't match VM window content, saved ...

@marmarek
Copy link
Member

This does not help (see test report above, those tests generally correlate with user visible behavior). It's a bit surprising TBH, but also I have attempted similar approach when initially debugging the PW issues and also it had surprisingly negligible (if at all) effect. Maybe there is some implicit uncork somewhere so this change is no-op in practice?

@DemiMarie
Copy link
Contributor Author

This does not help (see test report above, those tests generally correlate with user visible behavior). It's a bit surprising TBH, but also I have attempted similar approach when initially debugging the PW issues and also it had surprisingly negligible (if at all) effect. Maybe there is some implicit uncork somewhere so this change is no-op in practice?

Maybe there is a bug in pacat-simple-vchan? I’m almost certain that the behavior in this PR is correct.

@DemiMarie DemiMarie force-pushed the fix-problems-early-playback branch from 6124273 to 0f121f2 Compare February 15, 2024 22:29
@marmarek
Copy link
Member

I did not found any implicit uncork, so I added extra logging to see vchan fill level, and it seems not much data is sent before uncorking.
The log is produced with this patch:

diff --git a/pulse/pacat-simple-vchan.c b/pulse/pacat-simple-vchan.c
index 69b5d9a..1280368 100644
--- a/pulse/pacat-simple-vchan.c
+++ b/pulse/pacat-simple-vchan.c
@@ -210,6 +210,8 @@ static void process_playback_data(struct userdata *u, pa_stream *s, size_t max_l
         return;
     }
 
+    pacat_log("Reading up to %d bytes, corked %d, bytes in vchan %d", max_length, pa_stream_is_corked(s), space_in_vchan);
+
     buffer_length = (size_t)space_in_vchan > max_length ? max_length : (size_t)space_in_vchan;
     if (!buffer_length)
         goto maybe_cork;
The log

Connection to qube established, connecting to PulseAudio daemon

Connection established.
Stream successfully created.
Buffer metrics: maxlength=4194304, tlength=19680, prebuf=18660, minreq=1024
Using sample spec 's16le 2ch 44100Hz', channel map 'front-left,front-right'.
Connected to device alsa_output.pci-0000_00_1f.3.analog-stereo (0, not suspended).
Reading up to 19680 bytes, corked 0, bytes in vchan 0
Stream successfully created.
Buffer metrics: maxlength=4194304, tlength=4096, prebuf=4294967295, minreq=4294967295
Using sample spec 's16le 2ch 44100Hz', channel map 'front-left,front-right'.
Connected to device alsa_output.pci-0000_00_1f.3.analog-stereo.monitor (0, not suspended).
Stream drain
Reading up to 19680 bytes, corked 0, bytes in vchan 0
Cork requested and playback vchan empty. Draining playback stream.
Playback vchan empty and playback stream drained. Corking playback stream.

Reading up to 19680 bytes, corked 1, bytes in vchan 7412
Stream uncork
Reading up to 12268 bytes, corked 0, bytes in vchan 7524
Stream device alsa_output.pci-0000_00_1f.3.analog-stereo resumed.
Stream device alsa_output.pci-0000_00_1f.3.analog-stereo.monitor resumed.
Reading up to 4744 bytes, corked 0, bytes in vchan 7528
Stream started.
Reading up to 17376 bytes, corked 0, bytes in vchan 2784
Reading up to 19360 bytes, corked 0, bytes in vchan 0
Reading up to 19360 bytes, corked 0, bytes in vchan 7524
Reading up to 12156 bytes, corked 0, bytes in vchan 0
Stream underrun.
Reading up to 12156 bytes, corked 0, bytes in vchan 7528
Reading up to 4628 bytes, corked 0, bytes in vchan 7528
Stream started.
Reading up to 17408 bytes, corked 0, bytes in vchan 2900
Reading up to 18828 bytes, corked 0, bytes in vchan 0
Reading up to 18828 bytes, corked 0, bytes in vchan 7524
Reading up to 12156 bytes, corked 0, bytes in vchan 0
Stream underrun.
Reading up to 12156 bytes, corked 0, bytes in vchan 7528
Reading up to 4628 bytes, corked 0, bytes in vchan 7524
Stream started.
Reading up to 17196 bytes, corked 0, bytes in vchan 2896
Reading up to 18076 bytes, corked 0, bytes in vchan 0
Reading up to 18076 bytes, corked 0, bytes in vchan 7528
Reading up to 12152 bytes, corked 0, bytes in vchan 0
Stream underrun.
Reading up to 12152 bytes, corked 0, bytes in vchan 7528
Reading up to 4624 bytes, corked 0, bytes in vchan 7524
Stream started.
Reading up to 17116 bytes, corked 0, bytes in vchan 2900
Reading up to 16780 bytes, corked 0, bytes in vchan 0
Reading up to 16780 bytes, corked 0, bytes in vchan 7528
Reading up to 12152 bytes, corked 0, bytes in vchan 0
Stream underrun.
Reading up to 12152 bytes, corked 0, bytes in vchan 7524
Reading up to 4628 bytes, corked 0, bytes in vchan 7528
Stream started.
Reading up to 16968 bytes, corked 0, bytes in vchan 2900
Reading up to 16780 bytes, corked 0, bytes in vchan 0
Reading up to 16780 bytes, corked 0, bytes in vchan 7528
Reading up to 12152 bytes, corked 0, bytes in vchan 0
Stream underrun.
Reading up to 12152 bytes, corked 0, bytes in vchan 7524
Reading up to 4628 bytes, corked 0, bytes in vchan 7528
Stream started.
Reading up to 6132 bytes, corked 0, bytes in vchan 2900
Reading up to 14016 bytes, corked 0, bytes in vchan 0
Reading up to 16704 bytes, corked 0, bytes in vchan 0
Reading up to 19680 bytes, corked 0, bytes in vchan 0
Stream underrun.
Reading up to 19680 bytes, corked 0, bytes in vchan 7524
Reading up to 12156 bytes, corked 0, bytes in vchan 7528
Reading up to 4628 bytes, corked 0, bytes in vchan 7528
Stream started.
Reading up to 16832 bytes, corked 0, bytes in vchan 2900
Reading up to 15916 bytes, corked 0, bytes in vchan 0
Reading up to 19680 bytes, corked 0, bytes in vchan 0
Stream underrun.
Reading up to 19680 bytes, corked 0, bytes in vchan 7524
Reading up to 12156 bytes, corked 0, bytes in vchan 7528
Reading up to 4628 bytes, corked 0, bytes in vchan 7524
Stream started.
Reading up to 16748 bytes, corked 0, bytes in vchan 2896
Reading up to 15548 bytes, corked 0, bytes in vchan 0
Reading up to 19680 bytes, corked 0, bytes in vchan 0
Stream underrun.
Reading up to 19680 bytes, corked 0, bytes in vchan 7528
Reading up to 12152 bytes, corked 0, bytes in vchan 7528
Reading up to 4624 bytes, corked 0, bytes in vchan 7524
Stream started.
Reading up to 16636 bytes, corked 0, bytes in vchan 2900
Reading up to 15016 bytes, corked 0, bytes in vchan 0
Reading up to 19528 bytes, corked 0, bytes in vchan 0
Reading up to 19528 bytes, corked 0, bytes in vchan 7528
Reading up to 12152 bytes, corked 0, bytes in vchan 0
Stream underrun.
Reading up to 12152 bytes, corked 0, bytes in vchan 7524
Reading up to 4628 bytes, corked 0, bytes in vchan 7528
Stream started.
Reading up to 16520 bytes, corked 0, bytes in vchan 2900
Reading up to 18708 bytes, corked 0, bytes in vchan 0
Reading up to 18708 bytes, corked 0, bytes in vchan 7528
Reading up to 12152 bytes, corked 0, bytes in vchan 0
Stream underrun.
Reading up to 12152 bytes, corked 0, bytes in vchan 7524
Reading up to 4628 bytes, corked 0, bytes in vchan 7528
Stream started.
Reading up to 16404 bytes, corked 0, bytes in vchan 2900
Reading up to 18368 bytes, corked 0, bytes in vchan 0
Reading up to 18368 bytes, corked 0, bytes in vchan 7524
Reading up to 12156 bytes, corked 0, bytes in vchan 0
Stream underrun.
Reading up to 12156 bytes, corked 0, bytes in vchan 7528
Reading up to 4628 bytes, corked 0, bytes in vchan 7528
Stream started.
Reading up to 16224 bytes, corked 0, bytes in vchan 2900
Reading up to 17836 bytes, corked 0, bytes in vchan 0
Reading up to 17836 bytes, corked 0, bytes in vchan 7524
Reading up to 12156 bytes, corked 0, bytes in vchan 0
Stream underrun.
Reading up to 12156 bytes, corked 0, bytes in vchan 7528
Reading up to 4628 bytes, corked 0, bytes in vchan 7524
Stream started.
Reading up to 16108 bytes, corked 0, bytes in vchan 2896
Reading up to 16784 bytes, corked 0, bytes in vchan 0
Reading up to 16784 bytes, corked 0, bytes in vchan 7528
Reading up to 12152 bytes, corked 0, bytes in vchan 0
Stream underrun.
Reading up to 12152 bytes, corked 0, bytes in vchan 7528
Reading up to 4624 bytes, corked 0, bytes in vchan 7524
Stream started.
Reading up to 15056 bytes, corked 0, bytes in vchan 2900
Reading up to 13224 bytes, corked 0, bytes in vchan 0
Reading up to 16552 bytes, corked 0, bytes in vchan 0
Reading up to 16552 bytes, corked 0, bytes in vchan 7528
Reading up to 12152 bytes, corked 0, bytes in vchan 0
Stream underrun.
Reading up to 12152 bytes, corked 0, bytes in vchan 7524
Reading up to 4628 bytes, corked 0, bytes in vchan 7528
Stream started.
Reading up to 15912 bytes, corked 0, bytes in vchan 2900
Reading up to 16244 bytes, corked 0, bytes in vchan 0
Reading up to 16244 bytes, corked 0, bytes in vchan 7528
Reading up to 12152 bytes, corked 0, bytes in vchan 0
Stream underrun.
Reading up to 12152 bytes, corked 0, bytes in vchan 7524
Reading up to 4628 bytes, corked 0, bytes in vchan 7528
Stream started.
Reading up to 15052 bytes, corked 0, bytes in vchan 2900
Reading up to 15712 bytes, corked 0, bytes in vchan 0
Reading up to 19680 bytes, corked 0, bytes in vchan 0
Stream underrun.
Reading up to 19680 bytes, corked 0, bytes in vchan 7524
Reading up to 12156 bytes, corked 0, bytes in vchan 7528
Reading up to 4628 bytes, corked 0, bytes in vchan 7528
Stream started.
Reading up to 15052 bytes, corked 0, bytes in vchan 2900
Reading up to 15148 bytes, corked 0, bytes in vchan 0
Reading up to 19340 bytes, corked 0, bytes in vchan 0
Reading up to 19340 bytes, corked 0, bytes in vchan 7524
Reading up to 12156 bytes, corked 0, bytes in vchan 0
Stream underrun.
Reading up to 12156 bytes, corked 0, bytes in vchan 7528
Reading up to 4628 bytes, corked 0, bytes in vchan 7524
Stream started.
Reading up to 15052 bytes, corked 0, bytes in vchan 2896
Reading up to 14396 bytes, corked 0, bytes in vchan 0
Reading up to 19036 bytes, corked 0, bytes in vchan 0
Reading up to 19036 bytes, corked 0, bytes in vchan 7528
Reading up to 12152 bytes, corked 0, bytes in vchan 0
Stream underrun.
Reading up to 12152 bytes, corked 0, bytes in vchan 7528
Reading up to 4624 bytes, corked 0, bytes in vchan 7524
Stream started.
Reading up to 12348 bytes, corked 0, bytes in vchan 2900
Reading up to 12156 bytes, corked 0, bytes in vchan 0
Reading up to 14120 bytes, corked 0, bytes in vchan 0
Reading up to 18504 bytes, corked 0, bytes in vchan 0
Reading up to 18504 bytes, corked 0, bytes in vchan 7528
Reading up to 12152 bytes, corked 0, bytes in vchan 0
Stream underrun.
Reading up to 12152 bytes, corked 0, bytes in vchan 7524
Reading up to 4628 bytes, corked 0, bytes in vchan 7528
Stream started.
Reading up to 15052 bytes, corked 0, bytes in vchan 2900
Reading up to 13492 bytes, corked 0, bytes in vchan 0
Reading up to 17972 bytes, corked 0, bytes in vchan 0
Reading up to 17972 bytes, corked 0, bytes in vchan 7528
Reading up to 12152 bytes, corked 0, bytes in vchan 0
Stream underrun.
Reading up to 12152 bytes, corked 0, bytes in vchan 7524
Reading up to 4628 bytes, corked 0, bytes in vchan 7528
Stream started.
Reading up to 15052 bytes, corked 0, bytes in vchan 2900
Reading up to 16780 bytes, corked 0, bytes in vchan 0
Reading up to 16780 bytes, corked 0, bytes in vchan 7524
Reading up to 12156 bytes, corked 0, bytes in vchan 0
Stream underrun.
Reading up to 12156 bytes, corked 0, bytes in vchan 7528
Reading up to 4628 bytes, corked 0, bytes in vchan 7528
Stream started.
Reading up to 15052 bytes, corked 0, bytes in vchan 2900
Reading up to 16780 bytes, corked 0, bytes in vchan 0
Reading up to 16780 bytes, corked 0, bytes in vchan 7524
Reading up to 12136 bytes, corked 0, bytes in vchan 0
Reading up to 13704 bytes, corked 0, bytes in vchan 0
Reading up to 18120 bytes, corked 0, bytes in vchan 0
Reading up to 18120 bytes, corked 0, bytes in vchan 7528
Reading up to 12152 bytes, corked 0, bytes in vchan 0
Stream underrun.
Reading up to 12152 bytes, corked 0, bytes in vchan 7524
Reading up to 4628 bytes, corked 0, bytes in vchan 7528
Stream started.
Reading up to 15016 bytes, corked 0, bytes in vchan 2900
Reading up to 13268 bytes, corked 0, bytes in vchan 0
Reading up to 16780 bytes, corked 0, bytes in vchan 0
Reading up to 16780 bytes, corked 0, bytes in vchan 7528
Reading up to 12140 bytes, corked 0, bytes in vchan 0
Reading up to 14540 bytes, corked 0, bytes in vchan 0
Reading up to 18860 bytes, corked 0, bytes in vchan 0
Reading up to 18860 bytes, corked 0, bytes in vchan 7524
Reading up to 15752 bytes, corked 0, bytes in vchan 0
Reading up to 15752 bytes, corked 0, bytes in vchan 7528
Reading up to 11968 bytes, corked 0, bytes in vchan 0
Reading up to 17024 bytes, corked 0, bytes in vchan 0
Reading up to 17024 bytes, corked 0, bytes in vchan 7524
Reading up to 11868 bytes, corked 0, bytes in vchan 0
Reading up to 13948 bytes, corked 0, bytes in vchan 0
Reading up to 18332 bytes, corked 0, bytes in vchan 0
Reading up to 18332 bytes, corked 0, bytes in vchan 7528
Reading up to 11860 bytes, corked 0, bytes in vchan 0
Reading up to 15028 bytes, corked 0, bytes in vchan 0
Reading up to 15028 bytes, corked 0, bytes in vchan 7528
Reading up to 11948 bytes, corked 0, bytes in vchan 0
Reading up to 16492 bytes, corked 0, bytes in vchan 0
Reading up to 16492 bytes, corked 0, bytes in vchan 7524
Reading up to 11848 bytes, corked 0, bytes in vchan 0
Reading up to 13416 bytes, corked 0, bytes in vchan 0
Reading up to 17608 bytes, corked 0, bytes in vchan 0
Reading up to 17608 bytes, corked 0, bytes in vchan 7528
Reading up to 11744 bytes, corked 0, bytes in vchan 0
Reading up to 14688 bytes, corked 0, bytes in vchan 0
Reading up to 19104 bytes, corked 0, bytes in vchan 0
Reading up to 19104 bytes, corked 0, bytes in vchan 7524
Reading up to 15964 bytes, corked 0, bytes in vchan 0
Reading up to 15964 bytes, corked 0, bytes in vchan 7528
Reading up to 11828 bytes, corked 0, bytes in vchan 0
Reading up to 17268 bytes, corked 0, bytes in vchan 0
Reading up to 17268 bytes, corked 0, bytes in vchan 7528
Reading up to 11724 bytes, corked 0, bytes in vchan 0
Reading up to 14156 bytes, corked 0, bytes in vchan 0
Reading up to 18572 bytes, corked 0, bytes in vchan 0
Reading up to 18572 bytes, corked 0, bytes in vchan 7524
Reading up to 15240 bytes, corked 0, bytes in vchan 0
Reading up to 15240 bytes, corked 0, bytes in vchan 7528
Reading up to 11680 bytes, corked 0, bytes in vchan 0
Reading up to 16768 bytes, corked 0, bytes in vchan 0
Reading up to 16768 bytes, corked 0, bytes in vchan 7524
Reading up to 11580 bytes, corked 0, bytes in vchan 0
Reading up to 13628 bytes, corked 0, bytes in vchan 0
Reading up to 17820 bytes, corked 0, bytes in vchan 0
Reading up to 17820 bytes, corked 0, bytes in vchan 7528
Reading up to 11508 bytes, corked 0, bytes in vchan 0
Reading up to 14932 bytes, corked 0, bytes in vchan 0
Reading up to 14932 bytes, corked 0, bytes in vchan 7528
Reading up to 11532 bytes, corked 0, bytes in vchan 0
Reading up to 16204 bytes, corked 0, bytes in vchan 0
Reading up to 16204 bytes, corked 0, bytes in vchan 7524
Reading up to 11560 bytes, corked 0, bytes in vchan 0
Reading up to 12872 bytes, corked 0, bytes in vchan 0
Reading up to 17512 bytes, corked 0, bytes in vchan 0
Reading up to 17512 bytes, corked 0, bytes in vchan 7528
Reading up to 11424 bytes, corked 0, bytes in vchan 0
Reading up to 14368 bytes, corked 0, bytes in vchan 0
Reading up to 18816 bytes, corked 0, bytes in vchan 0
Reading up to 18816 bytes, corked 0, bytes in vchan 7524
Reading up to 15452 bytes, corked 0, bytes in vchan 0
Reading up to 15452 bytes, corked 0, bytes in vchan 7528
Reading up to 11412 bytes, corked 0, bytes in vchan 0
Reading up to 12532 bytes, corked 0, bytes in vchan 0
Reading up to 17012 bytes, corked 0, bytes in vchan 0
Reading up to 17012 bytes, corked 0, bytes in vchan 7528
Reading up to 11308 bytes, corked 0, bytes in vchan 0
Reading up to 13868 bytes, corked 0, bytes in vchan 0
Reading up to 18028 bytes, corked 0, bytes in vchan 0
Reading up to 18028 bytes, corked 0, bytes in vchan 7524
Reading up to 15176 bytes, corked 0, bytes in vchan 0
Reading up to 15176 bytes, corked 0, bytes in vchan 7528
Reading up to 11264 bytes, corked 0, bytes in vchan 0
Reading up to 16448 bytes, corked 0, bytes in vchan 0
Reading up to 16448 bytes, corked 0, bytes in vchan 7524
Reading up to 11260 bytes, corked 0, bytes in vchan 0
Reading up to 13084 bytes, corked 0, bytes in vchan 0
Reading up to 17756 bytes, corked 0, bytes in vchan 0
Reading up to 17756 bytes, corked 0, bytes in vchan 7528
Reading up to 14644 bytes, corked 0, bytes in vchan 0
Reading up to 14644 bytes, corked 0, bytes in vchan 7528
Reading up to 11116 bytes, corked 0, bytes in vchan 0
Reading up to 15660 bytes, corked 0, bytes in vchan 0
Reading up to 15660 bytes, corked 0, bytes in vchan 7524
Reading up to 11016 bytes, corked 0, bytes in vchan 0
Reading up to 12156 bytes, corked 0, bytes in vchan 0
Reading up to 17192 bytes, corked 0, bytes in vchan 0
Reading up to 17192 bytes, corked 0, bytes in vchan 7528
Reading up to 11072 bytes, corked 0, bytes in vchan 0
Reading up to 14080 bytes, corked 0, bytes in vchan 0
Reading up to 18240 bytes, corked 0, bytes in vchan 0
Reading up to 18240 bytes, corked 0, bytes in vchan 7524
Reading up to 15388 bytes, corked 0, bytes in vchan 0
Reading up to 15388 bytes, corked 0, bytes in vchan 7528
Reading up to 10996 bytes, corked 0, bytes in vchan 0
Reading up to 12152 bytes, corked 0, bytes in vchan 0
Reading up to 16692 bytes, corked 0, bytes in vchan 0
Reading up to 16692 bytes, corked 0, bytes in vchan 7528
Reading up to 10988 bytes, corked 0, bytes in vchan 0
Reading up to 13292 bytes, corked 0, bytes in vchan 0
Reading up to 17868 bytes, corked 0, bytes in vchan 0
Reading up to 17868 bytes, corked 0, bytes in vchan 7524
Reading up to 14760 bytes, corked 0, bytes in vchan 0
Reading up to 14760 bytes, corked 0, bytes in vchan 7528
Reading up to 10816 bytes, corked 0, bytes in vchan 0
Reading up to 15872 bytes, corked 0, bytes in vchan 0
Reading up to 15872 bytes, corked 0, bytes in vchan 7524
Reading up to 10876 bytes, corked 0, bytes in vchan 0
Reading up to 12156 bytes, corked 0, bytes in vchan 0
Reading up to 17340 bytes, corked 0, bytes in vchan 0
Reading up to 17340 bytes, corked 0, bytes in vchan 7528
Reading up to 10868 bytes, corked 0, bytes in vchan 0
Reading up to 14228 bytes, corked 0, bytes in vchan 0
Reading up to 14228 bytes, corked 0, bytes in vchan 7528
Reading up to 10700 bytes, corked 0, bytes in vchan 0
Reading up to 15468 bytes, corked 0, bytes in vchan 0
Reading up to 15468 bytes, corked 0, bytes in vchan 7524
Reading up to 10696 bytes, corked 0, bytes in vchan 0
Reading up to 12156 bytes, corked 0, bytes in vchan 0
Reading up to 16776 bytes, corked 0, bytes in vchan 0
Reading up to 16776 bytes, corked 0, bytes in vchan 7528
Reading up to 10720 bytes, corked 0, bytes in vchan 0
Reading up to 13504 bytes, corked 0, bytes in vchan 0
Reading up to 18080 bytes, corked 0, bytes in vchan 0
Reading up to 18080 bytes, corked 0, bytes in vchan 7524
Reading up to 15004 bytes, corked 0, bytes in vchan 0
Reading up to 15004 bytes, corked 0, bytes in vchan 7528
Reading up to 10708 bytes, corked 0, bytes in vchan 0
Reading up to 11956 bytes, corked 0, bytes in vchan 0
Reading up to 16084 bytes, corked 0, bytes in vchan 0
Reading up to 16084 bytes, corked 0, bytes in vchan 7528
Reading up to 10572 bytes, corked 0, bytes in vchan 0
Reading up to 12152 bytes, corked 0, bytes in vchan 0
Reading up to 17580 bytes, corked 0, bytes in vchan 0
Reading up to 17580 bytes, corked 0, bytes in vchan 7524
Reading up to 14440 bytes, corked 0, bytes in vchan 0
Reading up to 14440 bytes, corked 0, bytes in vchan 7528
Reading up to 10528 bytes, corked 0, bytes in vchan 0
Reading up to 15744 bytes, corked 0, bytes in vchan 0
Reading up to 15744 bytes, corked 0, bytes in vchan 7524
Reading up to 10428 bytes, corked 0, bytes in vchan 0
Reading up to 12156 bytes, corked 0, bytes in vchan 0
Reading up to 17052 bytes, corked 0, bytes in vchan 0
Reading up to 17052 bytes, corked 0, bytes in vchan 7528
Reading up to 13716 bytes, corked 0, bytes in vchan 0
Reading up to 13716 bytes, corked 0, bytes in vchan 7528
Reading up to 10380 bytes, corked 0, bytes in vchan 0
Reading up to 15212 bytes, corked 0, bytes in vchan 0
Reading up to 15212 bytes, corked 0, bytes in vchan 7524
Reading up to 10312 bytes, corked 0, bytes in vchan 0
Reading up to 12072 bytes, corked 0, bytes in vchan 0
Reading up to 16296 bytes, corked 0, bytes in vchan 0
Reading up to 16296 bytes, corked 0, bytes in vchan 7528
Reading up to 10304 bytes, corked 0, bytes in vchan 0
Reading up to 13376 bytes, corked 0, bytes in vchan 0
Reading up to 13376 bytes, corked 0, bytes in vchan 7524
Reading up to 10268 bytes, corked 0, bytes in vchan 0
Reading up to 14684 bytes, corked 0, bytes in vchan 0
Reading up to 14684 bytes, corked 0, bytes in vchan 7528
Reading up to 10132 bytes, corked 0, bytes in vchan 0
Reading up to 11348 bytes, corked 0, bytes in vchan 0
Reading up to 15956 bytes, corked 0, bytes in vchan 0
Reading up to 15956 bytes, corked 0, bytes in vchan 7528
Reading up to 10156 bytes, corked 0, bytes in vchan 0
Reading up to 12152 bytes, corked 0, bytes in vchan 0
Reading up to 17228 bytes, corked 0, bytes in vchan 0
Reading up to 17228 bytes, corked 0, bytes in vchan 7524
Reading up to 13928 bytes, corked 0, bytes in vchan 0
Reading up to 13928 bytes, corked 0, bytes in vchan 7528
Reading up to 10144 bytes, corked 0, bytes in vchan 0
Reading up to 15424 bytes, corked 0, bytes in vchan 0
Reading up to 15424 bytes, corked 0, bytes in vchan 7524
Reading up to 10140 bytes, corked 0, bytes in vchan 0
Reading up to 12156 bytes, corked 0, bytes in vchan 0
Reading up to 16508 bytes, corked 0, bytes in vchan 0
Reading up to 16508 bytes, corked 0, bytes in vchan 7528
Reading up to 10036 bytes, corked 0, bytes in vchan 0
Reading up to 13620 bytes, corked 0, bytes in vchan 0
Reading up to 13620 bytes, corked 0, bytes in vchan 7528
Reading up to 9964 bytes, corked 0, bytes in vchan 0
Reading up to 14892 bytes, corked 0, bytes in vchan 0
Reading up to 14892 bytes, corked 0, bytes in vchan 7524
Reading up to 9992 bytes, corked 0, bytes in vchan 0
Reading up to 11560 bytes, corked 0, bytes in vchan 0
Reading up to 16200 bytes, corked 0, bytes in vchan 0
Reading up to 16200 bytes, corked 0, bytes in vchan 7528
Reading up to 9920 bytes, corked 0, bytes in vchan 0
Reading up to 12152 bytes, corked 0, bytes in vchan 0
Reading up to 12152 bytes, corked 0, bytes in vchan 7524
Reading up to 9820 bytes, corked 0, bytes in vchan 0
Reading up to 14140 bytes, corked 0, bytes in vchan 0
Reading up to 14140 bytes, corked 0, bytes in vchan 7528
Reading up to 9844 bytes, corked 0, bytes in vchan 0
Reading up to 11284 bytes, corked 0, bytes in vchan 0
Reading up to 15700 bytes, corked 0, bytes in vchan 0
Reading up to 15700 bytes, corked 0, bytes in vchan 7528
Reading up to 9868 bytes, corked 0, bytes in vchan 0
Reading up to 12152 bytes, corked 0, bytes in vchan 0
Reading up to 16716 bytes, corked 0, bytes in vchan 0
Reading up to 16716 bytes, corked 0, bytes in vchan 7524
Reading up to 13864 bytes, corked 0, bytes in vchan 0
Reading up to 13864 bytes, corked 0, bytes in vchan 7528
Reading up to 9824 bytes, corked 0, bytes in vchan 0
Reading up to 15168 bytes, corked 0, bytes in vchan 0
Reading up to 15168 bytes, corked 0, bytes in vchan 7524
Reading up to 9724 bytes, corked 0, bytes in vchan 0
Reading up to 11772 bytes, corked 0, bytes in vchan 0
Reading up to 16412 bytes, corked 0, bytes in vchan 0
Reading up to 16412 bytes, corked 0, bytes in vchan 7528
Reading up to 13332 bytes, corked 0, bytes in vchan 0
Reading up to 13332 bytes, corked 0, bytes in vchan 7528
Reading up to 9676 bytes, corked 0, bytes in vchan 0
Reading up to 14348 bytes, corked 0, bytes in vchan 0
Reading up to 14348 bytes, corked 0, bytes in vchan 7524
Reading up to 9576 bytes, corked 0, bytes in vchan 0
Reading up to 11464 bytes, corked 0, bytes in vchan 0
Reading up to 15816 bytes, corked 0, bytes in vchan 0
Reading up to 15816 bytes, corked 0, bytes in vchan 7528
Reading up to 9600 bytes, corked 0, bytes in vchan 0
Reading up to 12152 bytes, corked 0, bytes in vchan 0
Reading up to 12152 bytes, corked 0, bytes in vchan 7524
Reading up to 9404 bytes, corked 0, bytes in vchan 0
Reading up to 13980 bytes, corked 0, bytes in vchan 0
Reading up to 13980 bytes, corked 0, bytes in vchan 7528
Reading up to 9556 bytes, corked 0, bytes in vchan 0
Reading up to 10900 bytes, corked 0, bytes in vchan 0
Reading up to 15380 bytes, corked 0, bytes in vchan 0
Reading up to 15380 bytes, corked 0, bytes in vchan 7528
Reading up to 9420 bytes, corked 0, bytes in vchan 0
Reading up to 11980 bytes, corked 0, bytes in vchan 0
Reading up to 16556 bytes, corked 0, bytes in vchan 0
Reading up to 16556 bytes, corked 0, bytes in vchan 7524
Reading up to 13416 bytes, corked 0, bytes in vchan 0
Reading up to 13416 bytes, corked 0, bytes in vchan 7528
Reading up to 9280 bytes, corked 0, bytes in vchan 0
Reading up to 10304 bytes, corked 0, bytes in vchan 0
Reading up to 14560 bytes, corked 0, bytes in vchan 0
Reading up to 14560 bytes, corked 0, bytes in vchan 7524
Reading up to 9308 bytes, corked 0, bytes in vchan 0
Reading up to 11612 bytes, corked 0, bytes in vchan 0
Reading up to 16028 bytes, corked 0, bytes in vchan 0
Reading up to 16028 bytes, corked 0, bytes in vchan 7528
Reading up to 12152 bytes, corked 0, bytes in vchan 0
Reading up to 12152 bytes, corked 0, bytes in vchan 7528
Reading up to 9260 bytes, corked 0, bytes in vchan 0
Reading up to 14188 bytes, corked 0, bytes in vchan 0
Reading up to 14188 bytes, corked 0, bytes in vchan 7524
Reading up to 9256 bytes, corked 0, bytes in vchan 0
Reading up to 11112 bytes, corked 0, bytes in vchan 0
Reading up to 15496 bytes, corked 0, bytes in vchan 0
Reading up to 15496 bytes, corked 0, bytes in vchan 7528
Reading up to 9152 bytes, corked 0, bytes in vchan 0
Reading up to 12152 bytes, corked 0, bytes in vchan 0
Reading up to 12152 bytes, corked 0, bytes in vchan 7524
Reading up to 9116 bytes, corked 0, bytes in vchan 0
Reading up to 13660 bytes, corked 0, bytes in vchan 0
Reading up to 13660 bytes, corked 0, bytes in vchan 7528
Reading up to 9108 bytes, corked 0, bytes in vchan 0
Reading up to 10644 bytes, corked 0, bytes in vchan 0
Reading up to 14772 bytes, corked 0, bytes in vchan 0
Reading up to 14772 bytes, corked 0, bytes in vchan 7528
Reading up to 9036 bytes, corked 0, bytes in vchan 0
Reading up to 11852 bytes, corked 0, bytes in vchan 0
Reading up to 16268 bytes, corked 0, bytes in vchan 0
Reading up to 16268 bytes, corked 0, bytes in vchan 7524
Reading up to 12156 bytes, corked 0, bytes in vchan 0
Reading up to 12156 bytes, corked 0, bytes in vchan 7528
Reading up to 9120 bytes, corked 0, bytes in vchan 0
Reading up to 14400 bytes, corked 0, bytes in vchan 0
Reading up to 14400 bytes, corked 0, bytes in vchan 7524
Reading up to 8860 bytes, corked 0, bytes in vchan 0
Reading up to 11324 bytes, corked 0, bytes in vchan 0
Reading up to 15740 bytes, corked 0, bytes in vchan 0
Reading up to 15740 bytes, corked 0, bytes in vchan 7528
Reading up to 12152 bytes, corked 0, bytes in vchan 0
Reading up to 12152 bytes, corked 0, bytes in vchan 7528
Reading up to 8844 bytes, corked 0, bytes in vchan 0
Reading up to 13900 bytes, corked 0, bytes in vchan 0
Reading up to 13900 bytes, corked 0, bytes in vchan 7524
Reading up to 8872 bytes, corked 0, bytes in vchan 0
Reading up to 10760 bytes, corked 0, bytes in vchan 0
Reading up to 14984 bytes, corked 0, bytes in vchan 0
Reading up to 14984 bytes, corked 0, bytes in vchan 7528
Reading up to 8864 bytes, corked 0, bytes in vchan 0
Reading up to 12096 bytes, corked 0, bytes in vchan 0
Reading up to 12096 bytes, corked 0, bytes in vchan 7524
Reading up to 8956 bytes, corked 0, bytes in vchan 0
Reading up to 13372 bytes, corked 0, bytes in vchan 0
Reading up to 13372 bytes, corked 0, bytes in vchan 7528
Reading up to 8692 bytes, corked 0, bytes in vchan 0
Reading up to 10036 bytes, corked 0, bytes in vchan 0
Reading up to 14676 bytes, corked 0, bytes in vchan 0
Reading up to 14676 bytes, corked 0, bytes in vchan 7528
Reading up to 8588 bytes, corked 0, bytes in vchan 0
Reading up to 11564 bytes, corked 0, bytes in vchan 0
Reading up to 15948 bytes, corked 0, bytes in vchan 0
Reading up to 15948 bytes, corked 0, bytes in vchan 7524
Reading up to 12156 bytes, corked 0, bytes in vchan 0
Reading up to 12156 bytes, corked 0, bytes in vchan 7528
Reading up to 8576 bytes, corked 0, bytes in vchan 0
Reading up to 9696 bytes, corked 0, bytes in vchan 0
Reading up to 14144 bytes, corked 0, bytes in vchan 0
Reading up to 14144 bytes, corked 0, bytes in vchan 7524
Reading up to 8572 bytes, corked 0, bytes in vchan 0
Reading up to 11036 bytes, corked 0, bytes in vchan 0
Reading up to 15196 bytes, corked 0, bytes in vchan 0
Reading up to 15196 bytes, corked 0, bytes in vchan 7528
Reading up to 12152 bytes, corked 0, bytes in vchan 0
Reading up to 12152 bytes, corked 0, bytes in vchan 7528
Reading up to 8524 bytes, corked 0, bytes in vchan 0
Reading up to 13580 bytes, corked 0, bytes in vchan 0
Reading up to 13580 bytes, corked 0, bytes in vchan 7524
Reading up to 8456 bytes, corked 0, bytes in vchan 0
Reading up to 10248 bytes, corked 0, bytes in vchan 0
Reading up to 14920 bytes, corked 0, bytes in vchan 0
Reading up to 14920 bytes, corked 0, bytes in vchan 7528
Reading up to 8448 bytes, corked 0, bytes in vchan 0
Reading up to 11808 bytes, corked 0, bytes in vchan 0
Reading up to 11808 bytes, corked 0, bytes in vchan 7524
Reading up to 8380 bytes, corked 0, bytes in vchan 0
Reading up to 12156 bytes, corked 0, bytes in vchan 0
Reading up to 12156 bytes, corked 0, bytes in vchan 7528
Reading up to 8308 bytes, corked 0, bytes in vchan 0
Reading up to 9972 bytes, corked 0, bytes in vchan 0
Reading up to 14388 bytes, corked 0, bytes in vchan 0
Reading up to 14388 bytes, corked 0, bytes in vchan 7528
Reading up to 8300 bytes, corked 0, bytes in vchan 0
Reading up to 11244 bytes, corked 0, bytes in vchan 0
Reading up to 15404 bytes, corked 0, bytes in vchan 0
Reading up to 15404 bytes, corked 0, bytes in vchan 7524
Reading up to 12156 bytes, corked 0, bytes in vchan 0
Reading up to 12156 bytes, corked 0, bytes in vchan 7528
Reading up to 8512 bytes, corked 0, bytes in vchan 0
Reading up to 13856 bytes, corked 0, bytes in vchan 0
Reading up to 13856 bytes, corked 0, bytes in vchan 7524
Reading up to 8284 bytes, corked 0, bytes in vchan 0
Reading up to 10460 bytes, corked 0, bytes in vchan 0
Reading up to 15100 bytes, corked 0, bytes in vchan 0
Reading up to 15100 bytes, corked 0, bytes in vchan 7528
Reading up to 11924 bytes, corked 0, bytes in vchan 0
Reading up to 11924 bytes, corked 0, bytes in vchan 7528
Reading up to 8140 bytes, corked 0, bytes in vchan 0
Reading up to 12152 bytes, corked 0, bytes in vchan 0
Reading up to 12152 bytes, corked 0, bytes in vchan 7524
Reading up to 8008 bytes, corked 0, bytes in vchan 0
Reading up to 10184 bytes, corked 0, bytes in vchan 0
Reading up to 14504 bytes, corked 0, bytes in vchan 0
Reading up to 14504 bytes, corked 0, bytes in vchan 7528
Reading up to 8032 bytes, corked 0, bytes in vchan 0
Reading up to 11488 bytes, corked 0, bytes in vchan 0
Reading up to 11488 bytes, corked 0, bytes in vchan 7524
Reading up to 7964 bytes, corked 0, bytes in vchan 0
Reading up to 12156 bytes, corked 0, bytes in vchan 0
Reading up to 12156 bytes, corked 0, bytes in vchan 7528
Reading up to 7860 bytes, corked 0, bytes in vchan 0
Reading up to 9556 bytes, corked 0, bytes in vchan 0
Reading up to 14036 bytes, corked 0, bytes in vchan 0
Reading up to 14036 bytes, corked 0, bytes in vchan 7528
Reading up to 7916 bytes, corked 0, bytes in vchan 0
Reading up to 10668 bytes, corked 0, bytes in vchan 0
Reading up to 15212 bytes, corked 0, bytes in vchan 0
Reading up to 15212 bytes, corked 0, bytes in vchan 7524
Reading up to 12136 bytes, corked 0, bytes in vchan 0
Reading up to 12136 bytes, corked 0, bytes in vchan 7528
Reading up to 7840 bytes, corked 0, bytes in vchan 0
Reading up to 9024 bytes, corked 0, bytes in vchan 0
Reading up to 13248 bytes, corked 0, bytes in vchan 0
Reading up to 13248 bytes, corked 0, bytes in vchan 7524
Reading up to 7740 bytes, corked 0, bytes in vchan 0
Reading up to 10268 bytes, corked 0, bytes in vchan 0
Reading up to 14716 bytes, corked 0, bytes in vchan 0
Reading up to 14716 bytes, corked 0, bytes in vchan 7528
Reading up to 11604 bytes, corked 0, bytes in vchan 0
Reading up to 11604 bytes, corked 0, bytes in vchan 7528
Reading up to 7692 bytes, corked 0, bytes in vchan 0
Reading up to 12152 bytes, corked 0, bytes in vchan 0
Reading up to 12152 bytes, corked 0, bytes in vchan 7524
Reading up to 7720 bytes, corked 0, bytes in vchan 0
Reading up to 9800 bytes, corked 0, bytes in vchan 0
Reading up to 14152 bytes, corked 0, bytes in vchan 0
Reading up to 14152 bytes, corked 0, bytes in vchan 7528
Reading up to 7680 bytes, corked 0, bytes in vchan 0
Reading up to 10880 bytes, corked 0, bytes in vchan 0
Reading up to 10880 bytes, corked 0, bytes in vchan 7524
Reading up to 7676 bytes, corked 0, bytes in vchan 0
Reading up to 12156 bytes, corked 0, bytes in vchan 0
Reading up to 12156 bytes, corked 0, bytes in vchan 7528
Reading up to 7572 bytes, corked 0, bytes in vchan 0
Reading up to 9236 bytes, corked 0, bytes in vchan 0
Reading up to 13460 bytes, corked 0, bytes in vchan 0
Reading up to 13460 bytes, corked 0, bytes in vchan 7528
Reading up to 7468 bytes, corked 0, bytes in vchan 0
Reading up to 10508 bytes, corked 0, bytes in vchan 0
Reading up to 10508 bytes, corked 0, bytes in vchan 7524
Reading up to 7432 bytes, corked 0, bytes in vchan 0
Reading up to 11816 bytes, corked 0, bytes in vchan 0
Reading up to 11816 bytes, corked 0, bytes in vchan 7528
Reading up to 7808 bytes, corked 0, bytes in vchan 0
Reading up to 12152 bytes, corked 0, bytes in vchan 0
Reading up to 12152 bytes, corked 0, bytes in vchan 7524
Reading up to 7420 bytes, corked 0, bytes in vchan 0
Reading up to 10012 bytes, corked 0, bytes in vchan 0
Reading up to 14428 bytes, corked 0, bytes in vchan 0
Reading up to 14428 bytes, corked 0, bytes in vchan 7528
Reading up to 11092 bytes, corked 0, bytes in vchan 0
Reading up to 11092 bytes, corked 0, bytes in vchan 7528
Reading up to 7404 bytes, corked 0, bytes in vchan 0
Reading up to 12152 bytes, corked 0, bytes in vchan 0
Reading up to 12152 bytes, corked 0, bytes in vchan 7524
Reading up to 7272 bytes, corked 0, bytes in vchan 0
Reading up to 9480 bytes, corked 0, bytes in vchan 0
Reading up to 13672 bytes, corked 0, bytes in vchan 0
Reading up to 13672 bytes, corked 0, bytes in vchan 7528
Reading up to 7232 bytes, corked 0, bytes in vchan 0
Reading up to 10784 bytes, corked 0, bytes in vchan 0
Reading up to 10784 bytes, corked 0, bytes in vchan 7524
Reading up to 7260 bytes, corked 0, bytes in vchan 0
Reading up to 12060 bytes, corked 0, bytes in vchan 0
Reading up to 12060 bytes, corked 0, bytes in vchan 7528
Reading up to 7188 bytes, corked 0, bytes in vchan 0
Reading up to 8724 bytes, corked 0, bytes in vchan 0
Reading up to 13364 bytes, corked 0, bytes in vchan 0
Reading up to 13364 bytes, corked 0, bytes in vchan 7528
Reading up to 7148 bytes, corked 0, bytes in vchan 0
Reading up to 10252 bytes, corked 0, bytes in vchan 0
Reading up to 10252 bytes, corked 0, bytes in vchan 7524
Reading up to 7112 bytes, corked 0, bytes in vchan 0
Reading up to 11304 bytes, corked 0, bytes in vchan 0
Reading up to 11304 bytes, corked 0, bytes in vchan 7528
Reading up to 7008 bytes, corked 0, bytes in vchan 0
Reading up to 8416 bytes, corked 0, bytes in vchan 0
Reading up to 12152 bytes, corked 0, bytes in vchan 0
Reading up to 12152 bytes, corked 0, bytes in vchan 7524
Reading up to 6940 bytes, corked 0, bytes in vchan 0
Reading up to 9724 bytes, corked 0, bytes in vchan 0
Reading up to 13884 bytes, corked 0, bytes in vchan 0
Reading up to 13884 bytes, corked 0, bytes in vchan 7528
Reading up to 10996 bytes, corked 0, bytes in vchan 0
Reading up to 10996 bytes, corked 0, bytes in vchan 7528
Reading up to 6860 bytes, corked 0, bytes in vchan 0
Reading up to 12152 bytes, corked 0, bytes in vchan 0
Reading up to 12152 bytes, corked 0, bytes in vchan 7524
Reading up to 6888 bytes, corked 0, bytes in vchan 0
Reading up to 8936 bytes, corked 0, bytes in vchan 0
Reading up to 13608 bytes, corked 0, bytes in vchan 0
Reading up to 13608 bytes, corked 0, bytes in vchan 7528
Reading up to 10496 bytes, corked 0, bytes in vchan 0
Reading up to 10496 bytes, corked 0, bytes in vchan 7524
Reading up to 6844 bytes, corked 0, bytes in vchan 0
Reading up to 11516 bytes, corked 0, bytes in vchan 0
Reading up to 11516 bytes, corked 0, bytes in vchan 7528
Reading up to 6740 bytes, corked 0, bytes in vchan 0
Reading up to 8660 bytes, corked 0, bytes in vchan 0
Reading up to 12152 bytes, corked 0, bytes in vchan 0
Reading up to 12152 bytes, corked 0, bytes in vchan 7528
Reading up to 6732 bytes, corked 0, bytes in vchan 0
Reading up to 9964 bytes, corked 0, bytes in vchan 0
Reading up to 9964 bytes, corked 0, bytes in vchan 7524
Reading up to 6568 bytes, corked 0, bytes in vchan 0
Reading up to 11240 bytes, corked 0, bytes in vchan 0
Reading up to 11240 bytes, corked 0, bytes in vchan 7528
Reading up to 6688 bytes, corked 0, bytes in vchan 0
Reading up to 8032 bytes, corked 0, bytes in vchan 0
Reading up to 12152 bytes, corked 0, bytes in vchan 0
Reading up to 12152 bytes, corked 0, bytes in vchan 7524
Reading up to 6620 bytes, corked 0, bytes in vchan 0
Reading up to 9148 bytes, corked 0, bytes in vchan 0
Reading up to 13724 bytes, corked 0, bytes in vchan 0
Reading up to 13724 bytes, corked 0, bytes in vchan 7528
Reading up to 10612 bytes, corked 0, bytes in vchan 0
Reading up to 10612 bytes, corked 0, bytes in vchan 7528
Reading up to 6508 bytes, corked 0, bytes in vchan 0
Reading up to 7596 bytes, corked 0, bytes in vchan 0
Reading up to 11724 bytes, corked 0, bytes in vchan 0
Reading up to 11724 bytes, corked 0, bytes in vchan 7524
Reading up to 6472 bytes, corked 0, bytes in vchan 0
Reading up to 8744 bytes, corked 0, bytes in vchan 0
Reading up to 13224 bytes, corked 0, bytes in vchan 0
Reading up to 13224 bytes, corked 0, bytes in vchan 7528
Reading up to 10080 bytes, corked 0, bytes in vchan 0
Reading up to 10080 bytes, corked 0, bytes in vchan 7524
Reading up to 6428 bytes, corked 0, bytes in vchan 0
Reading up to 11324 bytes, corked 0, bytes in vchan 0
Reading up to 11324 bytes, corked 0, bytes in vchan 7528
Reading up to 6356 bytes, corked 0, bytes in vchan 0
Reading up to 8308 bytes, corked 0, bytes in vchan 0
Reading up to 12152 bytes, corked 0, bytes in vchan 0
Reading up to 12152 bytes, corked 0, bytes in vchan 7528
Reading up to 6732 bytes, corked 0, bytes in vchan 0
Reading up to 9356 bytes, corked 0, bytes in vchan 0
Reading up to 9356 bytes, corked 0, bytes in vchan 7524
Reading up to 6440 bytes, corked 0, bytes in vchan 0
Reading up to 10792 bytes, corked 0, bytes in vchan 0
Reading up to 10792 bytes, corked 0, bytes in vchan 7528
Reading up to 6304 bytes, corked 0, bytes in vchan 0
Reading up to 7680 bytes, corked 0, bytes in vchan 0
Reading up to 11936 bytes, corked 0, bytes in vchan 0
Reading up to 11936 bytes, corked 0, bytes in vchan 7524
Reading up to 6204 bytes, corked 0, bytes in vchan 0
Reading up to 9084 bytes, corked 0, bytes in vchan 0
Reading up to 13436 bytes, corked 0, bytes in vchan 0
Reading up to 13436 bytes, corked 0, bytes in vchan 7528
Reading up to 10260 bytes, corked 0, bytes in vchan 0
Reading up to 10260 bytes, corked 0, bytes in vchan 7528
Reading up to 6220 bytes, corked 0, bytes in vchan 0
Reading up to 11628 bytes, corked 0, bytes in vchan 0
Reading up to 11628 bytes, corked 0, bytes in vchan 7524
Reading up to 6376 bytes, corked 0, bytes in vchan 0
Reading up to 8456 bytes, corked 0, bytes in vchan 0
Reading up to 12156 bytes, corked 0, bytes in vchan 0
Reading up to 12156 bytes, corked 0, bytes in vchan 7528
Reading up to 6240 bytes, corked 0, bytes in vchan 0
Reading up to 9568 bytes, corked 0, bytes in vchan 0
Reading up to 9568 bytes, corked 0, bytes in vchan 7524
Reading up to 6076 bytes, corked 0, bytes in vchan 0
Reading up to 11036 bytes, corked 0, bytes in vchan 0
Reading up to 11036 bytes, corked 0, bytes in vchan 7528
Reading up to 6036 bytes, corked 0, bytes in vchan 0
Reading up to 7924 bytes, corked 0, bytes in vchan 0
Reading up to 12148 bytes, corked 0, bytes in vchan 0
Reading up to 12148 bytes, corked 0, bytes in vchan 7528
Reading up to 5964 bytes, corked 0, bytes in vchan 0
Reading up to 9196 bytes, corked 0, bytes in vchan 0
Reading up to 9196 bytes, corked 0, bytes in vchan 7524
Reading up to 6056 bytes, corked 0, bytes in vchan 0
Reading up to 7080 bytes, corked 0, bytes in vchan 0
Reading up to 10504 bytes, corked 0, bytes in vchan 0
Reading up to 10504 bytes, corked 0, bytes in vchan 7528
Reading up to 5920 bytes, corked 0, bytes in vchan 0
Reading up to 7200 bytes, corked 0, bytes in vchan 0
Reading up to 11840 bytes, corked 0, bytes in vchan 0
Reading up to 11840 bytes, corked 0, bytes in vchan 7524
Reading up to 5788 bytes, corked 0, bytes in vchan 0
Reading up to 8668 bytes, corked 0, bytes in vchan 0
Reading up to 12156 bytes, corked 0, bytes in vchan 0
Reading up to 12156 bytes, corked 0, bytes in vchan 7528
Reading up to 6196 bytes, corked 0, bytes in vchan 0
Reading up to 9780 bytes, corked 0, bytes in vchan 0
Reading up to 9780 bytes, corked 0, bytes in vchan 7528
Reading up to 4624 bytes, corked 0, bytes in vchan 0
Reading up to 5772 bytes, corked 0, bytes in vchan 0
Reading up to 6860 bytes, corked 0, bytes in vchan 0
Reading up to 11212 bytes, corked 0, bytes in vchan 0
Reading up to 11212 bytes, corked 0, bytes in vchan 7524
Reading up to 5672 bytes, corked 0, bytes in vchan 0
Reading up to 8168 bytes, corked 0, bytes in vchan 0
Reading up to 12156 bytes, corked 0, bytes in vchan 0
Reading up to 12156 bytes, corked 0, bytes in vchan 7528
Reading up to 5664 bytes, corked 0, bytes in vchan 0
Reading up to 9440 bytes, corked 0, bytes in vchan 0
Reading up to 9440 bytes, corked 0, bytes in vchan 7524
Reading up to 5660 bytes, corked 0, bytes in vchan 0
Reading up to 10748 bytes, corked 0, bytes in vchan 0
Reading up to 10748 bytes, corked 0, bytes in vchan 7528
Reading up to 4628 bytes, corked 0, bytes in vchan 0
Reading up to 7412 bytes, corked 0, bytes in vchan 0
Reading up to 12020 bytes, corked 0, bytes in vchan 0
Reading up to 12020 bytes, corked 0, bytes in vchan 7528
Reading up to 5548 bytes, corked 0, bytes in vchan 0
Reading up to 8876 bytes, corked 0, bytes in vchan 0
Reading up to 8876 bytes, corked 0, bytes in vchan 7524
Reading up to 4628 bytes, corked 0, bytes in vchan 0
Reading up to 5768 bytes, corked 0, bytes in vchan 0
Reading up to 9992 bytes, corked 0, bytes in vchan 0
Reading up to 9992 bytes, corked 0, bytes in vchan 7528
Reading up to 4628 bytes, corked 0, bytes in vchan 0
Reading up to 7136 bytes, corked 0, bytes in vchan 0
Reading up to 11456 bytes, corked 0, bytes in vchan 0
Reading up to 11456 bytes, corked 0, bytes in vchan 7524
Reading up to 5468 bytes, corked 0, bytes in vchan 0
Reading up to 8412 bytes, corked 0, bytes in vchan 0
Reading up to 12156 bytes, corked 0, bytes in vchan 0
Reading up to 12156 bytes, corked 0, bytes in vchan 7528
Reading up to 9716 bytes, corked 0, bytes in vchan 0
Reading up to 9716 bytes, corked 0, bytes in vchan 7528
Reading up to 4624 bytes, corked 0, bytes in vchan 0
Reading up to 6508 bytes, corked 0, bytes in vchan 0
Reading up to 10956 bytes, corked 0, bytes in vchan 0
Reading up to 10956 bytes, corked 0, bytes in vchan 7524
Reading up to 4628 bytes, corked 0, bytes in vchan 0
Reading up to 7624 bytes, corked 0, bytes in vchan 0
Reading up to 12156 bytes, corked 0, bytes in vchan 0
Reading up to 12156 bytes, corked 0, bytes in vchan 7528
Reading up to 9056 bytes, corked 0, bytes in vchan 0
Stream drain
Reading up to 11968 bytes, corked 0, bytes in vchan 0
Cork requested and playback vchan empty. Draining playback stream.
Reading up to 13536 bytes, corked 0, bytes in vchan 0
Cork requested and playback vchan empty. Draining playback stream.
Reading up to 17728 bytes, corked 0, bytes in vchan 0
Cork requested and playback vchan empty. Draining playback stream.
Reading up to 19680 bytes, corked 0, bytes in vchan 0
Cork requested and playback vchan empty. Draining playback stream.
Stream underrun.
Playback vchan empty and playback stream drained. Corking playback stream.

This is with with low latency mode enabled.
Doubling bytes_before_start seems to help (at least on this system...), but I'm not sure if that's the proper solution.

@DemiMarie
Copy link
Contributor Author

@marmarek is the stream being corked and then immediately uncorked? There is a race if pacat-simple-vchan is draining the vchan while the audio daemon is trying to fill it. Could this be what you are seeing?

@marmarek
Copy link
Member

No, this happens also directly after starting the pacat process (and also waiting some time before hitting "play", just in case).

@DemiMarie DemiMarie force-pushed the fix-problems-early-playback branch from 0f121f2 to f7e3e4a Compare February 17, 2024 01:28
This ensures that pacat-simple-vchan has some data to play and doesn't
immediately underrun.  There are still A/V sync problems but these are
due to not properly reporting latency.

Also document some undocumented properties.
No functional change intended.
@DemiMarie DemiMarie force-pushed the fix-problems-early-playback branch from f7e3e4a to 7e3a7e4 Compare February 17, 2024 15:52
@marmarek
Copy link
Member

marmarek commented Feb 20, 2024

I collected some more data from logs and made a graph:
pw-initial-underrun2

Legend:

  • "new duration" value from trace log of pipewire module (blue line)
  • amount of data in vchan, as seen by pacat (green)
  • amount of data PA wants to read at most (yellow)
  • latency as reported by PA in usecs (pink)
  • whether stream is playing (1) or underrun (1) (red)

The y-axis is a bit messy, but you can get the idea.

When it stabilizes, it's very nice, but initial part is messy - including a lot of underruns during first 4s. I have a bit of trouble interpreting what I see here, but my current guess is some extra buffer that we don't account for. I'll dig deeper into documentation what that is, and how should it be handled.

@DemiMarie
Copy link
Contributor Author

@marmarek Is this with or without my PR?

@marmarek
Copy link
Member

marmarek commented Feb 21, 2024 via email

@DemiMarie
Copy link
Contributor Author

With. I tried also tweaking various parameters - setting prefill to 16k in total (delta 8k) helps a bit, but still not fully. Disabling low latency mode helps. This suggests our custom buffer parameters for low latency mode are wrong... I tried some other (raising tlenght, setting prebuf explicitly, setting maxlength etc) but no success. pactl list sinks in Dom0 says that sink has 17k (?!) buffer, so prefill of 16k should be good (I don't think this buffer needs to be full to play, in fact full would lead to overruns), but here it looks like there is something else still.

Looking at the graph, it seems that PulseAudio picks a latency of 0.2 seconds! This is extremely wrong — the latency should actually be around 23 milliseconds, or about 11.6% of the actual value.

The result is that PulseAudio keeps draining the buffer way more quickly than the agent expects, causing underruns.

  1. Do you have scripts and/or patches that I can use to reproduce your results? If so, can you post them here (or send them to me privately if necessary) so I can try with different parameters?
  2. Can you try with PipeWire in dom0? This might avoid the silly behavior that PulseAudio is displaying.

BTW, the limit on prefill looks quite arbitrary, why is it this way? Shouldn't it be vchan buffer size instead (if anything at all)?

The prefill value used internally is user_provided_prefill + target_fill_level. This must be in [0, vchan_buffer_size], so the code requires user_provided_prefill to be in [ -target_fill_level, vchan_buffer_size - target_fill_level]. This is also why the prefill level is signed, whereas all of the other quantities are unsigned.

There are two reasons for this:

  1. It avoids the prefill having to be adjusted when the user adjusts other parameters.
  2. It should (in theory) correspond to the buffer size in pacat-simple-vchan. If there were no buffers other than the vchan (as would be the case for a PipeWire implementation), this would be zero.

@marmarek
Copy link
Member

marmarek commented Feb 21, 2024 via email

@DemiMarie
Copy link
Contributor Author

Some tests on my system:

  • With PipeWire in dom0, this PR eliminates the underruns.
  • With PulseAudio in dom0, this PR is not sufficient.

Conclusion: PulseAudio daemon bug. Switching to PipeWire in dom0 is the obvious fix.

@marmarek
Copy link
Member

With PipeWire in dom0, the prebuf feature seems to be working correctly (at least for me), so I think this PR isn't needed after all. But also, looking at the graph above, the vchan fill level stabilizes at about 12KiB, which doesn't match the configured 8KiB. Maybe it should be set to 4KiB by default instead?

@marmarek
Copy link
Member

I've scheduled openQA run without this PR, it will run on both real hw and nested virt, lets wait for results with the decision.

@DemiMarie
Copy link
Contributor Author

@marmarek is that with PipeWire in dom0?

@marmarek
Copy link
Member

@marmarek is that with PipeWire in dom0?

That's the intention, if QubesOS/qubes-core-admin-linux#143 works.

@DemiMarie
Copy link
Contributor Author

Closing as per this comment from @marmarek.

@DemiMarie DemiMarie closed this Feb 27, 2024
@DemiMarie DemiMarie deleted the fix-problems-early-playback branch February 27, 2024 22:02
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

Successfully merging this pull request may close these issues.

3 participants