191bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org/* 291bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org * Copyright 2004 The WebRTC Project Authors. All rights reserved. 391bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org * 491bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org * Use of this source code is governed by a BSD-style license 591bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org * that can be found in the LICENSE file in the root of the source 691bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org * tree. An additional intellectual property rights grant can be found 791bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org * in the file PATENTS. All contributing project authors may 891bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org * be found in the AUTHORS file in the root of the source tree. 991bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org */ 1091bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org 1191bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org#ifndef WEBRTC_SOUND_LINUXSOUNDSYSTEM_H_ 1291bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org#define WEBRTC_SOUND_LINUXSOUNDSYSTEM_H_ 1391bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org 1491bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org#include "webrtc/sound/automaticallychosensoundsystem.h" 1591bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org 1691bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.orgnamespace rtc { 1791bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org 1891bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.orgextern const SoundSystemCreator kLinuxSoundSystemCreators[ 1991bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org#ifdef HAVE_LIBPULSE 2091bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org 2 2191bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org#else 2291bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org 1 2391bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org#endif 2491bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org ]; 2591bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org 2691bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org// The vast majority of Linux systems use ALSA for the device-level sound API, 2791bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org// but an increasing number are using PulseAudio for the application API and 2891bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org// only using ALSA internally in PulseAudio itself. But like everything on 2991bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org// Linux this is user-configurable, so we need to support both and choose the 3091bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org// right one at run-time. 3191bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org// PulseAudioSoundSystem is designed to only successfully initialize if 3291bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org// PulseAudio is installed and running, and if it is running then direct device 3391bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org// access using ALSA typically won't work, so if PulseAudioSoundSystem 3491bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org// initializes then we choose that. Otherwise we choose ALSA. 3591bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.orgtypedef AutomaticallyChosenSoundSystem< 3691bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org kLinuxSoundSystemCreators, 3791bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org ARRAY_SIZE(kLinuxSoundSystemCreators)> LinuxSoundSystem; 3891bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org 3991bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org} // namespace rtc 4091bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org 4191bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org#endif // WEBRTC_SOUND_LINUXSOUNDSYSTEM_H_ 42