?? me.h
字號:
#ifndef __ME_H #define __ME_H #include "define.h" #include "local_mem.h" #include "decoder.h" ///////////////////////////////////////////////// // ME command queue offset #define MV1_BUFF0 0 // 4W #define MV2_BUFF1 4 // 4W #define MV_BUFF 8 // 4W #define MVUV_BUFF 12 // 1W #define PMV_CMD_ST 13 // 8W #define PXI_CMD0_ST 21 // 6W #define PXI_CMD1_ST 27 // 6W ///////////////////////////////////////////////// // ME command queue bit field #define mMECMD_TYPE3b(v) ((uint32_t)(v) << 29) // command (3 bits) #define MEC_PMVX 0 // Set horizontal prediction vector command #define MEC_PMVY 1 // Set vertical prediction vector command #define MEC_SAD 2 // Performs SAD calculation based on a given // motion vector #define MEC_DIA 3 // Performs diamond search repeatedly to find // the best motion vector #define MEC_REF 4 // Performs half-pixel refine based on previous // found best motion vector by DIA #define MEC_MOD 5 // Intra/inter mode decision command #define MEC_PXI 6 // Performs pixel interpolation of the reference // block & output the interpolated result block // to local memory // MV / MVD buffer #define mMV_X8b(v) ((uint32_t)(v) << 20) #define mMV_Y8b(v) ((uint32_t)(v) << 12) #define mMV_RADD12b(v) ((uint32_t)(v) & 0xfff) // MEC_PMVX / MEC_PMVY// #define MECPMV_DECODE (BIT28 | BIT27 | BIT26) // all from ME Buffer // Prediction vector source // Specify the source for each candidate predictionvector, // SRC[0] for MV1, SRC[1] for MV2 and SRC[2] for MV3 // 0: the source is from the MV field in this command // 1: the source is from the MV buffer #define mMECPMV_E_BSZ1b(v) ((uint32_t)(v) << 25) // 1: 1MV mode, 0: 4MV mode // In decoding mode: not used and should be 0 #define mMECPMV_4MVBN2b(v) ((uint32_t)(v) << 23) // block number// #define mMECPMV_MV1HIT1b(v) ((uint32_t)(v) << 22)// #define mMECPMV_MV37b(v) ((uint32_t)(v) << 14) // Candidate prediction vector 3/Index to candidate prediction vector 3// #define mMECPMV_MV27b(v) ((uint32_t)(v) << 7) // Candidate prediction vector 2/Index to candidate prediction vector 2// #define mMECPMV_MV17b(v) ((uint32_t)(v) << 0) // Candidate prediction vector 1/Index to candidate prediction vector 1 // MEC_PXI #define MEPXI_E_LAST BIT28 #define MEPXI_UV (BIT27 | BIT25)// #define MEPXI_SKIP_PXI BIT26// #define MEPXI_MBCNT BIT25 #define mMEPXI_BKNUM2b(v) ((uint32_t)(v) << 23) #define MEPXI_GRP1 BIT22// #define MEPXI_PAD_RIGHT BIT21// #define MEPXI_PAD_TOP BIT20// #define MEPXI_PAD_BOT BIT19 #define mMEPXI_RADD12b(v) ((uint32_t)(v) << 0) /* 1MV: REF1_Y_OFF-------REF_Y_OFF_0 ------ | | | V V ###########---###########--- #Y | | # #Y | | # | #-----------#---#-----------#--- # | | # # | | # | #-----------#---#-----------#--- # | | # # | | # | ###########---###########--- | | | | | | | | | ############################ #U | #V | #U | #V | # #-------#-------#------#--------# # | # | # | # | # ############################ 4MV: REF_Y0_OFF_1 -----REF_Y0_OFF_0 ----- | | | V V ########################### #Y0 | #Y1 | #Y0 | #Y1 | # #-------#-------#-------#------# # | # | # | # | # ########################### #Y2 | #Y3 | #Y2 | #Y3 | # #-------#-------#------#-------# # | # | # | # | # ############################ #U | #V | #U | #V | # #-------#-------#------#--------# # | # | # | # | # ############################ */ //Y0 #define CONST_MEPXI0Y0 (mMECMD_TYPE3b(MEC_PXI) \ | mMEPXI_BKNUM2b(0) \ | mMEPXI_RADD12b(REF_Y0_OFF_0 >> 2)) // Y1 #define CONST_MEPXI0Y1 (mMECMD_TYPE3b(MEC_PXI) \ | mMEPXI_BKNUM2b(1) \ | mMEPXI_RADD12b(REF_Y1_OFF_0 >> 2)) // Y2 #define CONST_MEPXI0Y2 (mMECMD_TYPE3b(MEC_PXI) \ | mMEPXI_BKNUM2b(2) \ | mMEPXI_RADD12b(REF_Y2_OFF_0 >> 2)) // Y3 #define CONST_MEPXI0Y3 (mMECMD_TYPE3b(MEC_PXI) \ | mMEPXI_BKNUM2b(3) \ | mMEPXI_RADD12b(REF_Y3_OFF_0 >> 2)) // U #define CONST_MEPXI0U (mMECMD_TYPE3b(MEC_PXI) \ | mMEPXI_BKNUM2b(0) \ | MEPXI_UV \ | mMEPXI_RADD12b(REF_U_OFF_0 >> 2)) // V #define CONST_MEPXI0V (mMECMD_TYPE3b(MEC_PXI) \ | MEPXI_E_LAST \ | mMEPXI_BKNUM2b(0) \ | MEPXI_UV \ | mMEPXI_RADD12b(REF_V_OFF_0 >> 2)) //Y0 #define CONST_MEPXI1Y0 (mMECMD_TYPE3b(MEC_PXI) \ | mMEPXI_BKNUM2b(0) \ | MEPXI_GRP1 \ | mMEPXI_RADD12b(REF_Y0_OFF_1 >> 2)) // Y1 #define CONST_MEPXI1Y1 (mMECMD_TYPE3b(MEC_PXI) \ | mMEPXI_BKNUM2b(1) \ | MEPXI_GRP1 \ | mMEPXI_RADD12b(REF_Y1_OFF_1 >> 2)) // Y2 #define CONST_MEPXI1Y2 (mMECMD_TYPE3b(MEC_PXI) \ | mMEPXI_BKNUM2b(2) \ | MEPXI_GRP1 \ | mMEPXI_RADD12b(REF_Y2_OFF_1 >> 2)) // Y3 #define CONST_MEPXI1Y3 (mMECMD_TYPE3b(MEC_PXI) \ | mMEPXI_BKNUM2b(3) \ | MEPXI_GRP1 \ | mMEPXI_RADD12b(REF_Y3_OFF_1 >> 2)) // U #define CONST_MEPXI1U (mMECMD_TYPE3b(MEC_PXI) \ | MEPXI_UV \ | mMEPXI_BKNUM2b(0) \ | MEPXI_GRP1 \ | mMEPXI_RADD12b(REF_U_OFF_1 >> 2)) // V #define CONST_MEPXI1V (mMECMD_TYPE3b(MEC_PXI) \ | MEPXI_E_LAST \ | MEPXI_UV \ | mMEPXI_BKNUM2b(0) \ | MEPXI_GRP1 \ | mMEPXI_RADD12b(REF_V_OFF_1 >> 2)) #ifdef ME_GLOBALS #define ME_EXT const uint32_t u32ConstMePxi0[6] = { CONST_MEPXI0Y0, CONST_MEPXI0Y1, CONST_MEPXI0Y2, CONST_MEPXI0Y3, CONST_MEPXI0U, CONST_MEPXI0V }; const uint32_t u32ConstMePxi1[6] = { CONST_MEPXI1Y0, CONST_MEPXI1Y1, CONST_MEPXI1Y2, CONST_MEPXI1Y3, CONST_MEPXI1U, CONST_MEPXI1V }; #else #define ME_EXT extern extern uint32_t u32ConstMePxi0[]; extern uint32_t u32ConstMePxi1[]; #endif ME_EXT void me_dec_commandq_init(uint32_t * base);#endif /* __ME_H */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -