In addition to this, I think adding a "hantro_config.h" header would be
useful. That's because we can find this in the Makefile_codec file:
CFLAGS += -DSET_OUTPUT_CROP_RECT -DUSE_EXTERNAL_BUFFER
-DUSE_OUTPUT_RELEASE -DVSI_API -DIS_G1_DECODER -DENABLE_CODEC_VP8
-DVP8_HWTIMEOUT_WORKAROUND -DENABLE_CODEC_MJPEG
-DGET_FREE_BUFFER_NON_BLOCK -DDOWN_SCALER
and you need to set these flags in your code as well, otherwise you get
stack corruption. For example, SET_OUTPUT_CROP_RECT enables certain
fields in openmax_il/source/decoder/codec.h :
typedef struct STREAM_INFO
{
OMX_COLOR_FORMATTYPE format; // stream color format
OMX_U32 framesize; // framesize in bytes
OMX_U32 width; // picture display width
OMX_U32 height; // picture display height
OMX_U32 sliceheight; // picture slice height
OMX_U32 stride; // picture scan line width
OMX_BOOL interlaced; // sequence is interlaced
OMX_U32 imageSize; // size of image in memory
OMX_BOOL isVc1Stream; // sequence is VC1 stream
#ifdef SET_OUTPUT_CROP_RECT
OMX_BOOL crop_available; // crop information
OMX_U32 crop_width;
OMX_U32 crop_height;
OMX_U32 crop_left;
OMX_U32 crop_top;
#endif
OMX_U32 frame_buffers;
OMX_U32 bit_depth;
OMX_BOOL hdr10_available;
METADATA_HDR10 hdr10_metadata; // HDR10 metadata
OMX_U32 video_full_range_flag; // black level and range of
luma chroma signals
OMX_BOOL colour_desc_available; // indicate
colour_primaries/transfer_characteristics/matrix_coeffs present or not
OMX_U32 colour_primaries; // chromaticity coordinates of
the source primaries
OMX_U32 transfer_characteristics;// opto-electronic transfer
function
OMX_U32 matrix_coeffs; // matrix coefficients used in
deriving luma and chroma signals
OMX_BOOL chroma_loc_info_available; // indicate
chroma_sample_loc_type_top_field or bottom field are present or not
OMX_U32 chroma_sample_loc_type_top_field; // specify the
location of chroma samples
OMX_U32 chroma_sample_loc_type_bottom_field; // specify the
location of chroma samples
} STREAM_INFO;
As a result, imx-vpuwrap has to set these same cflags. If you don't know
this already, it is easy to miss, and causes ABI breakage.
On 2018-10-03 12:24, Gary Bisson wrote:
The source code uses LINUX_VERSION_CODE at many places which constraints
the package to be built with a toolchain whose headers match the kernel.
This is a far from ideal solution, especially if one wants to use a
prebuilt toolchain (with unknown kernel header version).
So change the CFLAGS to consider the kernel build folder so that the
Linux version test actually matches the kernel built.
Signed-off-by: Gary Bisson <gary.bis...@boundarydevices.com>
---
...clusion-to-be-from-kernel-build-fold.patch | 44 +++++++++++++++++++
.../imx-vpu-hantro/imx-vpu-hantro_1.8.0.bb | 5 ++-
2 files changed, 48 insertions(+), 1 deletion(-)
create mode 100644
recipes-bsp/imx-vpu-hantro/imx-vpu-hantro/0002-Fix-version.h-inclusion-to-be-from-kernel-build-fold.patch
diff --git
a/recipes-bsp/imx-vpu-hantro/imx-vpu-hantro/0002-Fix-version.h-inclusion-to-be-from-kernel-build-fold.patch
b/recipes-bsp/imx-vpu-hantro/imx-vpu-hantro/0002-Fix-version.h-inclusion-to-be-from-kernel-build-fold.patch
new file mode 100644
index 00000000..e9bf9257
--- /dev/null
+++
b/recipes-bsp/imx-vpu-hantro/imx-vpu-hantro/0002-Fix-version.h-inclusion-to-be-from-kernel-build-fold.patch
@@ -0,0 +1,44 @@
+From 1d7b7046c8f735e150e92aeace3fe6d0686b9bc9 Mon Sep 17 00:00:00 2001
+From: Gary Bisson <gary.bis...@boundarydevices.com>
+Date: Wed, 3 Oct 2018 10:52:29 +0200
+Subject: [PATCH] Fix version.h inclusion to be from kernel build folder
+
+Instead of relying on Toolchain headers which can be from newer kernel.
+
+Signed-off-by: Gary Bisson <gary.bis...@boundarydevices.com>
+---
+ Makefile_G1G2 | 3 +++
+ Makefile_H1 | 3 +++
+ 2 files changed, 6 insertions(+)
+
+diff --git a/Makefile_G1G2 b/Makefile_G1G2
+index 29866a4..c473bcb 100755
+--- a/Makefile_G1G2
++++ b/Makefile_G1G2
+@@ -16,6 +16,9 @@ INCLUDE_HEADERS += -I$(LINUX_KERNEL_ROOT)/include/uapi
-I$(LINUX_KERNEL_ROOT)/in
+ # ION header location
+ INCLUDE_HEADERS += -I$(LINUX_KERNEL_ROOT)/drivers/staging/android/uapi
+
++# LINUX_VERSION_CODE from kernel build folder instead of toolchain headers
++INCLUDE_HEADERS += -I$(LINUX_KERNEL_BUILD)/include/generated/uapi
++
+ CFLAGS += -DDEC_MODULE_PATH=\"/dev/mxc_hantro\" -DUSE_FAKE_RFC_TABLE
-DFIFO_DATATYPE=void* -DNDEBUG -DDOWN_SCALER \
+ -DUSE_EXTERNAL_BUFFER -DUSE_FAST_EC -DUSE_VP9_EC
-DGET_FREE_BUFFER_NON_BLOCK \
+ -DDEC_X170_OUTPUT_FORMAT=0 -DDEC_X170_TIMEOUT_LENGTH=-1
-DENABLE_HEVC_SUPPORT \
+diff --git a/Makefile_H1 b/Makefile_H1
+index 56b4332..0be43ce 100755
+--- a/Makefile_H1
++++ b/Makefile_H1
+@@ -23,6 +23,9 @@ ENV += -I$(SDKTARGETSYSROOT)/usr/imx/include
+ # ION header location
+ ENV += -I$(LINUX_KERNEL_ROOT)/drivers/staging/android/uapi
+
++# LINUX_VERSION_CODE from kernel build folder instead of toolchain headers
++INCLUDE_HEADERS += -I$(LINUX_KERNEL_BUILD)/include/generated/uapi
++
+ LIBENCNAME = libcodec_enc
+ LIBSENC = -L./ -lhantro_h1 -lpthread
+
+--
+2.19.0
+
diff --git a/recipes-bsp/imx-vpu-hantro/imx-vpu-hantro_1.8.0.bb
b/recipes-bsp/imx-vpu-hantro/imx-vpu-hantro_1.8.0.bb
index 243f1f35..b5fc8468 100644
--- a/recipes-bsp/imx-vpu-hantro/imx-vpu-hantro_1.8.0.bb
+++ b/recipes-bsp/imx-vpu-hantro/imx-vpu-hantro_1.8.0.bb
@@ -12,6 +12,7 @@ PROVIDES = "virtual/imxvpu"
SRC_URI = " \
${FSL_MIRROR}/${PN}-${PV}.bin;fsl-eula=true \
file://0001-Fix-ion.h-header-inclusion-to-be-standard.patch \
+ file://0002-Fix-version.h-inclusion-to-be-from-kernel-build-fold.patch \
"
SRC_URI[md5sum] = "140796ddd6f1be47cffb7e5e2bfe0fb6"
SRC_URI[sha256sum] =
"c092a5b0f8897bae54154f58e47b6d2de033da01ee231a8cd779a51bbe962606"
@@ -24,7 +25,9 @@ PLATFORM_mx8mm = "IMX8MM"
PLATFORM_mx8mq = "IMX8MQ"
do_compile () {
- oe_runmake CROSS_COMPILE="${HOST_PREFIX}" LINUX_KERNEL_ROOT="${STAGING_KERNEL_DIR}"
SDKTARGETSYSROOT="${STAGING_DIR_TARGET}" PLATFORM="${PLATFORM}" all
+ oe_runmake CROSS_COMPILE="${HOST_PREFIX}"
LINUX_KERNEL_BUILD="${STAGING_KERNEL_BUILDDIR}" \
+ LINUX_KERNEL_ROOT="${STAGING_KERNEL_DIR}"
SDKTARGETSYSROOT="${STAGING_DIR_TARGET}" \
+ PLATFORM="${PLATFORM}" all
}
do_install () {
--
_______________________________________________
meta-freescale mailing list
meta-freescale@yoctoproject.org
https://lists.yoctoproject.org/listinfo/meta-freescale