aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSunita Nadampalli2013-09-12 11:01:16 -0500
committerSunita Nadampalli2013-09-13 06:12:17 -0500
commit667b28c0f3f46db827e3060bb3604ec3d238f5e2 (patch)
tree7df3118eb09fd3203225f25813378eb46597f070 /libdce.c
parente6859266dde6d2c5a85b43fd1ca27ce093b93eb8 (diff)
downloadrepo-libdce-667b28c0f3f46db827e3060bb3604ec3d238f5e2.tar.gz
repo-libdce-667b28c0f3f46db827e3060bb3604ec3d238f5e2.tar.xz
repo-libdce-667b28c0f3f46db827e3060bb3604ec3d238f5e2.zip
[LIBDCE] Add support for offset within the xlation buffers
The input buffers for the video decoders need offset support because of HLOS Multimedia framework requirement. Inorder to support such input buffers, we should provide the buffer base address and offseted address to ipc. Change-Id: I2214dbced0a40911b17c5951593322b0fa3bfd16 Signed-off-by: Sunita Nadampalli <sunitan@ti.com>
Diffstat (limited to 'libdce.c')
-rw-r--r--libdce.c24
1 files changed, 12 insertions, 12 deletions
diff --git a/libdce.c b/libdce.c
index 61d1d9d..f7f6211 100644
--- a/libdce.c
+++ b/libdce.c
@@ -122,13 +122,13 @@ static inline void Fill_MmRpc_fxnCtx_Scalar_Params(MmRpc_Param *mmrpc_params, in
122 mmrpc_params->param.scalar.data = (size_t)data; 122 mmrpc_params->param.scalar.data = (size_t)data;
123} 123}
124 124
125static inline void Fill_MmRpc_fxnCtx_Xlt_Array(MmRpc_Xlt *mmrpc_xlt, int index, int32_t base, int32_t addr, size_t handle) 125static inline void Fill_MmRpc_fxnCtx_Xlt_Array(MmRpc_Xlt *mmrpc_xlt, int index, int32_t offset, size_t base, size_t handle)
126{ 126{
127 /* index : index of params filled in FxnCtx */ 127 /* index : index of params filled in FxnCtx */
128 /* offset : calculated from address of index */ 128 /* offset : calculated from address of index */
129 mmrpc_xlt->index = index; 129 mmrpc_xlt->index = index;
130 mmrpc_xlt->offset = MmRpc_OFFSET(base, addr); 130 mmrpc_xlt->offset = offset;
131 mmrpc_xlt->base = handle; 131 mmrpc_xlt->base = base;
132 mmrpc_xlt->handle = handle; 132 mmrpc_xlt->handle = handle;
133} 133}
134 134
@@ -440,7 +440,7 @@ static XDAS_Int32 get_version(void *codec, void *dynParams, void *status, dce_co
440 sizeof(MemHeader), memplugin_share(status)); 440 sizeof(MemHeader), memplugin_share(status));
441 441
442 /* Address Translation needed for buffer for version Info */ 442 /* Address Translation needed for buffer for version Info */
443 Fill_MmRpc_fxnCtx_Xlt_Array(fxnCtx.xltAry, 3, (int32_t)status, (int32_t)version_buf, memplugin_share(*version_buf)); 443 Fill_MmRpc_fxnCtx_Xlt_Array(fxnCtx.xltAry, 3, MmRpc_OFFSET((int32_t)status, (int32_t)version_buf), (size_t)P2H(*version_buf), memplugin_share(*version_buf));
444 444
445 /* Invoke the Remote function through MmRpc */ 445 /* Invoke the Remote function through MmRpc */
446 eError = MmRpc_call(MmRpcHandle, &fxnCtx, &fxnRet); 446 eError = MmRpc_call(MmRpcHandle, &fxnCtx, &fxnRet);
@@ -521,12 +521,12 @@ static XDAS_Int32 process(void *codec, void *inBufs, void *outBufs,
521 for( count = 0, total_count = 0; count < numInBufs; count++, total_count++ ) { 521 for( count = 0, total_count = 0; count < numInBufs; count++, total_count++ ) {
522 if( codec_id == OMAP_DCE_VIDDEC3 ) { 522 if( codec_id == OMAP_DCE_VIDDEC3 ) {
523 data_buf = (void * *)(&(((XDM2_BufDesc *)inBufs)->descs[count].buf)); 523 data_buf = (void * *)(&(((XDM2_BufDesc *)inBufs)->descs[count].buf));
524 Fill_MmRpc_fxnCtx_Xlt_Array(&(fxnCtx.xltAry[total_count]), INBUFS_INDEX, (int32_t)inBufs, 524 Fill_MmRpc_fxnCtx_Xlt_Array(&(fxnCtx.xltAry[total_count]), INBUFS_INDEX, MmRpc_OFFSET((int32_t)inBufs, (int32_t)data_buf),
525 (int32_t)data_buf, (size_t)*data_buf); 525 (size_t)*data_buf, (size_t)*data_buf);
526 } else if( codec_id == OMAP_DCE_VIDENC2 ) { 526 } else if( codec_id == OMAP_DCE_VIDENC2 ) {
527 data_buf = (void * *)(&(((IVIDEO2_BufDesc *)inBufs)->planeDesc[count].buf)); 527 data_buf = (void * *)(&(((IVIDEO2_BufDesc *)inBufs)->planeDesc[count].buf));
528 Fill_MmRpc_fxnCtx_Xlt_Array(&(fxnCtx.xltAry[total_count]), INBUFS_INDEX, (int32_t)inBufs, 528 Fill_MmRpc_fxnCtx_Xlt_Array(&(fxnCtx.xltAry[total_count]), INBUFS_INDEX, MmRpc_OFFSET((int32_t)inBufs, (int32_t)data_buf),
529 (int32_t)data_buf, (size_t)*data_buf); 529 (size_t)*data_buf, (size_t)*data_buf);
530 } 530 }
531 } 531 }
532 532
@@ -535,15 +535,15 @@ static XDAS_Int32 process(void *codec, void *inBufs, void *outBufs,
535 if(((XDM2_BufDesc *)outBufs)->descs[LUMA_BUF].buf != ((XDM2_BufDesc *)outBufs)->descs[CHROMA_BUF].buf ) { 535 if(((XDM2_BufDesc *)outBufs)->descs[LUMA_BUF].buf != ((XDM2_BufDesc *)outBufs)->descs[CHROMA_BUF].buf ) {
536 /* Either Encode usecase or MultiPlanar Buffers for Decode usecase */ 536 /* Either Encode usecase or MultiPlanar Buffers for Decode usecase */
537 data_buf = (void * *)(&(((XDM2_BufDesc *)outBufs)->descs[count].buf)); 537 data_buf = (void * *)(&(((XDM2_BufDesc *)outBufs)->descs[count].buf));
538 Fill_MmRpc_fxnCtx_Xlt_Array(&(fxnCtx.xltAry[total_count]), OUTBUFS_INDEX, (int32_t)outBufs, 538 Fill_MmRpc_fxnCtx_Xlt_Array(&(fxnCtx.xltAry[total_count]), OUTBUFS_INDEX, MmRpc_OFFSET((int32_t)outBufs, (int32_t)data_buf),
539 (int32_t)data_buf, (size_t)*data_buf); 539 (size_t)*data_buf, (size_t)*data_buf);
540 } 540 }
541#if defined(BUILDOS_LINUX) 541#if defined(BUILDOS_LINUX)
542 else { 542 else {
543 /* SinglePlanar Buffers for Decode usecase*/ 543 /* SinglePlanar Buffers for Decode usecase*/
544 data_buf = (void * *)(&(((XDM2_BufDesc *)outBufs)->descs[count].buf)); 544 data_buf = (void * *)(&(((XDM2_BufDesc *)outBufs)->descs[count].buf));
545 Fill_MmRpc_fxnCtx_Xlt_Array(&(fxnCtx.xltAry[total_count]), OUTBUFS_INDEX, (int32_t)outBufs, 545 Fill_MmRpc_fxnCtx_Xlt_Array(&(fxnCtx.xltAry[total_count]), OUTBUFS_INDEX, MmRpc_OFFSET((int32_t)outBufs, (int32_t)data_buf),
546 (int32_t)data_buf, (size_t)*data_buf); 546 (size_t)*data_buf, (size_t)*data_buf);
547 if( count == CHROMA_BUF ) { 547 if( count == CHROMA_BUF ) {
548 if(((XDM2_BufDesc *)outBufs)->descs[count].memType == XDM_MEMTYPE_RAW || 548 if(((XDM2_BufDesc *)outBufs)->descs[count].memType == XDM_MEMTYPE_RAW ||
549 ((XDM2_BufDesc *)outBufs)->descs[count].memType == XDM_MEMTYPE_TILEDPAGE ) { 549 ((XDM2_BufDesc *)outBufs)->descs[count].memType == XDM_MEMTYPE_TILEDPAGE ) {