94 lines
3.8 KiB
Protocol Buffer
94 lines
3.8 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;
|
|
|
|
import "mediapipe/util/tracking/camera_motion.proto";
|
|
import "mediapipe/util/tracking/frame_selection_solution_evaluator.proto";
|
|
import "mediapipe/util/tracking/region_flow.proto";
|
|
|
|
// Stores selected timestamps and corresponding frame index.
|
|
message FrameSelectionTimestamp {
|
|
optional int64 timestamp = 1; // Timestamp of the selected frame.
|
|
|
|
// Frame index of the selected frame in the initial video stream. If this
|
|
// timestamp was manufactured, this will be the index of the initial frame.
|
|
optional int32 frame_idx = 2;
|
|
|
|
// If this timestamp was manufactured, the timestamp of the original frame.
|
|
optional int64 processed_from_timestamp = 3 [default = -1];
|
|
}
|
|
|
|
// Stores the result of the frame selection, with composited features.
|
|
// Next index: 6
|
|
message FrameSelectionResult {
|
|
optional int64 timestamp = 1; // Timestamp of the selected frame.
|
|
|
|
// Frame index of the selected frame in the initial video stream. If this
|
|
// timestamp was manufactured, this will be the index of the initial frame.
|
|
optional int32 frame_idx = 2;
|
|
|
|
// CameraMotion from selected item to previous selected item.
|
|
optional CameraMotion camera_motion = 3;
|
|
|
|
// Features from selected item to previous selected item.
|
|
optional RegionFlowFeatureList features = 4;
|
|
|
|
// If this FrameSelectionResult was the result of processing a previous one,
|
|
// the timestamp of the original frame.
|
|
optional int64 processed_from_timestamp = 5 [default = -1];
|
|
}
|
|
|
|
// Next index: 7
|
|
message FrameSelectionCriterion {
|
|
// Interval at which frames should be sampled; set to zero if sampling should
|
|
// not be enforced (i.e. selection is performed w.r.t. other criteria).
|
|
optional int32 sampling_rate = 1 [default = 0];
|
|
|
|
// Bandwidth used during dynamic programming. The larger the bandwidth the
|
|
// more accurate the result w.r.t. the specified sampling rate. Smaller
|
|
// bandwidth's bias the solution suboptimally to center around the mean
|
|
// frame numbers of the sampling rate.
|
|
// If in (0, 1), assumed to specify fraction of total number of input frames,
|
|
// otherwise must be an integer.
|
|
optional float bandwidth_frames = 2 [default = 50];
|
|
|
|
// Search radius for dynamic programming (how many frames you are allowed to
|
|
// search around the previous frame).
|
|
optional int32 search_radius_frames = 3 [default = 1];
|
|
|
|
// Allows one to specify custom solution selection criteria (i.e. different
|
|
// way to choose the best row of the computed cost matrix).
|
|
optional FrameSelectionSolutionEvaluatorType solution_evaluator = 4;
|
|
|
|
// Outputs a fixed number of frames and automatically sets the appropriate
|
|
// sampling rate. Set to 0 by default (i.e. not enabled).
|
|
optional int32 max_output_frames = 5 [default = 0];
|
|
}
|
|
|
|
// Options for computing frame selection.
|
|
// TODO: Support multiple criteria if required. Currently uses only the
|
|
// first one.
|
|
message FrameSelectionOptions {
|
|
repeated FrameSelectionCriterion criterion = 1;
|
|
|
|
// FrameSelection buffers incoming CameraMotions for specified chunk size
|
|
// and creates cost matrices upon reaching the limit.
|
|
// TODO: Implement if necessary (currently nothing is cleared upon
|
|
// reaching the limit).
|
|
optional int32 chunk_size = 2 [default = 100];
|
|
}
|