android-sdk/repo-libdce.git
4 years agolibdce: Increase the concurrent engine handle count master 3.00.13.00
Sunita Nadampalli [Tue, 7 Feb 2017 20:19:55 +0000 (14:19 -0600)]
libdce: Increase the concurrent engine handle count

Increase the MAX_INSTANCES count for the concurrent engine handles
to match the DCE server definitions.

Change-Id: If29de276b9a173e114ad6df9b1358b4842e86b49
Signed-off-by: Sunita Nadampalli <sunitan@ti.com>
4 years agolibdce: Updated JpegEncoder interface file
Veeranna Hanchinal [Tue, 7 Feb 2017 12:25:29 +0000 (17:55 +0530)]
libdce: Updated JpegEncoder interface file

Updated MJPEGE header file due to MJPEGE codec update to
01.00.17.01 version.

Change-Id: Id820f9cf3c66e1659564ba297cc469a30dc55732
Signed-off-by: Veeranna Hanchinal <veeranna.hanchinal@ti.com>
4 years agomemplugin android: Add SCANOUT flag to allocations
Gowtham Tammana [Fri, 4 Nov 2016 20:39:45 +0000 (15:39 -0500)]
memplugin android: Add SCANOUT flag to allocations

Add OMAP_BO_SCANOUT flags to `omap_bo` buffer allocations to
explicitly request from contiguous region.

Change-Id: Ifb6f8780608183cf9f5b636f885d408b01146d31
Signed-off-by: Gowtham Tammana <g-tammana@ti.com>
4 years agolibdce[Android]: Add dce_ipc_recover API
Angela Stegmaier [Fri, 9 Dec 2016 22:14:09 +0000 (16:14 -0600)]
libdce[Android]: Add dce_ipc_recover API

In case of remote core recovery due to remote core crash, the rpmsg-dce
handle needs to be closed and re-opened since any handles that were
open when the crash happened are marked as stale in the driver.

This patch adds a new API that the user can call to close the rpmsg-dce
handle so that recovery can happen.

In case the user receives notification of a remote core crash, it can
call the dce_ipc_recover() API to make sure that the rpmsg-dce handle
that is opened during dce_buf_lock is closed so that a new one can
be opened the next time.

Change-Id: I8ebc19e308ffe7431b57c31cfecd469e171777f6
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
4 years agolibdce: add JPEG encoder
Hongmei Gou [Wed, 9 Nov 2016 17:59:24 +0000 (12:59 -0500)]
libdce: add JPEG encoder

Change-Id: I0136abd43fe8c1af3fedc5013dae578c8f6c7537
Signed-off-by: Hongmei Gou <h-gou@ti.com>
4 years agomemplugin android: Fix h->ptr offset in memplugin_alloc
Gowtham Tammana [Tue, 1 Nov 2016 19:25:07 +0000 (14:25 -0500)]
memplugin android: Fix h->ptr offset in memplugin_alloc

In memplugin_alloc(), the buffer pointer is meant to start at the end of
the MemHeader structure. h->ptr which holds this offset is calculated
incorrectly, but this has not caused any errors as the h->ptr is not
referenced directly. This offset is acquired through `H2P` macroin the
code. Nevertheless fixing the pointer arithmetic.

Change-Id: I075455860fbeb54001a9f2fde1de544c39fe3ed0
Signed-off-by: Gowtham Tammana <g-tammana@ti.com>
4 years agolibdce [Android]: avoid crash in memplugin_close 3.00.12.00
Vishal Mahaveer [Wed, 19 Oct 2016 22:40:02 +0000 (18:40 -0400)]
libdce [Android]: avoid crash in memplugin_close

Add more checks to prevent crash scenarios in memplugin_close.

Change-Id: Ieafc2bbd7a6876059926f37619b017d9cbb5a21d
Signed-off-by: Vishal Mahaveer <vishalm@ti.com>
4 years agolibdce[Android]: Defer rpmsg_dce device open till buffer lock phase
Sunita Nadampalli [Mon, 29 Aug 2016 20:42:00 +0000 (15:42 -0500)]
libdce[Android]: Defer rpmsg_dce device open till buffer lock phase

In the current architecture, rpmsg_dce device is opened
during memplugin_open(), which can be called from any process
context. With Android system configured in SE Linux Enforcement
mode, it is not allowed to open rpmsg_dce in any process other than
mediaserver. Hence the device open logic is deferred till
dce buffer lock API where the actual device ioctls are needed.

Change-Id: Iedacfd3327e0ee975a8a492b057aac576d7f7c10
Signed-off-by: Sunita Nadampalli <sunitan@ti.com>
4 years agoValid id checking for callbackmsg[id]).row_mode in process() 3.00.11.00
Buddy Liong [Wed, 22 Jun 2016 17:13:08 +0000 (12:13 -0500)]
Valid id checking for callbackmsg[id]).row_mode in process()

In VIDDEC3_process or VIDENC2_process, if low latency is used, then
id will have a valid value of >= 0.
When full frame is used, after process call, there is a condition
check of callbackmsg[id]).row_mode. Problem is that id might not be valid
for full frame. With id value < 0, the value in callbackmsg[id]).row_mode
can be guarantee to be correct. Issue is found when id = -1 and the value
of callbackmsg[-1]).row_mode points to less than 0, which causes the
condition to pass.

This commit is fixing the issue by adding additional check to make sure
id is >= 0 when calling callbackmsg[id]).row_mode so that the
condition check will be valid to determine low latency mode or full
frame mode after process().

Change-Id: I93209e4da42305e807824565bf676c8bdd33d72a
Signed-off-by: Buddy Liong <buddy.liong@ti.com>
4 years agoget_rproc_info: Introduce new API to query remoteproc
Buddy Liong [Fri, 17 Jun 2016 15:30:07 +0000 (10:30 -0500)]
get_rproc_info: Introduce new API to query remoteproc

This is the initial implementation of an extensible API
that allows the user to query various remote core
parameters. Currently, there are three query parameters
that are supported:
  1. CPU Load
  2. Total configured heap size
  3. Available heap size

The intent of this API is to programmatically call the
API and feed it in various other tools that can be
developed on top of this (for example: soc performance
visualization etc.)

NOTE: This will require the implementation on ipumm-fw
and/or dspdce-fw.

Change-Id: I94c309221dbce24162a4f31166890d3acdb2d049
Signed-off-by: Karthik Ramanan <a0393906@ti.com>
Signed-off-by: Buddy Liong <buddy.liong@ti.com>
5 years ago[LIBDCE]: Fix in dce_enc_test when buffer type is tiler
Subash Lakkimsetti [Wed, 6 Apr 2016 20:21:55 +0000 (15:21 -0500)]
[LIBDCE]: Fix in dce_enc_test when buffer type is tiler

 In NUMROW case while reading input from file to buffer
 Y & UV input read offsets are not configured correctly

Change-Id: Ice9f5e85201ba967aa485f6dc11723b3794eeb9c
Signed-off-by: Subash Lakkimsetti <x0091084@ti.com>
5 years agoDos2unix on common.mk 3.00.10.00 3.00.10.01
Buddy Liong [Fri, 11 Dec 2015 21:35:37 +0000 (15:35 -0600)]
Dos2unix on common.mk

Update common.mk into unix format by running dos2unix.

Change-Id: I06467d79566deaaf781084df29c3f06947645016
Signed-off-by: Buddy Liong <buddy.liong@ti.com>
5 years agoH.264 low latency with IVIDEO_NUMROWS
Buddy Liong [Tue, 24 Nov 2015 22:32:11 +0000 (16:32 -0600)]
H.264 low latency with IVIDEO_NUMROWS

H.264 codec user guide describes the functionality of low latency.
This functionality allows user to encode/decode a sub-frame level data
communications. Without low latency, user can only encode/decode a
complete/full frame only.

More information about H264 low latency can be found in codec release
package:
* H.264 Encoder 2.0 on HDVICP2 and Media Controller Based Platform
  User's Guide (SPRUHG3), Appendix G - Low Latency / Sub Frame Level
  Synchronization
* H.264 Decoder 2.0 on HDVICP2 and Media Controller Based Platform
  User's Guide (SPRUHF9), Appendix I - Low Latency / Sub Frame Level
  Synchronization

This commit is only implemented low latency with IVIDEO_NUMROWS.
H.264 encoder handles inputDataMode = IVIDEO_NUMROWS with getDataFxn
as callback to get the numRows being filled into the inputBuffer pointer
passed at process call.

From H.264 encoder user guide Appendix G, more details can be found in
sec. G2 H.264 Encoder Input with sub frame level synchronization

H.264 decoder handles outputDataMode = IVIDEO_NUMROWS with putDataFxn as
callback to notify client on the numRows/numBlocks being filled by codec
into the outputBuffer pointer passed at process call.

From H.264 decoder user guide Appendix I, more details can be found in
sec. I.2 Details of using Sub Frame Level data sync at output side.

The update is only valid on video codec on IVA-HD.
This changes depend on the changes done on IPUMM DCE server.

No low latency update is performed on video codec on DSP.

This commit has dependencies on:
IPC 3.42.00.02 or latest
IPUMM commit ids:
commit e37750cc921a9442c48e7212824b28850ac3aaa7
  - H.264 low latency - IVIDEO_NUMROWS
commit 266749c0b6a2584d563625f881f998c3d78ca873
  - Handling when MPU crashes, eg. CTRL-C on MPU side.
commit 030572aaa1964bb50a903852fab0ecc0149b6b7e
  - H.264 Low Latency - sync put_DataFxn to MPU side

Change-Id: I308bc74a879099f38705df6e6dda4a86b6645986
Signed-off-by: Buddy Liong <buddy.liong@ti.com>
5 years ago[DCE_TEST] Revert 5c45f781
Buddy Liong [Tue, 27 Oct 2015 22:40:33 +0000 (17:40 -0500)]
[DCE_TEST] Revert 5c45f781

Commit id: 5c45f781d307f799af9dceb5ff636d5477694e16
[DCE_TEST] Fixing the decoded output resolution

Only fixing H.264 1920x1080 for non-tiler.
The patch brokes MPEG2 decoding and H.264 1920x1080 with TILER.

Reverting the changes.

Change-Id: Ibf91c40e330c5eb56e804628db3a0e4ece469e8a
Signed-off-by: Buddy Liong <buddy.liong@ti.com>
5 years ago[DCE_TEST] Fixing the decoded output resolution 3.00.09.01
Buddy Liong [Thu, 1 Oct 2015 17:43:00 +0000 (12:43 -0500)]
[DCE_TEST] Fixing the decoded output resolution

Previously, when decoding for example H.264 1080p (1920x1080),
the output yuv comes out to be 1920x1088 because codec requires
the maxWidth and maxHeight on the VIDDEC3_Params to be aligned by 16 bytes.

Problem is in dce_test.c, the aligned is done early to the global variable
width and height which altered the value to be aligned by 16 bytes.
On the example above the height becomes 1088 (aligned by 16 bytes).
When the output buffer is allocated for TILER, the
outBufs->descs[0].tileMem.width = width that is aligned to 16 bytes.
outBufs->descs[0].tileMem.height = height that is aligned to 16 bytes.
or when the output buffer is allocated for Non-TILER, the
outBufs->descs[0].bytes = width * height that is aligned to 16 bytes.

With this fix, the output is now corrected to have the same resolution
as the input.
Eg. H.264 1080p (1920x1080) will be decoded to YUV NV12 of 1920x1080.
No longer YUV NV12 of 1920x1088.

Change-Id: Icdce8dfb99ffd2568ad318ff30305f83901a8243
Signed-off-by: Buddy Liong <a0270631@ti.com>
5 years agoUpdated README on FC version for MMIP 3.00.08.02 3.00.08.02 3.00.09.00
Buddy Liong [Mon, 17 Aug 2015 20:09:46 +0000 (15:09 -0500)]
Updated README on FC version for MMIP 3.00.08.02

For MMIP 3.00.08.02, the firmware requires FC to be updated
to version 3.40.01.04 which solves the issue with
FC_suspend() crashes if alg contains > 10 resources.

Change-Id: If30a183f29746cd43204a1a4f0cbea5481004467
Signed-off-by: Buddy Liong <buddy.budiono@ti.com>
5 years agoVC1: setting the error concealment
Subash Lakkimsetti [Thu, 6 Aug 2015 18:09:02 +0000 (13:09 -0500)]
VC1: setting the error concealment

IVC1VDEC_Params.errorConcealmentON to TURE.

Change-Id: Ia6abfd11adff48558509692d5bcf751e9ec5a97a
Signed-off-by: Subash Lakkimsetti <x0091084@ti.com>
5 years agoREADME update for MMIP 3.00.08.01 3.00.08.01
Buddy Liong [Tue, 26 May 2015 15:10:25 +0000 (10:10 -0500)]
README update for MMIP 3.00.08.01

Update README to correspond the IVAHD codecs version.

Change-Id: I351ae4cb24668caac7f35a7574da8d0e33f2053a
Signed-off-by: Buddy Liong <buddy.budiono@ti.com>
5 years agoREADME update for MMIP 3.00.08.00 3.00.08.00
Buddy Liong [Mon, 11 May 2015 19:57:57 +0000 (14:57 -0500)]
README update for MMIP 3.00.08.00

Update README to correspond the correct build tools and
IVAHD codecs version.

Change-Id: I051f314ab42694dbf0c7991f717b0bb99bfb1e1e
Signed-off-by: Buddy Liong <buddy.budiono@ti.com>
5 years agolibdce[LINUX] : Mutex protection support and other bug fixes
Buddy Liong [Tue, 5 May 2015 19:24:39 +0000 (14:24 -0500)]
libdce[LINUX] : Mutex protection support and other bug fixes

* The dce_init/dce_deinit APIs can be called multiple times by applications.
  This is called from multiple thread contexts in the viddec3test and is also
  invoked several times by the GStreamer framework.
* But certain init functions and deinit operations need to be done only on the
  first and last calls of the respective APIs.
* Additionally, according the pthread documentation we need to use **either**
  the PTHREAD_MUTEX_INITIALIZER or the pthread_mutex_init APIs with the attribs
* The protection for the dce_init with the ref count mechanism is additionally
  needed for the mutex initialization because if this is not done conditionally
  (for the first dce_init) sequence, the subsequent call to this API would
  actually reinit the mutex value and cause the new thread sequence to acquire
  the same.

Change-Id: I2d129a2b030a25c4e8c5f621abf05d68562db6b8
Signed-off-by: Karthik Ramanan <a0393906@ti.com>
Signed-off-by: Buddy Liong <buddy.budiono@ti.com>
5 years agolibdce[Linux]: Add mutex protection for dce_buf_lock/dce_buf_unlock
Sunita Nadampalli [Wed, 22 Apr 2015 19:36:37 +0000 (14:36 -0500)]
libdce[Linux]: Add mutex protection for dce_buf_lock/dce_buf_unlock

The dce_buf_lock and dce_buf_unlock are meant for any video
buffer locking and unlocking with the GEM allocator.
Currently, these methods are being called from libdce apis
with ipc mutex held. In order to enable other media components
to make use of these buffer lock/unlock apis, explicit ipc mutex
protection is added.

Change-Id: Ibb4976120e5dfe6f88b42359655a460cafc223ac
Signed-off-by: Sunita Nadampalli <sunitan@ti.com>
5 years ago[DCE_ENC_TEST] Handling other errors from VIDENC2_process
Buddy Liong [Fri, 24 Apr 2015 19:56:54 +0000 (14:56 -0500)]
[DCE_ENC_TEST] Handling other errors from VIDENC2_process

Currently dce_enc_test is only handling XDM_ERROR only.
If VIDENC2_process return with other than XDM_ERROR for example,
MmRpc_call is failing because IPU2 has crashed.

Currently dce_enc_test is not exiting because it is not handling
the error.

Change-Id: I7fc4b7306f36961e4582dd5504b0acc4eb2a09a4
Signed-off-by: Buddy Liong <buddy.budiono@ti.com>
5 years ago[DCE_TEST] Handling other errors from VIDDEC3_process
Buddy Liong [Thu, 26 Feb 2015 21:16:43 +0000 (15:16 -0600)]
[DCE_TEST] Handling other errors from VIDDEC3_process

Currently dce_test is only handling XDM_ERROR only.
If VIDDEC3_process return with other than XDM_ERROR for example,
MmRpc_call is failing because IPU2 has crashed.

Currently dce_test is not exiting because it is not handling
the error.

Change-Id: Ie901a2ab4bd48b9e1665be118e7aeffe780b2f58
Signed-off-by: Buddy Liong <buddy.budiono@ti.com>
5 years ago[QNX] Remove dependency on QNX TILER for memory allocation
Buddy Liong [Thu, 9 Apr 2015 17:40:16 +0000 (12:40 -0500)]
[QNX] Remove dependency on QNX TILER for memory allocation

Previously dce_alloc() call will always reserve the memory from QNX
TILER 1D. The same case happens when it calls memplugin_alloc since the
definition of DEFAULT_REGION is set to MEM_TILER_1D for QNX.

Since there is a known issue of DMA lockup due to MPU side performing memory copy
into the TILER memory, this patch limits the use of QNX TILER.
With this patch, dce_test and dce_enc_test can be executed without QNX TILER
allocation.

DCE test apps are also updated to allocate the memory through
shmemallocator instead of QNX TILER.

The capability to:
   allocate TILER output buffer for decoder and
   allocate TILER input buffer and output buffer for encoder
are still existed as part of the dce_test or dce_enc_test input parameter 'tiler'
vs 'nontiler'

Change-Id: I33e2a9dd83c791cc2621e548628715abaeae871d
Signed-off-by: Buddy Liong <buddy.budiono@ti.com>
6 years ago[TRACE] Add tag to Android logs
Vishal Mahaveer [Wed, 25 Mar 2015 18:41:52 +0000 (13:41 -0500)]
[TRACE] Add tag to Android logs

By default Android tag is empty, define one for libdce

Change-Id: Ide10001092cc529c935f1387774f3b9afc4f1d1f
Signed-off-by: Vishal Mahaveer <vishalm@ti.com>
6 years ago[TEST_QNX] Cleanup debug print.
Buddy Liong [Tue, 3 Feb 2015 20:33:02 +0000 (14:33 -0600)]
[TEST_QNX] Cleanup debug print.

Instead of ERROR, it should be DEBUG as we don't want
it to be printed every encoded instance.

Removed OMAP5 defined flag as it is not used.

Change-Id: Ied3bb95d067b55e601cbd47817d2578d21b5b920
Signed-off-by: Buddy Liong <buddy.budiono@ti.com>
6 years agolibdce[ANDROID]: Fix bug in omap buffer object free logic 3.00.07.03
Sunita Nadampalli [Thu, 19 Feb 2015 18:01:12 +0000 (12:01 -0600)]
libdce[ANDROID]: Fix bug in omap buffer object free logic

For the omap_bo_del function call, we need to pass
the bo object rather than the mmaped pointer.

Change-Id: I3b011594b0210ec6f95f3f4644835594a80ace28
Signed-off-by: Sunita Nadampalli <sunitan@ti.com>
6 years agoUpdate common.mk to exclude Android libdce_android object files 3.00.07.01 3.00.07.02 3.00.07.04
Buddy Liong [Tue, 27 Jan 2015 18:19:33 +0000 (12:19 -0600)]
Update common.mk to exclude Android libdce_android object files

Updating common.mk so that it will not include in the link/archive step
for libdce_android.c Android files when compiling on QNX HLOS.

Change-Id: I4621b29dfa6c30fbdd3f632afcb9f10d4d8946a6
Signed-off-by: Buddy Liong <buddy.budiono@ti.com>
6 years agolibdce: Add mutex protection for dce_buf_lock/dce_buf_unlock
Sunita Nadampalli [Fri, 30 Jan 2015 16:17:17 +0000 (10:17 -0600)]
libdce: Add mutex protection for dce_buf_lock/dce_buf_unlock

The dce_buf_lock and dce_buf_unlock are meant for any video
buffer locking and unlocking with the GEM allocator.
Currently, these methods are being called from libdce apis
with ipc mutex held. In order to enable other media components
to make use of these buffer lock/unlock apis, explicit ipc mutex
protection is added.

Change-Id: I6d63a4cdcffec62a346341ff515a7ebb03dea8c0
Signed-off-by: Sunita Nadampalli <sunitan@ti.com>
6 years agolibdce[Android] - Use drm render node instead of card0
Hemant Hariyani [Wed, 3 Dec 2014 22:21:56 +0000 (16:21 -0600)]
libdce[Android] - Use drm render node instead of card0

Render nodes allow a limited set of ioctls without restrictions.
libdce only needs to access drm to get buffers and render
node should be sufficient.

Note that this is new feature in the kernel.

Also, need a better way to open render node than to use hard coded
path name.

Change-Id: I8178414185dcaf6c70edc756eefb0a00b7e3c332
Signed-off-by: Hemant Hariyani <hemanthariyani@ti.com>
6 years agoRevert "libdce[ANDROID] - add drmsetmaster/dropmaster calls"
Hemant Hariyani [Wed, 3 Dec 2014 22:11:37 +0000 (16:11 -0600)]
Revert "libdce[ANDROID] - add drmsetmaster/dropmaster calls"

Not needed as dce will use drm render node.

This reverts commit 4715ea56d8a266e66bc6cef982410c602a19be43.

Change-Id: I1dc14249ffe2dbbfdfd970cea3bf4a378274db6d
Signed-off-by: Hemant Hariyani <hemanthariyani@ti.com>
6 years ago[Fix] Support Multiplanar encoder input buffers 3.00.07.00
Pradeep Venkatasubbarao [Fri, 28 Nov 2014 05:44:11 +0000 (11:14 +0530)]
[Fix] Support Multiplanar encoder input buffers

An earlier patch to enable Single planar buffers for encoder
broke the multiplanar support.

This patch fixes this issue.

Change-Id: Ide169a43b3df915a969a401e623fdad7f8792faf
Signed-off-by: Pradeep Venkatasubbarao <pradeepv@ti.com>
6 years agolibdce[ANDROID] - add drmsetmaster/dropmaster calls
Sunita Nadampalli [Tue, 25 Nov 2014 17:49:01 +0000 (11:49 -0600)]
libdce[ANDROID] - add drmsetmaster/dropmaster calls

Added setdrmmaster and dropdrmmaster calls for
every drm ioctl.

Change-Id: I9319e5927374e677480a18f937d2bbd12e561462
Signed-off-by: Sunita Nadampalli <sunitan@ti.com>
6 years agoIntegration based on IPC 3.30.01.12
Buddy Liong [Tue, 11 Nov 2014 21:34:43 +0000 (15:34 -0600)]
Integration based on IPC 3.30.01.12

Integration with IPC 3.30.01.12 requires build tool update on
XDC tool version to 3_30_xx_xx. Using the latest XDC Tools of
3_30_05_60_core
Copying the header files used from 3_30_05_60 version.

Change-Id: I648bfa945bcc0d8a43b4653d8f303cd9c18ee03f
Signed-off-by: Buddy Liong <buddy.budiono@ti.com>
6 years agolibdce[Android]: Added support for DRM based Android memplugin
Sunita Nadampalli [Mon, 17 Nov 2014 20:00:48 +0000 (14:00 -0600)]
libdce[Android]: Added support for DRM based Android memplugin

This patch adds memplugin implementation for GEM allocator
and dce buffer locking via MmRPC for Android builds.
Android memplugin implement memplugin interface for buffers
with and without memheaders. This implementation is for
DRM/GEM buffer allocations. And libdce_android implements
GEM buffer registration and unregistration with MmRPC.

Change-Id: Ie72c988a37f987446f7d7c1d97225295de73d305
Signed-off-by: Sunita Nadampalli <sunitan@ti.com>
6 years agolibdce: Changes to make dce_ipc_init/deinit external
Sunita Nadampalli [Fri, 14 Nov 2014 17:50:08 +0000 (11:50 -0600)]
libdce: Changes to make dce_ipc_init/deinit external

dce_ipc_init and dce_ipc_deinit are required by
android memplugin even before DCE engine open happens.
This is required to use MmRpc interface for DRM/GEM
buffer locking.

Change-Id: Ia11af04658c367242c33ab8acffaa4b522aa0716
Signed-off-by: Sunita Nadampalli <sunitan@ti.com>
6 years ago[DCE TEST] [DCE ENC TEST] Logs added for dce test automation 3.00.06.01
Subash Lakkimsetti [Thu, 9 Oct 2014 15:24:27 +0000 (10:24 -0500)]
[DCE TEST] [DCE ENC TEST] Logs added for dce test automation

For test automation, dce logs are parsed and results are updated.
Added logs for error cases.

Change-Id: I354648c02206e8a65efe49ffb0352308e4fe727f
Signed-off-by: Subash Lakkimsetti <x0091084@ti.com>
6 years agoFix multi threaded logic for client indexing
Pradeep Venkatasubbarao [Wed, 10 Sep 2014 08:19:51 +0000 (13:49 +0530)]
Fix multi threaded logic for client indexing

Client count was being used for indexing into an empty slot in table
holding clients' engine handles.

In the case of multi-threaded scenario, there is a possibility of
out of order creation and deletions of clients in which case the client
indexing should search for an empty slot in the table rather than assuming
that the index defined by number of clients points to an empty slot in the
table.

This patch fixes this issue by decoupling client count from table indexing.
Now the table indexing is done by finding the empty slot identified by a '0'
in the entry. This also forces filling '0' during client deletion which is also
taken care of in the patch.

Change-Id: I3d4c8d744c3912a6fae5809f445039d39b762f91
Signed-off-by: Pradeep Venkatasubbarao <pradeepv@ti.com>
6 years agoFixing Klocwork finding
Buddy Liong [Mon, 25 Aug 2014 21:33:13 +0000 (16:33 -0500)]
Fixing Klocwork finding

Running Klocwork stand-alone, it reports 19-20 issues.
This task submitted to resolve the found issues.

Change-Id: I98150d4262ee5b1ab85cb1a7c0e697dcadb4a665
Signed-off-by: Buddy Liong <buddy.budiono@ti.com>
6 years agoREADME update 3.00.06.00
Buddy Liong [Wed, 20 Aug 2014 15:56:01 +0000 (10:56 -0500)]
README update

Integration with IPC 3.23.00.01 requires build tool update on
XDC tool version to 3_25_06_96
Copying the header files used from 3_25_06_90 version.

Change-Id: Ie1e6e167a9cfb42fde706fa06ba4dd5900db7483
Signed-off-by: Buddy Liong <buddy.budiono@ti.com>
6 years ago[TEST_QNX] Fixing compiler warnings
Buddy Liong [Wed, 20 Aug 2014 15:04:57 +0000 (10:04 -0500)]
[TEST_QNX] Fixing compiler warnings

Using QNX SDP 6.6, compiler issues warnings:

/libdce/test_qnx/dce_enc_test/dce_enc_test.c: In function 'main':
/libdce/test_qnx/dce_enc_test/dce_enc_test.c:363:21: warning: variable 'ivahd_encode_type' set but not used [-Wunused-but-set-variable]
/libdce/test_qnx/dce_enc_test/dce_enc_test.c:357:21: warning: variable 'oned' set but not used [-Wunused-but-set-variable]

/libdce/test_qnx/dce_test/dce_test.c:588:22: warning: variable 'vc1_flush' set but not used [-Wunused-but-set-variable]

Change-Id: I53798b7a10128baea6f87ee0cc1eca483243846c
Signed-off-by: Buddy Liong <buddy.budiono@ti.com>
6 years ago[QNX] Fixing compiler warning.
Buddy Liong [Wed, 20 Aug 2014 17:11:15 +0000 (12:11 -0500)]
[QNX] Fixing compiler warning.

When compiling with QNX SDP 6.6, compiler issues warning of:
/libdce/memplugin_qnx.c: In function 'memplugin_alloc':
/libdce/memplugin_qnx.c:46:25: warning: variable 'eError' set but not used [-Wunused-but-set-variable]
/libdce/memplugin_qnx.c: In function 'memplugin_free':
/libdce/memplugin_qnx.c:109:25: warning: variable 'eError' set but not used [-Wunused-but-set-variable]

Change-Id: Iebb4e68fd036e5bb750198f5b60d38f44c5cd856
Signed-off-by: Buddy Liong <buddy.budiono@ti.com>
6 years ago[VIDENC2] Single planar support for encoder input
Pradeep Venkatasubbarao [Mon, 18 Aug 2014 02:53:56 +0000 (08:23 +0530)]
[VIDENC2] Single planar support for encoder input

This patch adds support for single planar buffers (Y and UV) in a single buffer
sharing the same dma buf fd.
In the case of single planar buffers the offset of uv data need to passed to
rpc. This logic has been added in this patch. The patch s specific to LINUX and
will not have any effect on QNX and Android builds.

Change-Id: Ib4be4b8f1df36a1dc8d53eb0299189802ce040ca
Signed-off-by: Pradeep Venkatasubbarao <pradeepv@ti.com>
6 years agoREADME update 3.00.05.01
buddy.liong [Thu, 17 Jul 2014 22:47:32 +0000 (17:47 -0500)]
README update

Updating README note on the codec version used for
MMIP 3.00.05.01
VC1 decoder codec version 01.00.00.13
MPEG2 decoder codec version 01.00.14.01
H.264 encoder codec version 02.00.08.01

Change-Id: Iccaf4895398d514d0710794d4e9d9773468669b8
Signed-off-by: buddy.liong <buddy.budiono@ti.com>
6 years ago[Linux] Add automatic search path for IPC headers
Pradeep Venkatasubbarao [Mon, 6 Jan 2014 09:03:01 +0000 (14:33 +0530)]
[Linux] Add automatic search path for IPC headers

Adds the automatic search header mechanism using pkg-config
for libmmrpc.

Change-Id: If4aa61cb598567455a1342be358338e4adfcc3e0
Signed-off-by: Pradeep Venkatasubbarao <pradeepv@ti.com>
6 years ago[DCE_TEST] When outBufsInUse is set, use previous inputID 3.00.05.00
buddy.liong [Tue, 27 May 2014 17:04:53 +0000 (12:04 -0500)]
[DCE_TEST] When outBufsInUse is set, use previous inputID

When handling interlace clip, the codec can hold the output buffer after
processing the top field frame. The codec will set the outBufsInUse flag.
When the application receives an indication that outBufsInUse flag is set,
the application should use the previous inputID as the inputID and not
sending a new output buffer (set to NULL on the output buffer) on the next
VIDDEC3_process call.

Change-Id: Id5e05984330e686ec5ea449be5d0aff8f8802d70
Signed-off-by: buddy.liong <buddy.budiono@ti.com>
7 years agoREADME update 3.00.04.02
buddy.liong [Thu, 10 Apr 2014 14:14:57 +0000 (09:14 -0500)]
README update

Updating README note on the VC1 codec version update from
01.00.00.11 to 01.00.00.12 on the IPUMM side.

Change-Id: Ib02274fd0ac1c86f6e7978e4e82ac618603159b1
Signed-off-by: buddy.liong <buddy.budiono@ti.com>
7 years agoUpdating README 3.00.04.01
buddy.liong [Thu, 20 Mar 2014 20:33:55 +0000 (15:33 -0500)]
Updating README

The command to build libdce on QNX requires additional information.
Instead of "make clean" and "make install", due to the renaming of
Makefile to Makefile.qnx, the command becomes "make -f Makefile.qnx clean"
and "make -f Makefile.qnx install".

Updates the "Supported API Information" to point to the header files
instead of listed it again here.

Change-Id: Ied47d812eb8b0a6c9a9bb0cace3f6241f91d7325
Signed-off-by: buddy.liong <buddy.budiono@ti.com>
7 years agoMerge "updating gitignore"
Pradeep Venkatasubbarao [Wed, 26 Mar 2014 05:23:53 +0000 (00:23 -0500)]
Merge "updating gitignore"

7 years agoMerge "[LINUX] Manage Tiler Pinning for dce DRM buffers"
Pradeep Venkatasubbarao [Wed, 26 Mar 2014 05:23:37 +0000 (00:23 -0500)]
Merge "[LINUX] Manage Tiler Pinning for dce DRM buffers"

7 years agoupdating gitignore
Pradeep Venkatasubbarao [Thu, 20 Mar 2014 09:09:23 +0000 (14:39 +0530)]
updating gitignore

Added Makefile and *.out

Change-Id: I6c81aa1ea0b7d1ab8a1772895310f479e8521ad7
Signed-off-by: Pradeep Venkatasubbarao <pradeepv@ti.com>
7 years ago[LINUX] Manage Tiler Pinning for dce DRM buffers
Pradeep Venkatasubbarao [Mon, 24 Mar 2014 07:48:35 +0000 (13:18 +0530)]
[LINUX] Manage Tiler Pinning for dce DRM buffers

Applications using dce_alloc/dce_free calls to manage memory,
leaked memory because on non-closure of the created dmabuf fds.
Additionally, all memory allocated from Tiler/DMM via DRM need to be
explictly pinned to tiler using dce_buf_lock/dce_buf_unlock calls.
Hence in the earlier implementation, every call to dce_alloc/free
had to be followed by a lock/unlock call to pin/unpin it to tiler.
In order, to insulate the applications from the internal details of
DRM memory management and for ease of use of alloc and free calls,
dce_alloc now takes care of creating the dmabuf and pinning it to tiler
while dce_free takes care of tiler unpinning and closure of dmabuf fd.
Applications can continue to use dce_alloc and dce_free calls as before
thus maintiaining backward compatibility.

On the other hand, since the same interfaces are used for multiple remote
core targets, like IPU and DSP, MemHeader struture is upgraded to hold the
core for which the block of memory belongs to, to keep track of the core.

Hence all applications/Remote cores using this version of libdce should
recompile with the new MemHeader for proper functioning.

Dependent IPUMM patch: https://gerrit.ext.ti.com/gerrit/omap/#/c/12994/

Change-Id: If09a1039b5b16f3cc5ff0e9c6c598932d8a2ce3e
Signed-off-by: Pradeep Venkatasubbarao <pradeepv@ti.com>
Signed-off-by: Amarinder Bindra <a-bindra@ti.com>
Signed-off-by: Karthik Ramanan <a0393906@ti.com>
7 years ago[LIBDCE] Updating README 3.00.04.00
buddy.liong [Thu, 6 Mar 2014 16:14:23 +0000 (10:14 -0600)]
[LIBDCE] Updating README

XDCTOOLS version is updated from 3.25.04.88 to 3.25.05.94.

Change-Id: I94842de37a268d38cd6e32d09339a57ebbd9f7a4
Signed-off-by: buddy.liong <buddy.budiono@ti.com>
7 years ago[DCE_TEST] Dump output frames per user specified request for NON-TILER
Subash Lakkimsetti [Thu, 6 Mar 2014 18:32:55 +0000 (12:32 -0600)]
[DCE_TEST] Dump output frames per user specified request for NON-TILER

For NON-TILER case, dce_test is currently dumping a maximum of 300 frames. The change is to
dump output frames per user specified request on frames to write as done in TILER case

Change-Id: I224c9254140c6bc0804aa10b8c9560306fa78534
Signed-off-by: Subash Lakkimsetti <x0091084@ti.com>
7 years ago[LIBDCE] Rename Makefile to Makefile.qnx
buddy.liong [Wed, 29 Jan 2014 22:17:35 +0000 (16:17 -0600)]
[LIBDCE] Rename Makefile to Makefile.qnx

LIBDCE is common component for Linux, Android and QNX.
Linux is using automake tools which create a file by name
of Makefile which overwrite the Makefile intended for QNX.

Prior to this patch, the command to build LIBDCE for QNX:
Command to clean:
    make clean
Command to build:
    make
Command to build and install the output to install folder:
    make install

After this patch, the command to build LIBDCE for QNX:
Command to clean:
    make -f Makefile.qnx clean
Command to build:
    make -f Makefile.qnx
Command to build and install the output to install folder:
    make -f Makefile.qnx install

Change-Id: Iaa76d4d6c51a510dc6ccd19fdd45865c4cb46c18
Signed-off-by: buddy.liong <buddy.budiono@ti.com>
7 years ago[DCE_TEST] Clean up of OMAP5 flag for MPEG4 decoder.
buddy.liong [Wed, 29 Jan 2014 21:15:24 +0000 (15:15 -0600)]
[DCE_TEST] Clean up of OMAP5 flag for MPEG4 decoder.

MPEG4 decoder is defined by IPUMM with "ivahd_mpeg4dec" name.
Previously the name can be either "ivahd_mpeg4dec" or "ivahd_mpeg4vdec".
This patch to clean up so that it will only used "ivahd_mpeg4dec" for
OMAP5 or J6 which utilizes IPUMM image.

Change-Id: Iff92620f1d09a9700f8d460b7126f6e4b95ac248
Signed-off-by: buddy.liong <buddy.budiono@ti.com>
7 years ago[Fix] Hold mutex during Mmrpc_call
Pradeep Venkatasubbarao [Thu, 19 Dec 2013 13:20:33 +0000 (18:50 +0530)]
[Fix] Hold mutex during Mmrpc_call

There is a single IPC channel to communicate to IPU2
using Mmrpc calls. Any communication to remote proc
ipu2 gets routed through same channel. If mutiple
instances use IVAHD/DCE, all the packets get routed
through same channel. There is a possibility of corruption
 if the ipc calls are not serialised.

Hence this patch protects the Mmrpc_call function calls
with a mutex.

Change-Id: I3673ba76e52f03707277893cec07cff06abe8f1f
Signed-off-by: Pradeep Venkatasubbarao <pradeepv@ti.com>
7 years ago[Bug] Fix possible client count overflow
Pradeep Venkatasubbarao [Thu, 19 Dec 2013 12:45:30 +0000 (18:15 +0530)]
[Bug] Fix possible client count overflow

The number of existing clients already running was being incremented
and then checked for maximum clients allowed.
However in the error scenario i.e. when maximum allowed clients are already
running and the new incoming client connection request was rejected the
client count was incremented unconditionally and not rolled back to
previous value thus resulting in possible overflow error.

This patch fixes this erroneous case.

Change-Id: I3e2b2bebfd025ba6a99b7ef838537d9716154ca4
Signed-off-by: Pradeep Venkatasubbarao <pradeepv@ti.com>
7 years ago[LIBDCE] Clean up README and unsupported header files.
buddy.liong [Wed, 18 Dec 2013 19:18:47 +0000 (13:18 -0600)]
[LIBDCE] Clean up README and unsupported header files.

Updating README on the version information of headers included in
the packages folder.

Removal of h264svcenc, h264svcvdec, and vc1enc header files since it is
not supported in the current IPUMM.

Change-Id: I2bb140604a7c7d6e4ba7482a11ac43bc5076d9f6
Signed-off-by: buddy.liong <buddy.budiono@ti.com>
7 years ago[LIBDCE]: Changes to make Encoder and Decoder co-exist on Android
Sunita Nadampalli [Wed, 11 Dec 2013 19:22:38 +0000 (13:22 -0600)]
[LIBDCE]: Changes to make Encoder and Decoder co-exist on Android

In the current design omx video decoder is sending ptr for
inbufs and dma_buf_fd for the outbufs to the dce client.
In order to co-exist with encoder the inbufs/outbufs interpretation
is unified between encoder and decoder. this is achieved by
passing the memheader for both inbufs and outbufs for
both encoder and decoders.
This patch modified the process function to handle memheader
for all Android scenarios (inbufs/outbufs for encoder/decoder)
With this unified buf interpretation, the process function
simplified for Android.

Note# This patch has should be merged along with the omx patch:
http://review.omapzoom.org/#/c/34414/

Change-Id: Ia89ef9785ddf702bca986ce6b4a91983fb8bcc11
Signed-off-by: Sunita Nadampalli <sunitan@ti.com>
7 years agoMerge "[DSP]Added duplicate functions for buffer lock and unlock." 3.00.03.04
Buddy Liong [Fri, 6 Dec 2013 20:09:49 +0000 (14:09 -0600)]
Merge "[DSP]Added duplicate functions for buffer lock and unlock."

7 years ago[DSP]Added duplicate functions for buffer lock and unlock.
Pradeep Venkatasubbarao [Thu, 5 Dec 2013 12:19:48 +0000 (17:49 +0530)]
[DSP]Added duplicate functions for buffer lock and unlock.

This is required temporarily as there is no other way to
get the core index.dce_buf_lock and unlock functions expects
MmRpcHandle  and now as there are separate handles for DSP
and IPU, to avoid modifying these APIs, duplicate functions
have been created coreIndex is hardcoded.

Added prototypes of dsp specific lock and unlock functions
in libdce.h

Change-Id: I360632acd061f9e134c38bea009b1ad257e32bb8
Signed-off-by: Pradeep Venkatasubbarao <pradeepv@ti.com>
7 years ago[LIBDCE] Add non-TILER input buffer for dce_enc_test
buddy.liong [Wed, 4 Dec 2013 00:17:21 +0000 (18:17 -0600)]
[LIBDCE] Add non-TILER input buffer for dce_enc_test

Adding capability for the QNX dce_enc_test to use buffer
allocated through shmallocator instead of TILER memory on
the input buffer.

Fixing the submission on http://review.omapzoom.org/34254 as
originally it was pressumed that TI encoder codec required
the input to be 2D TILER buffer.

With this patch when executing dce_enc_test with "nontiler"
argument, the input and output buffers will be using the non TILER
(through shmallocator).

Change-Id: I14aff91a4f5491dd0efcab316d584585263fb666
Signed-off-by: buddy.liong <buddy.budiono@ti.com>
7 years ago[LIBDCE] Spacing and alignment clean up
buddy.liong [Wed, 4 Dec 2013 00:56:08 +0000 (18:56 -0600)]
[LIBDCE] Spacing and alignment clean up

Clean the spacing and alignment of tab to 4 spaces.

Change-Id: I62d75f0aef1a06858868458eedaf017f90f04ec4
Signed-off-by: buddy.liong <buddy.budiono@ti.com>
7 years agoAdded VIDDEC2 interfaces for DSP codecs
Pradeep Venkatasubbarao [Fri, 15 Nov 2013 11:05:01 +0000 (16:35 +0530)]
Added VIDDEC2 interfaces for DSP codecs

This patch adds VIDDEC2 interfaces and libdce now supports
both VIDDEC2 and VIDDEC3 interfaces. It initializes ipc based
on the server name(IVA or DSP).

Provisions are made to handle multiple instances of IPU and DSP codecs.

Change-Id: Ie1869e626423a6250983711114dc9d0854022309
Signed-off-by: Pradeep Venkatasubbarao <pradeepv@ti.com>
7 years ago[LIBDCE] Get codec version on dce_test and dce_enc_test
buddy.liong [Fri, 15 Nov 2013 23:39:49 +0000 (17:39 -0600)]
[LIBDCE] Get codec version on dce_test and dce_enc_test

Internal reference: DVT OMAPS00302159.

To add the capability for the QNX dce_test and dce_enc_test to
get the codec version through XDM_GETVERSION command of
codec_control.

Change-Id: Ia39aeb5b55d3b8aba9365ad6d4a4a63e4e44b8aa
Signed-off-by: buddy.liong <buddy.budiono@ti.com>
7 years ago[LIBDCE] Add non-TILER output buffer for dce_enc_test
buddy.liong [Tue, 12 Nov 2013 22:02:28 +0000 (16:02 -0600)]
[LIBDCE] Add non-TILER output buffer for dce_enc_test

Internal reference: DVT OMAPS00302160
To add capability for the QNX dce_enc_test to use buffer
allocated through shmallocator instead of TILER memory on
the output buffer.

For input buffer, based on the TI encoder codec user guide
document, it must be configured as 2D TILER buffer.

Change-Id: I0cdda0ff1ddc607f9df41172bc45b6cf3010b95f
Signed-off-by: buddy.liong <buddy.budiono@ti.com>
7 years ago[ANDROID] update make file for ipc 3.20.00.04_eng 3.00.03.03
Sunita Nadampalli [Wed, 6 Nov 2013 21:19:43 +0000 (15:19 -0600)]
[ANDROID] update make file for ipc 3.20.00.04_eng

In IPC 3.20.00.04_eng release, the MPU side ipc library
is split into mmrpc.lib and ti_ipc.lib to better maintain
mm and generic ipc stacks. Hence the dce make file needs to be
updated to link to mmrpc.lib

Change-Id: If5598fed13a864d62fdb0e0a4e06c16b862d7147
Signed-off-by: Sunita Nadampalli <sunitan@ti.com>
7 years ago[LIBDCE] Remove memcpy in read_input for dce_enc_test
Buddy Liong [Mon, 4 Nov 2013 17:38:17 +0000 (11:38 -0600)]
[LIBDCE] Remove memcpy in read_input for dce_enc_test

Remove memcpy in read_input() for dce_enc_test since it is not
needed.
In the current implementation, read_input() creates a temporary
buffer "pTmpBuffer" to store the input frame after reading for the
input file. Then it performs memcpy from "PTmpBuffer" into input Buffer in
TILER 2D which is passed down to IVA-HD video encoder.

The "pTmpBuffer" is allocated using calloc() which allocates space from
the heap which may/may not be contiguous.
During robustness test, it causes hang during memcpy which indicates that
QNX calloc doesn't allocate contiguous memory.

The solution is to read the input frame directly from the input file and
store directly into input Buffer in TILER 2D.

Additional clean up in removing unused TMPDUMPDATA and DUMPINPUTDATA0.

Internal reference: this solution fix the issue reported in
DRT OMAPS00300892.

Change-Id: If5f4941f4d2adc4a82ec4e60652d4792a72866d7
Signed-off-by: Buddy Liong <buddy.budiono@ti.com>
7 years ago[FIX][DCE_ENC_TEST] Allocate buffer for Motion vector and SAD
Subash Lakkimsetti [Mon, 4 Nov 2013 20:01:12 +0000 (14:01 -0600)]
[FIX][DCE_ENC_TEST] Allocate buffer for Motion vector and SAD

enableAnalyticinfo is enabled by default for MPEG4/H263 encode and the required MVInfo buffer is not allocated.
This leads to memory corruption in MPEG4/H263 codec for encode with certain resolutions on QNX platform.
Buffer handling is added for MVInfo buffer when enableAnalyticinfo is enabled.
enableAnalyticinfo is disabled by default for MPEG4/H263 encode case.

For Internal reference, it fixes the  DRT OMAPS00300892 - 720P video encode is not functional with MPEG4/H263

Change-Id: I13d5d61faf8352d884070c3e1f17bb7005157334
Signed-off-by: Subash Lakkimsetti <x0091084@ti.com>
7 years ago[Linux] Makefile updated to export xdais/fc header 3.00.03.02
Chandramohan [Thu, 19 Sep 2013 14:19:36 +0000 (19:49 +0530)]
[Linux] Makefile updated to export xdais/fc header

Makefile changes to export the framework component
and xdais header files.

Change-Id: I789c53d96ff43ed91bb70e0f774af5078a041365
Signed-off-by: Chandramohan <chandramohan.c@ti.com>
7 years agoAdd check for ownership for file descriptor
Amarinder Bindra [Wed, 25 Sep 2013 10:37:33 +0000 (16:07 +0530)]
Add check for ownership for file descriptor

Currently, the dce_deinit function deletes the file descriptor(fd) that
it uses for allocation of the buffers even if it has not created it.
This adds a check where it only deletes the fd only when the ownership
of fd is with libdce else it only deletes th device which it uses.
Also, add a check where the dce_set_fd sets the fd only if the drm
device fd is not already set to avoid memory leak.

Change-Id: Ie5e23f06a5d171f2c06f4bebb64b040915e71153
Signed-off-by: Amarinder Bindra <a-bindra@ti.com>
7 years agoconfigure.ac: Add test for cross-compiling.
Mrinmayee Hingolikar [Fri, 20 Sep 2013 06:26:19 +0000 (11:56 +0530)]
configure.ac: Add test for cross-compiling.

Since AC_CHECK_FILES macro doesn't work while cross-compiling.

Change-Id: I1913543e99d4e2423a4cf1cd15d5cc372d689318
Signed-off-by: Mrinmayee Hingolikar <mrinmayee@ti.com>
Signed-off-by: Amarinder Bindra <a-bindra@ti.com>
7 years ago[Linux] fixed an unreachable statement
Chandramohan [Thu, 19 Sep 2013 08:22:58 +0000 (13:52 +0530)]
[Linux] fixed an unreachable statement

Applications can optionally communicate the drm FD to libdce using
dce_set_fd before calling dce_init. In such cases dce_init will not
open a new DRM file descriptor. But for applications not using this
option, libdce will create a new fd for its use in dce_alloc.
The drmOpen call was unreachable in such cases and hence there was
an invalid handle. This patch fixes this issue of an unreachable
statement in dce_init

Change-Id: I4758416a7d34fff873c280f7583c05c1640c312b
Signed-off-by: Chandramohan <chandramohan.c@ti.com>
Signed-off-by: Amarinder Bindra <a-bindra@ti.com>
7 years ago[LIBDCE] Replace Semaphore with Mutex
Sunita Nadampalli [Thu, 26 Sep 2013 21:26:59 +0000 (16:26 -0500)]
[LIBDCE] Replace Semaphore with Mutex

This patch reverts the below commit:
"abd5152ca071e552954571862635666297221177
[LIBDCE] Mutual exclusion of Engine_open and Engine_close"
Description:
-----------
(1) The current semaphore logic doesn't protect the engine open/close
calls across processes. It is confirmed on QNX that two instances of
dce test app is creating two different instances of semaphore.
Hence, other than the delay the current semaphore doesn't add
any protection for the mutli process <-> multi instance scenarios.
(2) For the single process <-> multi instance scenario, it does protect
the engine open/close calls, but it fails due to lack of reference counting
And also, it is not sure why we need to protect the entire engine_open/close.
Hence the current semaphore is replaced with mutex to protect the ipc handle
create/close.

Change-Id: Ibdad089bdd39cd5afc813373e84bf91fa8920860
Signed-off-by: Sunita Nadampalli <sunitan@ti.com>
7 years ago[LIBDCE] Fix memory leak on dce_ipc_init failure
Sunita Nadampalli [Fri, 20 Sep 2013 22:18:49 +0000 (17:18 -0500)]
[LIBDCE] Fix memory leak on dce_ipc_init failure

On dce_ipc_init failure, we need to close the semaphore
that was already created successfully.

Change-Id: Id04ed4cae7e3dab6193e460b005580fac0c2edd4
Signed-off-by: Sunita Nadampalli <sunitan@ti.com>
7 years ago[LIBDCE][ANDROID] unify 1D output buffer support for Android/Linux
Sunita Nadampalli [Fri, 20 Sep 2013 20:52:55 +0000 (15:52 -0500)]
[LIBDCE][ANDROID] unify 1D output buffer support for Android/Linux

Android omx components are modified to support dma buf fd
for the output buffers, in all scenarios.
Hence Android specific changes are removed from libdce, and
enabled linux code for android as well.

Change-Id: I8bf86803b40702d28ba0c45fd829b35fb47445fd
Signed-off-by: Sunita Nadampalli <sunitan@ti.com>
7 years ago[LIBDCE] Add single planar output buffer support for Android
Sunita Nadampalli [Wed, 18 Sep 2013 18:46:41 +0000 (13:46 -0500)]
[LIBDCE] Add single planar output buffer support for Android

Android Thumbnail scenario allocates both input and out buffers
from ION carveout. A single buffer is allocated for both Y and UV,
with an offset for UV.
This patch adds support for single planar buffers with memheaders
required for the Android thumbnail scenario.

Change-Id: I18306d2b07fe89f667d3f04bf5769ef1f2585c9d
Signed-off-by: Sunita Nadampalli <sunitan@ti.com>
7 years agoAndroid.mk: Android make file update for new project path
Sunita Nadampalli [Wed, 18 Sep 2013 18:30:12 +0000 (13:30 -0500)]
Android.mk: Android make file update for new project path

make file is updated for the ipc and omx project paths.

Change-Id: I7b4f8583782d72181c40c248a28f165154e3423e
Signed-off-by: Sunita Nadampalli <sunitan@ti.com>
7 years ago[LIBDCE] Add TI License Header for the codec headers
Sunita Nadampalli [Fri, 13 Sep 2013 20:05:31 +0000 (15:05 -0500)]
[LIBDCE] Add TI License Header for the codec headers

Change-Id: I906358240c9e72529f80a1d13822cb0205d66caf
Signed-off-by: Sunita Nadampalli <sunitan@ti.com>
7 years ago[LIBDCE] Trace and Comments cleanup 3.00.03.00
Saurabh Bipin Chandra [Fri, 13 Sep 2013 06:26:54 +0000 (11:56 +0530)]
[LIBDCE] Trace and Comments cleanup

This patch:
1. replaces printf with trace MACROS.
2. Remove unwanted comments.

Change-Id: Id137603cbe947ca371550f594fc249d2f1b1410b
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
7 years ago[LINUX] Fix for memory allocation/free in buf_lock/unlock
Saurabh Bipin Chandra [Thu, 12 Sep 2013 16:08:38 +0000 (21:38 +0530)]
[LINUX] Fix for memory allocation/free in buf_lock/unlock

This patch makes the following changes within dce_buf_lock/unlock:
1. Changes API of memory allocation from memplugin_alloc
to malloc as Tiler/Shared memory is not needed
2. Frees the allocated memory at EXIT from function.

Change-Id: Id728abad86d4582f0e904f4c8680e99d47cb3a0a
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
7 years ago[LIBDCE] Add Android specific changes
Sunita Nadampalli [Fri, 13 Sep 2013 11:35:59 +0000 (06:35 -0500)]
[LIBDCE] Add Android specific changes

This patch adds changes specific to Android OS:
(1) Semaphore handling
(2) Input buffer offset handling

Change-Id: Id6232e0b90e638fd1268ccbfafb51c6ca916fad2
Signed-off-by: Sunita Nadampalli <sunitan@ti.com>
7 years ago[LIBDCE] Move semaphore handling into dce_sem_* methods
Sunita Nadampalli [Fri, 13 Sep 2013 11:28:28 +0000 (06:28 -0500)]
[LIBDCE] Move semaphore handling into dce_sem_* methods

Inorder to unify semaphore handling across multiple OSes
semphore calls are moved into dce_sem_* methods.

Change-Id: I32e8fc2ffdbf9ee91365923a28dded7f1d8784ce
Signed-off-by: Sunita Nadampalli <sunitan@ti.com>
7 years ago[LIBDCE] Add support for offset within the xlation buffers
Sunita Nadampalli [Thu, 12 Sep 2013 16:01:16 +0000 (11:01 -0500)]
[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>
7 years ago[LIBDCE] update memplugin headers and apis
Sunita Nadampalli [Fri, 13 Sep 2013 11:05:29 +0000 (06:05 -0500)]
[LIBDCE] update memplugin headers and apis

memheader and memplugin apis are extended to meet the
requirements for mem allocations/free/share for all OSes.

Change-Id: Ide911d1654ccd0807ace37de9576299cbb860d07
Signed-off-by: Sunita Nadampalli <sunitan@ti.com>
7 years ago[DOC] Update ReadMe 3.00.02.00
Saurabh Bipin Chandra [Fri, 6 Sep 2013 12:01:06 +0000 (17:31 +0530)]
[DOC] Update ReadMe

ReadMe now contains:
1. Build Information for QNX
2. Build Information for Linux
3. API Information
4. API call flow
5. Version Info of headers in
   packages folder.

Change-Id: If76f6bae18bfac0cb9c6d918d365f5263c539d0d
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
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 <pradeepv@ti.com>
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:
nto
dce_test arm folder
dce_enc_test arm folder

Change-Id: I146219e389c84567cf47d116d4fe6b9cc258607d
Signed-off-by: Buddy Liong <a0270631@ti.com>
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 <a0131926@ti.com>
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 <a0131926@ti.com>
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
for the CE, XDAIS, XDCTOOLS and IVAHD_CODECS.

2. Since xdc_target_types__ is defined as gnu/targets/std.h
in libdce.h, the definition has been removed
rom the common.mk 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 <a0131926@ti.com>
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 <x0203598@ti.com>
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 Makefile.am 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 <x0203598@ti.com>
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 <a0131926@ti.com>
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 <a0131926@ti.com>
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:

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

IVAHD_Codecs:
H.264 Dec  : 02.00.13.00
MJPEG Dec  : 01.00.11.01
MPEG-4 Dec : 01.00.13.00
VC-1 Dec   : 01.00.00.11
MPEG-2 Dec : 01.00.12.00
SVC Dec    : 00.06.00.00
H.264 Enc  : 02.00.06.01
MJPEG Enc  : 01.00.02.01
SVC Enc    : 00.02.00.05

Change-Id: Id2307e2376d3ba0c13464c1b21cdba53d8f997f2
Signed-off-by: Sunita Nadampalli <sunitan@ti.com>
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
   instances.
   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
   instances.

Change-Id: Ia4d31582ebf0536142dee389e9601eae0169fb22
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
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 <a0131926@ti.com>
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
libdce_linux.c.
It also takes in the DRM Initialization cleanup
changes in dce_init from:
https://gerrit.ext.ti.com/gerrit/omap/#/c/12888

Change-Id: I570341c8dfbe1d120bc89071a86020b6ba5d4cac
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>