/*
 * Copyright (C) 2017 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
#ifndef GUEST_HALS_CAMERA_CAMERACONFIGURATION_H_
#define GUEST_HALS_CAMERA_CAMERACONFIGURATION_H_

#undef max
#undef min
#include <algorithm>
#include <vector>

namespace cvd {

// Camera properties and features.
struct CameraDefinition {
  // Camera facing direction.
  enum Orientation { kFront, kBack };

  // Camera recognized HAL versions.
  enum HalVersion { kHalV1, kHalV2, kHalV3 };

  struct Resolution {
    int width;
    int height;
  };

  Orientation orientation;
  HalVersion hal_version;
  std::vector<Resolution> resolutions;
};

class CameraConfiguration {
 public:
  CameraConfiguration() {}
  ~CameraConfiguration() {}

  const std::vector<CameraDefinition>& cameras() const { return cameras_; }

  bool Init();

 private:
  std::vector<CameraDefinition> cameras_;
};

}  // namespace cvd

#endif  // GUEST_HALS_CAMERA_CAMERACONFIGURATION_H_