Merge remote-tracking branch 'other/master'
[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>
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>
[DOC] Renamed README.txt as README
Change-Id: Ie4209ef72aa8e10d246e7b523678dd42350535d8
Signed-off-by: Pradeep Venkatasubbarao <pradeepv@ti.com>
Change-Id: Ie4209ef72aa8e10d246e7b523678dd42350535d8
Signed-off-by: Pradeep Venkatasubbarao <pradeepv@ti.com>
[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>
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>
[GIT] Add gitignore file
Patch adds .gitignore file.
Change-Id: Iee9731e461dccf95beeeb61a2e2869cc1007eda9
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
Patch adds .gitignore file.
Change-Id: Iee9731e461dccf95beeeb61a2e2869cc1007eda9
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
[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>
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>
[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>
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>
[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>
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>
[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>
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>
[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>
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>
[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>
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>
[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>
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>
[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>
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>
[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>
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>
[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>
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>
[LINUX] Expose dce_init and dce_deinit calls to user
This patch changes the declaration of dce_init() and
dce_deinit() to what is expected by Gstreamer for GLP
and exposes it. This involves returning a struct
omap_device pointer as void * during dce_init() and
receiving a struct omap_device during dce_deinit().
The IPC initialization/deinitialization has been
separated out of dce_init()/dce_deinit() into two static
functions dce_ipc_init(), dce_ipc_deinit().
These functions are now included within Engine_open(),
Engine_close() for all OSs.
Change-Id: I86f4778cbd80f0a83aa3c39d8183bb3155a2a391
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
This patch changes the declaration of dce_init() and
dce_deinit() to what is expected by Gstreamer for GLP
and exposes it. This involves returning a struct
omap_device pointer as void * during dce_init() and
receiving a struct omap_device during dce_deinit().
The IPC initialization/deinitialization has been
separated out of dce_init()/dce_deinit() into two static
functions dce_ipc_init(), dce_ipc_deinit().
These functions are now included within Engine_open(),
Engine_close() for all OSs.
Change-Id: I86f4778cbd80f0a83aa3c39d8183bb3155a2a391
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
[LINUX] Expose API to lock and Unlock IO Buffers
This patch exposes APIs:
dce_buf_lock(int num, size_t *handle)
dce_buf_unlock(int num, size_t *handle)
to lock and unlock the Input/Output Buffers respectively.
The change is specific to GLP.
The DRM driver pins and unpins tiler address for the
IO Buffers whenever the rpmsg_rpc driver calls
map_attachment and unmap_attachment() respectively.
As the rpmsg_rpc driver invokes these calls during every
process call, the reference buffer addresses (address of
past locked buffers) held by the codec gets invalidated.
That is, these addresses will not continue to map to the
same memory region (YUV reference buffer) as before.
Most often, these virtual addresses may point to the
next YUV Buffer translated from the MPU.
These APIs put a condition on the map and unmap() within
rpmsg_rpc.
The expectation from the application is to
call dce_buf_lock() for the inArgs.inputID buffer
and dce_buf_unlock() for the outArgs.freeBufID buffer.
Change-Id: Ic749c6b18385f9052a2eeb4e16959063c5efab5e
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
This patch exposes APIs:
dce_buf_lock(int num, size_t *handle)
dce_buf_unlock(int num, size_t *handle)
to lock and unlock the Input/Output Buffers respectively.
The change is specific to GLP.
The DRM driver pins and unpins tiler address for the
IO Buffers whenever the rpmsg_rpc driver calls
map_attachment and unmap_attachment() respectively.
As the rpmsg_rpc driver invokes these calls during every
process call, the reference buffer addresses (address of
past locked buffers) held by the codec gets invalidated.
That is, these addresses will not continue to map to the
same memory region (YUV reference buffer) as before.
Most often, these virtual addresses may point to the
next YUV Buffer translated from the MPU.
These APIs put a condition on the map and unmap() within
rpmsg_rpc.
The expectation from the application is to
call dce_buf_lock() for the inArgs.inputID buffer
and dce_buf_unlock() for the outArgs.freeBufID buffer.
Change-Id: Ic749c6b18385f9052a2eeb4e16959063c5efab5e
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
[DCE] Align MmRpc offset setting with GLP Rpmsg_rpc
This patch aligns setting translation[i].offset field
of MmRpc Translation Array (XltAry) with the
understanding of rpmsg_rpc of GLP.
Rpmsg_rpc of GLP calculates:
primary_offset as mmrpc_params.addr - mmprc_params.base
and
secondary_offset as translation[i].offset
and sums both to get to the location of the address to
be translated.
Whereas in QNX rpmsg_rpc, the primary offset was subtracted
from the secondary offset.
This logic has now been modified in IPC_03_10_00_07_eng to
align with the rpmsg_rpc of GLP.
Change-Id: Ied11e78891119312f35162e336cd3dded9e8997a
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
This patch aligns setting translation[i].offset field
of MmRpc Translation Array (XltAry) with the
understanding of rpmsg_rpc of GLP.
Rpmsg_rpc of GLP calculates:
primary_offset as mmrpc_params.addr - mmprc_params.base
and
secondary_offset as translation[i].offset
and sums both to get to the location of the address to
be translated.
Whereas in QNX rpmsg_rpc, the primary offset was subtracted
from the secondary offset.
This logic has now been modified in IPC_03_10_00_07_eng to
align with the rpmsg_rpc of GLP.
Change-Id: Ied11e78891119312f35162e336cd3dded9e8997a
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
[GLP] Enable DMA Buf Handle
This patch converts all MmRpc_Pointer_Param call
to MmRpc_OffsetPointer_Param to take care of MemHeader.
This is not needed from a QNX perspective but is needed
from a Linux perspective. There should no added latency is QNX
due to this change as the rpmsg_rpc kernel path is still the same.
This patch invokes memplugin_share() for the buffers allocated
through DCE to get the corresponding DMA Buf Handles for GLP.
For QNX, the return value is expected to be 0.
For linux, the patch adds the logic for Single vs Multiplanar buffers.
For linux, the memplugin_share() logic is modified to store and
retireve the same dma_buf_fd rather than getting a dup() each time.
These changes makes the following assumptions:
1. All the parameter buffers are allocated through
DCE/MemPlugin.
2. The CLient passes Virtual pointers, rather than
DMA Buf Handles to libdce for parameter buffers.
3. For IO Buffers, the client passes DMA Buf Handles
and are not allocated using DCE/MemPlugin.
This patch assumes MmRpc is exposing translation[i].base.
Change-Id: I7d13f4a4d69fbe8b6dd0317e2a860f0df2061ef9
Signed-off-by: Sunita Nadampalli <sunitan@ti.com>
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
This patch converts all MmRpc_Pointer_Param call
to MmRpc_OffsetPointer_Param to take care of MemHeader.
This is not needed from a QNX perspective but is needed
from a Linux perspective. There should no added latency is QNX
due to this change as the rpmsg_rpc kernel path is still the same.
This patch invokes memplugin_share() for the buffers allocated
through DCE to get the corresponding DMA Buf Handles for GLP.
For QNX, the return value is expected to be 0.
For linux, the patch adds the logic for Single vs Multiplanar buffers.
For linux, the memplugin_share() logic is modified to store and
retireve the same dma_buf_fd rather than getting a dup() each time.
These changes makes the following assumptions:
1. All the parameter buffers are allocated through
DCE/MemPlugin.
2. The CLient passes Virtual pointers, rather than
DMA Buf Handles to libdce for parameter buffers.
3. For IO Buffers, the client passes DMA Buf Handles
and are not allocated using DCE/MemPlugin.
This patch assumes MmRpc is exposing translation[i].base.
Change-Id: I7d13f4a4d69fbe8b6dd0317e2a860f0df2061ef9
Signed-off-by: Sunita Nadampalli <sunitan@ti.com>
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
[LIBDCE] Adding dce_enc_test
Adding dce_enc_test for H.264 baseline and High Profile.
Adding MPEG4/H263 simple Profile.
Change-Id: I29b5043210d3a79e5ab859c5781bb89584714dfa
Signed-off-by: Buddy Liong <a0270631@ti.com>
Adding dce_enc_test for H.264 baseline and High Profile.
Adding MPEG4/H263 simple Profile.
Change-Id: I29b5043210d3a79e5ab859c5781bb89584714dfa
Signed-off-by: Buddy Liong <a0270631@ti.com>
configure.ac: Added conditional check for files existence
Signed-off-by: Mrinmayee Hingolikar <mrinmayee@ti.com>
Signed-off-by: Mrinmayee Hingolikar <mrinmayee@ti.com>
[CLNUP] Removed QNX test and Makefiles
Signed-off-by: Pradeep Venkatasubbarao <pradeepv@ti.com>
Signed-off-by: Pradeep Venkatasubbarao <pradeepv@ti.com>
[LINUX] X11 and Wayland Support removed
X11 and wayland support is removed from libdce.
Defaults to omapdrm device.
Change-Id: I0def0c872cc2658edd12a3e69dec6016eab3f1c9
Signed-off-by: Sathishkumar <x0203598@ti.com>
X11 and wayland support is removed from libdce.
Defaults to omapdrm device.
Change-Id: I0def0c872cc2658edd12a3e69dec6016eab3f1c9
Signed-off-by: Sathishkumar <x0203598@ti.com>
[MEMPLUGIN] Modify memplugin_share() implementation for QNX
This patch updates the definition of memplugin_share()
for QNX to make it aligned with the definition for
linux.
It also makes the function inline, to save on
function switching in QNX.
Only the QNX declaration is made inline.
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
Change-Id: I20b89d4a3f560d8f4e4de36a496b87b6820b2d10
This patch updates the definition of memplugin_share()
for QNX to make it aligned with the definition for
linux.
It also makes the function inline, to save on
function switching in QNX.
Only the QNX declaration is made inline.
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
Change-Id: I20b89d4a3f560d8f4e4de36a496b87b6820b2d10
[GLP] Libdce linux implementation
make install & libdce.c issue fix
1. make install has been fixed. libdce.h will be installed in /usr/include,
libdce.so files in /usr/lib and libdce.pc in /usr/lib/pkgconfig on using
--prefix=/usr. By default the prefix is /usr/local.
2. init and deinit calls are removed from libdce.h
3. dce_set_fd and dce_get_fd calls are implemented in libdce.c
4. configure.ac checks for libmmrpc and makefile.am modified to link with libmmrpc.
configure.ac and makefile.am modified
1. Codec_engine,xdctolls,framework_components,ipc,xdctools and xdaias paths needs
to be exported. Configure.ac checks for the exported paths.
2. Makefile.am is modified to have the exported paths in the include directories list
for the compiler.
Modifications done after review
1. Comments added in memplugin_linux.c. White spaces removed manually and cleaned up
libdce.c, memplugin.h. dce_priv.h is modified to have File and line number in the
logs. linux/dce.h file is removed.
Libdce modifications for linux
Linux Specific libdce functionality added.
1. memplugin calls specific to linux are added in memplugin_linux.c
2. Error and debug logs implementation for linux in dce_priv.h
3. xll and wayland specific files are moved to linux folder
Change-Id: Ib41e6a52d902376cdabbb939dee7585944720d92
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
Signed-off-by: Sathishkumar <x0203598@ti.com>
make install & libdce.c issue fix
1. make install has been fixed. libdce.h will be installed in /usr/include,
libdce.so files in /usr/lib and libdce.pc in /usr/lib/pkgconfig on using
--prefix=/usr. By default the prefix is /usr/local.
2. init and deinit calls are removed from libdce.h
3. dce_set_fd and dce_get_fd calls are implemented in libdce.c
4. configure.ac checks for libmmrpc and makefile.am modified to link with libmmrpc.
configure.ac and makefile.am modified
1. Codec_engine,xdctolls,framework_components,ipc,xdctools and xdaias paths needs
to be exported. Configure.ac checks for the exported paths.
2. Makefile.am is modified to have the exported paths in the include directories list
for the compiler.
Modifications done after review
1. Comments added in memplugin_linux.c. White spaces removed manually and cleaned up
libdce.c, memplugin.h. dce_priv.h is modified to have File and line number in the
logs. linux/dce.h file is removed.
Libdce modifications for linux
Linux Specific libdce functionality added.
1. memplugin calls specific to linux are added in memplugin_linux.c
2. Error and debug logs implementation for linux in dce_priv.h
3. xll and wayland specific files are moved to linux folder
Change-Id: Ib41e6a52d902376cdabbb939dee7585944720d92
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
Signed-off-by: Sathishkumar <x0203598@ti.com>
[DCE] Modify approach to pass parameters to IPC
Three approaches were followed for IPC MmRpc calls.
1. All the parameters which need to be sent and received to/from IPU are coupled in a struct
allocated from Shared/Tiler Memory. Only the adrress of the struct is passed to MmRpc
as a pointer argument. This approach is useful as MmRpc in some cases to avoid multiple
translations. This approach is followed for :
Engine_open(), Engine_close(), create(), control(), delete()
2. All the parameters which need to be sent are given as separate arguments to
MmRpc. This approach is needed when you need to translate an address which is
ofsetted from a pointer which in itself needs to be translated.
This apporach is followed for : process()
For understanding, take the example of inbufs argument in process call(). Inbufs
allocated in Shared memory and needs to be translated, has the address of Input
buffer (allocated from Tiler). It is not possible to give the Input buffer as an argument
to Mmrpc for translation until inbufs is given as a parameter to Mmrpc. Therefore inbuf
can't be populated inside another Shared/Tiler memory struct.
3. This approach is a workaround to use approach [1] by solving the issue posed by [2].
This approach is followed for : get_version()
Taking the example of inbufs to explain, the Input buffer address will be one of the
parameters of the struct (explained in [1]) along with inbufs address. Therefore the
Input buffer address will get translated here. At the IPU, this address needs to be
copied back to inbufs.
This patch aligns all DCE calls except Engine_Open to use Approach [2].
Engine_open still follows Approach [1] because:
1. Engine open takes in pointers to Engine_attrs and Error_code structures. The client may
set both, none or either one of them to NULL (as allowed by CE). So that implies either
I'll have to pass NULL as param_pointer to IPU or decide not to pass them at all. In the
second case, I'll have to pass extra arguments to inform IPU that I have not passed Attrs
or ErrorCode or both.
I tried passing NULL but mmrpc_write failed.
Dependent on ipumm patch:
https://gerrit.ext.ti.com/gerrit/omap/#/c/12773
Change-Id: Ic770aaa99a56ea559efe9446e6e98d70726cc7c5
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
Three approaches were followed for IPC MmRpc calls.
1. All the parameters which need to be sent and received to/from IPU are coupled in a struct
allocated from Shared/Tiler Memory. Only the adrress of the struct is passed to MmRpc
as a pointer argument. This approach is useful as MmRpc in some cases to avoid multiple
translations. This approach is followed for :
Engine_open(), Engine_close(), create(), control(), delete()
2. All the parameters which need to be sent are given as separate arguments to
MmRpc. This approach is needed when you need to translate an address which is
ofsetted from a pointer which in itself needs to be translated.
This apporach is followed for : process()
For understanding, take the example of inbufs argument in process call(). Inbufs
allocated in Shared memory and needs to be translated, has the address of Input
buffer (allocated from Tiler). It is not possible to give the Input buffer as an argument
to Mmrpc for translation until inbufs is given as a parameter to Mmrpc. Therefore inbuf
can't be populated inside another Shared/Tiler memory struct.
3. This approach is a workaround to use approach [1] by solving the issue posed by [2].
This approach is followed for : get_version()
Taking the example of inbufs to explain, the Input buffer address will be one of the
parameters of the struct (explained in [1]) along with inbufs address. Therefore the
Input buffer address will get translated here. At the IPU, this address needs to be
copied back to inbufs.
This patch aligns all DCE calls except Engine_Open to use Approach [2].
Engine_open still follows Approach [1] because:
1. Engine open takes in pointers to Engine_attrs and Error_code structures. The client may
set both, none or either one of them to NULL (as allowed by CE). So that implies either
I'll have to pass NULL as param_pointer to IPU or decide not to pass them at all. In the
second case, I'll have to pass extra arguments to inform IPU that I have not passed Attrs
or ErrorCode or both.
I tried passing NULL but mmrpc_write failed.
Dependent on ipumm patch:
https://gerrit.ext.ti.com/gerrit/omap/#/c/12773
Change-Id: Ic770aaa99a56ea559efe9446e6e98d70726cc7c5
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
[MAKE] Exclude Linux files for QNX build
This patch adds condition within QNX build
to exclude Linux specific files.
Change-Id: I4ccca9198ed4d8d81fbab895524e4cb18babc2d2
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
This patch adds condition within QNX build
to exclude Linux specific files.
Change-Id: I4ccca9198ed4d8d81fbab895524e4cb18babc2d2
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
[LIBDCE] Update XDC Tools
This update is to align with the IPC
update in IPUMM at:
https://gerrit.ext.ti.com/gerrit/omap/#/c/12734
Change-Id: I92e42c0fbfee049acc692c62c577113bfbdd478c
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
This update is to align with the IPC
update in IPUMM at:
https://gerrit.ext.ti.com/gerrit/omap/#/c/12734
Change-Id: I92e42c0fbfee049acc692c62c577113bfbdd478c
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
[LIBDCE] Remove MmRpc translation param base
The "base" field is no longer exposed by MmRpc
from IPC 03.00.01.23 release as it can be
calculated internally using the "offset" field.
Hence this patch removes setting the field.
Change-Id: I08df16e08042ae27bb2fa550b7126b3f7cae8fa6
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
The "base" field is no longer exposed by MmRpc
from IPC 03.00.01.23 release as it can be
calculated internally using the "offset" field.
Hence this patch removes setting the field.
Change-Id: I08df16e08042ae27bb2fa550b7126b3f7cae8fa6
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
[MAKEFILE] Update Tools
This patch updates the following tools:
CEVERSION ?= codec_engine_3_24_00_08
FCVERSION ?= framework_components_3_24_00_09
XDAISVERSION ?= xdais_7_24_00_04
XDCVERSION ?= xdctools_3_25_01_65
Change-Id: I4122a2161c1ca09b997c518ad51bfd07849139f7
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
This patch updates the following tools:
CEVERSION ?= codec_engine_3_24_00_08
FCVERSION ?= framework_components_3_24_00_09
XDAISVERSION ?= xdais_7_24_00_04
XDCVERSION ?= xdctools_3_25_01_65
Change-Id: I4122a2161c1ca09b997c518ad51bfd07849139f7
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
[Dce_Test] Enable MPEG2 Decoder in dce_test app
This patch enables MPEG2 decoder as the MPEG2 codec
library 01.00.12.00 renames the enum which was common
with MJPEG decoder.
Change-Id: Ifbdabee6358652af633474ca7ac2aebad57f4591
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
This patch enables MPEG2 decoder as the MPEG2 codec
library 01.00.12.00 renames the enum which was common
with MJPEG decoder.
Change-Id: Ifbdabee6358652af633474ca7ac2aebad57f4591
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
Fix to pass right translation param to IPC.
The base field of the MmRpc_Xlt translation structure
needs to be value of the address to be translated.
The code was wrongly setting base to the location of
the address. This has been corrected. This didn't create
issues because the IPC doesnot use the base field for
address translation. IPC uses offset to find the
address to be translated.
Change-Id: I404c7dc61cf3f4b5b584008b13336441420149d8
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
The base field of the MmRpc_Xlt translation structure
needs to be value of the address to be translated.
The code was wrongly setting base to the location of
the address. This has been corrected. This didn't create
issues because the IPC doesnot use the base field for
address translation. IPC uses offset to find the
address to be translated.
Change-Id: I404c7dc61cf3f4b5b584008b13336441420149d8
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
Add Header declaration for MemHeader
To maintain a generic implementation this
patch moves the MemHeader declaration from
memplugin_qnx.c to memplugin.h.
Change-Id: I881ee18903a906a6e31284710949709a5be4132e
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
To maintain a generic implementation this
patch moves the MemHeader declaration from
memplugin_qnx.c to memplugin.h.
Change-Id: I881ee18903a906a6e31284710949709a5be4132e
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
Enable build of dce_test app with IPC 3.17
Build of IPC 3.17 generates ipc_client.so instead
of syslink_client.so. Hence updating dce_test mk file
to include the right IPC library.
Change-Id: Icc1c0451ffc10a04bfeb102f5a4b61b4cda0f759
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
Build of IPC 3.17 generates ipc_client.so instead
of syslink_client.so. Hence updating dce_test mk file
to include the right IPC library.
Change-Id: Icc1c0451ffc10a04bfeb102f5a4b61b4cda0f759
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
[LIBDCE] Remove check for error_code in Engine_open
This patch removes check for error_code in Engine_open
because the Codec Engine doesnot expect a valid
address.
Change-Id: Id3286a101e290f6d987017741a0c194f53c19f94
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
This patch removes check for error_code in Engine_open
because the Codec Engine doesnot expect a valid
address.
Change-Id: Id3286a101e290f6d987017741a0c194f53c19f94
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
[DCE_TEST] Add Input argument to take in number of frames to write.
This patch lets dce_test app users mention the number
of frames of the output raw data to be written to the
output file as an extra input command line argument.
To invoke dce_test app:
dce_test width height frames_to_write framesize inpattern outpattern codec tiler/nontiler
Change-Id: I311b5afbe56aedc93263777bc1891d71cdd73c9a
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
This patch lets dce_test app users mention the number
of frames of the output raw data to be written to the
output file as an extra input command line argument.
To invoke dce_test app:
dce_test width height frames_to_write framesize inpattern outpattern codec tiler/nontiler
Change-Id: I311b5afbe56aedc93263777bc1891d71cdd73c9a
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
[libDCE] Add IPC 3.x Adapted code to Repository
This patch adds libdce code to the repository.
LibDCE has been adapted to use the MmRpc layer
of IPC 3.x. This version of LibDCE is expected to
work on QNX.
Patchset 2 adds/modifies:
1. Removes Tiler 2D allocation/free for now.
2. Corrects memplugin_free() for Tiler 1D.
3. Modifies dce_test app to dump output till 30 frames.
4. Renamed dce.h to libdce.h.
5. Corrected header files across all files.
6. Build configuration for QNX
7. Removes build warnings.
8. Add README for Build instructions
9. Takes care of comments of Buddy and Pradeep.
Patchset 3 adds/modifies:
1. Reduced Stack usage of each function.
2. Add ptr check in memplugin and remove from libdce.
3. Add DCE_Assert macros.
4. Add DCE_error_status enum.
5. Comments Cleanup
6. Make some functions static.
7. process() cleanup including removing reply_buf.
8. Add else if (for codec_type == Encoder type)
9. Converted Macros to Inline functions.
10.Converted init and deinit to dce_init and dce_deinit functions.
11. Removed dce_init() and dce_deinit() declarations
Patchset 4 adds/modifies:
1. Assert Input function arguments.
2. Correct copyright year.
3. Correct memplugin_free for Shared memory.
4. Create dce_priv.h and move trace and assert macros to the header.
5. Redeclare mem_type enum and add mem_error_status enum in
memplugin.h and make corresponding changes.
6. Add asserts in memplugin.
Intention of some of the changes above is to move towards
delinking Libdce and Memplugin.
Patchset 5:
1. Missed to add dce_priv.h file.
Patchset 6:
1. Take care Pradeep's comment.
Change-Id: I6e5e37b7088362e7bad66200fc3454bb828e0eff
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
This patch adds libdce code to the repository.
LibDCE has been adapted to use the MmRpc layer
of IPC 3.x. This version of LibDCE is expected to
work on QNX.
Patchset 2 adds/modifies:
1. Removes Tiler 2D allocation/free for now.
2. Corrects memplugin_free() for Tiler 1D.
3. Modifies dce_test app to dump output till 30 frames.
4. Renamed dce.h to libdce.h.
5. Corrected header files across all files.
6. Build configuration for QNX
7. Removes build warnings.
8. Add README for Build instructions
9. Takes care of comments of Buddy and Pradeep.
Patchset 3 adds/modifies:
1. Reduced Stack usage of each function.
2. Add ptr check in memplugin and remove from libdce.
3. Add DCE_Assert macros.
4. Add DCE_error_status enum.
5. Comments Cleanup
6. Make some functions static.
7. process() cleanup including removing reply_buf.
8. Add else if (for codec_type == Encoder type)
9. Converted Macros to Inline functions.
10.Converted init and deinit to dce_init and dce_deinit functions.
11. Removed dce_init() and dce_deinit() declarations
Patchset 4 adds/modifies:
1. Assert Input function arguments.
2. Correct copyright year.
3. Correct memplugin_free for Shared memory.
4. Create dce_priv.h and move trace and assert macros to the header.
5. Redeclare mem_type enum and add mem_error_status enum in
memplugin.h and make corresponding changes.
6. Add asserts in memplugin.
Intention of some of the changes above is to move towards
delinking Libdce and Memplugin.
Patchset 5:
1. Missed to add dce_priv.h file.
Patchset 6:
1. Take care Pradeep's comment.
Change-Id: I6e5e37b7088362e7bad66200fc3454bb828e0eff
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>