### Install Pulseaudio Development Headers Source: https://github.com/duncanthrax/scream/blob/master/Receivers/unix/README.md Commands to install Pulseaudio development libraries required for compilation on Red Hat/CentOS and Debian/Ubuntu systems. ```shell sudo yum install pulseaudio-libs-devel # Redhat, CentOS, etc. or sudo apt-get install libpulse-dev # Debian, Ubuntu, etc. ``` -------------------------------- ### Install ALSA Development Headers Source: https://github.com/duncanthrax/scream/blob/master/Receivers/unix/README.md Commands to install ALSA development libraries required for compilation on Red Hat/CentOS and Debian/Ubuntu systems. ```shell sudo yum install alsa-lib-devel # Redhat, CentOS, etc. or sudo apt-get install libasound2-dev # Debian, Ubuntu, etc. ``` -------------------------------- ### Install Scream Driver on Windows 11 Source: https://github.com/duncanthrax/scream/blob/master/README.md Steps to install the Scream audio driver on Windows 11, which requires enabling Test Mode due to unsigned driver requirements. This process involves using `bcdedit` to enable test signing, `pnputil` to add the driver, and then disabling test signing. ```bash bcdedit /set testsigning on ``` ```bash pnputil /add-driver .\Scream.inf /install ``` ```bash bcdedit /set testsigning off ``` -------------------------------- ### Start scream in IVSHMEM mode Source: https://github.com/duncanthrax/scream/blob/master/Receivers/unix/README.md Starts the Scream client using IVSHMEM (shared memory) mode, requiring read permissions for the specified shared memory device. ```shell scream -m /dev/shm/scream-ivshmem ``` -------------------------------- ### Start scream in network mode Source: https://github.com/duncanthrax/scream/blob/master/Receivers/unix/README.md Starts the Scream client in multicast network mode, using the default audio output. Unicast mode can be enabled with the -u option. ```shell scream ``` -------------------------------- ### Start scream in libpcap mode Source: https://github.com/duncanthrax/scream/blob/master/Receivers/unix/README.md Starts the Scream client in libpcap (sniffer) mode, useful for debugging packet delivery issues when using tools like Wireshark or tcpdump. ```shell scream -P -i macvtap0 ``` -------------------------------- ### Configure ALSA output latency Source: https://github.com/duncanthrax/scream/blob/master/Receivers/unix/README.md Starts scream with ALSA output, adjusting the target latency to 100 ms to mitigate underruns, and provides debugging tips for ALSA issues. ```shell scream -o alsa -t 100 # Run with -v to dump ALSA PCM setup information. # Run with env LIBASOUND_DEBUG=1 to debug ALSA problems. ``` -------------------------------- ### Specify network interface for scream Source: https://github.com/duncanthrax/scream/blob/master/Receivers/unix/README.md Starts the Scream client in network mode and specifies the network interface to use for receiving packets, useful when multiple interfaces are present. ```shell scream -i eth0 ``` -------------------------------- ### Configure QEMU IVSHMEM Device (Command Line) Source: https://github.com/duncanthrax/scream/blob/master/README.md Configures an IVSHMEM device for QEMU via command-line arguments. It defines a memory backend for shared memory and links it to the IVSHMEM device. ```bash -device ivshmem-plain,memdev=ivshmem_scream \ -object memory-backend-file,id=ivshmem_scream,share=on,mem-path=/dev/shm/scream-ivshmem,size=2M \ ``` -------------------------------- ### Compile scream using CMake Source: https://github.com/duncanthrax/scream/blob/master/Receivers/unix/README.md Steps to compile the scream application using CMake, including creating a build directory and running make. ```shell mkdir build && cd build cmake .. make ``` -------------------------------- ### Show scream help options Source: https://github.com/duncanthrax/scream/blob/master/Receivers/unix/README.md Command to display the available command-line options and usage information for the scream application. ```shell scream -h ``` -------------------------------- ### Run IVSHMEM Scream Receiver Source: https://github.com/duncanthrax/scream/blob/master/README.md Launches the Scream receiver application using an IVSHMEM-capable shared memory file. The path to the SHM file is provided as a command-line argument. ```bash scream -m /dev/shm/scream-ivshmem ``` -------------------------------- ### Configure QEMU IVSHMEM Device Source: https://github.com/duncanthrax/scream/blob/master/README.md Adds an IVSHMEM device to a QEMU virtual machine configuration using libvirt XML. Specifies the device name, model type, size, and PCI address. ```xml ... 2
... ``` -------------------------------- ### Scream Project CMake Build Configuration Source: https://github.com/duncanthrax/scream/blob/master/Receivers/unix/CMakeLists.txt This CMakeLists.txt file configures the build process for the Scream project. It sets up the project, adds source files, and manages conditional inclusion of audio and network libraries like PulseAudio, ALSA, JACK, and libpcap. ```cmake cmake_minimum_required(VERSION 3.7) project(scream LANGUAGES C) add_executable(${PROJECT_NAME} scream.c network.c shmem.c raw.c) # find pulseaudio option(PULSEAUDIO_ENABLE "Enable PulseAudio" ON) if (PULSEAUDIO_ENABLE) find_package(PkgConfig) pkg_check_modules(PULSEAUDIO libpulse-simple) if (PULSEAUDIO_FOUND) include_directories(${PULSEAUDIO_INCLUDE_DIRS}) target_link_directories(${PROJECT_NAME} PUBLIC ${PULSEAUDIO_LIBRARY_DIRS}) target_link_libraries(${PROJECT_NAME} ${PULSEAUDIO_LIBRARIES}) target_sources(${PROJECT_NAME} PRIVATE pulseaudio.c) else () set(PULSEAUDIO_ENABLE OFF) endif () endif () # find ALSA option(ALSA_ENABLE "Enable ALSA" ON) if (ALSA_ENABLE) find_package(PkgConfig) pkg_check_modules(PC_ALSA alsa) if (PC_ALSA_FOUND) include_directories(${PC_ALSA_INCLUDEDIR}) target_link_directories(${PROJECT_NAME} PUBLIC ${PC_ALSA_LIBRARY_DIRS}) target_link_libraries(${PROJECT_NAME} ${PC_ALSA_LIBRARIES}) target_sources(${PROJECT_NAME} PRIVATE alsa.c) else () set(ALSA_ENABLE OFF) endif () endif () # find JACK option(JACK_ENABLE "Enable JACK" ON) if (JACK_ENABLE) find_package(PkgConfig) pkg_check_modules(PC_JACK jack) pkg_check_modules(PC_LIBSOXR soxr) if(PC_JACK_FOUND AND PC_LIBSOXR_FOUND) include_directories(${PC_JACK_INCLUDEDIR} ${PC_LIBSOXR_INCLUDEDIR}) target_link_directories(${PROJECT_NAME} PUBLIC ${PC_JACK_LIBRARY_DIRS}) target_link_libraries(${PROJECT_NAME} ${PC_JACK_LIBRARIES} ${PC_LIBSOXR_LIBRARIES}) target_sources(${PROJECT_NAME} PRIVATE jack.c) else () set(JACK_ENABLE OFF) endif () endif () # find libpcap option(PCAP_ENABLE "Enable PCAP" ON) if (PCAP_ENABLE) find_package(PkgConfig) pkg_check_modules(PC_PCAP libpcap) if (PC_PCAP_FOUND) include_directories(${PC_PCAP_INCLUDEDIR}) target_link_directories(${PROJECT_NAME} PUBLIC ${PC_PCAP_LIBRARY_DIRS}) target_link_libraries(${PROJECT_NAME} ${PC_PCAP_LIBRARIES}) target_sources(${PROJECT_NAME} PRIVATE pcap.c) else () set(PCAP_ENABLE OFF) endif () endif () option(SNDIO_ENABLE "Enable sndio" ON) if (SNDIO_ENABLE) find_package(PkgConfig) pkg_check_modules(PC_SNDIO sndio) if (PC_SNDIO_FOUND) include_directories(${PC_SNDIO_INCLUDEDIR}) target_link_directories(${PROJECT_NAME} PUBLIC ${PC_SNDIO_LIBRARY_DIRS}) target_link_libraries(${PROJECT_NAME} ${PC_SNDIO_LIBRARIES}) target_sources(${PROJECT_NAME} PRIVATE sndio.c) else () set(SNDIO_ENABLE OFF) endif () endif () configure_file(config.h.in config.h) target_include_directories(${PROJECT_NAME} PUBLIC "${PROJECT_BINARY_DIR}") include(GNUInstallDirs) install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") ``` -------------------------------- ### Add Scream IVSHMEM Registry Key Source: https://github.com/duncanthrax/scream/blob/master/README.md Adds or updates the 'UseIVSHMEM' DWORD registry value under Scream's options key. This value indicates the size of the IVSHMEM device in MB, enabling IVSHMEM usage. ```powershell REG ADD HKLM\SYSTEM\CurrentControlSet\Services\Scream\Options /v UseIVSHMEM /t REG_DWORD /d 2 ``` -------------------------------- ### Enable Cross-Signed Drivers on Windows 10 Source: https://github.com/duncanthrax/scream/blob/master/README.md This registry key enables the loading of cross-signed kernel drivers on Windows 10 systems, particularly useful when Secure Boot is enabled and the driver is not signed with a certificate issued before July 29, 2015. This is a workaround for stricter driver signing policies introduced in Windows 10 version 1607. ```Windows Registry [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CI\Policy] "UpgradedSystem"=dword:00000001 ``` -------------------------------- ### Set capabilities for non-root scream execution Source: https://github.com/duncanthrax/scream/blob/master/Receivers/unix/README.md Sets raw and admin network capabilities on the scream executable, allowing it to run as a non-root user while handling network operations. ```shell # setcap cap_net_raw,cap_net_admin=eip ./scream ``` -------------------------------- ### Add Scream Silence Threshold Registry Key Source: https://github.com/duncanthrax/scream/blob/master/README.md Adds or updates the 'SilenceThreshold' DWORD registry value under Scream's options key. This setting defines the number of consecutive silent samples before data transmission stops. ```powershell REG ADD HKLM\SYSTEM\CurrentControlSet\Services\Scream\Options /v SilenceThreshold /t REG_DWORD /d 10000 ``` -------------------------------- ### Scream UDP Stream Protocol and Data Format Source: https://github.com/duncanthrax/scream/blob/master/README.md Details the UDP multicast stream format used by Scream for audio data transfer. It specifies the default multicast address, port, and the structure of the UDP packet payload, including header bytes that convey sampling rate, width, channel count, and channel mask. ```APIDOC Scream UDP Stream Protocol: Multicast Target: 239.255.77.77:4010 (default) Unicast: Optional Port: 4010 (configurable) Data Format: Raw PCM stream UDP Payload Structure: Max Payload Size: 1157 bytes Header: 5 bytes PCM Data: 1152 bytes Header Byte Breakdown: Byte 1 (Sampling Rate): Bit 7: Base rate (0=48kHz, 1=44.1kHz) Other Bits: Multiplier for base rate Byte 2 (Sampling Width): Number of bits per sample Byte 3 (Number of Channels): Number of audio channels Bytes 4-5 (Channel Mask): DWORD dwChannelMask from WAVEFORMATEXTENSIBLE structure, describing mapping of channels to speaker positions. Receiver Requirements: - Open a multicast listen socket. - Read stream and stuff into a local audio sink. - Minimal buffering (~4x UDP payload size) for jitter. - Firewall must allow UDP port 4010. ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.