?? dma_b.c
字號:
#define DMA_B_GLOBALS
#include "portab.h"
#include "dma.h"
#include "dma_b.h"
#include "dma_m.h"
#include "decoder.h"
#include "local_mem.h"
#include "image/image.h"
#include "define.h"
#include "mp4.h"
#include "me.h"
#if 1
#define DEFAULT_WIDTH 176
#define DEFAULT_HEIGHT 144
#define DEFAULT_STRIDE DEFAULT_WIDTH
#ifndef LINUX
__align(8)
#endif
uint32_t u32dma_const0[] = {
///////////////////////////// DMA_TOGGLE 0 //////////////////////////
// 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
// ...
///////////////////////////////////////////////////
// Toggle 0
///////////////////////////////////////////////////
// 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_1) |
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_1) |
mDmaLocInc2b(DMA_INCL_0),
// CHNP_REF_4MV_Y1 + 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_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_1) |
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_1) |
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_1) |
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_1) |
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)),
// CHNP_REF_4MV_V + 3
mDmaLoc3dOff8b((8 * PIXEL_V / 4) + 1 - (2 * PIXEL_V / 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),
// 2
// CHNP_REF_1MV_Y + 0
DONT_CARE,
// CHNP_REF_1MV_Y + 1
mDmaLoc2dWidth4b(8) | // 8 lines/block
mDmaLoc2dOff8b(1 - (PIXEL_U - 1) * (8 * PIXEL_U) / 4) | // jump to new block
mDmaLoc3dWidth4b(3) | // 3 block/row
mDmaLocMemAddr14b(REF_Y_OFF_1) |
mDmaLocInc2b(DMA_INCL_0),
// CHNP_REF_1MV_Y + 2
mDmaSysWidth6b(3 * SIZE_U / 8) |
mDmaSysOff14b((DEFAULT_WIDTH * 2 * SIZE_U / 4) + 1 - (3 * SIZE_U / 4)) |
mDmaLocWidth4b(PIXEL_U / 4) |
mDmaLocOff8b(((8 * PIXEL_U) / 4) + 1 - (PIXEL_U / 4)),
// CHNP_REF_1MV_Y + 3
mDmaLoc3dOff8b((8 * PIXEL_U / 4) + 1 - (3 * 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(9 * SIZE_U / 4) |
mDmaID4b(ID_CHN_1MV),
// CHNP_REF_1MV_U + 0
DONT_CARE,
// CHNP_REF_1MV_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_1) |
mDmaLocInc2b(DMA_INCL_0),
// CHNP_REF_1MV_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_1MV_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_1MV),
// CHNP_REF_1MV_V + 0
DONT_CARE,
// CHNP_REF_1MV_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_1) |
mDmaLocInc2b(DMA_INCL_0),
// CHNP_REF_1MV_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)),
// CHNP_REF_1MV_V + 3
mDmaLoc3dOff8b((8 * PIXEL_V / 4) + 1 - (2 * PIXEL_V / 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_1MV),
// 3.
// CHNP_IMG_Y + 0
DONT_CARE,
// CHNP_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_1) |
mDmaLocInc2b(DMA_INCL_0),
// CHNP_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)),
// CHNP_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),
// CHNP_IMG_U + 0
DONT_CARE,
// CHNP_IMG_U + 1
mDmaLocMemAddr14b(INTER_U_OFF_1),
// CHNP_IMG_U + 2
DONT_CARE, // dont care block width
// CHNP_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),
// CHNP_IMG_V + 0
DONT_CARE,
// CHNP_IMG_V + 1
mDmaLocMemAddr14b(INTER_V_OFF_1),
// CHNP_IMG_V + 2
DONT_CARE, // dont care block width
// CHNP_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),
///////////////////////////////////////////////////
// 4.
#if (OUTPUT_FMT == OUTPUT_FMT_YUV)
// CHNP_YUV_Y + 0
DONT_CARE,
// CHNP_YUV_Y + 1
mDmaLoc2dWidth4b(16) | // 16 lines/MB
mDmaLoc2dOff8b(DONT_CARE) |
mDmaLoc3dWidth4b(DONT_CARE) | // 2 block/row
mDmaLocMemAddr14b(INTER_Y_OFF_1) |
mDmaLocInc2b(DMA_INCL_0),
// CHNP_YUV_Y + 2
mDmaSysWidth6b(PIXEL_Y / 8) |
mDmaSysOff14b((DEFAULT_STRIDE / 4) + 1 - (PIXEL_Y / 4)) |
mDmaLocWidth4b(DONT_CARE) |
mDmaLocOff8b(DONT_CARE),
// CHNP_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),
// CHNP_YUV_U + 0
DONT_CARE,
// CHNP_YUV_U + 1
mDmaLocMemAddr14b(INTER_U_OFF_1),
// CHNP_YUV_U + 2
mDmaSysWidth6b(PIXEL_U / 8) |
mDmaSysOff14b(((DEFAULT_STRIDE / 2) / 4) + 1 - (PIXEL_U / 4)) |
mDmaLocWidth4b(DONT_CARE) |
mDmaLocOff8b(DONT_CARE),
// CHNP_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),
// CHNP_YUV_V + 0
DONT_CARE,
// CHNP_YUV_V + 1
mDmaLocMemAddr14b(INTER_V_OFF_1),
// CHNP_YUV_V + 2
mDmaSysWidth6b(PIXEL_V / 8) |
mDmaSysOff14b(((DEFAULT_STRIDE / 2) / 4) + 1 - (PIXEL_V / 4)) |
mDmaLocWidth4b(DONT_CARE) |
mDmaLocOff8b(DONT_CARE),
// CHNP_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
// CHNP_RGB + 0
DONT_CARE,
// CHNP_RGB + 1
mDmaLocMemAddr14b(BUFFER_RGB_OFF_0), // watch-out
// CHNP_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),
// CHNP_RGB + 3
mDmaIntChainMask1b(TRUE) |
mDmaEn1b(TRUE) |
mDmaChainEn1b(TRUE) |
mDmaDir1b(DMA_DIR_2SYS) |
mDmaSType2b(DMA_DATA_2D) |
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -