119 lines
4.1 KiB
C
119 lines
4.1 KiB
C
/******************************************************************************
|
|
*
|
|
* 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_mv_pred_merge.h
|
|
*
|
|
* \brief
|
|
* This file contains function prototypes of MV Merge candidates list
|
|
* derivation functions and corresponding structure and macrso definations
|
|
*
|
|
* \date
|
|
* 18/09/2012
|
|
*
|
|
* \author
|
|
* Ittiam
|
|
*
|
|
******************************************************************************
|
|
*/
|
|
|
|
#ifndef _IHEVCE_MV_PRED_MERGE_H_
|
|
#define _IHEVCE_MV_PRED_MERGE_H_
|
|
|
|
/*****************************************************************************/
|
|
/* Constant Macros */
|
|
/*****************************************************************************/
|
|
#define MAX_NUM_MERGE_CAND MAX_MERGE_CANDIDATES
|
|
#define MAX_NUM_MV_NBR 5
|
|
|
|
/*****************************************************************************/
|
|
/* Function Macros */
|
|
/*****************************************************************************/
|
|
|
|
/*****************************************************************************/
|
|
/* Typedefs */
|
|
/*****************************************************************************/
|
|
|
|
/*****************************************************************************/
|
|
/* Enums */
|
|
/*****************************************************************************/
|
|
typedef enum
|
|
{
|
|
NBR_A0 = 0,
|
|
NBR_A1 = 1,
|
|
NBR_B0 = 2,
|
|
NBR_B1 = 3,
|
|
NBR_B2 = 4,
|
|
|
|
/* should be last */
|
|
MAX_NUM_NBRS
|
|
} MV_MERGE_NBRS_T;
|
|
|
|
/*****************************************************************************/
|
|
/* Structure */
|
|
/*****************************************************************************/
|
|
|
|
typedef struct
|
|
{
|
|
/* Merge candidate motion vectors and refernce idx */
|
|
pu_mv_t mv;
|
|
|
|
/* Pred_l0 mode for the candidate */
|
|
UWORD8 u1_pred_flag_l0;
|
|
|
|
/* Pred_l1 mode for the candidate */
|
|
UWORD8 u1_pred_flag_l1;
|
|
|
|
} merge_cand_list_t;
|
|
|
|
/*****************************************************************************/
|
|
/* Extern Variable Declarations */
|
|
/*****************************************************************************/
|
|
|
|
/*****************************************************************************/
|
|
/* Extern Function Declarations */
|
|
/*****************************************************************************/
|
|
|
|
void ihevce_collocated_mvp(
|
|
mv_pred_ctxt_t *ps_mv_ctxt,
|
|
pu_t *ps_pu,
|
|
mv_t *ps_mv_col,
|
|
WORD32 *pu4_avail_col_flag,
|
|
WORD32 use_pu_ref_idx,
|
|
WORD32 x_col,
|
|
WORD32 y_col);
|
|
|
|
WORD32 ihevce_mv_pred_merge(
|
|
mv_pred_ctxt_t *ps_ctxt,
|
|
nbr_4x4_t *ps_top_nbr_4x4,
|
|
nbr_4x4_t *ps_left_nbr_4x4,
|
|
nbr_4x4_t *ps_top_left_nbr_4x4,
|
|
WORD32 left_nbr_4x4_strd,
|
|
nbr_avail_flags_t *ps_avail_flags,
|
|
pu_mv_t *ps_col_mv,
|
|
pu_t *ps_pu,
|
|
PART_SIZE_E part_mode,
|
|
WORD32 part_idx,
|
|
WORD32 single_mcl_flag,
|
|
merge_cand_list_t *ps_merge_cand_list,
|
|
UWORD8 *pu1_is_top_used);
|
|
|
|
#endif /* _IHEVCE_MV_PRED_MERGE_H_ */
|