1*d9f75844SAndroid Build Coastguard Worker#!/usr/bin/env vpython3 2*d9f75844SAndroid Build Coastguard Worker# Copyright (c) 2022 The WebRTC project authors. All Rights Reserved. 3*d9f75844SAndroid Build Coastguard Worker# 4*d9f75844SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license 5*d9f75844SAndroid Build Coastguard Worker# that can be found in the LICENSE file in the root of the source 6*d9f75844SAndroid Build Coastguard Worker# tree. An additional intellectual property rights grant can be found 7*d9f75844SAndroid Build Coastguard Worker# in the file PATENTS. All contributing project authors may 8*d9f75844SAndroid Build Coastguard Worker# be found in the AUTHORS file in the root of the source tree. 9*d9f75844SAndroid Build Coastguard Worker""" 10*d9f75844SAndroid Build Coastguard WorkerThis script is a wrapper that loads "pipewire" library. 11*d9f75844SAndroid Build Coastguard Worker""" 12*d9f75844SAndroid Build Coastguard Worker 13*d9f75844SAndroid Build Coastguard Workerimport os 14*d9f75844SAndroid Build Coastguard Workerimport subprocess 15*d9f75844SAndroid Build Coastguard Workerimport sys 16*d9f75844SAndroid Build Coastguard Worker 17*d9f75844SAndroid Build Coastguard Worker_SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__)) 18*d9f75844SAndroid Build Coastguard Worker_SRC_DIR = os.path.dirname(_SCRIPT_DIR) 19*d9f75844SAndroid Build Coastguard Worker 20*d9f75844SAndroid Build Coastguard Worker 21*d9f75844SAndroid Build Coastguard Workerdef _GetPipeWireDir(): 22*d9f75844SAndroid Build Coastguard Worker pipewire_dir = os.path.join(_SRC_DIR, 'third_party', 'pipewire', 23*d9f75844SAndroid Build Coastguard Worker 'linux-amd64') 24*d9f75844SAndroid Build Coastguard Worker 25*d9f75844SAndroid Build Coastguard Worker if not os.path.isdir(pipewire_dir): 26*d9f75844SAndroid Build Coastguard Worker pipewire_dir = None 27*d9f75844SAndroid Build Coastguard Worker 28*d9f75844SAndroid Build Coastguard Worker return pipewire_dir 29*d9f75844SAndroid Build Coastguard Worker 30*d9f75844SAndroid Build Coastguard Worker 31*d9f75844SAndroid Build Coastguard Workerdef _ConfigurePipeWirePaths(path): 32*d9f75844SAndroid Build Coastguard Worker library_dir = os.path.join(path, 'lib64') 33*d9f75844SAndroid Build Coastguard Worker pipewire_binary_dir = os.path.join(path, 'bin') 34*d9f75844SAndroid Build Coastguard Worker pipewire_config_prefix = os.path.join(path, 'share', 'pipewire') 35*d9f75844SAndroid Build Coastguard Worker pipewire_module_dir = os.path.join(library_dir, 'pipewire-0.3') 36*d9f75844SAndroid Build Coastguard Worker spa_plugin_dir = os.path.join(library_dir, 'spa-0.2') 37*d9f75844SAndroid Build Coastguard Worker media_session_config_dir = os.path.join(pipewire_config_prefix, 38*d9f75844SAndroid Build Coastguard Worker 'media-session.d') 39*d9f75844SAndroid Build Coastguard Worker 40*d9f75844SAndroid Build Coastguard Worker env_vars = os.environ 41*d9f75844SAndroid Build Coastguard Worker env_vars['LD_LIBRARY_PATH'] = library_dir 42*d9f75844SAndroid Build Coastguard Worker env_vars['PIPEWIRE_CONFIG_PREFIX'] = pipewire_config_prefix 43*d9f75844SAndroid Build Coastguard Worker env_vars['PIPEWIRE_MODULE_DIR'] = pipewire_module_dir 44*d9f75844SAndroid Build Coastguard Worker env_vars['SPA_PLUGIN_DIR'] = spa_plugin_dir 45*d9f75844SAndroid Build Coastguard Worker env_vars['MEDIA_SESSION_CONFIG_DIR'] = media_session_config_dir 46*d9f75844SAndroid Build Coastguard Worker env_vars['PIPEWIRE_RUNTIME_DIR'] = '/tmp' 47*d9f75844SAndroid Build Coastguard Worker env_vars['PATH'] = env_vars['PATH'] + ':' + pipewire_binary_dir 48*d9f75844SAndroid Build Coastguard Worker 49*d9f75844SAndroid Build Coastguard Worker 50*d9f75844SAndroid Build Coastguard Workerdef main(): 51*d9f75844SAndroid Build Coastguard Worker pipewire_dir = _GetPipeWireDir() 52*d9f75844SAndroid Build Coastguard Worker 53*d9f75844SAndroid Build Coastguard Worker if pipewire_dir is None: 54*d9f75844SAndroid Build Coastguard Worker print('configure-pipewire: Couldn\'t find directory %s' % pipewire_dir) 55*d9f75844SAndroid Build Coastguard Worker return 1 56*d9f75844SAndroid Build Coastguard Worker 57*d9f75844SAndroid Build Coastguard Worker _ConfigurePipeWirePaths(pipewire_dir) 58*d9f75844SAndroid Build Coastguard Worker 59*d9f75844SAndroid Build Coastguard Worker pipewire_process = subprocess.Popen(["pipewire"], stdout=None) 60*d9f75844SAndroid Build Coastguard Worker pipewire_media_session_process = subprocess.Popen(["pipewire-media-session"], 61*d9f75844SAndroid Build Coastguard Worker stdout=None) 62*d9f75844SAndroid Build Coastguard Worker 63*d9f75844SAndroid Build Coastguard Worker return_value = subprocess.call(sys.argv[1:]) 64*d9f75844SAndroid Build Coastguard Worker 65*d9f75844SAndroid Build Coastguard Worker pipewire_media_session_process.terminate() 66*d9f75844SAndroid Build Coastguard Worker pipewire_process.terminate() 67*d9f75844SAndroid Build Coastguard Worker 68*d9f75844SAndroid Build Coastguard Worker return return_value 69*d9f75844SAndroid Build Coastguard Worker 70*d9f75844SAndroid Build Coastguard Worker 71*d9f75844SAndroid Build Coastguard Workerif __name__ == '__main__': 72*d9f75844SAndroid Build Coastguard Worker sys.exit(main()) 73