?? dma_b.c
?? 基于Linux的ffmepg decoder
?? C
?? 第 1 頁 / 共 5 頁
字號:
??
mDmaLType2b(DMA_DATA_SEQUENTAIL) |
mDmaLen12b(RGB_PIXEL_SIZE * SIZE_Y / 4) |
mDmaID4b(ID_CHN_RGB),
#endif
///////////////////////////////////////////////////
// 5
// CHNP_LOAD_PREDITOR + 0
DONT_CARE,
// CHNP_LOAD_PREDITOR + 1
mDmaLocMemAddr14b(PREDICTOR4_OFF), // watch-out
// CHNP_LOAD_PREDITOR + 2
mDmaSysWidth6b(DONT_CARE) |
mDmaSysOff14b(DONT_CARE) |
mDmaLocWidth4b(4) |
mDmaLocOff8b(8 + 1 - 4),
// CHNP_LOAD_PREDITOR + 3
mDmaIntChainMask1b(TRUE) |
mDmaEn1b(TRUE) |
mDmaChainEn1b(TRUE) | // chain to store_preditor
mDmaDir1b(DMA_DIR_2LOCAL) |
mDmaSType2b(DMA_DATA_SEQUENTAIL) |
mDmaLType2b(DMA_DATA_2D) |
mDmaLen12b(0x10) |
mDmaID4b(ID_CHN_ACDC),
////////////////////////////////////////////////////////////////
// 6
// CHNP_STORE_PREDITOR + 0
DONT_CARE,
// CHNP_STORE_PREDITOR + 1
mDmaLocMemAddr14b(PREDICTOR8_OFF),
// CHNP_STORE_PREDITOR + 2
mDmaSysWidth6b(DONT_CARE) |
mDmaSysOff14b(DONT_CARE) |
mDmaLocWidth4b(4) |
mDmaLocOff8b(8 + 1 - 4),
// CHNP_STORE_PREDITOR + 3,
mDmaLoc3dOff8b(DONT_CARE) |
mDmaIntChainMask1b(FALSE) |
mDmaEn1b(TRUE) |
mDmaChainEn1b(FALSE) |
mDmaDir1b(DMA_DIR_2SYS) |
mDmaSType2b(DMA_DATA_SEQUENTAIL) |
mDmaLType2b(DMA_DATA_2D) |
mDmaLen12b(0x10) |
mDmaID4b(ID_CHN_ACDC),
///////////////////////////////////////////////////
// i-frame
// vld->toggle vld(load) dmc img(yuv) rgb
// 0 1 0 1
// 1 0 1 0
// ...
///////////////////////////////////////////////////
// Toggle 0
///////////////////////////////////////////////////
// 7
// CHNI_IMG_Y + 0
DONT_CARE,
// CHNI_IMG_Y + 1
mDmaLoc2dWidth4b(8) | // 8 lines/block
mDmaLoc2dOff8b(1 - (PIXEL_U - 1) * (2 * PIXEL_U) / 4) | // jump to next block
mDmaLoc3dWidth4b(2) | // 2 block/row
mDmaLocMemAddr14b(INTER_Y_OFF_0) |
mDmaLocInc2b(DMA_INCL_0),
// CHNI_IMG_Y + 2
mDmaSysWidth6b(2 * SIZE_U / 8) |
mDmaSysOff14b((DEFAULT_WIDTH * 2 * SIZE_U / 4) + 1 - (2 * SIZE_U / 4)) |
mDmaLocWidth4b(PIXEL_U / 4) |
mDmaLocOff8b((2 * PIXEL_U / 4) + 1 - (PIXEL_U / 4)),
// CHNI_IMG_Y + 3
mDmaLoc3dOff8b(1) | // jump to next row
mDmaIntChainMask1b(TRUE) |
mDmaEn1b(TRUE) |
mDmaChainEn1b(TRUE) |
mDmaDir1b(DMA_DIR_2SYS) |
mDmaSType2b(DMA_DATA_2D) |
mDmaLType2b(DMA_DATA_4D) |
mDmaLen12b(4 * SIZE_U / 4) |
mDmaID4b(ID_CHN_IMG),
// CHNI_IMG_U + 0
DONT_CARE,
// CHNI_IMG_U + 1
mDmaLocMemAddr14b(INTER_U_OFF_0),
// CHNI_IMG_U + 2
DONT_CARE, // dont care block width
// CHNI_IMG_U + 3
mDmaLoc3dOff8b(DONT_CARE) |
mDmaIntChainMask1b(TRUE) |
mDmaEn1b(TRUE) |
mDmaChainEn1b(TRUE) |
mDmaDir1b(DMA_DIR_2SYS) |
mDmaSType2b(DMA_DATA_SEQUENTAIL) |
mDmaLType2b(DMA_DATA_SEQUENTAIL) |
mDmaLen12b(SIZE_U / 4) |
mDmaID4b(ID_CHN_IMG),
// CHNI_IMG_V + 0
DONT_CARE,
// CHNI_IMG_V + 1
mDmaLocMemAddr14b(INTER_V_OFF_0),
// CHNI_IMG_V + 2
DONT_CARE, // dont care block width
// CHNI_IMG_V + 3
mDmaLoc3dOff8b(DONT_CARE) |
mDmaIntChainMask1b(TRUE) |
mDmaEn1b(TRUE) |
mDmaChainEn1b(TRUE) |
mDmaDir1b(DMA_DIR_2SYS) |
mDmaSType2b(DMA_DATA_SEQUENTAIL) |
mDmaLType2b(DMA_DATA_SEQUENTAIL) |
mDmaLen12b(SIZE_V / 4) |
mDmaID4b(ID_CHN_IMG),
///////////////////////////////////////////////////
// 8
#if (OUTPUT_FMT == OUTPUT_FMT_YUV)
// CHNI_YUV_Y + 0
DONT_CARE,
// CHNI_YUV_Y + 1
mDmaLoc2dWidth4b(16) | // 16 lines/MB
mDmaLoc2dOff8b(DONT_CARE) |
mDmaLoc3dWidth4b(DONT_CARE) | // 2 block/row
mDmaLocMemAddr14b(INTER_Y_OFF_0) |
mDmaLocInc2b(DMA_INCL_0),
// CHNI_YUV_Y + 2
mDmaSysWidth6b(PIXEL_Y / 8) |
mDmaSysOff14b((DEFAULT_STRIDE / 4) + 1 - (PIXEL_Y / 4)) |
mDmaLocWidth4b(DONT_CARE) |
mDmaLocOff8b(DONT_CARE),
// CHNI_YUV_Y + 3
mDmaLoc3dOff8b(DONT_CARE) |
mDmaIntChainMask1b(TRUE) |
mDmaEn1b(TRUE) |
mDmaChainEn1b(TRUE) |
mDmaDir1b(DMA_DIR_2SYS) |
mDmaSType2b(DMA_DATA_2D) |
mDmaLType2b(DMA_DATA_SEQUENTAIL) |
mDmaLen12b(SIZE_Y / 4) |
mDmaID4b(ID_CHN_YUV),
// CHNI_YUV_U + 0
DONT_CARE,
// CHNI_YUV_U + 1
mDmaLocMemAddr14b(INTER_U_OFF_0),
// CHNI_YUV_U + 2
mDmaSysWidth6b(PIXEL_U / 8) |
mDmaSysOff14b(((DEFAULT_STRIDE / 2) / 4) + 1 - (PIXEL_U / 4)) |
mDmaLocWidth4b(DONT_CARE) |
mDmaLocOff8b(DONT_CARE),
// CHNI_YUV_U + 3
mDmaLoc3dOff8b(DONT_CARE) |
mDmaIntChainMask1b(TRUE) |
mDmaEn1b(TRUE) |
mDmaChainEn1b(TRUE) |
mDmaDir1b(DMA_DIR_2SYS) |
mDmaSType2b(DMA_DATA_2D) |
mDmaLType2b(DMA_DATA_SEQUENTAIL) |
mDmaLen12b(SIZE_U / 4) |
mDmaID4b(ID_CHN_YUV),
// CHNI_YUV_V + 0
DONT_CARE,
// CHNI_YUV_V + 1
mDmaLocMemAddr14b(INTER_V_OFF_0),
// CHNI_YUV_V + 2
mDmaSysWidth6b(PIXEL_V / 8) |
mDmaSysOff14b(((DEFAULT_STRIDE/ 2) / 4) + 1 - (PIXEL_V / 4)) |
mDmaLocWidth4b(DONT_CARE) |
mDmaLocOff8b(DONT_CARE),
// CHNI_YUV_V + 3
mDmaLoc3dOff8b(DONT_CARE) |
mDmaIntChainMask1b(TRUE) |
mDmaEn1b(TRUE) |
mDmaChainEn1b(TRUE) |
mDmaDir1b(DMA_DIR_2SYS) |
mDmaSType2b(DMA_DATA_2D) |
mDmaLType2b(DMA_DATA_SEQUENTAIL) |
mDmaLen12b(SIZE_V / 4) |
mDmaID4b(ID_CHN_YUV),
#else
// CHNI_RGB + 0
DONT_CARE,
// CHNI_RGB + 1
mDmaLocMemAddr14b(BUFFER_RGB_OFF_1), // watch-out
// CHNI_RGB + 2
mDmaSysWidth6b(RGB_PIXEL_SIZE * PIXEL_Y / 8) |
mDmaSysOff14b((RGB_PIXEL_SIZE * DEFAULT_STRIDE / 4) + 1 - (RGB_PIXEL_SIZE * PIXEL_Y / 4)) |
mDmaLocWidth4b(DONT_CARE) |
mDmaLocOff8b(DONT_CARE),
// CHNI_RGB + 3
mDmaIntChainMask1b(TRUE) |
mDmaEn1b(TRUE) |
mDmaChainEn1b(TRUE) |
mDmaDir1b(DMA_DIR_2SYS) |
mDmaSType2b(DMA_DATA_2D) |
mDmaLType2b(DMA_DATA_SEQUENTAIL) |
mDmaLen12b(RGB_PIXEL_SIZE * SIZE_Y / 4) |
mDmaID4b(ID_CHN_RGB),
#endif
///////////////////////////////////////////////////
// 9
// CHNI_LOAD_PREDITOR + 0
DONT_CARE,
// CHNI_LOAD_PREDITOR + 1
mDmaLocMemAddr14b(PREDICTOR4_OFF), // watch-out
// CHNI_LOAD_PREDITOR + 2
mDmaSysWidth6b(DONT_CARE) |
mDmaSysOff14b(DONT_CARE) |
mDmaLocWidth4b(4) |
mDmaLocOff8b(8 + 1 - 4),
// CHNI_LOAD_PREDITOR + 3
mDmaIntChainMask1b(TRUE) |
mDmaEn1b(TRUE) |
mDmaChainEn1b(TRUE) | // chain to store_preditor
mDmaDir1b(DMA_DIR_2LOCAL) |
mDmaSType2b(DMA_DATA_SEQUENTAIL) |
mDmaLType2b(DMA_DATA_2D) |
mDmaLen12b(0x10) |
mDmaID4b(ID_CHN_ACDC),
////////////////////////////////////////////////////////////////
// 10
// CHNI_STORE_PREDITOR + 0
DONT_CARE,
// CHNI_STORE_PREDITOR + 1
mDmaLocMemAddr14b(PREDICTOR8_OFF),
// CHNI_STORE_PREDITOR + 2
mDmaSysWidth6b(DONT_CARE) |
mDmaSysOff14b(DONT_CARE) |
mDmaLocWidth4b(4) |
mDmaLocOff8b(8 + 1 - 4),
// CHNI_STORE_PREDITOR + 3
mDmaLoc3dOff8b(DONT_CARE) |
mDmaIntChainMask1b(FALSE) |
mDmaEn1b(TRUE) |
mDmaChainEn1b(FALSE) |
mDmaDir1b(DMA_DIR_2SYS) |
mDmaSType2b(DMA_DATA_SEQUENTAIL) |
mDmaLType2b(DMA_DATA_2D) |
mDmaLen12b(0x10) |
mDmaID4b(ID_CHN_ACDC)
};
#ifndef LINUX
__align(8)
#endif
uint32_t u32dma_const1[] = {
///////////////////////////// DMA_TOGGLE 1 //////////////////////////
// 1. CHNP_REF_4MV_Y0,Y1,Y2,Y3,U,V
// 2. CHNP_REF_1MV_Y, U,V
// 3. CHNP_IMG_Y, U,V
// 4. CHNP_YUV_Y, U,V or CHNP_RGB
// 5. CHNP_LD
// 6. CHNP_ST
// 7, CHNI_IMG_Y, U, V
// 8. CHNI_YUV_Y, U,V or CHNI_RGB
// 9. CHNI_LD
// 10. CHNI_ST
///////////////////////////////////////////////////
// p-frame
// vld->toggle vld(load) ref dmc img(yuv) rgb
// 0 1 1 1 0
// 1 0 0 0 1
// ...
///////////////////////////////////////////////////
// 1
// CHNP_REF_4MV_Y0 + 0
DONT_CARE,
// CHNP_REF_4MV_Y0 + 1
mDmaLoc2dWidth4b(8) | // 8 lines/block
mDmaLoc2dOff8b(1 - (PIXEL_U - 1) * (8 * PIXEL_U) / 4) | // jump to new block
mDmaLoc3dWidth4b(2) | // 2 block/row
mDmaLocMemAddr14b(REF_Y0_OFF_0) |
mDmaLocInc2b(DMA_INCL_0),
// CHNP_REF_4MV_Y0 + 2
mDmaSysWidth6b(2 * SIZE_U / 8) |
mDmaSysOff14b((DEFAULT_WIDTH * 2 * SIZE_U / 4) + 1 - (2 * SIZE_U / 4)) |
mDmaLocWidth4b(PIXEL_U / 4) |
mDmaLocOff8b((8 * PIXEL_U / 4) + 1 - (PIXEL_U / 4)),
// CHNP_REF_4MV_Y0 + 3
mDmaLoc3dOff8b((8 * PIXEL_U / 4) + 1 - (2 * PIXEL_U / 4)) |// jump to next row
mDmaIntChainMask1b(TRUE) |
mDmaEn1b(TRUE) |
mDmaChainEn1b(TRUE) |
mDmaDir1b(DMA_DIR_2LOCAL) |
mDmaSType2b(DMA_DATA_2D) |
mDmaLType2b(DMA_DATA_4D) |
mDmaLen12b( 4 * SIZE_U / 4) |
mDmaID4b(ID_CHN_4MV),
// CHNP_REF_4MV_Y1 + 0
DONT_CARE,
// CHNP_REF_4MV_Y1 + 1
mDmaLoc2dWidth4b(8) | // 8 lines/block
mDmaLoc2dOff8b(1 - (PIXEL_U - 1) * (8 * PIXEL_U) / 4) | // jump to new block
mDmaLoc3dWidth4b(2) | // 2 block/row
mDmaLocMemAddr14b(REF_Y1_OFF_0) |
mDmaLocInc2b(DMA_INCL_0),
// CHNP_REF_4MV_Y1
mDmaSysWidth6b(2 * SIZE_U / 8) |
mDmaSysOff14b((DEFAULT_WIDTH * 2 * SIZE_U / 4) + 1 - (2 * SIZE_U / 4)) |
mDmaLocWidth4b(PIXEL_U / 4) |
mDmaLocOff8b((8 * PIXEL_U / 4) + 1 - (PIXEL_U / 4)),
// CHNP_REF_4MV_Y1 + 3
mDmaLoc3dOff8b((8 * PIXEL_U / 4) + 1 - (2 * PIXEL_U / 4)) |// jump to next row
mDmaIntChainMask1b(TRUE) |
mDmaEn1b(TRUE) |
mDmaChainEn1b(TRUE) |
mDmaDir1b(DMA_DIR_2LOCAL) |
mDmaSType2b(DMA_DATA_2D) |
mDmaLType2b(DMA_DATA_4D) |
mDmaLen12b( 4 * SIZE_U / 4) |
mDmaID4b(ID_CHN_4MV),
// CHNP_REF_4MV_Y2 + 0
DONT_CARE,
// CHNP_REF_4MV_Y2 + 1
mDmaLoc2dWidth4b(8) | // 8 lines/block
mDmaLoc2dOff8b(1 - (PIXEL_U - 1) * (8 * PIXEL_U) / 4) | // jump to new block
mDmaLoc3dWidth4b(2) | // 2 block/row
mDmaLocMemAddr14b(REF_Y2_OFF_0) |
mDmaLocInc2b(DMA_INCL_0),
// CHNP_REF_4MV_Y2 + 2
mDmaSysWidth6b(2 * SIZE_U / 8) |
mDmaSysOff14b((DEFAULT_WIDTH * 2 * SIZE_U / 4) + 1 - (2 * SIZE_U / 4)) |
mDmaLocWidth4b(PIXEL_U / 4) |
mDmaLocOff8b((8 * PIXEL_U / 4) + 1 - (PIXEL_U / 4)),
// CHNP_REF_4MV_Y2 + 3
mDmaLoc3dOff8b((8 * PIXEL_U / 4) + 1 - (2 * PIXEL_U / 4)) |// jump to next row
mDmaIntChainMask1b(TRUE) |
mDmaEn1b(TRUE) |
mDmaChainEn1b(TRUE) |
mDmaDir1b(DMA_DIR_2LOCAL) |
mDmaSType2b(DMA_DATA_2D) |
mDmaLType2b(DMA_DATA_4D) |
mDmaLen12b( 4 * SIZE_U / 4) |
mDmaID4b(ID_CHN_4MV),
// CHNP_REF_4MV_Y3 + 0
DONT_CARE,
// CHNP_REF_4MV_Y3 + 1
mDmaLoc2dWidth4b(8) | // 8 lines/block
mDmaLoc2dOff8b(1 - (PIXEL_U - 1) * (8 * PIXEL_U) / 4) | // jump to new block
mDmaLoc3dWidth4b(2) | // 2 block/row
mDmaLocMemAddr14b(REF_Y3_OFF_0) |
mDmaLocInc2b(DMA_INCL_0),
// CHNP_REF_4MV_Y3 + 2
mDmaSysWidth6b(2 * SIZE_U / 8) |
mDmaSysOff14b((DEFAULT_WIDTH * 2 * SIZE_U / 4) + 1 - (2 * SIZE_U / 4)) |
mDmaLocWidth4b(PIXEL_U / 4) |
mDmaLocOff8b((8 * PIXEL_U / 4) + 1 - (PIXEL_U / 4)),
// CHNP_REF_4MV_Y3 + 3
mDmaLoc3dOff8b((8 * PIXEL_U / 4) + 1 - (2 * PIXEL_U / 4)) |// jump to next row
mDmaIntChainMask1b(TRUE) |
mDmaEn1b(TRUE) |
mDmaChainEn1b(TRUE) |
mDmaDir1b(DMA_DIR_2LOCAL) |
mDmaSType2b(DMA_DATA_2D) |
mDmaLType2b(DMA_DATA_4D) |
mDmaLen12b( 4 * SIZE_U / 4) |
mDmaID4b(ID_CHN_4MV),
// CHNP_REF_4MV_U + 0
DONT_CARE,
// CHNP_REF_4MV_U + 1
mDmaLoc2dWidth4b(8) | // 8 lines/block
mDmaLoc2dOff8b(1 - (PIXEL_U - 1) * (8 * PIXEL_U) / 4) | // jump to new block
mDmaLoc3dWidth4b(2) | // 2 block/row
mDmaLocMemAddr14b(REF_U_OFF_0) |
mDmaLocInc2b(DMA_INCL_0),
// CHNP_REF_4MV_U + 2
mDmaSysWidth6b(2 * SIZE_U / 8) |
mDmaSysOff14b((DEFAULT_WIDTH * SIZE_U / 4) + 1 - (2 * SIZE_U / 4)) |
mDmaLocWidth4b(PIXEL_U / 4) |
mDmaLocOff8b(((8 * PIXEL_U) / 4) + 1 - (PIXEL_U / 4)),
// CHNP_REF_4MV_U + 3
mDmaLoc3dOff8b((8 * PIXEL_U / 4) + 1 - (2 * PIXEL_U / 4)) |// jump to next row
mDmaIntChainMask1b(TRUE) |
mDmaEn1b(TRUE) |
mDmaChainEn1b(TRUE) |
mDmaDir1b(DMA_DIR_2LOCAL) |
mDmaSType2b(DMA_DATA_2D) |
mDmaLType2b(DMA_DATA_4D) |
mDmaLen12b(4 * SIZE_U / 4) |
mDmaID4b(ID_CHN_4MV),
// CHNP_REF_4MV_V + 0
DONT_CARE,
// CHNP_REF_4MV_V + 1
mDmaLoc2dWidth4b(8) | // 8 lines/block
mDmaLoc2dOff8b(1 - (PIXEL_V - 1) * (8 * PIXEL_V) / 4) | // jump to new block
mDmaLoc3dWidth4b(2) | // 2 block/row
mDmaLocMemAddr14b(REF_V_OFF_0) |
mDmaLocInc2b(DMA_INCL_0),
// CHNP_REF_4MV_V + 2
mDmaSysWidth6b(2 * SIZE_V / 8) |
mDmaSysOff14b((DEFAULT_WIDTH * SIZE_V / 4) + 1 - (2 * SIZE_V / 4)) |
mDmaLocWidth4b(PIXEL_V / 4) |
mDmaLocOff8b(((8 * PIXEL_V) / 4) + 1 - (PIXEL_V / 4)),
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -