80 lines
2.9 KiB
Protocol Buffer
80 lines
2.9 KiB
Protocol Buffer
// Copyright 2019 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.autoflip;
|
|
|
|
// Focus point location (normalized w.r.t. frame_width and frame_height, i.e.
|
|
// specified in the domain [0, 1] x [0, 1]).
|
|
|
|
// For TYPE_INCLUDE:
|
|
// During retargeting and stabilization focus points introduce constraints
|
|
// that will try to keep the normalized location in the rectangle
|
|
// frame_size - normalized bounds.
|
|
// For this soft constraints are used, therefore the weight specifies
|
|
// how "important" the focus point is (higher is better).
|
|
// In particular for each point p the retargeter introduces two pairs of
|
|
// constraints of the form:
|
|
// x - slack < width - right
|
|
// and x + slack > 0 + left, with slack > 0
|
|
// where the weight specifies the importance of the slack.
|
|
//
|
|
// For TYPE_EXCLUDE_*:
|
|
// Similar to above, but constraints are introduced to keep
|
|
// the point to the left of the left bound OR the right of the right bound.
|
|
// In particular:
|
|
// x - slack < left OR
|
|
// x + slack >= right
|
|
// Similar to above, the weight specifies the importance of the slack.
|
|
//
|
|
// Note: Choosing a too high weight can lead to
|
|
// jerkiness as the stabilization essentially starts tracking the focus point.
|
|
message FocusPoint {
|
|
// Normalized location of the point (within domain [0, 1] x [0, 1].
|
|
optional float norm_point_x = 1 [default = 0.0];
|
|
optional float norm_point_y = 2 [default = 0.0];
|
|
|
|
enum FocusPointType {
|
|
TYPE_INCLUDE = 1;
|
|
TYPE_EXCLUDE_LEFT = 2;
|
|
TYPE_EXCLUDE_RIGHT = 3;
|
|
}
|
|
|
|
// Focus point type. By default we try to frame the focus point within
|
|
// the bounding box specified by left, bottom, right, top. Alternatively, one
|
|
// can choose to exclude the point. For details, see discussion above.
|
|
optional FocusPointType type = 11 [default = TYPE_INCLUDE];
|
|
|
|
// Bounds are specified in normalized coordinates [0, 1], FROM the specified
|
|
// border. Opposing bounds (e.g. left and right) may not add to values
|
|
// larger than 1.
|
|
// Default bounds center focus point within centering third of the frame.
|
|
optional float left = 3 [default = 0.3];
|
|
optional float bottom = 4 [default = 0.3];
|
|
optional float right = 9 [default = 0.3];
|
|
optional float top = 10 [default = 0.3];
|
|
|
|
optional float weight = 5 [default = 15];
|
|
|
|
extensions 20000 to max;
|
|
}
|
|
|
|
// Aggregates FocusPoint's for a frame.
|
|
message FocusPointFrame {
|
|
repeated FocusPoint point = 1;
|
|
|
|
extensions 20000 to max;
|
|
}
|