/******************************************************************************
 *
 * Copyright (C) 2018 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 ihevce_enc_subpel_gen.h
*
* \brief
*    This file contains interface defination of Subpel Plane generation
*    function
*
* \date
*    29/12/2012
*
* \author
*    Ittiam
*
******************************************************************************
*/

#ifndef _IHEVCE_ENC_SUBPEL_GEN_H_
#define _IHEVCE_ENC_SUBPEL_GEN_H_

/*****************************************************************************/
/* Constant Macros                                                           */
/*****************************************************************************/

/*****************************************************************************/
/* Function Macros                                                           */
/*****************************************************************************/

/*****************************************************************************/
/* Typedefs                                                                  */
/*****************************************************************************/

/*****************************************************************************/
/* Enums                                                                     */
/*****************************************************************************/

/*****************************************************************************/
/* Structure                                                                 */
/*****************************************************************************/

/*****************************************************************************/
/* Extern Variable Declarations                                              */
/*****************************************************************************/
/*****************************************************************************/
/* Extern Function Declarations                                              */
/*****************************************************************************/

void ihevce_subpel_padding(
    UWORD8 *pu1_dst,
    WORD32 stride,
    WORD32 tot_wd,
    WORD32 tot_ht,
    WORD32 pad_subpel_x,
    WORD32 pad_subpel_y,
    WORD32 ctb_ctr,
    WORD32 vert_ctr,
    frm_ctb_ctxt_t *ps_frm_ctb_prms,
    func_selector_t *ps_func_selector);

void ihevce_pad_interp_recon_ctb(
    pad_interp_recon_frm_t *ps_pad_interp_recon,
    WORD32 ctb_ctr,
    WORD32 vert_ctr,
    WORD32 quality_preset,
    frm_ctb_ctxt_t *ps_frm_ctb_prms,
    WORD16 *pi2_hxhy_interm,
    WORD32 i4_bitrate_instance,
    func_selector_t *ps_func_selector);

void ihevce_pad_interp_recon_src_ctb(
    pad_interp_recon_frm_t *ps_pad_interp_recon,
    WORD32 ctb_ctr,
    WORD32 vert_ctr,
    frm_ctb_ctxt_t *ps_frm_ctb_prms,
    WORD32 i4_bitrate_instance_id,
    func_selector_t *ps_func_selector,
    WORD32 is_chroma_needs_padding);

#endif /* _IHEVCE_ENC_SUBPEL_GEN_H_ */
