ivimm/ipumm.git
3 years agoIntegration with IPC 3.47.01.00 3.00.15.00
Buddy Liong [Thu, 8 Mar 2018 18:11:20 +0000 (12:11 -0600)]
Integration with IPC 3.47.01.00

Updated Makefile and common.bld

Change-Id: Ib0d9d55208e9850ce8b413c2a00bc11868ba32a6
Signed-off-by: Buddy Liong <a0270631@ti.com>
3 years agoCodec Update 01.00.02.06
Amai Prashanth Kumar [Tue, 26 Dec 2017 13:19:57 +0000 (18:49 +0530)]
Codec Update 01.00.02.06

Codec Name: VC1 Decoder
Codec Version: 01.00.02.06

The updated codec information:
* VC1D 01.00.02.06 version fix PSDKLA-3933
* IVAHD hangs with trick-play scenario.

Change-Id: I7b1d119ee45b261680bfa10653e12eb1d834d4d2
Signed-off-by: Amai Prashanth Kumar <x0270680@ti.com>
Signed-off-by: Subash Lakkimsetti <x0270680@ti.com>
3 years ago[MPEG4D] Codec Update 01.00.16.01
Amai Prashanth Kumar [Tue, 12 Dec 2017 08:54:55 +0000 (14:24 +0530)]
[MPEG4D] Codec Update 01.00.16.01

Codec Name: MPEG4 Decoder
Codec Version: 01.00.16.01

The updated codec information:
* Issue with FLUSH during Dynamic
  Resolution change.

Change-Id: I3ea738f47a8014208db3446c05450ff4d631900d
Signed-off-by: Amai Prashanth Kumar <x0270680@ti.com>
3 years agoAdd profiler to measure based on IVA-HD processing time
Buddy Liong [Tue, 24 Oct 2017 17:04:01 +0000 (12:04 -0500)]
Add profiler to measure based on IVA-HD processing time

When running with QNX test app, we are not able to get a good data
on IVA fps because the Profiler calculation is including the time at MPU
side. With QNX test app, there are more time spend on MPU side due to
file reading to an input buffer.

Previously the calculation is only based on the Total time which is the time
on both MPU and IVA.
This commit adds additional profiler to be based only on the IVA processing time.
The total IVA processing time is calculated based on the accumulation of time before
calling codec and after codec process is completed.

Change-Id: Ie754b156faa8d8ba508981d5b74bdb70518517cb
Signed-off-by: Buddy Liong <a0270631@ti.com>
3 years agoMerge new history into old
Buddy Liong [Wed, 22 Nov 2017 20:10:45 +0000 (14:10 -0600)]
Merge new history into old

3 years agoIntegration with IPC 3.47, BIOS 6.52, and XDC 3.50 3.00.14.00
Buddy Liong [Fri, 22 Sep 2017 17:06:28 +0000 (12:06 -0500)]
Integration with IPC 3.47, BIOS 6.52, and XDC 3.50

    Updated build tools based on IPC release 3.47.00.00:
    BIOS 6.52.00.12
    XDCTools 3.50.03.33

Change-Id: I0cefb01431e2f5291186bd8c4863a016502aa4a0
Signed-off-by: Buddy Liong <a0270631@ti.com>
3 years agoIntegration with IPC 3.45, BIOS 6.46, and XDC 3.32 3.00.13.00
Buddy Liong [Thu, 16 Feb 2017 19:09:05 +0000 (13:09 -0600)]
Integration with IPC 3.45, BIOS 6.46, and XDC 3.32

Updated build tools based on IPC release 3.45.00.00:
BIOS 6.46.01.38
XDCTools 3.32.01.22

Change-Id: I1e1c0f24ad050fe4a00ccaeb017e0f569e0e6e37
Signed-off-by: Buddy Liong <a0270631@ti.com>
3 years ago[MJPEGE] Codec Update 01.00.17.01
Veeranna Hanchinal [Tue, 7 Feb 2017 12:50:50 +0000 (18:20 +0530)]
[MJPEGE] Codec Update 01.00.17.01

Codec Name: MJPEG Encoder
Codec Version: 01.00.17.01

The updated codec information:
* MJPEGE 01.00.17.01 version fix CODECS-2428
Jpeg encoder symbol conflicts with Jpeg decoder.

Change-Id: I6b38e7f3f4b8a9bebd17339061f75a7319a2d0a6
Signed-off-by: Veeranna Hanchinal <veeranna.hanchinal@ti.com>
3 years ago[MPEG2D] Codec Update 01.00.17.01
Veeranna Hanchinal [Wed, 23 Nov 2016 13:53:29 +0000 (19:23 +0530)]
[MPEG2D] Codec Update 01.00.17.01

Codec Name: MPEG2 Decoder Codec

Version: 01.00.17.01

The updated codec information: MPEG2D 01.00.17.01 version fix
CODECS-2427 MPEG2Decoder expects output buffer to be sent for parsing the header.

Change-Id: I6621406e98d1c422f86b74208c73645976f608da
Signed-off-by: Veeranna Hanchinal <veeranna.hanchinal@ti.com>
Signed-off-by: Subash Lakkimsetti <lsubash@ti.com>
3 years agoCheck maxHeight condition only when codec_id is VIDDEC3
Hongmei Gou [Tue, 8 Nov 2016 17:36:08 +0000 (12:36 -0500)]
Check maxHeight condition only when codec_id is VIDDEC3

Change-Id: I28e12d5a132382e83ba5a1daffb91a16a66106b5
Signed-off-by: Hongmei Gou <h-gou@ti.com>
3 years ago[MJPEGE] Integrated new codec 01.00.16.01
Hongmei Gou [Tue, 8 Nov 2016 17:30:59 +0000 (12:30 -0500)]
[MJPEGE] Integrated new codec 01.00.16.01

Codec Name: MJPEG Encoder
Codec Version: 01.00.16.01

This commit integrated MJPEG encoder into IPUMM.

Change-Id: I46924323857c5244567172ada1cd476431cff838
Signed-off-by: Hongmei Gou <h-gou@ti.com>
3 years agoFramework changes for adding JPEG encoder
Hongmei Gou [Tue, 8 Nov 2016 17:26:20 +0000 (12:26 -0500)]
Framework changes for adding JPEG encoder

Integrating MJPEG encoder into IPUMM.

Change-Id: I6fbf177e3b10c64f715a4303cc5ce75039cd2193
Signed-off-by: Hongmei Gou <h-gou@ti.com>
3 years agoUpdate manifest and license to add MJPEGE
Buddy Liong [Thu, 17 Nov 2016 15:27:27 +0000 (09:27 -0600)]
Update manifest and license to add MJPEGE

Modification on manifest and license to add MJPEG Encoder codec
library.

Signed-off-by: Buddy Liong <a0270631@ti.com>
3 years agoIntegration with IPC 3.43.03.05 and FC 3.40.02.07 3.00.12.00
Buddy Liong [Thu, 6 Oct 2016 15:28:20 +0000 (10:28 -0500)]
Integration with IPC 3.43.03.05 and FC 3.40.02.07

Integrating IPUMM with:
IPC ipc_3_43_03_05
Framework Component framework_components_3_40_02_07

Signed-off-by: Buddy Liong <a0270631@ti.com>
3 years agoCodec Update 01.00.02.05
Veeranna Hanchinal [Thu, 6 Oct 2016 09:09:27 +0000 (14:39 +0530)]
Codec Update 01.00.02.05

Codec Name: VC1 Decoder
Codec Version: 01.00.02.05

The updated codec information:
* VC1D 01.00.02.05 version fix CODECS-2418
Modified the default value of
frameLayerDataPresentFlag in baseclass params.

Signed-off-by: Veeranna Hanchinal <veeranna.hanchinal@ti.com>
3 years agoCodec Update 02.00.21.01
Veeranna Hanchinal [Fri, 23 Sep 2016 05:53:19 +0000 (11:23 +0530)]
Codec Update 02.00.21.01

Codec Name: H264 Decoder
Codec Version: 02.00.21.01

The updated codec information:
* H264D 02.00.21.01 version fix OMAPS00337101/CODECS-2421
Added support for wrongly encoded uuid_iso_iec_11578 data
for USER DATA UNREGISTERED SEI.

Signed-off-by: Veeranna Hanchinal <veeranna.hanchinal@ti.com>
3 years agoInvalidating parameter buffers for codec_get_version
Subash Lakkimsetti [Mon, 29 Aug 2016 16:28:55 +0000 (11:28 -0500)]
Invalidating parameter buffers for codec_get_version

Previously version_buf pointer is set to buffer pointer (data.buf)
of (IVIDDEC3_Status *) status.
The pointer dyn_params and status are not cache invalidated first which
can cause the status->data.buf to be accessed without cache invalidation.
Due to this corruption, it can cause exception on IPUMM.

The solution is to cache invalidate the dyn_params and status pointer
first to get the valid pointer of dyn_params and status.
Then set the version_buf with status->data.buf.
Perform cache invalidation on the version_buf to get the valid pointer.

Change-Id: I3258cca0ee191c488fc6457391215b8bfcde3b85
Signed-off-by: Subash Lakkimsetti <x0091084@ti.com>
3 years agoRun dce_init on Task thread
Buddy Liong [Thu, 28 Jul 2016 19:04:24 +0000 (14:04 -0500)]
Run dce_init on Task thread

Previously dce_init() is configured as the BIOS UserStartupFunction or
started when BIOS_start() is called.
This is configured in \src\ti\framework\dce\package.xs

The assumption is that IpcMgr_rpmsgStartup() is also configured as the
BIOS UserStartupFunction or started when BIOS_start() is called.
This is configured in \platform\ti\dce\baseimage\dce_ipu.cfg

If IPC API IpcMgr_rpmsgStartup() is not configured as BIOS UserStartupFunction
but instead it was called from a Task thread, then dce_init has to be delayed
until RPMessage_init() which is called in IpcMgr_rpmsgStartup() is completed.
Otherwise rpmsg-dce and dce_callback thread in dce_init() will be failing
since the RPMSG is not configured yet.

This patch removes dce_init() from BIOS UserStartupFunction. It will now be
called from IPUMM_Main()

Change-Id: I6d2cb8f4cf55d72c25eb867ad48ed7e2710efb4b
Signed-off-by: Buddy Liong <a0270631@ti.com>
3 years agoMakefile and common.bld update for IPUMM 3.00.11.00 3.00.11.00
Buddy Liong [Tue, 5 Jul 2016 18:48:12 +0000 (13:48 -0500)]
Makefile and common.bld update for IPUMM 3.00.11.00

Updated MJPEG codec version.
Updated the IPUMM and IPC version.

Change-Id: I7d08112be3222516e95d3b92788349b3009c51f0
Signed-off-by: Buddy Liong <a0270631@ti.com>
3 years agoUpdate IPUMM Manifest document
Buddy Liong [Tue, 5 Jul 2016 19:05:13 +0000 (14:05 -0500)]
Update IPUMM Manifest document

Updating the IPUMM Manifest to reflect the generic
version of the component instead of the specific
version to allow patches update without the need
to update the IPUMM Manifest document.

Signed-off-by: Buddy Liong <a0270631@ti.com>
3 years agodce_register_codec shouldn't be called when codec_create returns NULL
Buddy Liong [Thu, 30 Jun 2016 16:51:36 +0000 (11:51 -0500)]
dce_register_codec shouldn't be called when codec_create returns NULL

Prior to this patch, when codec_create fails and return NULL VIDDEC3_Handle.
DCE will still caling dce_register_codec with NULL data which is not
necessary. When dce_register_codec return < 0, it continue processing for
low latency mode, which is also not necessary.

This patch check on VIDDEC3_Handle to make sure it is not NULL before
calling dce_register_codec. It also moves the processing for low latency
mode to be executed only when dce_register_codec is successful.

Change-Id: I4b8fba03272c3d7c825a0bdbe813e74e04aaf555
Signed-off-by: Buddy Liong <a0270631@ti.com>
3 years agodce_register_engine shouldn't be called when Engine_open returns NULL
Buddy Liong [Thu, 30 Jun 2016 16:11:22 +0000 (11:11 -0500)]
dce_register_engine shouldn't be called when Engine_open returns NULL

Prior to this patch, when Engine_open fails and return NULL Engine_Handle.
DCE will still caling dce_register_engine with NULL data which is not
necessary. The only issue here is that the c->refs count will be invalid.

This patch check on Engine_Handle to make sure it is not NULL before
calling dce_register_engine

Change-Id: I07680326ef991dbf32d9c7ceb2a1877bbd368f29
Signed-off-by: Buddy Liong <a0270631@ti.com>
3 years agoSynchronizing client requests from IPC3.x using semaphore
Buddy Liong [Fri, 24 Jun 2016 18:53:32 +0000 (13:53 -0500)]
Synchronizing client requests from IPC3.x using semaphore

When client is processing multiple requests for different
process task, IPC3.x doesn't provide the protection to synchronize
the request. This can potentially result in corruption in FC
as multiple requests can come at the same time.
As an example, when 2 clients are requesting codec_process and codec_delete
at the same time, at a very small window FC might think that there are still 2 clients but
somehow one of the alg gets deleted.

Adding the semaphore on the multiple requests (engine_open,
engine_close, codec_create, codec_control, codec_get_version, codec_process,
codec_delete, and dce_SrvDelNotification) to protect the client requests
to be synchronous.
There is no need to add semaphore for get_rporc_info() because the
function is only getting the statistical information from BIOS
utils component.

Change-Id: I80d2899cd6e3c5ac2392bf1fd79e7bcded07c52c
Signed-off-by: Buddy Liong <a0270631@ti.com>
3 years agoget_rproc_info: Introduce new API to query remoteproc
Buddy Liong [Fri, 17 Jun 2016 14:58:44 +0000 (09:58 -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 would require a corresponding change in the
libdce as well.

Change-Id: Ie7461b9597bd8d8d6d2e9bca73c67ef9d91a6351
Signed-off-by: Karthik Ramanan <a0393906@ti.com>
Signed-off-by: Buddy Liong <a0270631@ti.com>
3 years agoAdd Separate Library Build
Angela Stegmaier [Mon, 4 Apr 2016 17:38:59 +0000 (12:38 -0500)]
Add Separate Library Build

Add "lib" build that allows only the baselib to be built instead
of both the library and executable. This saves build time if the
executable is not needed (for example if IPUMM is being linked
into another image).

Change-Id: Ic509bd08147652938e7cfc6149d348a26b9fa131
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
3 years agoRemove Hard-codings of IVAHD addresses
Angela Stegmaier [Wed, 27 Jan 2016 17:45:47 +0000 (11:45 -0600)]
Remove Hard-codings of IVAHD addresses

Remove the hard-codings of IVAHD addresses and instead
use the IPC3 Resource_physToVirt() call to get the correct
virtual address. In this way, changes to the resource
table don't require changes in the code.

Change-Id: I874afeb59fb66f8dba1d56e252c2b1ad217f20cb
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
3 years agoCreate an ipumm library with a single entry point
Angela Stegmaier [Mon, 11 Jan 2016 17:32:22 +0000 (11:32 -0600)]
Create an ipumm library with a single entry point

Created a library "ipu.aem4" with a single entry point "IPUMM_Main".
Main source files are moved to a folder named "baselib".
The baseimage is still built by linking with the baselib library and
then calling the main function that is included in this library.

Change-Id: Ieee7b011e06119397dd108ae9ea3e9c03fc8762d
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
3 years ago[MJPEGD] Codec Update 01.00.16.01
Veeranna Hanchinal [Tue, 12 Apr 2016 15:43:04 +0000 (21:13 +0530)]
[MJPEGD] Codec Update 01.00.16.01

Codec Name: MJPEG Decoder
Codec Version: 01.00.16.01

The updated codec information:
* MJPEGD 01.00.16.01 version fix OMAPS00332548
Added Support for missing Huffman-Table in
Encoded MJPEG streams.

Signed-off-by: Veeranna Hanchinal <veeranna.hanchinal@ti.com>
3 years agoChange sync_process_mutex to a Semaphore
Angela Stegmaier [Tue, 29 Mar 2016 19:19:42 +0000 (14:19 -0500)]
Change sync_process_mutex to a Semaphore

A pthread_mutex cannot be locked and unlocked from a Task
context (only from a pthread context). Since IPUMM and IPC
only use Tasks, pthread_mutex cannot be used for synchronization.
Instead, use the SYS/BIOS Semaphore implementation.

Change-Id: I2121736b16255facdf40ff96423eda5936190c17
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
3 years agoCodec Update 01.00.15.01
Veeranna Hanchinal [Wed, 30 Mar 2016 05:37:56 +0000 (11:07 +0530)]
Codec Update 01.00.15.01

Codec Name: MJPEG Decoder
Codec Version: 01.00.15.01

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

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

Integrating IPUMM with:
IPC ipc_3_42_01_03

Change-Id: I010016dbdce7e5d3e4770707cf4a0dd86718f753
Signed-off-by: Buddy Liong <a0270631@ti.com>
3 years agoIntegration with IPC 3.42.00.02, BIOS 6.45, XDC 3.32 3.00.10.00
Buddy Liong [Mon, 8 Feb 2016 20:46:06 +0000 (14:46 -0600)]
Integration with IPC 3.42.00.02, 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>
3 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
put_DataFxn().
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>
3 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
immediately.

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

Codec Name: MPEG2 Decoder
Codec Version: 01.00.16.01

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

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

Codec Name: H264 Decoder
Codec Version: 02.00.20.01

The updated codec information:
* H264D 02.00.20.01 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>
3 years ago[MJPEGD] Codec Update 01.00.14.01
Buddy Liong [Tue, 9 Feb 2016 19:04:43 +0000 (13:04 -0600)]
[MJPEGD] Codec Update 01.00.14.01

Codec Name: MJPEG Decoder
Codec Version: 01.00.14.01

The updated codec information:
* MJPEGD 01.00.14.01 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>
3 years ago[H264D] Codec Update 02.00.19.01
Buddy Liong [Tue, 9 Feb 2016 17:23:10 +0000 (11:23 -0600)]
[H264D] Codec Update 02.00.19.01

Codec Name: H264 Decoder
Codec Version: 02.00.19.01

The updated codec information:
* H264D 02.00.19.01 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>
3 years ago[MPEG2D] Codec Update 01.00.15.01
Buddy Liong [Tue, 19 Jan 2016 19:00:00 +0000 (13:00 -0600)]
[MPEG2D] Codec Update 01.00.15.01

Codec Name: MPEG2 Decoder
Codec Version: 01.00.15.01

The updated codec information:
* MPEG2D 01.00.15.01 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>
3 years ago[VC1D] Codec Update 01.00.02.04
Buddy Liong [Tue, 19 Jan 2016 18:42:45 +0000 (12:42 -0600)]
[VC1D] Codec Update 01.00.02.04

Codec Name: VC1 Decoder
Codec Version: 01.00.02.04

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

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

Codec Name: H.264 Decoder
Codec Version: 02.00.18.01

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

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

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

Signed-off-by: Buddy Liong <a0270631@ti.com>
3 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>
3 years agoFirst ipumm component to public git.ti.com 3.00.09.00
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
http://git.omapzoom.org/?p=repo/libdce.git;a=summary

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 3.00.09.00

This first ipumm component will be tag the same as 3.00.09.00.

Signed-off-by: Buddy Liong <buddy.liong@ti.com>
4 years agoIntegration with IPC 3.45, BIOS 6.46, and XDC 3.32
Buddy Liong [Thu, 16 Feb 2017 19:09:05 +0000 (13:09 -0600)]
Integration with IPC 3.45, BIOS 6.46, and XDC 3.32

Updated build tools based on IPC release 3.45.00.00:
BIOS 6.46.01.38
XDCTools 3.32.01.22

Change-Id: I1e1c0f24ad050fe4a00ccaeb017e0f569e0e6e37
Signed-off-by: Buddy Liong <a0270631@ti.com>
4 years ago[MJPEGE] Codec Update 01.00.17.01
Veeranna Hanchinal [Tue, 7 Feb 2017 12:50:50 +0000 (18:20 +0530)]
[MJPEGE] Codec Update 01.00.17.01

Codec Name: MJPEG Encoder
Codec Version: 01.00.17.01

The updated codec information:
* MJPEGE 01.00.17.01 version fix CODECS-2428
Jpeg encoder symbol conflicts with Jpeg decoder.

Change-Id: I6b38e7f3f4b8a9bebd17339061f75a7319a2d0a6
Signed-off-by: Veeranna Hanchinal <veeranna.hanchinal@ti.com>
4 years ago[MPEG2D] Codec Update 01.00.17.01
Veeranna Hanchinal [Wed, 23 Nov 2016 13:53:29 +0000 (19:23 +0530)]
[MPEG2D] Codec Update 01.00.17.01

Codec Name: MPEG2 Decoder Codec

Version: 01.00.17.01

The updated codec information: MPEG2D 01.00.17.01 version fix
CODECS-2427 MPEG2Decoder expects output buffer to be sent for parsing the header.

Change-Id: I6621406e98d1c422f86b74208c73645976f608da
Signed-off-by: Veeranna Hanchinal <veeranna.hanchinal@ti.com>
Signed-off-by: Subash Lakkimsetti <lsubash@ti.com>
4 years agoCheck maxHeight condition only when codec_id is VIDDEC3
Hongmei Gou [Tue, 8 Nov 2016 17:36:08 +0000 (12:36 -0500)]
Check maxHeight condition only when codec_id is VIDDEC3

Change-Id: I28e12d5a132382e83ba5a1daffb91a16a66106b5
Signed-off-by: Hongmei Gou <h-gou@ti.com>
4 years ago[MJPEGE] Integrated new codec 01.00.16.01
Hongmei Gou [Tue, 8 Nov 2016 17:30:59 +0000 (12:30 -0500)]
[MJPEGE] Integrated new codec 01.00.16.01

Codec Name: MJPEG Encoder
Codec Version: 01.00.16.01

This commit integrated MJPEG encoder into IPUMM.

Change-Id: I46924323857c5244567172ada1cd476431cff838
Signed-off-by: Hongmei Gou <h-gou@ti.com>
4 years agoFramework changes for adding JPEG encoder
Hongmei Gou [Tue, 8 Nov 2016 17:26:20 +0000 (12:26 -0500)]
Framework changes for adding JPEG encoder

Integrating MJPEG encoder into IPUMM.

Change-Id: I6fbf177e3b10c64f715a4303cc5ce75039cd2193
Signed-off-by: Hongmei Gou <h-gou@ti.com>
4 years agoUpdate manifest and license to add MJPEGE
Buddy Liong [Thu, 17 Nov 2016 15:27:27 +0000 (09:27 -0600)]
Update manifest and license to add MJPEGE

Modification on manifest and license to add MJPEG Encoder codec
library.

Signed-off-by: Buddy Liong <a0270631@ti.com>
4 years agoIntegration with IPC 3.43.03.05 and FC 3.40.02.07
Buddy Liong [Thu, 6 Oct 2016 15:28:20 +0000 (10:28 -0500)]
Integration with IPC 3.43.03.05 and FC 3.40.02.07

Integrating IPUMM with:
IPC ipc_3_43_03_05
Framework Component framework_components_3_40_02_07

Signed-off-by: Buddy Liong <a0270631@ti.com>
4 years agoCodec Update 01.00.02.05
Veeranna Hanchinal [Thu, 6 Oct 2016 09:09:27 +0000 (14:39 +0530)]
Codec Update 01.00.02.05

Codec Name: VC1 Decoder
Codec Version: 01.00.02.05

The updated codec information:
* VC1D 01.00.02.05 version fix CODECS-2418
Modified the default value of
frameLayerDataPresentFlag in baseclass params.

Signed-off-by: Veeranna Hanchinal <veeranna.hanchinal@ti.com>
4 years agoCodec Update 02.00.21.01
Veeranna Hanchinal [Fri, 23 Sep 2016 05:53:19 +0000 (11:23 +0530)]
Codec Update 02.00.21.01

Codec Name: H264 Decoder
Codec Version: 02.00.21.01

The updated codec information:
* H264D 02.00.21.01 version fix OMAPS00337101/CODECS-2421
Added support for wrongly encoded uuid_iso_iec_11578 data
for USER DATA UNREGISTERED SEI.

Signed-off-by: Veeranna Hanchinal <veeranna.hanchinal@ti.com>
4 years agoInvalidating parameter buffers for codec_get_version
Subash Lakkimsetti [Mon, 29 Aug 2016 16:28:55 +0000 (11:28 -0500)]
Invalidating parameter buffers for codec_get_version

Previously version_buf pointer is set to buffer pointer (data.buf)
of (IVIDDEC3_Status *) status.
The pointer dyn_params and status are not cache invalidated first which
can cause the status->data.buf to be accessed without cache invalidation.
Due to this corruption, it can cause exception on IPUMM.

The solution is to cache invalidate the dyn_params and status pointer
first to get the valid pointer of dyn_params and status.
Then set the version_buf with status->data.buf.
Perform cache invalidation on the version_buf to get the valid pointer.

Change-Id: I3258cca0ee191c488fc6457391215b8bfcde3b85
Signed-off-by: Subash Lakkimsetti <x0091084@ti.com>
4 years agoRun dce_init on Task thread
Buddy Liong [Thu, 28 Jul 2016 19:04:24 +0000 (14:04 -0500)]
Run dce_init on Task thread

Previously dce_init() is configured as the BIOS UserStartupFunction or
started when BIOS_start() is called.
This is configured in \src\ti\framework\dce\package.xs

The assumption is that IpcMgr_rpmsgStartup() is also configured as the
BIOS UserStartupFunction or started when BIOS_start() is called.
This is configured in \platform\ti\dce\baseimage\dce_ipu.cfg

If IPC API IpcMgr_rpmsgStartup() is not configured as BIOS UserStartupFunction
but instead it was called from a Task thread, then dce_init has to be delayed
until RPMessage_init() which is called in IpcMgr_rpmsgStartup() is completed.
Otherwise rpmsg-dce and dce_callback thread in dce_init() will be failing
since the RPMSG is not configured yet.

This patch removes dce_init() from BIOS UserStartupFunction. It will now be
called from IPUMM_Main()

Change-Id: I6d2cb8f4cf55d72c25eb867ad48ed7e2710efb4b
Signed-off-by: Buddy Liong <a0270631@ti.com>
4 years agoMakefile and common.bld update for IPUMM 3.00.11.00
Buddy Liong [Tue, 5 Jul 2016 18:48:12 +0000 (13:48 -0500)]
Makefile and common.bld update for IPUMM 3.00.11.00

Updated MJPEG codec version.
Updated the IPUMM and IPC version.

Change-Id: I7d08112be3222516e95d3b92788349b3009c51f0
Signed-off-by: Buddy Liong <a0270631@ti.com>
4 years agoUpdate IPUMM Manifest document
Buddy Liong [Tue, 5 Jul 2016 19:05:13 +0000 (14:05 -0500)]
Update IPUMM Manifest document

Updating the IPUMM Manifest to reflect the generic
version of the component instead of the specific
version to allow patches update without the need
to update the IPUMM Manifest document.

Signed-off-by: Buddy Liong <a0270631@ti.com>
4 years agodce_register_codec shouldn't be called when codec_create returns NULL
Buddy Liong [Thu, 30 Jun 2016 16:51:36 +0000 (11:51 -0500)]
dce_register_codec shouldn't be called when codec_create returns NULL

Prior to this patch, when codec_create fails and return NULL VIDDEC3_Handle.
DCE will still caling dce_register_codec with NULL data which is not
necessary. When dce_register_codec return < 0, it continue processing for
low latency mode, which is also not necessary.

This patch check on VIDDEC3_Handle to make sure it is not NULL before
calling dce_register_codec. It also moves the processing for low latency
mode to be executed only when dce_register_codec is successful.

Change-Id: I4b8fba03272c3d7c825a0bdbe813e74e04aaf555
Signed-off-by: Buddy Liong <a0270631@ti.com>
4 years agodce_register_engine shouldn't be called when Engine_open returns NULL
Buddy Liong [Thu, 30 Jun 2016 16:11:22 +0000 (11:11 -0500)]
dce_register_engine shouldn't be called when Engine_open returns NULL

Prior to this patch, when Engine_open fails and return NULL Engine_Handle.
DCE will still caling dce_register_engine with NULL data which is not
necessary. The only issue here is that the c->refs count will be invalid.

This patch check on Engine_Handle to make sure it is not NULL before
calling dce_register_engine

Change-Id: I07680326ef991dbf32d9c7ceb2a1877bbd368f29
Signed-off-by: Buddy Liong <a0270631@ti.com>
4 years agoSynchronizing client requests from IPC3.x using semaphore
Buddy Liong [Fri, 24 Jun 2016 18:53:32 +0000 (13:53 -0500)]
Synchronizing client requests from IPC3.x using semaphore

When client is processing multiple requests for different
process task, IPC3.x doesn't provide the protection to synchronize
the request. This can potentially result in corruption in FC
as multiple requests can come at the same time.
As an example, when 2 clients are requesting codec_process and codec_delete
at the same time, at a very small window FC might think that there are still 2 clients but
somehow one of the alg gets deleted.

Adding the semaphore on the multiple requests (engine_open,
engine_close, codec_create, codec_control, codec_get_version, codec_process,
codec_delete, and dce_SrvDelNotification) to protect the client requests
to be synchronous.
There is no need to add semaphore for get_rporc_info() because the
function is only getting the statistical information from BIOS
utils component.

Change-Id: I80d2899cd6e3c5ac2392bf1fd79e7bcded07c52c
Signed-off-by: Buddy Liong <a0270631@ti.com>
4 years agoget_rproc_info: Introduce new API to query remoteproc
Buddy Liong [Fri, 17 Jun 2016 14:58:44 +0000 (09:58 -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 would require a corresponding change in the
libdce as well.

Change-Id: Ie7461b9597bd8d8d6d2e9bca73c67ef9d91a6351
Signed-off-by: Karthik Ramanan <a0393906@ti.com>
Signed-off-by: Buddy Liong <a0270631@ti.com>
4 years agoAdd Separate Library Build
Angela Stegmaier [Mon, 4 Apr 2016 17:38:59 +0000 (12:38 -0500)]
Add Separate Library Build

Add "lib" build that allows only the baselib to be built instead
of both the library and executable. This saves build time if the
executable is not needed (for example if IPUMM is being linked
into another image).

Change-Id: Ic509bd08147652938e7cfc6149d348a26b9fa131
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
4 years agoRemove Hard-codings of IVAHD addresses
Angela Stegmaier [Wed, 27 Jan 2016 17:45:47 +0000 (11:45 -0600)]
Remove Hard-codings of IVAHD addresses

Remove the hard-codings of IVAHD addresses and instead
use the IPC3 Resource_physToVirt() call to get the correct
virtual address. In this way, changes to the resource
table don't require changes in the code.

Change-Id: I874afeb59fb66f8dba1d56e252c2b1ad217f20cb
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
4 years agoCreate an ipumm library with a single entry point
Angela Stegmaier [Mon, 11 Jan 2016 17:32:22 +0000 (11:32 -0600)]
Create an ipumm library with a single entry point

Created a library "ipu.aem4" with a single entry point "IPUMM_Main".
Main source files are moved to a folder named "baselib".
The baseimage is still built by linking with the baselib library and
then calling the main function that is included in this library.

Change-Id: Ieee7b011e06119397dd108ae9ea3e9c03fc8762d
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
5 years ago[MJPEGD] Codec Update 01.00.16.01
Veeranna Hanchinal [Tue, 12 Apr 2016 15:43:04 +0000 (21:13 +0530)]
[MJPEGD] Codec Update 01.00.16.01

Codec Name: MJPEG Decoder
Codec Version: 01.00.16.01

The updated codec information:
* MJPEGD 01.00.16.01 version fix OMAPS00332548
Added Support for missing Huffman-Table in
Encoded MJPEG streams.

Signed-off-by: Veeranna Hanchinal <veeranna.hanchinal@ti.com>
5 years agoChange sync_process_mutex to a Semaphore
Angela Stegmaier [Tue, 29 Mar 2016 19:19:42 +0000 (14:19 -0500)]
Change sync_process_mutex to a Semaphore

A pthread_mutex cannot be locked and unlocked from a Task
context (only from a pthread context). Since IPUMM and IPC
only use Tasks, pthread_mutex cannot be used for synchronization.
Instead, use the SYS/BIOS Semaphore implementation.

Change-Id: I2121736b16255facdf40ff96423eda5936190c17
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
5 years agoCodec Update 01.00.15.01
Veeranna Hanchinal [Wed, 30 Mar 2016 05:37:56 +0000 (11:07 +0530)]
Codec Update 01.00.15.01

Codec Name: MJPEG Decoder
Codec Version: 01.00.15.01

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

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

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 3.42.00.02, BIOS 6.45, XDC 3.32
Buddy Liong [Mon, 8 Feb 2016 20:46:06 +0000 (14:46 -0600)]
Integration with IPC 3.42.00.02, 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
put_DataFxn().
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
immediately.

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
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 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 01.00.16.01
Veeranna Hanchinal [Wed, 24 Feb 2016 10:08:00 +0000 (15:38 +0530)]
[MPEG2D] Codec Update 01.00.16.01

Codec Name: MPEG2 Decoder
Codec Version: 01.00.16.01

The updated codec information:
 * MPEG2D 01.00.16.01 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 02.00.20.01
Buddy Liong [Tue, 9 Feb 2016 19:51:13 +0000 (13:51 -0600)]
[H264D] Codec Update 02.00.20.01

Codec Name: H264 Decoder
Codec Version: 02.00.20.01

The updated codec information:
* H264D 02.00.20.01 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 01.00.14.01
Buddy Liong [Tue, 9 Feb 2016 19:04:43 +0000 (13:04 -0600)]
[MJPEGD] Codec Update 01.00.14.01

Codec Name: MJPEG Decoder
Codec Version: 01.00.14.01

The updated codec information:
* MJPEGD 01.00.14.01 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 02.00.19.01
Buddy Liong [Tue, 9 Feb 2016 17:23:10 +0000 (11:23 -0600)]
[H264D] Codec Update 02.00.19.01

Codec Name: H264 Decoder
Codec Version: 02.00.19.01

The updated codec information:
* H264D 02.00.19.01 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 01.00.15.01
Buddy Liong [Tue, 19 Jan 2016 19:00:00 +0000 (13:00 -0600)]
[MPEG2D] Codec Update 01.00.15.01

Codec Name: MPEG2 Decoder
Codec Version: 01.00.15.01

The updated codec information:
* MPEG2D 01.00.15.01 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 01.00.02.04
Buddy Liong [Tue, 19 Jan 2016 18:42:45 +0000 (12:42 -0600)]
[VC1D] Codec Update 01.00.02.04

Codec Name: VC1 Decoder
Codec Version: 01.00.02.04

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

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

Codec Name: H.264 Decoder
Codec Version: 02.00.18.01

The updated codec information:
* H.264D 02.00.18.01 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 3.40.01.08 master
Buddy Liong [Fri, 2 Oct 2015 19:58:07 +0000 (14:58 -0500)]
Update Makefile to use IPC 3.40.01.08

Modify the IPC version to use IPC 3.40.01.08.
This commit will be tag with 3.00.09.01 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
http://git.omapzoom.org/?p=repo/libdce.git;a=summary

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 3.00.09.00

This first ipumm component will be tag the same as 3.00.09.00.

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