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