7 years Added conditional check for files existence
Mrinmayee Hingolikar [Thu, 29 Aug 2013 19:30:26 +0000 (01:00 +0530)] Added conditional check for files existence

Signed-off-by: Mrinmayee Hingolikar <>
7 years ago[CLNUP] Removed QNX test and Makefiles
Pradeep Venkatasubbarao [Fri, 6 Sep 2013 06:08:17 +0000 (11:38 +0530)]
[CLNUP] Removed QNX test and Makefiles

Signed-off-by: Pradeep Venkatasubbarao <>
7 years ago[DOC] Renamed README.txt as README
Pradeep Venkatasubbarao [Fri, 6 Sep 2013 05:57:48 +0000 (11:27 +0530)]
[DOC] Renamed README.txt as README

Change-Id: Ie4209ef72aa8e10d246e7b523678dd42350535d8
Signed-off-by: Pradeep Venkatasubbarao <>
7 years ago[LIBDCE] Update .gitignore
Buddy Liong [Thu, 5 Sep 2013 18:21:33 +0000 (13:21 -0500)]
[LIBDCE] Update .gitignore

Update .gitignore to ignore:
dce_test arm folder
dce_enc_test arm folder

Change-Id: I146219e389c84567cf47d116d4fe6b9cc258607d
Signed-off-by: Buddy Liong <>
7 years ago[GIT] Add gitignore file
Saurabh Bipin Chandra [Thu, 5 Sep 2013 18:14:14 +0000 (23:44 +0530)]
[GIT] Add gitignore file

Patch adds .gitignore file.

Change-Id: Iee9731e461dccf95beeeb61a2e2869cc1007eda9
Signed-off-by: Saurabh Bipin Chandra <>
7 years ago[LIBDCE] Update packages with XDAIS, FC Headers
Saurabh Bipin Chandra [Thu, 5 Sep 2013 17:33:07 +0000 (23:03 +0530)]
[LIBDCE] Update packages with XDAIS, FC Headers

This patch adds XDAIS, FC headers included by
the codec header files and makes necessary build
changes to include them.

Change-Id: I6de3988291e6f4fa229b47a119431d83be1025c2
Signed-off-by: Saurabh Bipin Chandra <>
7 years ago[QNX-MAKE] QNX Build system changes
Saurabh Bipin Chandra [Thu, 5 Sep 2013 15:28:03 +0000 (20:58 +0530)]
[QNX-MAKE] QNX Build system changes

The changes include:
1. Redirecting Include Path to packages/ folder

2. Since xdc_target_types__ is defined as gnu/targets/std.h
in libdce.h, the definition has been removed
rom the files.
This helps as the client application need not define
xdc_target_types__ as a compiler option.

3. Since xdc/std.h is included in libdce.h, it is being
removed from the test applications.

4. Adding trace variables to libdce make.

Change-Id: I1e2675901340daefefe865a03757459e41f1d837
Signed-off-by: Saurabh Bipin Chandra <>
7 years ago[TRACE] Debug Log levels enabled
Sathishkumar [Thu, 5 Sep 2013 06:42:28 +0000 (12:12 +0530)]
[TRACE] Debug Log levels enabled

This patch adds debug log levels to libdce.
To enable traces, set the DCE_DEBUG_ENABLE.
The trace level can be changed by setting
DCE_DEBUG_LEVEL= [1/2/3] during compile time.

Change-Id: I4bed53cc6e3af938c02221376662318e3a1b8ec4
Signed-off-by: Sathishkumar <>
7 years ago[LINUX] Fix for make install
Sathishkumar [Thu, 5 Sep 2013 11:34:31 +0000 (17:04 +0530)]
[LINUX] Fix for make install

This patch fixes make install. All the required headers are
copied to $(includedir)/dce on make install.
Unused variables(X11 and WAYLAND) are removed in and
pkg-config on libmmrpc is removed as no libmmrpc.pc is available.
xdc_target_types__=gnu/targets/std.h is added to libdce.h, so
that applications need not do it when using libdce.h.

Change-Id: I8cc70aa2102becdbdc4c6b1e38e2aaa91739c4cc
Signed-off-by: Sathishkumar <>
7 years ago[LIBDCE] Add function descriptor in libdce header file
Saurabh Bipin Chandra [Wed, 4 Sep 2013 16:23:25 +0000 (21:53 +0530)]
[LIBDCE] Add function descriptor in libdce header file

This patch adds function descriptors in the libdce.h.
The xdc/std.h inclusion is shifted from libdce.c to
libdce.h to remove the need of client application
including xdc/std.h.

Change-Id: I4b9e6f12643b130a2cf1d317c4fed595008c7812
Signed-off-by: Saurabh Bipin Chandra <>
7 years ago[QNX-MAKE] Include XDC, CE, XDAIS, IVAHD Headers from packages
Saurabh Bipin Chandra [Wed, 4 Sep 2013 14:28:45 +0000 (19:58 +0530)]
[QNX-MAKE] Include XDC, CE, XDAIS, IVAHD Headers from packages

This patch adds std.h from GNU and it directs
the build system to include Codec Engine,
XDCTools, XDAIS and IVAHD Codec Header files
from the packages/ folder. This removes the
need for libdce users to install these tools.

Change-Id: I368a5aaff4c1edeaf6eae794bea9971787e036e3
Signed-off-by: Saurabh Bipin Chandra <>
7 years ago[LIBDCE] Added codec, xdais and xdctools headers
Sunita Nadampalli [Tue, 3 Sep 2013 16:37:10 +0000 (11:37 -0500)]
[LIBDCE] Added codec, xdais and xdctools headers

This patch adds codec,xdais and xdctools headers for libdce
compilation at HLOS level. Since HLOS code doesn't refer to the
tools directly, this patch provides copy for all the required headers.
Note# These headers need to be updated for every release if the tools
versions are changed.

Version Info of the added Headers:

XDC version   : xdctools_3_25_02_70
CE version    : codec_engine_3_24_00_08
XDAIS version : xdais_7_24_00_04

H.264 Dec  :
MJPEG Dec  :
MPEG-4 Dec :
VC-1 Dec   :
MPEG-2 Dec :
SVC Dec    :
H.264 Enc  :
MJPEG Enc  :
SVC Enc    :

Change-Id: Id2307e2376d3ba0c13464c1b21cdba53d8f997f2
Signed-off-by: Sunita Nadampalli <>
7 years ago[LIBDCE] Mutual exclusion of Engine_open and Engine_close
Saurabh Bipin Chandra [Tue, 3 Sep 2013 09:50:45 +0000 (15:20 +0530)]
[LIBDCE] Mutual exclusion of Engine_open and Engine_close

This patch uses semaphores to mutually exclude:
1. dce_init() and Engine_open() IPU call.
   This solves a hang on IPU side during multiple
   pthread mutex used within dce_init is replaced with
   semaphores as mutex is valid only across
   threads and not processes.
2. dce_deinit() and Engine_close().
   This solves a hang on IPU side during multiple

Change-Id: Ia4d31582ebf0536142dee389e9601eae0169fb22
Signed-off-by: Saurabh Bipin Chandra <>
7 years ago[QNX-MAKE] Exclude linux/android specific files
Saurabh Bipin Chandra [Thu, 5 Sep 2013 11:17:57 +0000 (16:47 +0530)]
[QNX-MAKE] Exclude linux/android specific files

This patch directs QNX build system to exclude
libdce_linux.c and memplugin_android.c during build.

Change-Id: I96ad60d1c0397eb46acd4927e6b7e9912cf01718
Signed-off-by: Saurabh Bipin Chandra <>
7 years ago[LINUX] Moving Linux specific functions to new c file
Saurabh Bipin Chandra [Thu, 5 Sep 2013 10:16:56 +0000 (15:46 +0530)]
[LINUX] Moving Linux specific functions to new c file

This patch moves Linux specific functions to
It also takes in the DRM Initialization cleanup
changes in dce_init from:

Change-Id: I570341c8dfbe1d120bc89071a86020b6ba5d4cac
Signed-off-by: Saurabh Bipin Chandra <>
7 years ago[LINUX] Expose dce_init and dce_deinit calls to user
Saurabh Bipin Chandra [Tue, 3 Sep 2013 04:04:10 +0000 (09:34 +0530)]
[LINUX] Expose dce_init and dce_deinit calls to user

This patch changes the declaration of dce_init() and
dce_deinit() to what is expected by Gstreamer for GLP
and exposes it. This involves returning a struct
omap_device pointer as void * during dce_init() and
receiving a struct omap_device during dce_deinit().

The IPC initialization/deinitialization has been
separated out of dce_init()/dce_deinit() into two static
functions dce_ipc_init(), dce_ipc_deinit().
These functions are now included within Engine_open(),
Engine_close() for all OSs.

Change-Id: I86f4778cbd80f0a83aa3c39d8183bb3155a2a391
Signed-off-by: Saurabh Bipin Chandra <>
7 years ago[LINUX] Expose API to lock and Unlock IO Buffers
Saurabh Bipin Chandra [Fri, 30 Aug 2013 11:58:19 +0000 (17:28 +0530)]
[LINUX] Expose API to lock and Unlock IO Buffers

This patch exposes APIs:
   dce_buf_lock(int num, size_t *handle)
   dce_buf_unlock(int num, size_t *handle)
to lock and unlock the Input/Output Buffers respectively.

The change is specific to GLP.
The DRM driver pins and unpins tiler address for the
IO Buffers whenever the rpmsg_rpc driver calls
map_attachment and unmap_attachment() respectively.
As the rpmsg_rpc driver invokes these calls during every
process call, the reference buffer addresses (address of
past locked buffers) held by the codec gets invalidated.
That is, these addresses will not continue to map to the
same memory region (YUV reference buffer) as before.

Most often, these virtual addresses may point to the
next YUV Buffer translated from the MPU.

These APIs put a condition on the map and unmap() within

The expectation from the application is to
call dce_buf_lock() for the inArgs.inputID buffer
and dce_buf_unlock() for the outArgs.freeBufID buffer.

Change-Id: Ic749c6b18385f9052a2eeb4e16959063c5efab5e
Signed-off-by: Saurabh Bipin Chandra <>
7 years ago[DCE] Align MmRpc offset setting with GLP Rpmsg_rpc
Saurabh Bipin Chandra [Thu, 29 Aug 2013 09:21:50 +0000 (14:51 +0530)]
[DCE] Align MmRpc offset setting with GLP Rpmsg_rpc

This patch aligns setting translation[i].offset field
of MmRpc Translation Array (XltAry) with the
understanding of rpmsg_rpc of GLP.

Rpmsg_rpc of GLP calculates:
primary_offset as mmrpc_params.addr - mmprc_params.base
secondary_offset as translation[i].offset
and sums both to get to the location of the address to
be translated.
Whereas in QNX rpmsg_rpc, the primary offset was subtracted
from the secondary offset.

This logic has now been modified in IPC_03_10_00_07_eng to
align with the rpmsg_rpc of GLP.

Change-Id: Ied11e78891119312f35162e336cd3dded9e8997a
Signed-off-by: Saurabh Bipin Chandra <>
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 <>