Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
SUMMARY = "CamX camera module with core interface utilities, extended image processing libraries, and CHI developer kit including sensor, tuning binaries"
DESCRIPTION = "This recipe introduces Qualcomm CamX camera module which creates three components.\
camxlib: Includes common utilities, image processing algorithms and hardware support libraries extending CamX functionality for platform-specific enhancements. \
camx: Core CamX engine that manages camera pipelines, mediates between camera clients and hardware, and exposes structured interfaces to higher-level frameworks. \
chicdk: Camera hardware interface development kit delivering a configurable mechanism for use case selection and camera pipeline topology creation. \
Includes configurable sensor and tuning binaries, which are essential for enabling full camera functionality."
LICENSE = "LICENSE.qcom-2"
LIC_FILES_CHKSUM = "file://usr/share/doc/${BPN}/NO.LOGIN.BINARY.LICENSE.QTI.pdf;md5=7a5da794b857d786888bbf2b7b7529c8 \
file://usr/share/doc/${BPN}/NOTICE;md5=04facc2e07e3d41171a931477be0c690"

SRC_URI = " \
https://qartifactory-edge.qualcomm.com/artifactory/qsc_releases/software/chip/component/camx.qclinux.0.0/${PBT_BUILD_DATE}/prebuilt_yocto/${BPN}_${PV}_armv8-2a.tar.gz;name=camxlib \
https://qartifactory-edge.qualcomm.com/artifactory/qsc_releases/software/chip/component/camx.qclinux.0.0/${PBT_BUILD_DATE}/prebuilt_yocto/camx-kodiak_${PV}_armv8-2a.tar.gz;name=camx \
https://qartifactory-edge.qualcomm.com/artifactory/qsc_releases/software/chip/component/camx.qclinux.0.0/${PBT_BUILD_DATE}/prebuilt_yocto/chicdk-kodiak_${PV}_armv8-2a.tar.gz;name=chicdk \
"
SRC_URI[camxlib.sha256sum] = "55afef79b50eeded709af6079f22fd1565580cab3fc23568e3e1b9691bf10a29"
SRC_URI[camx.sha256sum] = "632c9b7e43cef62488760f8318a00c16ee6aca04b85ad4fcb66d32a2151ec171"
SRC_URI[chicdk.sha256sum] = "c03c94fac84563f2f2c9b464b1338d7b65ce09b51d270e70b0cbf92e40b8188d"
PBT_BUILD_DATE = "260102"

S = "${UNPACKDIR}"

DEPENDS += "glib-2.0 fastrpc protobuf libxml2 virtual/egl virtual/libgles2 virtual/libopencl1"

# This package is currently only used and tested on ARMv8 (aarch64) machines.
# Therefore, builds for other architectures are not necessary and are explicitly excluded.
COMPATIBLE_MACHINE = "^$"
COMPATIBLE_MACHINE:aarch64 = "(.*)"

# Disable configure and compile steps since this recipe uses prebuilt binaries.
do_configure[noexec] = "1"
do_compile[noexec] = "1"

do_install() {
install -d ${D}${libdir}
install -d ${D}${datadir}/doc/${BPN}
install -d ${D}${datadir}/doc/camx-kodiak
install -d ${D}${datadir}/doc/chicdk-kodiak
install -d ${D}${bindir}

cp -r ${S}/usr/lib/* ${D}${libdir}
cp -r ${S}/usr/bin/* ${D}${bindir}

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add a comment explaining why these files are getting removed.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The comment doesn't explain why they are removed.

Copy link
Contributor Author

@gkhose-qipl gkhose-qipl Jan 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@lumag ,
can we add below comment.
"The consumer of camera does not require unversion libs, so it is being removed."

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can't parse your phrase.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

will below work?
The camera consumer doesn't need the unversioned libraries, so they are being removed.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Our internal infrastructure creates the tar ball to support all customers, including meta-qcom-extras, which requires some unversioned so files for compilation. Therefore, we cannot remove these files from the tar archive.

This is why the unversioned so files are included in the tar. For meta-qcom, since no customer needs to compile anything, we do not need to include any unversioned so files. As a result, we remove them during do_install.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why are we assuming there will be no user that will build-depend on these libraries?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A huge number of those libraries are only loaded as plugins and are not used for linking. We have agreed to follow an opposite approach: drop everything, which is not being used at runtime, and then add necessary bits when the compilation tasks arise. It is easier than having to cope with several -dev packages, for which it's not clear, what is being used and what is not.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@lumag ,
correct, that is our aim.
for now removing unversioned libraries , will be added when compilation task arise.

# Remove unnecessary development symlinks (.so) from the staged image
rm -f ${D}${libdir}/camx/kodiak/*${SOLIBSDEV}
rm -f ${D}${libdir}/camx/kodiak/camera/components/*${SOLIBSDEV}
rm -f ${D}${libdir}/camx/kodiak/hw/*${SOLIBSDEV}
rm -f ${D}${libdir}/camx/kodiak/camera/*${SOLIBSDEV}

install -m 0644 ${S}/usr/share/doc/${BPN}/NOTICE ${D}${datadir}/doc/${BPN}
install -m 0644 ${S}/usr/share/doc/${BPN}/NO.LOGIN.BINARY.LICENSE.QTI.pdf ${D}${datadir}/doc/${BPN}

install -m 0644 ${S}/usr/share/doc/camx-kodiak/NOTICE ${D}${datadir}/doc/camx-kodiak
install -m 0644 ${S}/usr/share/doc/${BPN}/NO.LOGIN.BINARY.LICENSE.QTI.pdf ${D}${datadir}/doc/camx-kodiak

install -m 0644 ${S}/usr/share/doc/chicdk-kodiak/NOTICE ${D}${datadir}/doc/chicdk-kodiak
install -m 0644 ${S}/usr/share/doc/${BPN}/NO.LOGIN.BINARY.LICENSE.QTI.pdf ${D}${datadir}/doc/chicdk-kodiak
}

PACKAGE_BEFORE_PN += "camx-kodiak chicdk-kodiak"

FILES:camx-kodiak = "\
${libdir}/camx/kodiak/libchilog*${SOLIBS} \
${libdir}/camx/kodiak/camera/components/com.qti.node.eisv*${SOLIBS} \
${libdir}/camx/kodiak/camera/components/com.qti.node.swregistration*${SOLIBS} \
${libdir}/camx/kodiak/hw/camera.qcom*${SOLIBS} \
${libdir}/camx/kodiak/libcamera_hardware*${SOLIBS} \
${libdir}/camx/kodiak/libcamxexternalformatutils*${SOLIBS} \
${libdir}/camx/kodiak/libcom.qti.camx.chiiqutils*${SOLIBS} \
${libdir}/camx/kodiak/libcom.qti.node.eisv*${SOLIBS} \
"
FILES:chicdk-kodiak = "\
${libdir}/camx/kodiak/com.qti.feature2*${SOLIBS} \
${libdir}/camx/kodiak/libchimldw*${SOLIBS} \
${libdir}/camx/kodiak/com.qualcomm*${SOLIBS} \
${libdir}/camx/kodiak/chiofflinepostproclib*${SOLIBS} \
${libdir}/camx/kodiak/libcommonchiutils*${SOLIBS} \
${libdir}/camx/kodiak/libiccprofile*${SOLIBS} \
${libdir}/camx/kodiak/com.qti.chiusecaseselector*${SOLIBS} \
${libdir}/camx/kodiak/camera/components/com.qti.node*${SOLIBS} \
${libdir}/camx/kodiak/camera/com.qti.sensormodule*${SOLIBS} \
${libdir}/camx/kodiak/camera/components/libshdr3*${SOLIBS} \
${libdir}/camx/kodiak/camera/components/libbanding_correction*${SOLIBS} \
${libdir}/camx/kodiak/camera/components/com.qti.stats.hafoverride*${SOLIBS} \
${libdir}/camx/kodiak/camera/*.bin \
${libdir}/camx/kodiak/camera/com.qti.sensor*${SOLIBS} \
${libdir}/camx/kodiak/hw/com.qti.chi.*${SOLIBS} \
${bindir}/ \
"
FILES:${PN} = "\
${libdir}/camx/kodiak/*${SOLIBS} \
${libdir}/camx/kodiak/hw/*${SOLIBS} \
${libdir}/camx/kodiak/camera/components/*${SOLIBS} \
"
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
SUMMARY = "CamX camera module with core interface utilities, extended image processing libraries, and CHI developer kit including sensor, tuning binaries"
DESCRIPTION = "This recipe introduces Qualcomm CamX camera module which creates three components.\
camxlib: Includes common utilities, image processing algorithms and hardware support libraries extending CamX functionality for platform-specific enhancements. \
camx: Core CamX engine that manages camera pipelines, mediates between camera clients and hardware, and exposes structured interfaces to higher-level frameworks. \
chicdk: Camera hardware interface development kit delivering a configurable mechanism for use case selection and camera pipeline topology creation. \
Includes configurable sensor and tuning binaries, which are essential for enabling full camera functionality."
LICENSE = "LICENSE.qcom-2"
LIC_FILES_CHKSUM = "file://usr/share/doc/${BPN}/NO.LOGIN.BINARY.LICENSE.QTI.pdf;md5=7a5da794b857d786888bbf2b7b7529c8 \
file://usr/share/doc/${BPN}/NOTICE;md5=198d001f49d9a313355d5219f669a76c"

SRC_URI = " \
https://qartifactory-edge.qualcomm.com/artifactory/qsc_releases/software/chip/component/camx.qclinux.0.0/${PBT_BUILD_DATE}/prebuilt_yocto/${BPN}_${PV}_armv8-2a.tar.gz;name=camxlib \
https://qartifactory-edge.qualcomm.com/artifactory/qsc_releases/software/chip/component/camx.qclinux.0.0/${PBT_BUILD_DATE}/prebuilt_yocto/camx-lemans_${PV}_armv8-2a.tar.gz;name=camx \
https://qartifactory-edge.qualcomm.com/artifactory/qsc_releases/software/chip/component/camx.qclinux.0.0/${PBT_BUILD_DATE}/prebuilt_yocto/chicdk-lemans_${PV}_armv8-2a.tar.gz;name=chicdk \
https://qartifactory-edge.qualcomm.com/artifactory/qsc_releases/software/chip/component/camx.qclinux.0.0/${PBT_BUILD_DATE}/prebuilt_yocto/camxcommon-lemans_${PV}_armv8-2a.tar.gz;name=camxcommon \
"

SRC_URI[camxlib.sha256sum] = "e9c49b6e818db2a4a27ff80bf54c335861359e15de2055d52b6cf9aad995f0d5"
SRC_URI[camx.sha256sum] = "3baea58276298602d5e9b980a814a089378f0c9095683503befa7c32eee01dba"
SRC_URI[chicdk.sha256sum] = "bb73acd375abf114056c2fdfb345f648a3501a46ca292d5edf717a2ebae4b026"
SRC_URI[camxcommon.sha256sum] = "9f028650c176e306da8f979adc52fd1010e588379fe53971bd909ef776e5519f"
PBT_BUILD_DATE = "260102"

S = "${UNPACKDIR}"

DEPENDS += "glib-2.0 fastrpc protobuf libxml2"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we have 'virtual/egl virtual/libgles2 virtual/libopencl1' for kodiak and not for lemans?


# This package is currently only used and tested on ARMv8 (aarch64) machines.
# Therefore, builds for other architectures are not necessary and are explicitly excluded.
COMPATIBLE_MACHINE = "^$"
COMPATIBLE_MACHINE:aarch64 = "(.*)"

# Disable configure and compile steps since this recipe uses prebuilt binaries.
do_configure[noexec] = "1"
do_compile[noexec] = "1"

do_install() {
install -d ${D}${libdir}
install -d ${D}${datadir}/doc/${BPN}
install -d ${D}${datadir}/doc/camx-lemans
install -d ${D}${datadir}/doc/chicdk-lemans
install -d ${D}${bindir}
install -d ${D}/${sysconfdir}/camera/test/NHX/

cp -r ${S}/usr/lib/* ${D}${libdir}
cp -r ${S}/etc/camera/test/NHX/NHX.YUV_NV12_Prev_MaxRes.json ${D}/${sysconfdir}/camera/test/NHX/
cp -r ${S}/usr/bin/* ${D}${bindir}

# Remove unnecessary development symlinks (.so) from the staged image
rm -f ${D}${libdir}/camx/lemans/*${SOLIBSDEV}
rm -f ${D}${libdir}/camx/lemans/camera/components/*${SOLIBSDEV}
rm -f ${D}${libdir}/camx/lemans/hw/*${SOLIBSDEV}
rm -f ${D}${libdir}/camx/lemans/camera/*${SOLIBSDEV}

install -m 0644 ${S}/usr/share/doc/${BPN}/NOTICE ${D}${datadir}/doc/${BPN}
install -m 0644 ${S}/usr/share/doc/${BPN}/NO.LOGIN.BINARY.LICENSE.QTI.pdf ${D}${datadir}/doc/${BPN}

install -m 0644 ${S}/usr/share/doc/camx-lemans/NOTICE ${D}${datadir}/doc/camx-lemans
install -m 0644 ${S}/usr/share/doc/${BPN}/NO.LOGIN.BINARY.LICENSE.QTI.pdf ${D}${datadir}/doc/camx-lemans

install -m 0644 ${S}/usr/share/doc/chicdk-lemans/NOTICE ${D}${datadir}/doc/chicdk-lemans
install -m 0644 ${S}/usr/share/doc/${BPN}/NO.LOGIN.BINARY.LICENSE.QTI.pdf ${D}${datadir}/doc/chicdk-lemans
}

RPROVIDES:${PN} = "camxlib-monaco"
PACKAGE_BEFORE_PN += "camx-lemans chicdk-lemans"

FILES:camx-lemans = "\
${libdir}/camx/lemans/hw/camera.qcom*${SOLIBS} \
${libdir}/camx/lemans/libcamera_hardware*${SOLIBS} \
${libdir}/camx/lemans/libcamxexternalformatutils*${SOLIBS} \
${libdir}/camx/lemans/libcom.qti.camx.chiiqutils*${SOLIBS} \
${libdir}/camx/lemans/libcom.qti.node.eisv*${SOLIBS} \
"
FILES:chicdk-lemans = "\
${libdir}/camx/lemans/com.qti.feature2*${SOLIBS} \
${libdir}/camx/lemans/com.qualcomm*${SOLIBS} \
${libdir}/camx/lemans/libcommonchiutils*${SOLIBS} \
${libdir}/camx/lemans/libiccprofile*${SOLIBS} \
${libdir}/camx/lemans/com.qti.chiusecaseselector*${SOLIBS} \
${libdir}/camx/lemans/camera/components/com.qti.node*${SOLIBS} \
${libdir}/camx/lemans/camera/com.qti.sensormodule*${SOLIBS} \
${libdir}/camx/lemans/camera/*.bin \
${libdir}/camx/lemans/camera/com.qti.sensor*${SOLIBS} \
${libdir}/camx/lemans/hw/com.qti.chi.*${SOLIBS} \
${sysconfdir}/camera/test/NHX/ \
${bindir}/ \
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Which packages are to be installed in order to get CamX functional? Doesn't ${PN} depend on other packages? Or is it being handled automatically? Could you please open a draft PR, integrating CamX into meta-qcom-distro?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

below is distro change.
--- a/recipes-products/images/qcom-multimedia-proprietary-image.bb
+++ b/recipes-products/images/qcom-multimedia-proprietary-image.bb
@@ -11,6 +11,8 @@ CORE_IMAGE_BASE_INSTALL += "
iris-video-dlkm
kgsl-dlkm
qcom-adreno
++ chicdk-lemans \
++ chicdk-kodiak "

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we only add chicdk-lemans and chicdk-kodiak

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a bit counterintuitive. This requires knowing what is chicdk and how it is related to CamX. I'd prefer if we list camx packages here.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.


Dependency flow.
camxcommon
camxlib (depends on camxcommon)
camx (depends on camxlib)
chicdk (depnds on camx)

chi-cdk:- (Camera Hardware Interface Customization Development Kit).

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One definitely doesn't need "Development Kit" if one wants to capture camera images.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, why is the development kit needed during runtime? Shouldn't it be needed only when building against camx?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

capturing images without sensor or tuning binaries is also not possible.Chi-cdk is also required to capture camera image.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The apps don't depend on the CHICDK. It is an internal design of CamX. As such, we should only be pulling camx-kodiak & camx-lemans into the image. The rest must be handled by the packages themselves. Your libraries are doing tons of dlopens. Consider CamX being a normal, dynamically-linked set of libraries. Which package would depend on which?

Copy link
Contributor Author

@gkhose-qipl gkhose-qipl Jan 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, we will include camx-kodiak and camx-lemans in the image. For chicdk, we will check internally to determine how we can manage it.

"
FILES:${PN} = "\
${libdir}/camx/lemans/*${SOLIBS} \
${libdir}/camx/lemans/camera/components/com.qti.node.swregistration*${SOLIBS} \
${libdir}/camx/lemans/hw/*${SOLIBS} \
${libdir}/camx/lemans/camera/components/*${SOLIBS} \
"
Loading