function getPlayerParams( playerConfData, playerUserData ) {
	const parameters = [];

	// add custom user parameters at the beginning
	const { args } = playerUserData;
	if ( args ) {
		parameters.push( args );
	}

	// add player specific parameters
	playerConfData.params
		.map( param => {
			let { name, type, args } = param;

			if ( args instanceof Object ) {
				if ( !hasOwnProperty.call( args, platform ) ) {
					return null;
				}
				args = args[ platform ];
			}

			switch ( type ) {
				case "boolean":
					return playerUserData[ name ]
						? args
						: null;
				default:
					throw new Error( `Invalid or unsupported parameter type: ${type}` );
			}
		})
		.filter( param => param !== null )
		.forEach( param => parameters.push( param ) );

	return parameters.join( " " );
}
Build the player parameter string from the preset and provided custom params
This is a single string being used as the provider's --player-args parameter value
@param {Object} playerConfData
@param {Object[]} playerConfData.params
@param {Object} playerUserData
@param {string?} playerUserData.args
@returns {string}