// Copyright 2020 The MediaPipe Authors.
//
// 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.

syntax = "proto2";

package mediapipe;

message CameraParametersProto {
  // This number is non-negative, it represents camera height above ground
  // normalized by focal length.
  optional float height_above_ground = 1 [default = 100.0];
  // Width of image in portrait orientation normalized by focal length
  optional float portrait_width = 2 [default = 1.0103];
  // Height of image in portrait orientation normalized by focal length
  optional float portrait_height = 3 [default = 1.3435];
  enum ImageOrientation {
    PORTRAIT_ORIENTATION = 0;
    LANDSCAPE_ORIENTATION = 1;
  }
  // The input image orientation
  optional ImageOrientation image_orientation = 4
      [default = PORTRAIT_ORIENTATION];

  // This defines the projection method from 2D screen to 3D.
  enum ProjectionMode {
    UNSPECIFIED = 0;
    // Projects 2D point to ground plane (horizontal plane).
    GROUND_PLANE = 1;
    // Projects 2D point to sphere.
    SPHERE = 2;
  }
  optional ProjectionMode projection_mode = 5 [default = GROUND_PLANE];
  // Radius of sphere when using the SPHERE projection mode above.
  // The value is normalized by focal length.
  optional float projection_sphere_radius = 6 [default = 100.0];
}
