WIP: SsbSipMfcDecAPI.c compiles

Change-Id: I3cc7698f57f646b5814c61f24999aadcfa815535
This commit is contained in:
Andrew Mahone 2011-07-14 22:55:33 -04:00
parent a09db64961
commit cba6d2b7d5
2 changed files with 40 additions and 18 deletions

View File

@ -111,7 +111,7 @@ void *SsbSipMfcDecOpen(void)
mmap_size = ioctl(pCTX->hMFC, IOCTL_MFC_GET_MMAP_SIZE, &DecArg);
if (DecArg.ret_code != MFC_RET_OK) {
LOGE("SsbSipMfcDecExe: IOCTL_MFC_GET_MMAP_SIZE failed(ret : %d)\n", DecArg.ret_code);
return MFC_MEM_MAPPING_FAIL;
return NULL;
}
mapped_addr = (unsigned int)mmap(0, mmap_size, PROT_READ | PROT_WRITE, MAP_SHARED, hMFCOpen, 0);
@ -122,6 +122,7 @@ void *SsbSipMfcDecOpen(void)
pCTX->magic = _MFCLIB_MAGIC_NUMBER;
pCTX->mapped_addr = mapped_addr;
pCTX->mapped_size = mmap_size;
pCTX->inter_buff_status = MFC_USE_NONE;
return (void *)pCTX;
@ -196,6 +197,7 @@ SSBSIP_MFC_ERROR_CODE SsbSipMfcDecInit(void *openHandle, SSBSIP_MFC_CODEC_TYPE c
pCTX->decOutInfo.crop_right_offset = DecArg.args.dec_init.out_crop_right_offset;
*/
/* removed by Unhelpful
pCTX->virFrmBuf.luma = DecArg.args.dec_init.out_u_addr.luma;
pCTX->virFrmBuf.chroma = DecArg.args.dec_init.out_u_addr.chroma;
@ -203,6 +205,7 @@ SSBSIP_MFC_ERROR_CODE SsbSipMfcDecInit(void *openHandle, SSBSIP_MFC_CODEC_TYPE c
pCTX->phyFrmBuf.chroma = DecArg.args.dec_init.out_p_addr.chroma;
pCTX->sizeFrmBuf.luma = DecArg.args.dec_init.out_frame_buf_size.luma;
pCTX->sizeFrmBuf.chroma = DecArg.args.dec_init.out_frame_buf_size.chroma;
*/
pCTX->inter_buff_status |= MFC_USE_YUV_BUFF;
return MFC_RET_OK;
@ -232,11 +235,13 @@ SSBSIP_MFC_ERROR_CODE SsbSipMfcDecExe(void *openHandle, int lengthBufFill)
DecArg.args.dec_exe.in_codec_type = pCTX->codecType;
DecArg.args.dec_exe.in_strm_buf = pCTX->phyStrmBuf;
DecArg.args.dec_exe.in_strm_size = lengthBufFill;
/* removed by unhelpful
DecArg.args.dec_exe.in_frm_buf.luma = pCTX->phyFrmBuf.luma;
DecArg.args.dec_exe.in_frm_buf.chroma = pCTX->phyFrmBuf.chroma;
DecArg.args.dec_exe.in_frm_size.luma = pCTX->sizeFrmBuf.luma;
DecArg.args.dec_exe.in_frm_size.chroma = pCTX->sizeFrmBuf.chroma;
DecArg.args.dec_exe.in_frametag = pCTX->in_frametag;
*/
DecArg.args.dec_exe.in_frametag = pCTX->inframetag;
ret_code = ioctl(pCTX->hMFC, IOCTL_MFC_DEC_EXE, &DecArg);
if (DecArg.ret_code != MFC_RET_OK) {
@ -244,23 +249,25 @@ SSBSIP_MFC_ERROR_CODE SsbSipMfcDecExe(void *openHandle, int lengthBufFill)
return MFC_RET_DEC_EXE_ERR;
}
Yoffset = DecArg.args.dec_exe.out_display_Y_addr - DecArg.args.dec_exe.in_frm_buf.luma;
Coffset = DecArg.args.dec_exe.out_display_C_addr - DecArg.args.dec_exe.in_frm_buf.chroma;
Yoffset = DecArg.args.dec_exe.out_y_offset;
Coffset = DecArg.args.dec_exe.out_c_offset;
pCTX->decOutInfo.YPhyAddr = (void *)(DecArg.args.dec_exe.out_display_Y_addr);
pCTX->decOutInfo.CPhyAddr = (void *)(DecArg.args.dec_exe.out_display_C_addr);
pCTX->decOutInfo.YVirAddr = (void *)(pCTX->virFrmBuf.luma + Yoffset);
pCTX->decOutInfo.CVirAddr = (void *)(pCTX->virFrmBuf.chroma + Coffset);
pCTX->decOutInfo.timestamp_top = DecArg.args.dec_exe.out_timestamp_top;
pCTX->decOutInfo.timestamp_bottom = DecArg.args.dec_exe.out_timestamp_bottom;
pCTX->decOutInfo.consumedByte = DecArg.args.dec_exe.out_consume_bytes;
pCTX->decOutInfo.timestamp_top = DecArg.args.dec_exe.out_pic_time_top;
pCTX->decOutInfo.timestamp_bottom = DecArg.args.dec_exe.out_pic_time_bottom;
pCTX->decOutInfo.consumedByte = DecArg.args.dec_exe.out_consumed_byte;
/* removed by Unhelpful
pCTX->decOutInfo.res_change = DecArg.args.dec_exe.out_res_change;
*/
pCTX->decOutInfo.crop_top_offset = DecArg.args.dec_exe.out_crop_top_offset;
pCTX->decOutInfo.crop_bottom_offset = DecArg.args.dec_exe.out_crop_bottom_offset;
pCTX->decOutInfo.crop_left_offset = DecArg.args.dec_exe.out_crop_left_offset;
pCTX->decOutInfo.crop_right_offset = DecArg.args.dec_exe.out_crop_right_offset;
pCTX->out_frametag_top = DecArg.args.dec_exe.out_frametag_top;
pCTX->out_frametag_bottom = DecArg.args.dec_exe.out_frametag_bottom;
pCTX->outframetagtop = DecArg.args.dec_exe.out_frametag_top;
pCTX->outframetagbottom = DecArg.args.dec_exe.out_frametag_bottom;
pCTX->displayStatus = DecArg.args.dec_exe.out_display_status;
return MFC_RET_OK;
@ -280,20 +287,20 @@ SSBSIP_MFC_ERROR_CODE SsbSipMfcDecClose(void *openHandle)
pCTX = (_MFCLIB *)openHandle;
if (pCTX->inter_buff_status & MFC_USE_YUV_BUFF) {
free_arg.args.mem_free.u_addr = pCTX->virFrmBuf.luma;
free_arg.args.mem_free.key = pCTX->virFrmBuf.luma - pCTX->mapped_addr;
ret_code = ioctl(pCTX->hMFC, IOCTL_MFC_FREE_BUF, &free_arg);
free_arg.args.mem_free.u_addr = pCTX->virFrmBuf.chroma;
free_arg.args.mem_free.key = pCTX->virFrmBuf.chroma - pCTX->mapped_addr;
ret_code = ioctl(pCTX->hMFC, IOCTL_MFC_FREE_BUF, &free_arg);
}
if (pCTX->inter_buff_status & MFC_USE_STRM_BUFF) {
free_arg.args.mem_free.u_addr = pCTX->virStrmBuf;
free_arg.args.mem_free.key = pCTX->virStrmBuf - pCTX->mapped_addr;
ret_code = ioctl(pCTX->hMFC, IOCTL_MFC_FREE_BUF, &free_arg);
}
pCTX->inter_buff_status = MFC_USE_NONE;
munmap((void *)pCTX->mapped_addr, MMAP_BUFFER_SIZE_MMAP);
munmap((void *)pCTX->mapped_addr, pCTX->mapped_size);
close(pCTX->hMFC);
free(pCTX);
@ -318,7 +325,7 @@ void *SsbSipMfcDecGetInBuf(void *openHandle, void **phyInBuf, int inputBufferSiz
pCTX = (_MFCLIB *)openHandle;
user_addr_arg.args.mem_alloc.codec_type = pCTX->codecType;
user_addr_arg.args.mem_alloc.type = DECODER;
user_addr_arg.args.mem_alloc.buff_size = inputBufferSize;
user_addr_arg.args.mem_alloc.mapped_addr = pCTX->mapped_addr;
ret_code = ioctl(pCTX->hMFC, IOCTL_MFC_GET_IN_BUF, &user_addr_arg);
@ -326,8 +333,16 @@ void *SsbSipMfcDecGetInBuf(void *openHandle, void **phyInBuf, int inputBufferSiz
LOGE("SsbSipMfcDecGetInBuf: IOCTL_MFC_GET_IN_BUF failed\n");
return NULL;
}
pCTX->virStrmBuf = user_addr_arg.args.mem_alloc.out_uaddr;
pCTX->phyStrmBuf = user_addr_arg.args.mem_alloc.out_paddr;
phys_addr_arg.args.real_addr.key = user_addr_arg.args.mem_alloc.offset;
ret_code = ioctl(pCTX->hMFC, IOCTL_MFC_GET_REAL_ADDR, &phys_addr_arg);
if (ret_code < 0) {
LOGE("SsbSipMfcDecGetInBuf: IOCTL_MFC_GET_REAL_ADDR failed\n");
return NULL;
}
pCTX->virStrmBuf = user_addr_arg.args.mem_alloc.offset + pCTX->mapped_addr;
pCTX->phyStrmBuf = phys_addr_arg.args.real_addr.addr;
pCTX->sizeStrmBuf = inputBufferSize;
pCTX->inter_buff_status |= MFC_USE_STRM_BUFF;
@ -432,7 +447,7 @@ SSBSIP_MFC_ERROR_CODE SsbSipMfcDecSetConfig(void *openHandle, SSBSIP_MFC_DEC_CON
break;
case MFC_DEC_SETCONF_FRAME_TAG:
pCTX->in_frametag = *((int *)value);
pCTX->inframetag = *((int *)value);
return MFC_RET_OK;
default:
@ -505,7 +520,7 @@ SSBSIP_MFC_ERROR_CODE SsbSipMfcDecGetConfig(void *openHandle, SSBSIP_MFC_DEC_CON
break;
case MFC_DEC_GETCONF_FRAME_TAG:
*((unsigned int *)value) = pCTX->out_frametag_top;
*((unsigned int *)value) = pCTX->outframetagtop;
break;
default:

View File

@ -426,6 +426,13 @@ struct mfc_enc_hier_p_qp {
int t3_frame_qp;
};
typedef struct {
int luma0; // per frame (or top field)
int chroma0; // per frame (or top field)
int luma1; // per frame (or bottom field)
int chroma1; // per frame (or bottom field)
} MFC_CRC_DATA;
typedef struct
{
int magic;