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];
 | |
| }
 |