/*
* libdvs.h - abstract header for DVS (Digital Video Stabilizer)
*
* Copyright (c) 2014-2016 Intel Corporation
*
* 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.
*
* Author: Zong Wei <wei.zong@intel.com>
*/
#ifndef _LIB_DVS_HPP
#define _LIB_DVS_HPP
#include <stdio.h>
#if (defined __linux__)
#define DVSAPI __attribute__((visibility("default")))
#endif
typedef struct DvsData
{
cv::UMat data;
virtual ~DvsData () {};
} DvsData;
typedef struct DvsResult
{
int frame_id;
bool valid;
int frame_width;
int frame_height;
double proj_mat[3][3];
DvsResult(): frame_id(-1), valid(false)
{};
} DvsResult;
typedef struct DvsConfig
{
bool use_ocl; //ture:ocl path; false:cpu path;
int frame_width;
int frame_height;
int radius;
float stdev;
int features;
double minDistance;
DvsConfig()
{
use_ocl = true;
frame_width = 1;
frame_height = 1;
radius = 15;
stdev = 10.0f;
features = 1000;
minDistance = 15.0f;
}
} DvsConfig;
typedef struct DvsInterface
{
virtual ~DvsInterface() {}
/// initialize model from memory
virtual int init(int width, int height, bool twoPass) = 0;
/// set detection parameters, if config = NULL, default parameters will be used
virtual void setConfig(DvsConfig* config) = 0;
/// release memory
virtual void release() = 0;
/// apply homography estimation to an input image
/// @param frame input 8-bit single channel UMAT image (color image must be transferred to gray-scale)
/// @param result output homography estimation result of the input image
virtual void nextStabilizedMotion(DvsData* frame, DvsResult* result) = 0;
} DvsInterface;
extern "C" DVSAPI DvsInterface* getDigitalVideoStabilizer(void);
#endif