180a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar/****************************************************************************** 280a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar * 380a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar * Copyright (C) 2015 The Android Open Source Project 480a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar * 580a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar * Licensed under the Apache License, Version 2.0 (the "License"); 680a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar * you may not use this file except in compliance with the License. 780a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar * You may obtain a copy of the License at: 880a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar * 980a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar * http://www.apache.org/licenses/LICENSE-2.0 1080a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar * 1180a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar * Unless required by applicable law or agreed to in writing, software 1280a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar * distributed under the License is distributed on an "AS IS" BASIS, 1380a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1480a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar * See the License for the specific language governing permissions and 1580a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar * limitations under the License. 1680a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar * 1780a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar ***************************************************************************** 1880a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore 1980a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar*/ 2080a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar/** 2180a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar******************************************************************************* 2280a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar* @file 2380a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar* ideint.h 2480a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar* 2580a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar* @brief 2680a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar* Deinterlacer API file 2780a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar* 2880a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar* @author 2980a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar* Ittiam 3080a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar* 3180a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar* @par List of Functions: 3280a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar* 3380a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar* @remarks 3480a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar* None 3580a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar* 3680a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar******************************************************************************* 3780a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar*/ 3880a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar 3980a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar#ifndef __IDEINT_H__ 4080a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar#define __IDEINT_H__ 4180a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar 4280a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar/** Error codes */ 4380a14110036632549a272c812f92b791fb08e87aHarish Mahendrakartypedef enum 4480a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar{ 4580a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar /** Dummy error code */ 4680a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar IDEINT_ERROR_NA = 0x7FFFFFFF, 4780a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar 4880a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar /** No error */ 4980a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar IDEINT_ERROR_NONE = 0, 5080a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar 5180a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar /** Invalid Context */ 5280a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar IDEINT_INVALID_CTXT, 5380a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar 5480a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar /** Start row not aligned to 8 */ 5580a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar IDEINT_START_ROW_UNALIGNED, 5680a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar 5780a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar 5880a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar}IDEINT_ERROR_T; 5980a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar 6080a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar/** Modes of deinterlacing */ 6180a14110036632549a272c812f92b791fb08e87aHarish Mahendrakartypedef enum 6280a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar{ 6380a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar /** Dummy mode */ 6480a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar IDEINT_MODE_NA = 0x7FFFFFFF, 6580a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar 6680a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar /** Weave two fields to get a frame, no filtering */ 6780a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar IDEINT_MODE_WEAVE = 0, 6880a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar 6980a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar /** Weave two fields in static blocks and 7080a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar spatial filtering for non-static blocks */ 7180a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar IDEINT_MODE_SPATIAL, 7280a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar 7380a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar}IDEINT_MODE_T; 7480a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar 7580a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar/** Deinterlacer parameters */ 7680a14110036632549a272c812f92b791fb08e87aHarish Mahendrakartypedef struct 7780a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar{ 7880a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar /** Mode for deinterlacing */ 7980a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar IDEINT_MODE_T e_mode; 8080a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar 8180a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar /** Flag to indicate if the current field is top field, 8280a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar * Prev and Next field are assumed to be of opposite parity 8380a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar */ 8480a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar WORD32 i4_cur_fld_top; 8580a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar 8680a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar /** Flag to signal if weave should be disabled. 8780a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar * i.e. output already contains weaved fields 8880a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar */ 8980a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar WORD32 i4_disable_weave; 9080a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar 9180a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar /** CPU Architecture */ 9280a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar ICV_ARCH_T e_arch; 9380a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar 9480a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar /** SOC */ 9580a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar ICV_SOC_T e_soc; 9680a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar 9780a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar /** Pointer to a function for aligned allocation. 9880a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar * If NULL, then malloc will be used internally 9980a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar * Module will allocate if any extra memory is needed 10080a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar */ 10180a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar void *(*pf_aligned_alloc)(WORD32 alignment, WORD32 size); 10280a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar 10380a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar /** Pointer to a function for aligned free. 10480a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar * If NULL, then free will be used internally 10580a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar */ 10680a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar void (*pf_aligned_free)(void *pv_buf); 10780a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar 10880a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar}ideint_params_t; 10980a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar 11080a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar/** Deinterlacer context size */ 11180a14110036632549a272c812f92b791fb08e87aHarish MahendrakarWORD32 ideint_ctxt_size(void); 11280a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar 11380a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar/** Deinterlacer process */ 11480a14110036632549a272c812f92b791fb08e87aHarish MahendrakarIDEINT_ERROR_T ideint_process(void *pv_ctxt, 11580a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar icv_pic_t *ps_prv_fld, 11680a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar icv_pic_t *ps_cur_fld, 11780a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar icv_pic_t *ps_nxt_fld, 11880a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar icv_pic_t *ps_out_frm, 11980a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar ideint_params_t *ps_params, 12080a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar WORD32 start_row, 12180a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar WORD32 num_rows); 12280a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar 12380a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar#endif /* __IDEINT_H__ */ 124