18d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/******************************************************************************
28d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
38d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Copyright (C) 2015 The Android Open Source Project
48d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
58d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Licensed under the Apache License, Version 2.0 (the "License");
68d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * you may not use this file except in compliance with the License.
78d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * You may obtain a copy of the License at:
88d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
98d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * http://www.apache.org/licenses/LICENSE-2.0
108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Unless required by applicable law or agreed to in writing, software
128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * distributed under the License is distributed on an "AS IS" BASIS,
138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * See the License for the specific language governing permissions and
158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * limitations under the License.
168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *****************************************************************************
188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*/
208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#ifndef _IH264D_DEFS_H_
218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define _IH264D_DEFS_H_
228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ************************************************************************
258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \file ih264d_defs.h
268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \brief
288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *    Type definitions used in the code
298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \date
318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *    19/11/2002
328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \author  Sriram Sethuraman
348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ************************************************************************
368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_MAX_FRAME_WIDTH                3840
388ef4c3f6142028732a155cbfc1febd6ef5da72fdMarco Nelissen#define H264_MAX_FRAME_HEIGHT               2176
398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_MIN_FRAME_WIDTH                16
418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_MIN_FRAME_HEIGHT               16
428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
438ef4c3f6142028732a155cbfc1febd6ef5da72fdMarco Nelissen#define FMT_CONV_NUM_ROWS       16
448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Bit manipulation macros */
468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CHECKBIT(a,i) ((a) &  (1 << i))
478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CLEARBIT(a,i) ((a) &= ~(1 << i))
488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Macro to convert a integer to a boolean value */
508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define BOOLEAN(x) (!!(x))
518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Arithmetic operations */
538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MOD(x,y) ((x)%(y))
548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DIV(x,y) ((x)/(y))
558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MUL(x,y) ((x)*(y))
568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SIGN_POW2_DIV(x, y) (((x) < 0) ? (-((-(x)) >> (y))) : ((x) >> (y)))
578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MB_ENABLE_FILTERING           0x00
598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MB_DISABLE_FILTERING          0x01
608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MB_DISABLE_TOP_EDGE           0x02
618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MB_DISABLE_LEFT_EDGE          0x04
628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Maximum number of reference pics */
648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_REF_BUFS    32
658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_DISP_BUFS_NEW 64
668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_FRAMES              16
678ef4c3f6142028732a155cbfc1febd6ef5da72fdMarco Nelissen
688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define INVALID_FRAME_NUM       0x0fffffff
698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define GAP_FRAME_NUM           0x1fffffff
708ef4c3f6142028732a155cbfc1febd6ef5da72fdMarco Nelissen
718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** macros for reference picture lists, refIdx to POC mapping */
728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S// 1 extra entry into reference picture lists for refIdx = -1.
738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S// this entry is always 0. this saves conditional checks in
748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S// FillBs modules.
758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define POC_LIST_L0_TO_L1_DIFF  (( 2*MAX_FRAMES) + 1)
768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define POC_LIST_L0_TO_L1_DIFF_1  ((MAX_FRAMES) + 1)
778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define FRM_LIST_L0             0                                               //0
798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define FRM_LIST_L1             1 * POC_LIST_L0_TO_L1_DIFF//FRM_LIST_L0 + POC_LIST_L0_TO_L1_DIFF        //0+33                  //(1 * POC_LIST_L0_TO_L1_DIFF)
808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define TOP_LIST_FLD_L0         2 * POC_LIST_L0_TO_L1_DIFF//FRM_LIST_L1 + POC_LIST_L0_TO_L1_DIFF        //0+33+33                   //(2 * POC_LIST_L0_TO_L1_DIFF)
818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define TOP_LIST_FLD_L1         3 * POC_LIST_L0_TO_L1_DIFF//TOP_LIST_FLD_L0 + POC_LIST_L0_TO_L1_DIFF_1  //0+33+33+17                //(3 * POC_LIST_L0_TO_L1_DIFF)
828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define BOT_LIST_FLD_L0         4 * POC_LIST_L0_TO_L1_DIFF//TOP_LIST_FLD_L1 + POC_LIST_L0_TO_L1_DIFF_1  //0+33+33+17+17
838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define BOT_LIST_FLD_L1         5 * POC_LIST_L0_TO_L1_DIFF//BOT_LIST_FLD_L0 + POC_LIST_L0_TO_L1_DIFF_1  //0+33+33+17+17+17
848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define TOTAL_LIST_ENTRIES      6 * POC_LIST_L0_TO_L1_DIFF//BOT_LIST_FLD_L1 + POC_LIST_L0_TO_L1_DIFF_1  //0+33+33+17+17+17+17
858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PAD_MV_BANK_ROW             64
868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define OFFSET_MV_BANK_ROW          ((PAD_MV_BANK_ROW)>>1)
878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PAD_PUC_CURNNZ              32
888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define OFFSET_PUC_CURNNZ           (PAD_PUC_CURNNZ)
898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PAD_MAP_IDX_POC             (1)
908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define OFFSET_MAP_IDX_POC          (1)
918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define OFFSET_MAP_IDX_POC          (1)
938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NAL_REF_IDC(nal_first_byte)       ((nal_first_byte >> 5) & 0x3)
958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NAL_FORBIDDEN_BIT(nal_first_byte) (nal_first_byte>>7)
968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NAL_UNIT_TYPE(nal_first_byte)     (nal_first_byte & 0x1F)
978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define INT_PIC_TYPE_I        (0x00)
998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define YIELD_CNT_THRESHOLD  8
1018ef4c3f6142028732a155cbfc1febd6ef5da72fdMarco Nelissen
1028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define OK        0
1048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define END       1
1058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NOT_OK    -1
1068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* For 420SP */
1088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define YUV420SP_FACTOR 2
1098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
1128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ***************************************************************************
1138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Enum to hold various mem records being request
1148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ****************************************************************************
1158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
1168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Senum
1178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
1188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
1198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Codec Object at API level
1208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
1218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    MEM_REC_IV_OBJ,
1228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
1248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Codec context
1258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
1268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    MEM_REC_CODEC,
1278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
1298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Bitstream buffer which holds emulation prevention removed bytes
1308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
1318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    MEM_REC_BITSBUF,
1328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
1348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Buffer to hold  coeff data
1358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
1368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    MEM_REC_COEFF_DATA,
1378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
1398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Motion vector bank
1408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
1418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    MEM_REC_MVBANK,
1428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
1448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Holds mem records passed to the codec.
1458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
1468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    MEM_REC_BACKUP,
1478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
1498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Holds SPS
1508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
1518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    MEM_REC_SPS,
1528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
1548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Holds PPS
1558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
1568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    MEM_REC_PPS,
1578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
1598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Holds Slice Headers
1608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
1618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    MEM_REC_SLICE_HDR,
1628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
1648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Holds thread handles
1658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
1668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    MEM_REC_THREAD_HANDLE,
1678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
1698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Contains i4_status map indicating parse i4_status per MB basis
1708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
1718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    MEM_REC_PARSE_MAP,
1728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
1748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Contains i4_status map indicating processing i4_status per MB basis
1758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
1768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    MEM_REC_PROC_MAP,
1778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
1798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Contains slice number info for each MB
1808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
1818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    MEM_REC_SLICE_NUM_MAP,
1838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
1858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Holds dpb manager context
1868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
1878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    MEM_REC_DPB_MGR,
1888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
1908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Holds neighbors' info
1918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
1928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    MEM_REC_NEIGHBOR_INFO,
1938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
1958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Holds neighbors' info
1968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
1978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    MEM_REC_PRED_INFO,
1988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
2018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Holds inter pred inforamation on packed format info
2028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
2038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    MEM_REC_PRED_INFO_PKD,
2048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
2058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Holds neighbors' info
2068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
2078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    MEM_REC_MB_INFO,
2088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
2108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Holds deblock Mb info structure frame level)
2118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
2128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    MEM_REC_DEBLK_MB_INFO,
2138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
2158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Holds  reference picture buffers in non-shared mode
2168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
2178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    MEM_REC_REF_PIC,
2188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
2208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Holds  some misc intermediate_buffers
2218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
2228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    MEM_REC_EXTRA_MEM,
2238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
2258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Holds  some misc intermediate_buffers
2268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
2278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    MEM_REC_INTERNAL_SCRATCH,
2288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
2308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Holds  some misc intermediate_buffers
2318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
2328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    MEM_REC_INTERNAL_PERSIST,
2338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* holds structures related to picture buffer manager*/
2358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    MEM_REC_PIC_BUF_MGR,
2368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*holds structure related to MV buffer manager*/
2388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    MEM_REC_MV_BUF_MGR,
2398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
2418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Place holder to compute number of memory records.
2428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
2438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    MEM_REC_CNT
2448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Do not add anything below */
2458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S};
2468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#ifdef DEBLOCK_THREAD
2488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_MUTEX_LOCK(lock) ithread_mutex_lock(lock)
2498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_MUTEX_UNLOCK(lock) ithread_mutex_unlock(lock)
2508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#else //DEBLOCK_THREAD
2518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_MUTEX_LOCK(lock)
2528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_MUTEX_UNLOCK(lock)
2538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEBUG_THREADS_PRINTF(...)
2558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEBUG_PERF_PRINTF(...)
2568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Profile Types*/
2588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define BASE_PROFILE_IDC    66
2598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAIN_PROFILE_IDC    77
2608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define HIGH_PROFILE_IDC   100
2618ef4c3f6142028732a155cbfc1febd6ef5da72fdMarco Nelissen
2628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MB_SIZE             16
2648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define BLK8x8SIZE           8
2658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define BLK_SIZE             4
2668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NUM_BLKS_PER_MB     24
2678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NUM_LUM_BLKS_PER_MB 16
2688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define LUM_BLK              0
2698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CHROM_BLK            1
2708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NUM_PELS_IN_MB      64
2718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Level Types */
2738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_LEVEL_1_0     10
2748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_LEVEL_1_1     11
2758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_LEVEL_1_2     12
2768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_LEVEL_1_3     13
2778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_LEVEL_2_0     20
2788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_LEVEL_2_1     21
2798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_LEVEL_2_2     22
2808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_LEVEL_3_0     30
2818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_LEVEL_3_1     31
2828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_LEVEL_3_2     32
2838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_LEVEL_4_0     40
2848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_LEVEL_4_1     41
2858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_LEVEL_4_2     42
2868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_LEVEL_5_0     50
2878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_LEVEL_5_1     51
2888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_MBS_LEVEL_51 36864
2908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_MBS_LEVEL_50 22080
2918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_MBS_LEVEL_42 8704
2928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_MBS_LEVEL_41 8192
2938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_MBS_LEVEL_40 8192
2948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_MBS_LEVEL_32 5120
2958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_MBS_LEVEL_31 3600
2968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_MBS_LEVEL_30 1620
2978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_MBS_LEVEL_22 1620
2988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_MBS_LEVEL_21 792
2998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_MBS_LEVEL_20 396
3008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_MBS_LEVEL_13 396
3018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_MBS_LEVEL_12 396
3028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_MBS_LEVEL_11 396
3038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_MBS_LEVEL_10 99
3048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*
3078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S |  Legend:
3088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S |  LVL Level*10
3098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S |  MPR Macroblk processing rate
3108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S |  MMF Max Mbs/Frm
3118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S |  MDK Max DbpSize (in kB)
3128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S |  MDB max DbpSize (in bytes)
3138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S |  MFS FrmSizeYUV (in bytes)
3148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S |  MDP Max DBPics
3158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S |  MDC Ceiling DBPics
3168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S |  FPS Frame/Second
3178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S |
3188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S |  LVL MPR   MMF   MDK     MDB     MFS     MDP   MDC   FPS
3198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S |  10  1485  99    148.5   152064  38016   4.00  4.00  15.00
3208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S |  11  3000  396   337.5   345600  152064  2.27  3.00  7.58
3218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S |  12  6000  396   891     912384  152064  6.00  6.00  15.15
3228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S |  13  11880 396   891     912384  152064  6.00  6.00  30.00
3238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S |  20  11880 396   891     912384  152064  6.00  6.00  30.00
3248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S |  21  19800 792   1782    1824768 304128  6.00  6.00  25.00
3258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S |  22  20250 1620  3037.5  3110400 622080  5.00  5.00  12.50
3268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S |  30  40500 1620  3037.5  3110400 622080  5.00  5.00  25.00
3278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
3288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_REF_LEVEL_1_0     4
3298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_REF_LEVEL_1_1     3
3308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_REF_LEVEL_1_2     6
3318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_REF_LEVEL_1_3     6
3328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_REF_LEVEL_2_0     6
3338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_REF_LEVEL_2_1     6
3348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_REF_LEVEL_2_2     5
3358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_REF_LEVEL_3_0     5
3368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_MAX_REF_PICS     16
3378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MIN_LEVEL_SUPPORTED 10
3398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_LEVEL_SUPPORTED 64
3408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** NAL Types */
3428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SLICE_NAL                       1
3438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SLICE_DATA_PARTITION_A_NAL      2
3448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SLICE_DATA_PARTITION_B_NAL      3
3458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SLICE_DATA_PARTITION_C_NAL      4
3468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define IDR_SLICE_NAL                   5
3478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SEI_NAL                         6
3488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SEQ_PARAM_NAL                   7
3498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PIC_PARAM_NAL                   8
3508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define ACCESS_UNIT_DELIMITER_RBSP      9
3518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define END_OF_SEQ_RBSP                 10
3528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define END_OF_STREAM_RBSP              11
3538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define FILLER_DATA_NAL                 12
3548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Entropy coding modes */
3568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CAVLC  0
3578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CABAC  1
3588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Picture Types */
3608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define I_PIC       0
3618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define IP_PIC      1
3628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define IPB_PIC     2
3638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SI_PIC      3
3648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SIP_PIC     4
3658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define ISI_PIC     5
3668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define ISI_PSP_PIC 6
3678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define ALL_PIC     7
3688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Frame or field picture type */
3708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define FRM_PIC         0x00
3718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define TOP_FLD         0x01
3728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define BOT_FLD         0x02
3738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define COMP_FLD_PAIR   0x03 /* TOP_FLD | BOT_FLD */
3748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define AFRM_PIC        0x04
3758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define TOP_REF         0x08
3768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define BOT_REF         0x10
3778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PIC_MASK        0x03
3788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NON_EXISTING    0xff
3798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* field picture type for display */
3818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DISP_TOP_FLD    0x00
3828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DISP_BOT_FLD    0x01
3838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Slice Types */
3858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define P_SLICE  0
3868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_SLICE  1
3878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define I_SLICE  2
3888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SP_SLICE 3
3898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SI_SLICE 4
3908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Definition for picture skip */
3928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SKIP_NONE  (0x0)
3938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define I_SLC_BIT  (0x1)
3948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define P_SLC_BIT  (0x2)
3958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_SLC_BIT  (0x4)
3968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Macros used for Deblocking */
3988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define D_INTER_MB        0
3998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define D_INTRA_MB        1
4008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define D_PRED_NON_16x16  2
4018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define D_B_SLICE         4
4028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define D_B_SUBMB         6 //D_B_SLICE | D_PRED_NON_16x16 | D_INTER_MB
4038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define D_FLD_MB          0x80
4048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Macros for Cabac checks */
4068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** MbType */
4078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** |x|x|I_PCM|SKIP|
4088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S |S|Inter/Intra|P/B|NON-BD16x16/BD16x16,I16x16/I4x4| */
4098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CAB_INTRA         0x00 /* 0000 00xx */
4108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CAB_INTER         0x04 /* 0000 01xx */
4118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CAB_I4x4          0x00 /* 0000 00x0 */
4128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CAB_I16x16        0x01 /* 0000 00x1 */
4138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CAB_BD16x16       0x04 /* 0000 0100 */
4148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CAB_NON_BD16x16   0x05 /* 0000 0101 */
4158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CAB_P             0x07 /* 0000 0111 */
4168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CAB_SI4x4         0x08 /* 0000 10x0 */
4178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CAB_SI16x16       0x09 /* 0000 10x1 */
4188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CAB_SKIP_MASK     0x10 /* 0001 0000 */
4198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CAB_SKIP          0x10 /* 0001 0000 */
4208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CAB_P_SKIP        0x16 /* 0001 x11x */
4218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CAB_B_SKIP        0x14 /* 0001 x100 */
4228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CAB_BD16x16_MASK  0x07 /* 0000 0111 */
4238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CAB_INTRA_MASK    0x04 /* 0000 0100 */
4248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CAB_I_PCM         0x20 /* 001x xxxx */
4258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**< Binarization types for CABAC */
4278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* |x|x|x|x|MSB_FIRST_FLC|FLC|TUNARY|UNARY| */
4288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define UNARY           1
4298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define TUNARY          2
4308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define FLC             4
4318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MSB_FIRST_FLC   12
4328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Macroblock Types */
4348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define I_4x4_MB    0
4358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define I_16x16_MB  1
4368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define P_MB        2
4378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_MB        3
4388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SI_MB       4
4398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SP_MB       5
4408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define I_PCM_MB    6
4418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SI4x4_MB 0xFF
4438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Intra luma 16x16 and chroma 8x8 prediction modes */
4458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NUM_INTRA_PRED_MODES  4
4468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define VERT    0
4478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define HORIZ   1
4488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DC      2
4498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PLANE   3
4508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NOT_VALID -1
4518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DC_DC_DC_DC   0x02020202 /*packed 4 bytes used in Decode Intra Mb*/
4528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Intra luma 4x4 prediction modes */
4548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NUM_INTRA4x4_PRED_MODES 9
4558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** VERT, HORIZ, DC are applicable to 4x4 as well */
4578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** D - Down; U - Up; L - Left; R - Right */
4588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DIAG_DL   3
4598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DIAG_DR   4
4608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define VERT_R    5
4618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define HORIZ_D   6
4628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define VERT_L    7
4638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define HORIZ_U   8
4648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** P_MB prediction modes */
4668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NUM_INTER_MB_PRED_MODES 5
4678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PRED_16x16  0
4688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PRED_16x8   1
4698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PRED_8x16   2
4708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PRED_8x8    3
4718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PRED_8x8R0  4
4728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAGIC_16x16 5
4738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MB_SKIP     255
4748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* P_MB submb modes */
4768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define P_L0_8x8    0
4778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define P_L0_8x4    1
4788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define P_L0_4x8    2
4798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define P_L0_4x4    3
4808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* B_MB submb modes */
4828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_DIRECT_8x8    0
4838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_L0_8x8        1
4848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_L1_8x8        2
4858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_BI_8x8        3
4868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_L0_8x4        4
4878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_L0_4x8        5
4888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_L1_8x4        6
4898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_L1_4x8        7
4908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_BI_8x4        8
4918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_BI_4x8        9
4928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_L0_4x4        10
4938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_L1_4x4        11
4948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_BI_4x4        12
4958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** B_MB prediction modes */
4978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_8x8    22
4988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PRED_INVALID  -1
4998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_DIRECT  0
5008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PRED_L0   1
5018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PRED_L1   2
5028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define BI_PRED   3
5038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_DIRECT_BI_PRED  23
5048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_DIRECT_PRED_L0  24
5058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_DIRECT_PRED_L1  25
5068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_DIRECT_SPATIAL  26
5078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_DIRECT8x8_BI_PRED  13
5098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_DIRECT8x8_PRED_L0  14
5108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_DIRECT8x8_PRED_L1  15
5118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define ONE_TO_ONE  0
5138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define FRM_TO_FLD  1
5148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define FLD_TO_FRM  2
5158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Inter Sub MB Pred modes */
5178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NUM_INTER_SUBMB_PRED_MODES 4
5188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SUBMB_8x8    0
5198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SUBMB_8x4    1
5208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SUBMB_4x8    2
5218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SUBMB_4x4    3
5228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Coded Block Pattern - Chroma */
5248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CBPC_ALLZERO    0
5258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CBPC_ACZERO     1
5268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CBPC_NONZERO    2
5278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Index for accessing the left MB in the MV predictor array */
5298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define LEFT  0
5308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Index for accessing the top MB in the MV predictor array */
5318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define TOP   1
5328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Index for accessing the top right MB in the MV predictor array */
5338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define TOP_R 2
5348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Index for accessing the top Left MB in the MV predictor array */
5358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define TOP_L 3
5368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Maximum number of Sequence Parameter sets */
5388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_NUM_SEQ_PARAMS 32
5398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Maximum number of Picture Parameter sets */
5418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_NUM_PIC_PARAMS 256
5428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MASK_ERR_SEQ_SET_ID   (0xFFFFFFE0)
5448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MASK_ERR_PIC_SET_ID   (0xFFFFFF00)
5458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_PIC_ORDER_CNT_TYPE    2
5478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_BITS_IN_FRAME_NUM     16
5498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_BITS_IN_POC_LSB       16
5508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_MAX_REF_PICS         16
5528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_MAX_REF_IDX          32
5538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_WEIGHT_BIPRED_IDC     2
5548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_CABAC_INIT_IDC        2
5558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_DEFAULT_NUM_CORES 1
5578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_SEPARATE_PARSE (H264_DEFAULT_NUM_CORES == 2)? 1 :0
5588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Maximum number of Slice groups */
5608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_NUM_SLICE_GROUPS 8
5618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_NUM_REF_FRAMES_OFFSET 255
5628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Deblocking modes for a slice */
5648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SLICE_BOUNDARY_DBLK_DISABLED  2
5658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DBLK_DISABLED                 1
5668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DBLK_ENABLED                  0
5678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MIN_DBLK_FIL_OFF              -12
5688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_DBLK_FIL_OFF              12
5698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Width of the predictor buffers used for MC */
5718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MB_SIZE             16
5728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define BLK8x8SIZE          8
5738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define BLK_SIZE             4
5748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NUM_BLKS_PER_MB     24
5758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NUM_LUM_BLKS_PER_MB 16
5768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SUB_BLK_WIDTH                 4
5788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SUB_SUB_BLK_SIZE              4 /* 2x2 pixel i4_size */
5798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SUB_BLK_SIZE                  ((SUB_BLK_WIDTH) * (SUB_BLK_WIDTH))
5808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MB_LUM_SIZE                   256
5818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MB_CHROM_SIZE                 64
5828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**< Width to pad the luminance frame buff    */
5848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**< Height to pad the luminance frame buff   */
5858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**< Width to pad the chrominance frame buff  */
5868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**< Height to pad the chrominance frame buff */
5878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PAD_LEN_Y_H                   32
5898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PAD_LEN_Y_V                   20
5908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PAD_LEN_UV_H                  16
5918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PAD_LEN_UV_V                  8
5928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PAD_MV_BANK_ROW             64
5948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**< Maimum u4_ofst by which the Mvs could point outside the frame buffers
5968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S horizontally in the left and vertically in the top direction */
5978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_OFFSET_OUTSIDE_X_FRM      -20
5988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_OFFSET_OUTSIDE_Y_FRM      -20
5998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_OFFSET_OUTSIDE_UV_FRM     -8
6008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** UVLC parsing macros */
6028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define   UEV     1
6038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define   SEV     2
6048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define   TEV     3
6058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Defines for Boolean values */
6078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#ifndef TRUE
6088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define TRUE    1
6098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define FALSE   0
6108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#endif
6118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define UNUSED_FOR_REF 0
6138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define IS_SHORT_TERM  1
6148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define IS_LONG_TERM   2
6158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Defines for which field gets displayed first */
6178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_FRAMES              16
6188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define INVALID_FRAME_NUM       0x0fffffff
6198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DO_NOT_DISP             254
6208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DISP_FLD_FIRST_UNDEF  0
6218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DISP_TOP_FLD_FIRST   1
6228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DISP_BOT_FLD_FIRST   2
6238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Misc error resilience requirements*/
6258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MASK_LOG2_WEIGHT_DENOM      0xFFFFFFF8
6268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MASK_PRED_WEIGHT_OFFSET     0xFFFFFF00
6278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_REDUNDANT_PIC_CNT       127
6288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#endif //DEBLOCK_THREAD
6328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NUM_COEFFS_IN_4x4BLK 16
6348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MEMSET_16BYTES(pu4_start,value)                         \
6378ef4c3f6142028732a155cbfc1febd6ef5da72fdMarco Nelissen{                                                               \
6388ef4c3f6142028732a155cbfc1febd6ef5da72fdMarco Nelissen    memset(pu4_start,value,16);                                 \
6398ef4c3f6142028732a155cbfc1febd6ef5da72fdMarco Nelissen}
6408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MEMCPY_16BYTES(dst,src)                                 \
6428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{                                                               \
6438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(dst,src,16);                                         \
6448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
6458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#endif /*_IH264D_DEFS_H_*/
648