⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 context_ini.c

📁 JM 11.0 KTA 2.1 Source Code
💻 C
字号:

/*!
*************************************************************************************
* \file context_ini.c
*
* \brief
*    CABAC context initializations
*
* \author
*    Main contributors (see contributors.h for copyright, address and affiliation details)
*    - Detlev Marpe                    <marpe@hhi.de>
*    - Heiko Schwarz                   <hschwarz@hhi.de>
**************************************************************************************
*/

#define CONTEXT_INI_C

#include "defines.h"
#include "global.h"
#include "biaridecod.h"
#include "ctx_tables.h"

#ifdef ADAPTIVE_FD_SD_CODING
#include "cabac.h"
#endif

#ifdef MV_COMPETITION
#include "mv_competition.h"
extern MV_Competition mv_comp;
#endif

#define BIARI_CTX_INIT2(ii,jj,ctx,tab,num) \
{ \
  for (i=0; i<ii; i++) \
  for (j=0; j<jj; j++) \
{ \
  if      ((img->type==I_SLICE)||(img->type==SI_SLICE))  biari_init_context (img, &(ctx[i][j]), &(tab ## _I[num][i][j][0])); \
  else                                                   biari_init_context (img, &(ctx[i][j]), &(tab ## _P[num][i][j][0])); \
} \
}
#define BIARI_CTX_INIT1(jj,ctx,tab,num) \
{ \
  for (j=0; j<jj; j++) \
{ \
  if   ((img->type==I_SLICE)||(img->type==SI_SLICE))  biari_init_context (img, &(ctx[j]), &(tab ## _I[num][0][j][0])); \
  else                                                biari_init_context (img, &(ctx[j]), &(tab ## _P[num][0][j][0])); \
} \
}


void
init_contexts (struct img_par* img)
{
  MotionInfoContexts*  mc = img->currentSlice->mot_ctx;
  TextureInfoContexts* tc = img->currentSlice->tex_ctx;
  int i, j;
  
  //printf("%d -", img->model_number);
  
  //--- motion coding contexts ---
  BIARI_CTX_INIT2 (3, NUM_MB_TYPE_CTX,   mc->mb_type_contexts,     INIT_MB_TYPE,    img->model_number);
  BIARI_CTX_INIT2 (2, NUM_B8_TYPE_CTX,   mc->b8_type_contexts,     INIT_B8_TYPE,    img->model_number);
  BIARI_CTX_INIT2 (2, NUM_MV_RES_CTX,    mc->mv_res_contexts,      INIT_MV_RES,     img->model_number);
#ifdef MV_COMPETITION
  if (mv_comp.mv_competition > 0)
  {
    BIARI_CTX_INIT1 (mv_comp.nb_mode_for_skip,     mc->mv_predictor_skip_contexts,INIT_PRED,        img->model_number);
    BIARI_CTX_INIT1 (mv_comp.nb_mode_for_mvp ,     mc->mv_predictor_mvp_contexts ,INIT_PRED,        img->model_number);
    BIARI_CTX_INIT1 (mv_comp.nb_mode_for_mvb ,     mc->mv_predictor_mvb_contexts ,INIT_PRED,        img->model_number);
  }
#endif
  BIARI_CTX_INIT2 (2, NUM_REF_NO_CTX,    mc->ref_no_contexts,      INIT_REF_NO,     img->model_number);
  BIARI_CTX_INIT1 (   NUM_DELTA_QP_CTX,  mc->delta_qp_contexts,    INIT_DELTA_QP,   img->model_number);
  BIARI_CTX_INIT1 (   NUM_MB_AFF_CTX,    mc->mb_aff_contexts,      INIT_MB_AFF,     img->model_number);
  BIARI_CTX_INIT1 (   NUM_TRANSFORM_SIZE_CTX,  mc->transform_size_contexts,    INIT_TRANSFORM_SIZE,   img->model_number);
#ifdef ADAPTIVE_QUANTIZATION
  BIARI_CTX_INIT1 (   NUM_MODULATED_QUANTIZATION_CTX, mc->modulated_quantization_contexts,    INIT_MODULATED_QUANTIZATION,   img->model_number);
#endif

  //--- texture coding contexts ---
  BIARI_CTX_INIT1 (                 NUM_IPR_CTX,  tc->ipr_contexts,     INIT_IPR,       img->model_number);
  BIARI_CTX_INIT1 (                 NUM_CIPR_CTX, tc->cipr_contexts,    INIT_CIPR,      img->model_number);
  BIARI_CTX_INIT2 (3,               NUM_CBP_CTX,  tc->cbp_contexts,     INIT_CBP,       img->model_number);
  BIARI_CTX_INIT2 (8,               NUM_BCBP_CTX, tc->bcbp_contexts,    INIT_BCBP,      img->model_number);
  BIARI_CTX_INIT2 (NUM_BLOCK_TYPES, NUM_MAP_CTX,  tc->map_contexts,     INIT_MAP,       img->model_number);
  BIARI_CTX_INIT2 (NUM_BLOCK_TYPES, NUM_LAST_CTX, tc->last_contexts,    INIT_LAST,      img->model_number);
  BIARI_CTX_INIT2 (NUM_BLOCK_TYPES, NUM_ONE_CTX,  tc->one_contexts,     INIT_ONE,       img->model_number);
  BIARI_CTX_INIT2 (NUM_BLOCK_TYPES, NUM_ABS_CTX,  tc->abs_contexts,     INIT_ABS,       img->model_number);
  BIARI_CTX_INIT2 (NUM_BLOCK_TYPES, NUM_MAP_CTX,  tc->fld_map_contexts, INIT_FLD_MAP,   img->model_number);
  BIARI_CTX_INIT2 (NUM_BLOCK_TYPES, NUM_LAST_CTX, tc->fld_last_contexts,INIT_FLD_LAST,  img->model_number);
  
#ifdef ADAPTIVE_FD_SD_CODING
  BIARI_CTX_INIT1 (  NUM_BCBP_FD_SD_CTX,  tc->bcbp_contexts_FD_SD   ,    INIT_BCBP_FD_SD  ,      img->model_number);
  BIARI_CTX_INIT1 (  NUM_BCBP_FD_SD_CTX,  tc->bcbp8_contexts_FD_SD  ,    INIT_BCBP_FD_SD8 ,      img->model_number);
  BIARI_CTX_INIT1 (  NUM_MAP_CTX       ,  tc->map_contexts_SD       ,    INIT_MAP_SD      ,      img->model_number);
  BIARI_CTX_INIT1 (  NUM_MAP8_CTX      ,  tc->map8_contexts_SD      ,    INIT_MAP8_SD     ,      img->model_number);
  BIARI_CTX_INIT1 (  NUM_LAST_CTX      ,  tc->last_contexts_SD      ,    INIT_LAST_SD     ,      img->model_number);
  BIARI_CTX_INIT1 (  NUM_LAST8_CTX     ,  tc->last8_contexts_SD     ,    INIT_LAST8_SD    ,      img->model_number);
  BIARI_CTX_INIT1 (  NUM_ONE_CTX       ,  tc->one_contexts_SD       ,    INIT_ONE_SD      ,      img->model_number);
  BIARI_CTX_INIT1 (  NUM_ONE_CTX       ,  tc->one8_contexts_SD      ,    INIT_ONE_SD      ,      img->model_number);
  BIARI_CTX_INIT1 (  NUM_ABS_CTX       ,  tc->abs_contexts_SD       ,    INIT_ABS_SD      ,      img->model_number);
  BIARI_CTX_INIT1 (  NUM_ABS_CTX       ,  tc->abs8_contexts_SD      ,    INIT_ABS_SD      ,      img->model_number);
  BIARI_CTX_INIT1 (  NUM_MB_adap_CTX   ,  tc->MB_adaptive_SD_context,    INIT_MB_ADAP     ,      img->model_number);
#endif
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -