Skip to content

Commit

Permalink
meta-hailo: Add support for tappas
Browse files Browse the repository at this point in the history
  • Loading branch information
huaqianli committed Feb 27, 2025
1 parent 0b7fe27 commit fa2e5a6
Show file tree
Hide file tree
Showing 17 changed files with 298 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -1 +1 @@
usr/lib/aarch64-linux-gnu/libgsthailo.so
usr/lib/${DEB_HOST_MULTIARCH}/libgsthailo.so /usr/lib/${DEB_HOST_MULTIARCH}/gstreamer-1.0/
Original file line number Diff line number Diff line change
@@ -1 +1 @@
usr/lib/*/libhailort.so.*
usr/lib/${DEB_HOST_MULTIARCH}/libhailort.so.*
65 changes: 65 additions & 0 deletions meta-hailo/recipes-app/tappas/files/debian/control
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
Source: tappas
Maintainer: Li Hua Qian <[email protected]>
Section: devel
Priority: optional
Standards-Version: 4.6.1
Build-Depends:
debhelper-compat (= 13),
meson,
ninja-build,
pkg-config,
gstreamer1.0-tools,
libgstreamer1.0-dev,
gstreamer1.0-plugins-base,
libgstreamer-plugins-base1.0-dev,
libopencv-dev,
libcxxopts-dev,
rapidjson-dev,
xtl-dev:all,
xtensor-dev:all,
libglib2.0-dev,
cppzmq-dev,
libzmq3-dev,
libhailort-dev,
libgsthailo-dev,
procps

Package: libgsthailotools
Architecture: any
Multi-Arch: foreign
Description: GStreamer tools for Hailo
Depends:
libhailort-dev (=${binary:Version}),
${misc:Depends},
${shlibs:Depends}

Package: tappas-apps
Architecture: any
Multi-Arch: foreign
Description: Tappas applications for Hailo
Depends:
bash,
libgsthailotools,
gstreamer1.0-tools,
gstreamer1.0-plugins-base,
gstreamer1.0-plugins-good,
gstreamer1.0-plugins-bad,
${misc:Depends},
${shlibs:Depends}

Package: hailo-post-processes
Architecture: any
Multi-Arch: foreign
Description: Post-processing tools for Hailo
Depends:
libgsthailotools,
${misc:Depends},
${shlibs:Depends}

Package: tappas-tracers
Architecture: any
Multi-Arch: foreign
Description: Tracing tools for Tappas
Depends:
${misc:Depends},
${shlibs:Depends}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
usr/lib/hailo-post-processes/*
usr/lib/hailo-post-processes/cropping_algorithms/*
usr/lib/hailo-post-processes/post_processes_data/*
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
usr/lib/${DEB_HOST_MULTIARCH}/gstreamer-1.0/libgsthailotools.so
usr/lib/${DEB_HOST_MULTIARCH}/libgsthailometa.so
usr/lib/${DEB_HOST_MULTIARCH}/libhailo_tracker.so
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
usr/lib/${DEB_HOST_MULTIARCH}/gstreamer-1.0/libgsthailotools.so*
usr/lib/${DEB_HOST_MULTIARCH}/libgsthailometa.so*
usr/lib/${DEB_HOST_MULTIARCH}/libhailo_tracker.so*
2 changes: 2 additions & 0 deletions meta-hailo/recipes-app/tappas/files/debian/not-installed
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
usr/include/gsthailometa/gst_hailo_meta.hpp
usr/lib/${DEB_HOST_MULTIARCH}/pkgconfig/gsthailometa.pc
30 changes: 30 additions & 0 deletions meta-hailo/recipes-app/tappas/files/debian/rules
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#!/usr/bin/make -f

export DEB_BUILD_MAINT_OPTIONS=hardening=+all

%:
dh $@

# Tappas currently supports gstreamer well on Hailo8 with IMX8 (ARM64)
# platforms. Therefore, 'imx8' is used for the initial release.
override_dh_auto_configure:
dh_auto_configure --buildsystem=meson --sourcedirectory=core/hailo -- \
-Dlibargs="-I/usr/include/gst-hailo/metadata,\
-I/usr/include/hailo,\
-I/usr/include/gstreamer-1.0/gst/hailo" \
-Dlibxtensor="/usr/include/xtensor" \
-Dlibcxxopts='/usr/include' \
-Dlibrapidjson='/usr/include/rapidjson' \
-Dpost_processes_install_dir='/usr/lib/hailo-post-processes' \
-Dapps_install_dir='/usr/lib/' \
-Dinclude_blas=false \
-Dcpp_std="c++17" \
-Dtarget="all" \
-Dtarget_platform="imx8" \
--buildtype="release"

override_dh_auto_build:
dh_auto_build --buildsystem=meson --sourcedirectory=core/hailo

override_dh_auto_install:
dh_auto_install --buildsystem=meson --sourcedirectory=core/hailo
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
usr/lib/libhailo_cv_singleton.so* usr/lib/
usr/lib/libhailo_gst_image.so* usr/lib/
20 changes: 20 additions & 0 deletions meta-hailo/recipes-app/tappas/files/debian/tappas-apps.install
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
usr/lib/${DEB_HOST_MULTIARCH}/libhailo_cv_singleton.so*
usr/lib/${DEB_HOST_MULTIARCH}/libhailo_gst_image.so*

# detection
debian/detection/* usr/share/tappas/detection/resources/
apps/h8/gstreamer/imx8/detection/detection.sh usr/share/tappas/detection/
apps/h8/gstreamer/imx8/detection/configs/* usr/share/tappas/detection/resources/configs/

# license_plate_recognition
debian/license_plate_recognition/* usr/share/tappas/license_plate_recognition/resources/
apps/h8/gstreamer/imx8/license_plate_recognition/license_plate_recognition.sh usr/share/tappas/license_plate_recognition/
apps/h8/gstreamer/imx8/license_plate_recognition/configs/* usr/share/tappas/license_plate_recognition/resources/configs

usr/lib/license_plate_recognition/resources/liblpr_ocrsink.so usr/share/tappas/license_plate_recognition/resources/
usr/lib/license_plate_recognition/resources/liblpr_overlay.so usr/share/tappas/license_plate_recognition/resources/

# multistream_detection
debian/multistream_detection/* usr/share/tappas/multistream_detection/resources/
apps/h8/gstreamer/imx8/multistream_detection/*.sh usr/share/tappas/multistream_detection/
apps/h8/gstreamer/imx8/multistream_detection/configs/* usr/share/tappas/multistream_detection/resources/configs
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
usr/lib/${DEB_HOST_MULTIARCH}/gstreamer-1.0/libgsthailotracers.so*
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Li Hua Qian <[email protected]>
Date: Thu, 27 Feb 2025 17:09:24 +0800
Subject: [PATCH] tappas: Adapt tappas apps for compatibility with meta-iot2050

Signed-off-by: Li Hua Qian <[email protected]>
---
apps/h8/gstreamer/imx8/detection/detection.sh | 3 ++-
.../license_plate_recognition/license_plate_recognition.sh | 2 +-
.../imx8/multistream_detection/multi_stream_detection.sh | 2 +-
3 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/apps/h8/gstreamer/imx8/detection/detection.sh b/apps/h8/gstreamer/imx8/detection/detection.sh
index 62391831471d..365e554405c0 100755
--- a/apps/h8/gstreamer/imx8/detection/detection.sh
+++ b/apps/h8/gstreamer/imx8/detection/detection.sh
@@ -63,6 +63,7 @@ parse_args $@
PIPELINE="gst-launch-1.0 \
v4l2src device=$input_source ! video/x-raw,format=YUY2,width=1280,height=720,framerate=30/1 ! \
queue leaky=downstream max-size-buffers=5 max-size-bytes=0 max-size-time=0 ! \
+ videoconvert ! videoscale ! video/x-raw,format=YUY2,width=1280,height=720,framerate=30/1 ! \
hailonet hef-path=$hef_path ! \
queue leaky=no max-size-buffers=30 max-size-bytes=0 max-size-time=0 ! \
hailofilter function-name=$network_name config-path=$json_config_path so-path=$postprocess_so qos=false ! \
@@ -70,7 +71,7 @@ PIPELINE="gst-launch-1.0 \
hailooverlay ! \
queue leaky=downstream max-size-buffers=5 max-size-bytes=0 max-size-time=0 ! \
videoconvert ! \
- fpsdisplaysink video-sink=autovideosink name=hailo_display sync=false text-overlay=false ${additional_parameters}"
+ videoconvert ! avimux ! filesink location=output.avi"

echo "Running $network_name"
echo ${PIPELINE}
diff --git a/apps/h8/gstreamer/imx8/license_plate_recognition/license_plate_recognition.sh b/apps/h8/gstreamer/imx8/license_plate_recognition/license_plate_recognition.sh
index d9d611129ea8..f9c313a7ae5c 100755
--- a/apps/h8/gstreamer/imx8/license_plate_recognition/license_plate_recognition.sh
+++ b/apps/h8/gstreamer/imx8/license_plate_recognition/license_plate_recognition.sh
@@ -167,7 +167,7 @@ PIPELINE="${debug_stats_export} gst-launch-1.0 ${stats_element} \
queue leaky=no max-size-buffers=30 max-size-bytes=0 max-size-time=0 ! \
hailooverlay line-thickness=3 font-thickness=1 qos=false ! \
hailofilter use-gst-buffer=true so-path=$LPR_OVERLAY qos=false ! \
- fpsdisplaysink video-sink=autovideosink name=hailo_display sync=$sync_pipeline text-overlay=false \
+ videoconvert ! avimux ! filesink location=output.avi \
$tee_name. ! \
$pipeline_1 ! \
hailofilter use-gst-buffer=true so-path=$LPR_OCR_SINK qos=false ! \
diff --git a/apps/h8/gstreamer/imx8/multistream_detection/multi_stream_detection.sh b/apps/h8/gstreamer/imx8/multistream_detection/multi_stream_detection.sh
index aff1f17e618a..48e4e4d45900 100755
--- a/apps/h8/gstreamer/imx8/multistream_detection/multi_stream_detection.sh
+++ b/apps/h8/gstreamer/imx8/multistream_detection/multi_stream_detection.sh
@@ -98,7 +98,7 @@ function main() {
streamiddemux name=sid compositor name=comp start-time-selection=0 $compositor_locations ! \
queue name=hailo_video_q_0 leaky=no max-size-buffers=30 max-size-bytes=0 max-size-time=0 ! \
videoconvert ! queue name=hailo_display_q_0 leaky=no max-size-buffers=30 max-size-bytes=0 max-size-time=0 ! \
- fpsdisplaysink video-sink=\" $videosink \" name=hailo_display sync=false text-overlay=false \
+ videoconvert ! avimux ! filesink location=output.avi \
$sources ${additional_parameters}"

echo ${pipeline}
48 changes: 48 additions & 0 deletions meta-hailo/recipes-app/tappas/tappas_4.18.0.bb
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# SPDX-FileCopyrightText: Copyright 2025 Siemens AG
# SPDX-License-Identifier: MIT

DESCRIPTION = "application examples, pipeline elements and pre-trained AI for Hailo8"
LICENSE = "MIT"

inherit dpkg

SRC_URI = "git://[email protected]/hailo-ai/tappas.git;protocol=https;name=tappas;branch=master;destsuffix=${P}"
SRCREV_tappas = "4327923422ababaf3a9395f86bf39f5b34dcfd83"

SRC_URI += " \
file://debian/control \
file://debian/rules \
file://debian/libgsthailotools.install \
file://debian/tappas-apps.install \
file://debian/hailo-post-processes.install \
file://debian/tappas-tracers.install \
file://debian/not-installed \
file://files/patches/0001-tappas-Adapt-tappas-apps-for-compatibility-with-meta.patch \
"

# tappas-app requirements
SRC_URI += " \
https://hailo-tappas.s3.eu-west-2.amazonaws.com/v3.29/imx8/hefs/yolov5m_yuv.hef;md5sum=41eeee848844f65634d0873188b08ce1;subdir=debian/detection \
https://hailo-tappas.s3.eu-west-2.amazonaws.com/v3.29/imx8/hefs/yolov5m_vehicles_no_ddr_yuy2.hef;md5sum=64a6d26d172f671c2bfd2aa2d1840389;subdir=debian/license_plate_recognition \
https://hailo-tappas.s3.eu-west-2.amazonaws.com/v3.29/imx8/hefs/tiny_yolov4_license_plates_yuy2.hef;md5sum=dfb49b07250f9e2ea03add746faaa35b;subdir=debian/license_plate_recognition \
https://hailo-tappas.s3.eu-west-2.amazonaws.com/v3.29/imx8/media/lpr.raw;md5sum=5f2217b90b4bb4e405f7323038840786;subdir=debian/license_plate_recognition \
https://hailo-tappas.s3.eu-west-2.amazonaws.com/v3.29/imx8/hefs/lprnet_yuy2.hef;md5sum=409fd97b76d72aed32733090e35d1a4b;subdir=debian/license_plate_recognition \
https://hailo-tappas.s3.eu-west-2.amazonaws.com/v3.29/general/hefs/yolov5s_personface_nv12.hef;md5sum=0f1718e9d1001a9a3e38729e96937aef;subdir=debian/multistream_detection \
https://hailo-tappas.s3.eu-west-2.amazonaws.com/v3.29/imx8/media/multistream_detection_h265/detection0.mp4;md5sum=1bcc3ff8e9340d27be080c56d9baff67;subdir=debian/multistream_detection \
https://hailo-tappas.s3.eu-west-2.amazonaws.com/v3.29/imx8/media/multistream_detection_h265/detection1.mp4;md5sum=39bd1a803e3b229593aeec48bede6c89;subdir=debian/multistream_detection \
https://hailo-tappas.s3.eu-west-2.amazonaws.com/v3.29/imx8/media/multistream_detection_h265/detection2.mp4;md5sum=23db3d4453746da78ed06e5e285a3398;subdir=debian/multistream_detection \
https://hailo-tappas.s3.eu-west-2.amazonaws.com/v3.29/imx8/media/multistream_detection_h265/detection3.mp4;md5sum=d4bdc5b3737776098017edac2834403e;subdir=debian/multistream_detection \
https://hailo-tappas.s3.eu-west-2.amazonaws.com/v3.29/imx8/media/multistream_detection_h265/detection4.mp4;md5sum=57234ea865a45b331cbe965e458fe944;subdir=debian/multistream_detection \
https://hailo-tappas.s3.eu-west-2.amazonaws.com/v3.29/imx8/media/multistream_detection_h265/detection5.mp4;md5sum=155c2d1ce92d0412f977fb0eb7965243;subdir=debian/multistream_detection \
"

DEPENDS += " hailort "
PROVIDES += " libgsthailotools tappas-apps hailo-post-processes tappas-tracers"

S = "${WORKDIR}/${P}"

do_prepare_build[cleandirs] += "${S}/debian"
do_prepare_build() {
deb_add_changelog
cp -r ${WORKDIR}/debian/* ${S}/debian/
}
22 changes: 22 additions & 0 deletions meta-hailo/recipes-cpp/xtl-dev/debian/control
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
Source: xtl-dev
Section: python
Priority: optional
Maintainer: Li Hua Qian <[email protected]>
Build-Depends: debhelper-compat (= 13),
dh-python,
python3-setuptools (>=42),
libpython3-all-dev (>=3.2),
python3-all-dev:any (>=3.2),
python3-wheel:native,
libhello-dev
Standards-Version: 4.6.1
Homepage: https://verboselogs.readthedocs.io/
Vcs-Browser: https://github.com/xolox/python-verboselogs
Vcs-Git: https://github.com/xolox/python-verboselogs.git
Rules-Requires-Root: no

Package: xtl-dev
Architecture: any
Multi-Arch: foreign
Depends: ${python3:Depends}, ${misc:Depends}, xtl-dev:all
Description: Dummy package to satisfy xtl-dev dependency for arm64
6 changes: 6 additions & 0 deletions meta-hailo/recipes-cpp/xtl-dev/debian/rules
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/usr/bin/make -f

export BUILD_NAME=xtl-dev

%:
dh $@ --buildsystem=cmake
28 changes: 28 additions & 0 deletions meta-hailo/recipes-cpp/xtl-dev/xtl-dev_temp0.7.3.bb
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
SUMMARY = "Xtl: Basic tools (containers, algorithms) used by other quantstack packages"
HOMEPAGE = "https://github.com/xtensor-stack/xtl"

inherit dpkg

SRC_URI = "https://github.com/xtensor-stack/xtl.git;protocol=https;branch=master"
SRCREV = "46f8a9390db2c52aaf41de8f93ed0dab97af012d"
SRC_URI += " \
file://debian/control \
file://debian/rules \
"

S = "${WORKDIR}/git"

DEPENDS += " libhello "
PROVIDES += "xtl-dev"

DEB_BUILD_PROFILES = "nocheck"
DEB_BUILD_OPTIONS = "nocheck"

do_prepare_build[cleandirs] += "${S}/debian"
do_prepare_build() {
deb_debianize
rm -f ${S}/debian/compat
cp ${WORKDIR}/debian/control \
${WORKDIR}/debian/rules \
${S}/debian/
}
4 changes: 4 additions & 0 deletions recipes-core/images/iot2050-image-example.bb
Original file line number Diff line number Diff line change
Expand Up @@ -76,4 +76,8 @@ IMAGE_INSTALL += "${@ ' \
libgsthailo-dev \
python3-hailort \
hailort \
libgsthailotools \
tappas-apps \
hailo-post-processes \
tappas-tracers \
' if d.getVar('IOT2050_META_HAILO') == '1' else '' }"

0 comments on commit fa2e5a6

Please sign in to comment.