blob: 7dedcc87dbad6f8c9d7b458ce25ea6723fd21885 [file] [log] [blame]
Wind Yuan75564b12015-01-15 06:51:15 -05001/*
2 * x3a_analyzer_manager.h - analyzer manager
3 *
4 * Copyright (c) 2014-2015 Intel Corporation
5 *
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 *
18 * Author: Wind Yuan <feng.yuan@intel.com>
19 */
20
21#ifndef XCAM_3A_ANALYZER_MANAGER_H
22#define XCAM_3A_ANALYZER_MANAGER_H
23
Wind Yuan9fbfce62017-11-24 19:24:15 +080024#include <xcam_std.h>
25#include <x3a_analyzer.h>
26#include <dynamic_analyzer_loader.h>
Wind Yuan75564b12015-01-15 06:51:15 -050027
28namespace XCam {
29
Yinhang Liue37a8722016-06-27 18:14:35 +080030class DynamicAnalyzerLoader;
Wind Yuan8a0d2962015-01-27 10:44:22 +080031
Wind Yuan75564b12015-01-15 06:51:15 -050032class X3aAnalyzerManager
33{
34protected:
35 explicit X3aAnalyzerManager ();
36public:
37 virtual ~X3aAnalyzerManager ();
38
39 static SmartPtr<X3aAnalyzerManager> instance();
40
41 virtual SmartPtr<X3aAnalyzer> create_analyzer();
42
43private:
44 SmartPtr<X3aAnalyzer> find_analyzer ();
45 SmartPtr<X3aAnalyzer> load_analyzer_from_binary (const char *path);
46
47private:
48 XCAM_DEAD_COPY (X3aAnalyzerManager);
49
50private:
51 static SmartPtr<X3aAnalyzerManager> _instance;
52 static Mutex _mutex;
Wind Yuan8a0d2962015-01-27 10:44:22 +080053
Yinhang Liue37a8722016-06-27 18:14:35 +080054 SmartPtr<DynamicAnalyzerLoader> _loader;
Wind Yuan75564b12015-01-15 06:51:15 -050055};
56};
57#endif //XCAM_3A_ANALYZER_MANAGER_H