5 years agoCodec Update
Veeranna Hanchinal [Wed, 30 Mar 2016 05:37:56 +0000 (11:07 +0530)]
Codec Update

Codec Name: MJPEG Decoder
Codec Version:

The updated codec information:
* MJPEGD version fix SDOCM00121763
MJPEG decoder hangs in VDMA for particular multiscan

Signed-off-by: Veeranna Hanchinal <veeranna.hanchinal@ti.com>
5 years agoIntegration with IPC
Buddy Liong [Mon, 14 Mar 2016 20:47:25 +0000 (15:47 -0500)]
Integration with IPC

Integrating IPUMM with:
IPC ipc_3_42_01_03

Change-Id: I010016dbdce7e5d3e4770707cf4a0dd86718f753
Signed-off-by: Buddy Liong <a0270631@ti.com>
5 years agoIntegration with IPC, BIOS 6.45, XDC 3.32
Buddy Liong [Mon, 8 Feb 2016 20:46:06 +0000 (14:46 -0600)]
Integration with IPC, BIOS 6.45, XDC 3.32

Integrating IPUMM with:
IPC ipc_3_42_00_02
XDC xdctools_3_32_00_06_core
BIOS bios_6_45_01_29
CGT ARM 5.2.7

Change-Id: I0ca568dcb0bb185ec8d9faae9ae99b1ed3530721
Signed-off-by: Buddy Liong <a0270631@ti.com>
5 years agoH.264 Low Latency - sync put_DataFxn to MPU side
Buddy Liong [Fri, 5 Feb 2016 22:53:27 +0000 (16:53 -0600)]
H.264 Low Latency - sync put_DataFxn to MPU side

Prior to this, DCE Server returns H264D_PutDataFxn() to codec as
soon as put_DataFxn() has been sent to MPU side (libdce client).
This become an issue when codec has sent the last H264D_PutDataFxn()
which will return the VIDDEC3_process call.
On the MPU side, it is still busy processing the put_DataFxn() and
when MPU is receiving VIDDEC3_process, it stops the put_DataFxn() and
there could be one more put_DataFxn that needs to be processed.

Because of this there is an issue of numBlocks corruption.

The solution is to make sure DCE Server doesn't return H264D_PutDataFxn()
to codec unless MPU side (libdce client) has come with the next
Basically DCE Server needs to make sure that MPU side has processed
the data in H264D_PutDataFxn() before return it to codec.
This is track in a variable "putdata_toclient".

When codec returns VIDDEC3_process(), DCE Server needs to set
the variable "putData_endprocess" so that the next put_DataFxn()
will return numBlocks = 0.
This will allow MPU side (libdce client) to stop sending put_DataFxn().

Change-Id: Ied8c03eec8d4934eb1218f8687ad5cff6d17d57f
Signed-off-by: Buddy Liong <a0270631@ti.com>
5 years agoHandling when MPU crashes, eg. CTRL-C on MPU side.
Buddy Liong [Thu, 7 Jan 2016 21:28:41 +0000 (15:28 -0600)]
Handling when MPU crashes, eg. CTRL-C on MPU side.

During low latency encode and decode, when MPU is crashing
DCE server is not handling the clean up properly which can cause
the system to hang afterward.

Based on the information from the codec support, since process call
is in blocked state, the client needs to send proper numBlocks for
codec to return the process call properly.

In H.264 low latency encoder, codec will call function callback
H264E_GetDataFxn to get the numBlocks, when MPU has crashed, DCE
server needs to propagate the numBlocks to codec so that codec can
proceed and return the process call.
There are 2 alternatives, one is to return proper numBlocks based
on resolution, the other is to return bogus numBlocks which is big
enough for codec to detect an error and return the process call.
This task implements the returning bogus '100' numBlocks to codec
because the implementation for proper numBlocks requires some
calculation to be implemented and the input buffer will not have
proper data anyway.

In H.264 low latency decoder, codec will call function callback
H264D_PutDataFxn to post the numBlocks to client, when MPU has
crashed, DCE server should ignore this information and return
immediately. There could be multiple callback from codec until codec
reach the proper numBlocks and DCE server should ignore and return

Change-Id: I56c0f3b5792504e18d2fb2a57a3c34d26f0b55e5
Signed-off-by: Buddy Liong <a0270631@ti.com>
5 years agoH.264 low latency - IVIDEO_NUMROWS
Buddy Liong [Tue, 24 Nov 2015 19:46:22 +0000 (13:46 -0600)]
H.264 low latency - 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
* H.264 Encoder 2.0 on HDVICP2 and Media Controller Based Platform
  User's Guide (SPRUHG3), Appendix G - Low Latency / Sub Frame Level
* H.264 Decoder 2.0 on HDVICP2 and Media Controller Based Platform
  User's Guide (SPRUHF9), Appendix I - Low Latency / Sub Frame Level

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 changes depend on the changes done on LIBDCE DCE client:
H.264 low latency with IVIDEO_NUMROWS

Change-Id: I59c309dba8bd8d3cd1dc519340d494931f0efe3e
Signed-off-by: Buddy Liong <a0270631@ti.com>
5 years agoHandling error in ivahd_init
Buddy Liong [Sun, 28 Feb 2016 00:40:06 +0000 (18:40 -0600)]
Handling error in ivahd_init

In ivahd_init, when RMAN_init() or RMAN_register() fails, there is
no proper cleanup.
Adding proper cleanup when those functions are failing.

Change-Id: I2a644578cc9721e17129cb243baabc67923ee575
Signed-off-by: Buddy Liong <a0270631@ti.com>
5 years agoMove DEBUG outside Hwi
Buddy Liong [Sun, 28 Feb 2016 00:32:20 +0000 (18:32 -0600)]
Move DEBUG outside Hwi

In ivahd_acquire and ivahd_release, Hwi_disable and Hwi_restore
are called. There is DEBUG being called when Hwi is disable.
This could be a problem as we don't want to disable Hwi for too long.

The patch is to perform register update when Hwi is disable.

Change-Id: I9bfaee561e57ce0edc66fcabbdf0d32bd8d9bc24
Signed-off-by: Buddy Liong <a0270631@ti.com>
5 years agoBefore IPU2 crashed, performs crash_reset to reset IVA-HD
Buddy Liong [Mon, 22 Feb 2016 15:08:29 +0000 (09:08 -0600)]
Before IPU2 crashed, performs crash_reset to reset IVA-HD

When BIOS detected a crash, adding a callback into System.abortFxn
to call crash_reset.
In crash_reset, it will perform clean up and release the IVA
subsystem resets by asserting reset for RST_LOGIC (IVA Logic and SL2),
RST_SEQ2 (IVA Sequencer CPU2) and RST_SEQ1 (IVA Sequencer CPU1).

When IPU comes back up, ivahd_init() will perform the iva_boot().
The RM_IVA_RSTCTRL will be the same as when it is power on boot.

Change-Id: Ice1b0a318fd00a3a88cbd5ce0cf1c54130823c4c
Signed-off-by: Buddy Liong <a0270631@ti.com>
5 years ago[MPEG2D] Codec Update
Veeranna Hanchinal [Wed, 24 Feb 2016 10:08:00 +0000 (15:38 +0530)]
[MPEG2D] Codec Update

Codec Name: MPEG2 Decoder
Codec Version:

The updated codec information:
 * MPEG2D version fix OMAPS00331190
   Codec sets error in case of 1-referece B-frame
   in closedGop.

Signed-off-by: Veeranna Hanchinal <veeranna.hanchinal@ti.com>
5 years ago[H264D] Codec Update
Buddy Liong [Tue, 9 Feb 2016 19:51:13 +0000 (13:51 -0600)]
[H264D] Codec Update

Codec Name: H264 Decoder
Codec Version:

The updated codec information:
* H264D version fix OMAPS00330524
In multichannel case H.264 decoder hangs if run with multiple codes
with H.264 decoder as more than 2 channels after FLUSH call.

Signed-off-by: Buddy Liong <a0270631@ti.com>
5 years ago[MJPEGD] Codec Update
Buddy Liong [Tue, 9 Feb 2016 19:04:43 +0000 (13:04 -0600)]
[MJPEGD] Codec Update

Codec Name: MJPEG Decoder
Codec Version:

The updated codec information:
* MJPEGD version fix OMAPS00326670
In nonstandard format image, wrong updating of VLD table, resulting
decoder hang.

* SDOCM00120649
In case of any Header Error, outputID is assigned.

Signed-off-by: Buddy Liong <a0270631@ti.com>
5 years ago[H264D] Codec Update
Buddy Liong [Tue, 9 Feb 2016 17:23:10 +0000 (11:23 -0600)]
[H264D] Codec Update

Codec Name: H264 Decoder
Codec Version:

The updated codec information:
* H264D version fix OMAPS00328313
When player is paused for more than 10 seconds, screen freezes.

* SDOCM00121006
Decoder sets correct handle when it calls putDataFxn callback.

Signed-off-by: Buddy Liong <a0270631@ti.com>
5 years ago[MPEG2D] Codec Update
Buddy Liong [Tue, 19 Jan 2016 19:00:00 +0000 (13:00 -0600)]
[MPEG2D] Codec Update

Codec Name: MPEG2 Decoder
Codec Version:

The updated codec information:
* MPEG2D version fix OMAPS00330418
  Decoder releases the output buffer twice when
  Flush is applied before a B frame.

Signed-off-by: Buddy Liong <a0270631@ti.com>
5 years ago[VC1D] Codec Update
Buddy Liong [Tue, 19 Jan 2016 18:42:45 +0000 (12:42 -0600)]
[VC1D] Codec Update

Codec Name: VC1 Decoder
Codec Version:

The updated codec information:
* VC1D version fix OMAPS00328894
  During FF/REW, screen becomes GRAY.

Signed-off-by: Buddy Liong <a0270631@ti.com>
5 years ago[H264D] Codec Update
Buddy Liong [Tue, 19 Jan 2016 18:09:12 +0000 (12:09 -0600)]
[H264D] Codec Update

Codec Name: H.264 Decoder
Codec Version:

The updated codec information:
* H.264D version fix SDOCM00119802
  Display Frames are out of order with display-delay 2

Signed-off-by: Buddy Liong <a0270631@ti.com>
5 years ago[Config] Removal of CE and FC requires line in package.xdc
Buddy Liong [Tue, 17 Nov 2015 19:46:25 +0000 (13:46 -0600)]
[Config] Removal of CE and FC requires line in package.xdc

In yocto build, DSPDCE and IPUMM are built in parallel.
Issue happens when both are built at the same time since both
has requires line in package.xdc

requires ti.sdo.ce;
requires ti.sdo.ce.video2;
requires ti.sdo.ce.universal;
requires ti.sdo.fc.utils;

This patch removes the requires lines and add into dce_ipu.cfg to
load the XDC package for FC utils.

Signed-off-by: Buddy Liong <a0270631@ti.com>
5 years agoUpdate Makefile to use IPC
Buddy Liong [Fri, 2 Oct 2015 19:58:07 +0000 (14:58 -0500)]
Update Makefile to use IPC

Modify the IPC version to use IPC
This commit will be tag with as well

Signed-off-by: Buddy Liong <a0270631@ti.com>
5 years agoUpdate the version on QNX custom resource table
Buddy Liong [Wed, 9 Sep 2015 14:56:25 +0000 (09:56 -0500)]
Update the version on QNX custom resource table

When adding qnx_custom_rsc_table_vayu_ipu.h, the resource table version
was set to 2 which is not correct as the definition for the version is used
to differentiate the changes in the format of the resource table, not based
on its contents. Update the version of QNX custom resource table to 1.

Signed-off-by: Buddy Liong <a0270631@ti.com>
5 years agoFirst ipumm component to public git.ti.com
Buddy Liong [Mon, 21 Sep 2015 15:29:17 +0000 (10:29 -0500)]
First ipumm component to public git.ti.com

ipumm component is part of TI Multimedia component to utilize
Hardware Video Accelerated Video codecs in IVA-HD. It contains the server
side of Distributed Codec Engine to utilize the HW codecs.
The client side of ipumm is libdce and it is currently held publically at

ipumm component was previously maintained privately; only customers with
NDA were able to get the source code.

This is the first release of ipumm to public at git.ti.com
The license and software manifest for this ipumm component is included
at the top level of directory:
software license: SRAS 2087-308454-v1-IPUMM_TSPA_License.pdf
software manifest: Texas_Instruments_ipumm_Manifest.pdf

For internal reference:
Original repo is maintained in gerrit.ext.ti.com/gerrit/omap
Project name: ipumm
The last TAG version before moving to git.ti.com is

This first ipumm component will be tag the same as

Signed-off-by: Buddy Liong <buddy.liong@ti.com>