| /****************************************************************************** |
| * |
| * Copyright (C) 2015 The Android Open Source Project |
| * |
| * 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. |
| * |
| ***************************************************************************** |
| * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore |
| */ |
| /** |
| ******************************************************************************* |
| * @file |
| * ideint.h |
| * |
| * @brief |
| * Deinterlacer API file |
| * |
| * @author |
| * Ittiam |
| * |
| * @par List of Functions: |
| * |
| * @remarks |
| * None |
| * |
| ******************************************************************************* |
| */ |
| |
| #ifndef __IDEINT_H__ |
| #define __IDEINT_H__ |
| |
| /** Error codes */ |
| typedef enum |
| { |
| /** Dummy error code */ |
| IDEINT_ERROR_NA = 0x7FFFFFFF, |
| |
| /** No error */ |
| IDEINT_ERROR_NONE = 0, |
| |
| /** Invalid Context */ |
| IDEINT_INVALID_CTXT, |
| |
| /** Start row not aligned to 8 */ |
| IDEINT_START_ROW_UNALIGNED, |
| |
| |
| }IDEINT_ERROR_T; |
| |
| /** Modes of deinterlacing */ |
| typedef enum |
| { |
| /** Dummy mode */ |
| IDEINT_MODE_NA = 0x7FFFFFFF, |
| |
| /** Weave two fields to get a frame, no filtering */ |
| IDEINT_MODE_WEAVE = 0, |
| |
| /** Weave two fields in static blocks and |
| spatial filtering for non-static blocks */ |
| IDEINT_MODE_SPATIAL, |
| |
| }IDEINT_MODE_T; |
| |
| /** Deinterlacer parameters */ |
| typedef struct |
| { |
| /** Mode for deinterlacing */ |
| IDEINT_MODE_T e_mode; |
| |
| /** Flag to indicate if the current field is top field, |
| * Prev and Next field are assumed to be of opposite parity |
| */ |
| WORD32 i4_cur_fld_top; |
| |
| /** Flag to signal if weave should be disabled. |
| * i.e. output already contains weaved fields |
| */ |
| WORD32 i4_disable_weave; |
| |
| /** CPU Architecture */ |
| ICV_ARCH_T e_arch; |
| |
| /** SOC */ |
| ICV_SOC_T e_soc; |
| |
| /** Pointer to a function for aligned allocation. |
| * If NULL, then malloc will be used internally |
| * Module will allocate if any extra memory is needed |
| */ |
| void *(*pf_aligned_alloc)(WORD32 alignment, WORD32 size); |
| |
| /** Pointer to a function for aligned free. |
| * If NULL, then free will be used internally |
| */ |
| void (*pf_aligned_free)(void *pv_buf); |
| |
| }ideint_params_t; |
| |
| /** Deinterlacer context size */ |
| WORD32 ideint_ctxt_size(void); |
| |
| /** Deinterlacer process */ |
| IDEINT_ERROR_T ideint_process(void *pv_ctxt, |
| icv_pic_t *ps_prv_fld, |
| icv_pic_t *ps_cur_fld, |
| icv_pic_t *ps_nxt_fld, |
| icv_pic_t *ps_out_frm, |
| ideint_params_t *ps_params, |
| WORD32 start_row, |
| WORD32 num_rows); |
| |
| #endif /* __IDEINT_H__ */ |