1c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch/* Copyright (c) 2016, The Linux Foundation. All rights reserved.
2c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch *
3c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch * Redistribution and use in source and binary forms, with or without
4c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch * modification, are permitted provided that the following conditions are
5c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch * met:
6c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch *     * Redistributions of source code must retain the above copyright
7c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch *       notice, this list of conditions and the following disclaimer.
8c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch *     * Redistributions in binary form must reproduce the above
9c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch *       copyright notice, this list of conditions and the following
10c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch *       disclaimer in the documentation and/or other materials provided
11c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch *       with the distribution.
12c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch *     * Neither the name of The Linux Foundation nor the names of its
13c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch *       contributors may be used to endorse or promote products derived
14c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch *       from this software without specific prior written permission.
15c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch *
16c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
17c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
18c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
19c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
20c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
23c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
24c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
25c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
26c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch *
28c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch */
29c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch
30c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch#ifndef __QCAMERA_COMMON_H__
31c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch#define __QCAMERA_COMMON_H__
32c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch
33c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch// Camera dependencies
34c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch#include "cam_types.h"
35c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch#include "cam_intf.h"
36c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch
37c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetschnamespace qcamera {
38c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch
39c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch#define ALIGN(a, b) (((a) + (b)) & ~(b))
40c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch#define MAX(a, b) ((a) > (b) ? (a) : (b))
41c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch
42c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetschclass QCameraCommon {
43c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetschpublic:
44c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch    QCameraCommon();
45c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch    ~QCameraCommon();
46c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch
47c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch    int32_t init(cam_capability_t *cap);
48c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch
49c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch    int32_t getAnalysisInfo(
50c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch        bool fdVideoEnabled, bool hal3, cam_feature_mask_t featureMask,
51c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch        cam_analysis_info_t *pAnalysisInfo);
52c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch    static uint32_t calculateLCM(int32_t num1, int32_t num2);
53c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch
54c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetschprivate:
55c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch    cam_capability_t *m_pCapability;
56c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch
57c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch};
58c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch
59c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch}; // namespace qcamera
60c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch#endif /* __QCAMERA_COMMON_H__ */
61c8c0af529045368f33aea08ead0bc4a8e9c41c98Steve Pfetsch
62