7 years ago[GLP] Enable DMA Buf Handle
Saurabh Bipin Chandra [Sun, 4 Aug 2013 09:55:14 +0000 (15:25 +0530)]
[GLP] Enable DMA Buf Handle

This patch converts all MmRpc_Pointer_Param call
to MmRpc_OffsetPointer_Param to take care of MemHeader.

This is not needed from a QNX perspective but is needed
from a Linux perspective. There should no added latency is QNX
due to this change as the rpmsg_rpc kernel path is still the same.

This patch invokes memplugin_share() for the buffers allocated
through DCE to get the corresponding DMA Buf Handles for GLP.
For QNX, the return value is expected to be 0.

For linux, the patch adds the logic for Single vs Multiplanar buffers.

For linux, the memplugin_share() logic is modified to store and
retireve the same dma_buf_fd rather than getting a dup() each time.

These changes makes the following assumptions:
1. All the parameter buffers are allocated through
2. The CLient passes Virtual pointers, rather than
   DMA Buf Handles to libdce for parameter buffers.
3. For IO Buffers, the client passes DMA Buf Handles
   and are not allocated using DCE/MemPlugin.

This patch assumes MmRpc is exposing translation[i].base.

Change-Id: I7d13f4a4d69fbe8b6dd0317e2a860f0df2061ef9
Signed-off-by: Sunita Nadampalli <>
Signed-off-by: Saurabh Bipin Chandra <>
7 years ago[LIBDCE] Adding dce_enc_test
Buddy Liong [Tue, 27 Aug 2013 22:43:27 +0000 (17:43 -0500)]
[LIBDCE] Adding dce_enc_test

Adding dce_enc_test for H.264 baseline and High Profile.
Adding MPEG4/H263 simple Profile.

Change-Id: I29b5043210d3a79e5ab859c5781bb89584714dfa
Signed-off-by: Buddy Liong <>
7 years ago[LINUX] X11 and Wayland Support removed
Sathishkumar [Wed, 28 Aug 2013 13:13:59 +0000 (18:43 +0530)]
[LINUX] X11 and Wayland Support removed

X11 and wayland support is removed from libdce.
Defaults to omapdrm device.

Change-Id: I0def0c872cc2658edd12a3e69dec6016eab3f1c9
Signed-off-by: Sathishkumar <>
7 years ago[MEMPLUGIN] Modify memplugin_share() implementation for QNX
Saurabh Bipin Chandra [Wed, 31 Jul 2013 14:53:08 +0000 (20:23 +0530)]
[MEMPLUGIN] Modify memplugin_share() implementation for QNX

This patch updates the definition of memplugin_share()
for QNX to make it aligned with the definition for
It also makes the function inline, to save on
function switching in QNX.
Only the QNX declaration is made inline.

Signed-off-by: Saurabh Bipin Chandra <>
Change-Id: I20b89d4a3f560d8f4e4de36a496b87b6820b2d10

7 years ago[GLP] Libdce linux implementation
Sathishkumar [Tue, 30 Jul 2013 05:50:14 +0000 (11:20 +0530)]
[GLP] Libdce linux implementation

make install & libdce.c issue fix

1. make install has been fixed. libdce.h will be installed in /usr/include, files in /usr/lib and libdce.pc in /usr/lib/pkgconfig on using
   --prefix=/usr. By default the prefix is /usr/local.
2. init and deinit calls are removed from libdce.h
3. dce_set_fd and dce_get_fd calls are implemented in libdce.c
4. checks for libmmrpc and modified to link with libmmrpc. and modified

1. Codec_engine,xdctolls,framework_components,ipc,xdctools and xdaias paths needs
   to be exported. checks for the exported paths.
2. is modified to have the exported paths in the include directories list
   for the compiler.

Modifications done after review

1. Comments added in memplugin_linux.c. White spaces removed manually and cleaned up
   libdce.c, memplugin.h. dce_priv.h is modified to have File and line number in the
   logs. linux/dce.h file is removed.

Libdce modifications for linux

Linux Specific libdce functionality added.
1. memplugin calls specific to linux are added in memplugin_linux.c
2. Error and debug logs implementation for linux in dce_priv.h
3. xll and wayland specific files are moved to linux folder

Change-Id: Ib41e6a52d902376cdabbb939dee7585944720d92
Signed-off-by: Saurabh Bipin Chandra <>
Signed-off-by: Sathishkumar <>
7 years ago[DCE] Modify approach to pass parameters to IPC
Saurabh Bipin Chandra [Wed, 31 Jul 2013 14:50:49 +0000 (20:20 +0530)]
[DCE] Modify approach to pass parameters to IPC

Three approaches were followed for IPC MmRpc calls.
1. All the parameters which need to be sent and received to/from IPU are coupled in a struct
   allocated from Shared/Tiler Memory. Only the adrress of the struct is passed to MmRpc
   as a pointer argument. This approach is useful as MmRpc in some cases to avoid multiple
   translations. This approach is followed for :
   Engine_open(), Engine_close(), create(), control(), delete()
2. All the parameters which need to be sent are given as separate arguments to
   MmRpc. This approach is needed when you need to translate an address which is
   ofsetted from a pointer which in itself needs to be translated.
   This apporach is followed for : process()
   For understanding, take the example of inbufs argument in process call(). Inbufs
   allocated in Shared memory and needs to be translated, has the address of Input
   buffer (allocated from Tiler). It is not possible to give the Input buffer as an argument
   to Mmrpc for translation until inbufs is given as a parameter to Mmrpc. Therefore inbuf
   can't be populated inside another Shared/Tiler memory struct.
3. This approach is a workaround to use approach [1] by solving the issue posed by [2].
   This approach is followed for : get_version()
   Taking the example of inbufs to explain, the Input buffer address will be one of the
   parameters of the struct (explained in [1]) along with inbufs address. Therefore the
   Input buffer address will get translated here. At the IPU, this address needs to be
   copied back to inbufs.

This patch aligns all DCE calls except Engine_Open to use Approach [2].
Engine_open still follows Approach [1] because:
1. Engine open takes in pointers to Engine_attrs and Error_code structures. The client may
   set both, none or either one of them to NULL (as allowed by CE). So that implies either
   I'll have to pass NULL as param_pointer to IPU or decide not to pass them at all. In the
   second case, I'll have to pass extra arguments to inform IPU that I have not passed Attrs
   or ErrorCode or both.

I tried passing NULL but mmrpc_write failed.

Dependent on ipumm patch:

Change-Id: Ic770aaa99a56ea559efe9446e6e98d70726cc7c5
Signed-off-by: Saurabh Bipin Chandra <>
7 years ago[MAKE] Exclude Linux files for QNX build
Saurabh Bipin Chandra [Wed, 31 Jul 2013 14:51:46 +0000 (20:21 +0530)]
[MAKE] Exclude Linux files for QNX build

This patch adds condition within QNX build
to exclude Linux specific files.

Change-Id: I4ccca9198ed4d8d81fbab895524e4cb18babc2d2
Signed-off-by: Saurabh Bipin Chandra <>
7 years ago[LIBDCE] Update XDC Tools
Saurabh Bipin Chandra [Thu, 1 Aug 2013 14:55:56 +0000 (20:25 +0530)]
[LIBDCE] Update XDC Tools

This update is to align with the IPC
update in IPUMM at:

Change-Id: I92e42c0fbfee049acc692c62c577113bfbdd478c
Signed-off-by: Saurabh Bipin Chandra <>
8 years ago[LIBDCE] Remove MmRpc translation param base
Saurabh Bipin Chandra [Wed, 19 Jun 2013 11:37:20 +0000 (17:07 +0530)]
[LIBDCE] Remove MmRpc translation param base

The "base" field is no longer exposed by MmRpc
from IPC release as it can be
calculated internally using the "offset" field.
Hence this patch removes setting the field.

Change-Id: I08df16e08042ae27bb2fa550b7126b3f7cae8fa6
Signed-off-by: Saurabh Bipin Chandra <>
8 years ago[MAKEFILE] Update Tools
Saurabh Bipin Chandra [Wed, 19 Jun 2013 11:35:37 +0000 (17:05 +0530)]
[MAKEFILE] Update Tools

This patch updates the following tools:
CEVERSION ?= codec_engine_3_24_00_08
FCVERSION ?= framework_components_3_24_00_09
XDAISVERSION ?= xdais_7_24_00_04
XDCVERSION ?= xdctools_3_25_01_65

Change-Id: I4122a2161c1ca09b997c518ad51bfd07849139f7
Signed-off-by: Saurabh Bipin Chandra <>
8 years ago[Dce_Test] Enable MPEG2 Decoder in dce_test app
Saurabh Bipin Chandra [Thu, 23 May 2013 12:06:20 +0000 (17:36 +0530)]
[Dce_Test] Enable MPEG2 Decoder in dce_test app

This patch enables MPEG2 decoder as the MPEG2 codec
library renames the enum which was common
with MJPEG decoder.

Change-Id: Ifbdabee6358652af633474ca7ac2aebad57f4591
Signed-off-by: Saurabh Bipin Chandra <>
8 years agoFix to pass right translation param to IPC.
Saurabh Bipin Chandra [Thu, 23 May 2013 06:55:26 +0000 (12:25 +0530)]
Fix to pass right translation param to IPC.

The base field of the MmRpc_Xlt translation structure
needs to be value of the address to be translated.
The code was wrongly setting base to the location of
the address. This has been corrected. This didn't create
issues because the IPC doesnot use the base field for
address translation. IPC uses offset to find the
address to be translated.

Change-Id: I404c7dc61cf3f4b5b584008b13336441420149d8
Signed-off-by: Saurabh Bipin Chandra <>
8 years agoAdd Header declaration for MemHeader
Saurabh Bipin Chandra [Fri, 10 May 2013 13:31:56 +0000 (15:31 +0200)]
Add Header declaration for MemHeader

To maintain a generic implementation this
patch moves the MemHeader declaration from
memplugin_qnx.c to memplugin.h.

Change-Id: I881ee18903a906a6e31284710949709a5be4132e
Signed-off-by: Saurabh Bipin Chandra <>
8 years agoEnable build of dce_test app with IPC 3.17
Saurabh Bipin Chandra [Fri, 10 May 2013 13:28:59 +0000 (15:28 +0200)]
Enable build of dce_test app with IPC 3.17

Build of IPC 3.17 generates instead
of Hence updating dce_test mk file
to include the right IPC library.

Change-Id: Icc1c0451ffc10a04bfeb102f5a4b61b4cda0f759
Signed-off-by: Saurabh Bipin Chandra <>
8 years ago[LIBDCE] Remove check for error_code in Engine_open
Saurabh Bipin Chandra [Fri, 10 May 2013 13:25:45 +0000 (15:25 +0200)]
[LIBDCE] Remove check for error_code in Engine_open

This patch removes check for error_code in Engine_open
because the Codec Engine doesnot expect a valid

Change-Id: Id3286a101e290f6d987017741a0c194f53c19f94
Signed-off-by: Saurabh Bipin Chandra <>
8 years ago[DCE_TEST] Add Input argument to take in number of frames to write.
Saurabh Bipin Chandra [Fri, 10 May 2013 13:21:48 +0000 (15:21 +0200)]
[DCE_TEST] Add Input argument to take in number of frames to write.

This patch lets dce_test app users mention the number
of frames of the output raw data to be written to the
output file as an extra input command line argument.

To invoke dce_test app:
dce_test width height frames_to_write framesize inpattern outpattern codec tiler/nontiler

Change-Id: I311b5afbe56aedc93263777bc1891d71cdd73c9a
Signed-off-by: Saurabh Bipin Chandra <>
8 years ago[libDCE] Add IPC 3.x Adapted code to Repository
Saurabh Bipin Chandra [Mon, 22 Apr 2013 16:42:19 +0000 (22:12 +0530)]
[libDCE] Add IPC 3.x Adapted code to Repository

This patch adds libdce code to the repository.
LibDCE has been adapted to use the MmRpc layer
of IPC 3.x. This version of LibDCE is expected to
work on QNX.

Patchset 2 adds/modifies:
1. Removes Tiler 2D allocation/free for now.
2. Corrects memplugin_free() for Tiler 1D.
3. Modifies dce_test app to dump output till 30 frames.
4. Renamed dce.h to libdce.h.
5. Corrected header files across all files.
6. Build configuration for QNX
7. Removes build warnings.
8. Add README for Build instructions
9. Takes care of comments of Buddy and Pradeep.

Patchset 3 adds/modifies:
1. Reduced Stack usage of each function.
2. Add ptr check in memplugin and remove from libdce.
3. Add DCE_Assert macros.
4. Add DCE_error_status enum.
5. Comments Cleanup
6. Make some functions static.
7. process() cleanup including removing reply_buf.
8. Add else if (for codec_type == Encoder type)
9. Converted Macros to Inline functions.
10.Converted init and deinit to dce_init and dce_deinit functions.
11. Removed dce_init() and dce_deinit() declarations

Patchset 4 adds/modifies:
1. Assert Input function arguments.
2. Correct copyright year.
3. Correct memplugin_free for Shared memory.
4. Create dce_priv.h and move trace and assert macros to the header.
5. Redeclare mem_type enum and add mem_error_status enum in
   memplugin.h and make corresponding changes.
6. Add asserts in memplugin.

Intention of some of the changes above is to move towards
delinking Libdce and Memplugin.

Patchset 5:
1. Missed to add dce_priv.h file.

Patchset 6:
1. Take care Pradeep's comment.

Change-Id: I6e5e37b7088362e7bad66200fc3454bb828e0eff
Signed-off-by: Saurabh Bipin Chandra <>