# Copyright (c) 2017 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. """EvaluationScore factory class. """ import logging from . import exceptions from . import eval_scores class EvaluationScoreWorkerFactory(object): """Factory class used to instantiate evaluation score workers. The ctor gets the parametrs that are used to instatiate the evaluation score workers. """ def __init__(self, polqa_tool_bin_path, echo_metric_tool_bin_path): self._score_filename_prefix = None self._polqa_tool_bin_path = polqa_tool_bin_path self._echo_metric_tool_bin_path = echo_metric_tool_bin_path def SetScoreFilenamePrefix(self, prefix): self._score_filename_prefix = prefix def GetInstance(self, evaluation_score_class): """Creates an EvaluationScore instance given a class object. Args: evaluation_score_class: EvaluationScore class object (not an instance). Returns: An EvaluationScore instance. """ if self._score_filename_prefix is None: raise exceptions.InitializationException( 'The score file name prefix for evaluation score workers is not set' ) logging.debug('factory producing a %s evaluation score', evaluation_score_class) if evaluation_score_class == eval_scores.PolqaScore: return eval_scores.PolqaScore(self._score_filename_prefix, self._polqa_tool_bin_path) elif evaluation_score_class == eval_scores.EchoMetric: return eval_scores.EchoMetric(self._score_filename_prefix, self._echo_metric_tool_bin_path) else: return evaluation_score_class(self._score_filename_prefix)