/*
* xcam_handle.h - image processing handles
*
* Copyright (c) 2017 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: Wind Yuan <feng.yuan@intel.com>
*/
#ifndef C_XCAM_HANDLE_H
#define C_XCAM_HANDLE_H
#include <base/xcam_defs.h>
#include <base/xcam_common.h>
#include <base/xcam_buffer.h>
XCAM_BEGIN_DECLARE
typedef struct _XCamHandle XCamHandle;
/*! \brief create xcam handle to process buffer
*
* \params[in] name, filter name
* \return XCamHandle create correct hanle, else return NULL.
*/
XCamHandle *xcam_create_handle (const char *name);
/*! \brief destroy xcam handle
*
* \params[in] handle handle need to destory
*/
void xcam_destroy_handle (XCamHandle *handle);
/*! \brief xcam handle get usage how to set parameters
*
* \params[in] handle xcam handle
* \params[out] usage_buf buffer to store usage
* \params[in,out] usage_len buffer length
* \return XCamReturn XCAM_RETURN_NO_ERROR on sucess; others on errors.
*/
XCamReturn xcam_handle_get_usage (XCamHandle *handle, char *usage_buf, int *usage_len);
/*! \brief set handle parameters before init
*
* \params[in] handle xcam handle
* \params[in] field0, value0, field1, value1, ..., fieldN, valueN field and value in pairs
* \return XCamReturn XCAM_RETURN_NO_ERROR on sucess; others on errors.
*/
XCamReturn xcam_handle_set_parameters (
XCamHandle *handle, const char *field, ...);
/*! \brief xcam handle initialize
*
* \params[in] handle xcam handle
* \return XCamReturn XCAM_RETURN_NO_ERROR on sucess; others on errors.
*/
XCamReturn xcam_handle_init (XCamHandle *handle);
/*! \brief xcam handle uninitialize
*
* \params[in] handle xcam handle
* \return XCamReturn XCAM_RETURN_NO_ERROR on sucess; others on errors.
*/
XCamReturn xcam_handle_uinit (XCamHandle *handle);
// buf_out was allocated outside or inside ??
/*! \brief xcam handle process buffer
*
* \params[in] handle xcam handle
* \params[in] buf_in input buffer
* \params[in,out] buf_out output buffer, can be allocated outside or inside,
* if set param "alloc-out-buf" "true", allocate outside; else inside.
* \return XCamReturn XCAM_RETURN_NO_ERROR on sucess; others on errors.
*/
XCamReturn xcam_handle_execute (XCamHandle *handle, XCamVideoBuffer *buf_in, XCamVideoBuffer **buf_out);
XCAM_END_DECLARE
#endif //C_XCAM_HANDLE_H