Thanks to visit codestin.com
Credit goes to webrtc.googlesource.com

blob: 37b41214c7091f535550a30c2bd66ca49888cdc4 [file] [log] [blame] [edit]
#!/usr/bin/env vpython3
# Copyright (c) 2022 The WebRTC project authors. All Rights Reserved.
#
# Use of this source code is governed by a BSD-style license
# that can be found in the LICENSE file in the root of the source
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS. All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.
"""
This script is a wrapper that loads "pipewire" library.
"""
import os
import subprocess
import sys
def _get_pipewire_dir():
script_dir = os.path.dirname(os.path.realpath(__file__))
src_dir = os.path.dirname(script_dir)
pipewire_dir = os.path.join(src_dir, 'third_party', 'pipewire',
'linux-amd64')
return pipewire_dir
def _configure_pipewire_paths(path):
library_dir = os.path.join(path, 'lib64')
pipewire_binary_dir = os.path.join(path, 'bin')
pipewire_config_prefix = os.path.join(path, 'share', 'pipewire')
pipewire_module_dir = os.path.join(library_dir, 'pipewire-0.3')
spa_plugin_dir = os.path.join(library_dir, 'spa-0.2')
wireplumber_config_dir = os.path.join(path, 'share', 'wireplumber')
wireplumber_data_dir = os.path.join(path, 'share', 'wireplumber')
wireplumber_module_dir = os.path.join(library_dir, 'wireplumber-0.5')
env_vars = os.environ
env_vars['LD_LIBRARY_PATH'] = library_dir
env_vars['PIPEWIRE_CONFIG_PREFIX'] = pipewire_config_prefix
env_vars['PIPEWIRE_MODULE_DIR'] = pipewire_module_dir
env_vars['SPA_PLUGIN_DIR'] = spa_plugin_dir
env_vars['PIPEWIRE_RUNTIME_DIR'] = '/tmp'
env_vars['PATH'] = env_vars['PATH'] + ':' + pipewire_binary_dir
env_vars['WIREPLUMBER_CONFIG_DIR'] = wireplumber_config_dir
env_vars['WIREPLUMBER_DATA_DIR'] = wireplumber_data_dir
env_vars['WIREPLUMBER_MODULE_DIR'] = wireplumber_module_dir
def main():
pipewire_dir = _get_pipewire_dir()
if not os.path.isdir(pipewire_dir):
print('configure-pipewire: Couldn\'t find directory %s' % pipewire_dir)
return 1
_configure_pipewire_paths(pipewire_dir)
pipewire_process = subprocess.Popen(["pipewire"], stdout=None)
wireplumber_process = subprocess.Popen(["wireplumber"], stdout=None)
return_value = subprocess.call(sys.argv[1:])
wireplumber_process.terminate()
pipewire_process.terminate()
return return_value
if __name__ == '__main__':
sys.exit(main())