Promote changes from v1.0.3 - #42
Merged
GirishKadirisani merged 91 commits intoSep 11, 2026
Merged
GirishKadirisani merged 91 commits into
GirishKadirisani merged 91 commits into
Conversation
Signed-off-by: Hasibur Rahman Mohammed <hasiburr@qti.qualcomm.com>
Fork-originated pull_request events don't receive repo secrets, so the SDK download and S3 upload steps in IMSDK_UAT_Compilation always failed for PRs from forks. Split the workflow: the pull_request trigger now only records the PR head SHA as an artifact, and a new workflow_run-triggered workflow (imsdk_compilation_pr.yml) performs the actual build in the base repo's context, where secrets are available. The privileged jobs are gated behind a `build` environment approval to avoid running fork-authored code with secrets unreviewed. Signed-off-by: Hasibur Rahman Mohammed <hasiburr@qti.qualcomm.com>
Any changes to headers in base won't be available in the sdk. Build and install base to avoid build failures due to changes in gst-plugin-base. Signed-off-by: Bala Sai Kosuri <bkosuri@qti.qualcomm.com>
…ted codec2 version GST_C2_PARAM_INTRA_REFRESH_MODE was introduced in codec2 v2.1 (change 6487824), but the version guard only checked MAJOR == 2, causing it to be applied on v2.0 where the parameter does not exist and results in a failure. Add minor version check (>= 1) to restrict this to v2.1+. Signed-off-by: Duanpeng Liu <duanpeng@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
The hardcoded composer capabilities in gst-ai-multistream-inference app are removed to enable dynamic capability negotiation. Signed-off-by: Muthumula Sai Harshith Reddy <muthumul@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
Add missing RGBA8888/RGBx and BGRA8888/BGRx to NV12/NV21 conversion cases in gst_fcv_video_converter_rgb_to_yuv() using the FastCV API fcvColorRGBA8888ToYCbCr420PseudoPlanaru8. Previously, using engine=fcv with qtimlvconverter or qtivcomposer in pipelines that require an RGBA/BGRA → NV12 color conversion (e.g. IMSDK ML inference pipelines on Aspen LE) would hit the unsupported format error path and fail. The mapping is: RGBA/RGBx → NV12: direct call to ColorRGBA8888ToYCbCr420PseudoPlanaru8 BGRA/BGRx → NV21: same API (byte order is equivalent) BGRA/BGRx → NV12: same API + chroma swap to destination RGBA/RGBx → NV21: same API + chroma swap to destination Signed-off-by: Duanpeng Liu <duanpeng@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
- Add file existence check for all watermark RGBA file paths before creating the GStreamer pipeline. - Report error for each missing or non-regular file with clear path information. - Exit with error code when any watermark file is not found, preventing the pipeline from hanging indefinitely. - Support validation for multiple watermark entries specified via repeated -I/--image options. Signed-off-by: Hongyong Huang <hongyong@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
- qticamimgreproc takes ownership of the metadata pointer and frees it. - In qmmfsrc, freeing the metadata for discarded buffers only. - skip the freeing in qmmfsrc as reproc already owns it and free the memory. Signed-off-by: Shubhankar Kulkarni <shukulk@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
- The app supports: - Dual-camera (CAM1 + CAM2) pre-buffering via logical camera - Per-camera sensor standby during buffering - Live view streaming during buffering window - RDI and IPE Bypass tap-out modes - Snapshot capture during buffering and recording Signed-off-by: Shubhankar Kulkarni <shukulk@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
- Validate watermark RGBA file paths exist before pipeline creation. - Reject unexpected positional CLI arguments. - Fix GLib warning in help-h option definition. Signed-off-by: Hongyong Huang <hongyong@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
Install versioned libgenie-vlm libs. Signed-off-by: Nikolay Hristozov <c_nhrist@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
…ies" This reverts commit a00fd158930c9ce579f2bdd28cc080d9829ec215. Signed-off-by: Petar G. Georgiev <c_petarg@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
Issue 1: Direct manipulation of the PKG_CONFIG_PATH env variable
for attaching local paths to .pc files in order to tell
pkg_check_modules where to search for them is improper
and is causing pollution of the work environment.
Fix 1: Use PKG_CONFIG_USE_CMAKE_PREFIX_PATH together with a global
list variable PKG_CONFIG_LOCAL_PATH to which each sub-project
appends their path. Before each pkg_check_modules the
sub-project CMAKE_PREFIX_PATH it set to PKG_CONFIG_LOCAL_PATH.
Issue 2: The below "poison-system-directories" errors is due to
malformed .pc file template.
cc1plus: error: include location "/usr/include/gstreamer-1.0"
is unsafe for cross-compilation [-Werror=poison-system-directories]
Fix 2: Add "Requires:" and use pcfiledir variable for such relocatable
pkg-config usages.
Signed-off-by: Petar G. Georgiev <c_petarg@qti.qualcomm.com>
Signed-off-by: Girish K <girik@qti.qualcomm.com>
- Rename some of the structures in order to simplify them. Parts in the naming where redundant. - Rename headers and source files and drop redundant words. - Enhance post-process structures with helper functions. - Make the structures, APIs and documentation compatible with gobject-introspection - Include new files in GIR and TYPELIB generation Change-Id: I244346ca75e995024aa2fd38c3304ff29fcfc052 Signed-off-by: Petar G. Georgiev <c_petarg@qti.qualcomm.com>
Call gst_init() before checking for the libcamerasrc plugin so GStreamer is properly initialized before registry/factory lookup. This fixes the false "libcamerasrc not present" result seen at runtime even when the plugin is installed and working on the target. Signed-off-by: Shantanu <shanmaju@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
Modify include file dependency. Signed-off-by: Shradha Somani <shrasoma@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
- Modify example according to ce_cdm18 rather than ce_cdm before. - Fix warning. - Fix conflict between functions. Signed-off-by: Shradha Somani <shrasoma@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
Issue: Build fails if audio codec2 is not enabled due to missing symbol references. Fix: Use existing macro definitions to add conditional checks and exclude audio-codec2 component when disabled. Signed-off-by: Bing Li <bli8@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
-Issue: negative min-quant value failed to be set in case of 10bit.
-Fix:
1.Pass quant init/range properties from uint32_t to int32_t.
2.Change default min-quant value from 10 to 0 as the qp range of
8bit start from 0 while that of 10bit starts from -12.
Signed-off-by: Ziyi Gai <zgai@qti.qualcomm.com>
Signed-off-by: Girish K <girik@qti.qualcomm.com>
-Accept CDM provisioning URL (--cdm-prov) and license URL (--cdm-lic) as CLI arguments to avoid hardcoding sensitive URLs in source code. Signed-off-by: Shradha Somani <shrasoma@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
…on drain EOS arriving on any of the three sink pads (sink, sink_ctrl, sink_ml) was forwarded downstream via gst_pad_event_default(), triggering GstBin's EOS aggregation and causing the encoder to receive EOS before the worker task had drained main_frames. This dropped the last min_buffers frames on every stream end. Fix by consuming EOS on all three sink pads and delegating EOS delivery to the encoder solely from the worker task, after main_frames is fully drained. Signed-off-by: Raja Ganapathi Busam <rbusam@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
Initial version of override files for Python GstQtiML. Signed-off-by: Petar G. Georgiev <c_petarg@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
-Issue: parsing results will be overlaied leading to segmentation fault
in case of open and close qmmf context multiple times.
-Fix: clean old data at the beginning of parsing.
Signed-off-by: Ziyi Gai <zgai@qti.qualcomm.com>
Signed-off-by: Girish K <girik@qti.qualcomm.com>
Issue: When we run any pipeline, unnecessary warnings appear on the console. these logs are seen as GBM fails to detect the driver's name or device information. Fix: Using correct fd associated with drm render nodes (/dev/dri/renderD128) for gbm device creation. Signed-off-by: Shradha Somani <shrasoma@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
Add compilation flags needed for proper compilation of mllbin plugin Signed-off-by: Angel Hitov <c_ahitov@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
Attach the valid ImageRegion based on the input source aspect ratio. Signed-off-by: Filip Kardzhaliyski <fkardzha@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
- Propagate the resolution of the model input tensor from mlvconverter to downstream mlpostprocess via the custom ml-preprocess-information event. - Use the propagated ml-preprocess-information event in mlpostprocess to automatically negotiate resolution in case of image mask output. - Improve segmentation and super-resolution modules to populate only pixels in the image mask which have real dat. - In vcomposer check and use the service ROI meta "ImageRegion" as a source for the blits when it is available. Signed-off-by: Petar G. Georgiev <c_petarg@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
- The TextGeneration structure is not supported end-to-end as it was only partially implemented. - Remove the structure as the its usage will not be implemented. Signed-off-by: Petar G. Georgiev <c_petarg@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
The QTI allocator is inheriting DMA Allocator so manual DMA buffer sync is no longer needed. Signed-off-by: Petar G. Georgiev <c_petarg@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
- Process person ROI and invoke the AFR API to obtain smooth ROI coordinates. - Fall back to the full FOV when no person ROI is available. Signed-off-by: Jasjot Singh <jasjsing@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
Issue: Caps negotiation fails with not-negotiated when the src
pad template's tensor type has a single entry (e.g. { FLOAT32 }),
since the resulting caps are then fully fixed and GstBaseTransform
skips querying the downstream peer before fixation — dropping a
downstream-fixed dimensions and causing mlaconverter to fall back
to its own computed shape.
Fix: In fixate_caps, when dimensions/type isn't already fixed,
query the src pad's peer caps directly and use its fixed value
before falling back to the audio converter-computed one, so
downstream constraints aren't lost regardless of tensor type
list size.
Signed-off-by: Shradha Somani <shrasoma@qti.qualcomm.com>
Signed-off-by: Girish K <girik@qti.qualcomm.com>
Extract the GI overrides from gst-plugin-base into a new gst-python module, gated by ENABLE_GST_PYTHON, so the Python bindings can be built and enabled independently of the base plugin. Signed-off-by: Petar G. Georgiev <c_petarg@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
Rename the type and its API (gst_ml_sample_* -> gst_ml_bundle_*) to better reflect that it bundles a buffer with its ML info, and update the sole external user in mlvconverter. Signed-off-by: Petar G. Georgiev <c_petarg@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
- Use the new QNN EP plugin ABI which will be shipped as standalone shared lib. - Removed libonnxruntime_providers_qnn.so from target_link_libraries as this library will be loaded dynamically at runtime and not be linked during build time. - Register this library in the plugin at runtime if the backend execution provider is selected as QNN Signed-off-by: Pratik Pachange <ppachang@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
The previous default (127.0.0.1) restricted the RTSP server to loopback-only connections, so it could not be reached from other devices on the network without manually setting the "address" property. Changing the default to 0.0.0.0 binds all interfaces, making the server reachable by all devices on the LAN. Signed-off-by: Yordan Stoilov <ystoilov@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
Issue: Malformed messages crash receive_socket_message() via an OOB heap read and an fd-count buffer overflow. Analysis: Payload size and fd count come from untrusted input and were used without bounds checks, so a record could extend past io_buf and a large n_fds could overflow the fixed pl_info->fds buffer. Fix: - Skip records whose identity/payload does not fit within recv_len. - If n_fds > GST_MAX_MEM_BLOCKS, drop message. Signed-off-by: Viswanath Srikanth Bathina <bathina@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
-Issue: EOS will be skipped while c2buffer with index 0 hasn't been done. -Fix: modify EOS index to avoid corruption with index 0. Signed-off-by: Ziyi Gai <zgai@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
- Implement plugin using unified QAIRT interface. - Supports both .dlc and .bin models. Signed-off-by: Bala Sai Kosuri <bkosuri@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
Issue: Inavlid data was returned in the size and data field for a
GstMLTensor return from gst_ml_frame_get_tensor when the tensors
in the underlying buffer are allocated as single continuous
memory block.
Fix: Calculate the data pointer offset when there is only a single
memory block.
Signed-off-by: Petar G. Georgiev <c_petarg@qti.qualcomm.com>
Signed-off-by: Girish K <girik@qti.qualcomm.com>
- add lib version for AFR. Signed-off-by: jasjsing <jasjsing@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
When the tensors property is used and a reorder is needed, populate pointed each native output tensor's clientBuf at its own native block instead of its final destination block, so in the convert to float stage the not yet read tensors get overriden by earlier tensors. Resolve graphindices at populate time instead, so each native output tensor's clientBuf.data points directly at its final destination block before graphExecute() runs. Signed-off-by: Boris Markov <mboris@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
Problem:
- Output for a composer sink pad zooms/crops into a detected object's
bounding box as soon as any detection is present on the buffer. With
nothing detected the full frame is composed correctly; when a person
(or any class) is detected the tile scales that detection's box to
fill the whole tile. Reproduced with a YOLOv8 detection stream muxed
via qtimetamux and composed by qtivcomposer.
Analysis:
- gst_buffer_get_image_region_meta() is meant to return the "ImageRegion"
ROI meta (or NULL when absent) so the blit source rectangle can be
pinned to it. The loop assigned roimeta unconditionally on every
iteration and only broke out on an "ImageRegion" match, so when the
buffer carried ROI metas but none was an "ImageRegion" it returned the
last iterated meta instead of NULL.
- qtimetamux attaches one ROI meta per detection whose roi_type is the
class label ("person", etc.), never "ImageRegion". The composer then
consumed that detection box as the blit source rectangle (setting
GST_VIDEO_CONVERTER_MASK_SOURCE), scaling the box to the tile. With no
detections there are no ROI metas, the loop body never runs, roimeta
stays NULL and the full frame is used - hence the detection-dependent
behaviour.
Fix:
- Only assign roimeta when the candidate's roi_type actually matches
"ImageRegion", leaving it NULL otherwise. The composer then falls back
to the full-frame source rectangle when no ImageRegion meta is present,
regardless of how many detection ROI metas the buffer carries.
Signed-off-by: Filip Kardzhaliyski <fkardzha@qti.qualcomm.com>
Signed-off-by: Girish K <girik@qti.qualcomm.com>
Update the sync property to TRUE in the gst-ai-multistream-batch-inference pipeline to enable reliable FPS display during execution. Signed-off-by: Muthumula Sai Harshith Reddy <muthumul@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
Add a GStreamer-based overlay application that injects dynamic text metadata into camera buffers and renders it using qtivoverlay. Support runtime text, position, and color updates through keyboard input while preserving the text_injector identity element in the pipeline. Signed-off-by: Shantanu <shanmaju@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
- Add gst-ai-group-framing-app sample application - Demonstrate Auto Framing (AFR) use case using AI-based person detection and ROI auto-framing - Support configurable AFR parameters and debug overlay visualization Signed-off-by: jasjsing <jasjsing@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
- Add HAVE_CDM_H to the condition so the example is skipped on trees without the restricted CE CDM components, and picked up automatically once cdm.h is present in the sysroot. Signed-off-by: Shradha Somani <shrasoma@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
- Replace the enum-based 'delegate' property with a string 'backend' property that accepts a direct path to a QAIRT backend shared library, aligning with qtimlqnn's approach. - This approach ensures any new backend can be immediately supported. Signed-off-by: Girish K <girik@qti.qualcomm.com>
- Use qcom,system heap to allocate non secure memory and convert it to secure memory using MEM_BUF_IOC_LEND ioctl since system-secure heap is deprecated from kernel 6.1 onwards - Use flag HAVE_MEM_BUF_IOC_LEND to do ioctl related calls only if MEM_BUF_IOC_LEND is defined in linux/mem-buf.h to avoid failure on older kernel. Signed-off-by: Shradha Somani <shrasoma@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
- libVideoCtrl.so renamed as libqimsdk-smartvenc.so - Header install path updated Signed-off-by: Bala Sai Kosuri <bkosuri@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
- Remove sudo hardcoding from gst-gui-launcher-app.py script for Wi-Fi connect and disconnect operations in case of non-root user. Signed-off-by: Muthumula Sai Harshith Reddy <muthumul@qti.qualcomm.com> Signed-off-by: Girish K <girik@qti.qualcomm.com>
…pers Issue: Crash with double-free when gst_buffer_get_video_region_of_interest_metas_parent_id() is used from Python via PyGObject bindings. Analysis: gst_buffer_get_video_region_of_interest_metas_parent_id() is annotated as (transfer full), but it only returns a newly allocated GList containing metadata pointers still owned by the buffer. PyGObject follows the annotation and frees both the list and the metadata, causing a double-free when the buffer later releases the same metadata. Fix: Update gst_buffer_get_*_metas_parent_id() return annotations from (transfer full) to (transfer container) and clarify ownership in the documentation. Also fix the incorrect metadata type description in gstvideoclassificationmeta Change-Id: I7fc684a26e6e7cd09eb97724d33ca101e00386f8 Signed-off-by: Konstantin Motov <quic_kmotov@quicinc.com>
Comment on lines
+4
to
+7
| on: | ||
| workflow_run: | ||
| workflows: ["IMSDK_UAT_Compilation"] | ||
| types: [completed] |
| await github.rest.repos.createCommitStatus({ | ||
| owner: context.repo.owner, | ||
| repo: context.repo.repo, | ||
| sha: "${{ steps.pr.outputs.sha }}", |
| await github.rest.repos.createCommitStatus({ | ||
| owner: context.repo.owner, | ||
| repo: context.repo.repo, | ||
| sha: "${{ needs.init.outputs.pr-sha }}", |
Comment on lines
+18
to
+32
| save-pr-context: | ||
| if: github.event_name == 'pull_request' | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - name: Save PR number and head SHA | ||
| run: | | ||
| mkdir -p pr | ||
| echo "${{ github.event.pull_request.number }}" > pr/NR | ||
| echo "${{ github.event.pull_request.head.sha }}" > pr/SHA | ||
|
|
||
| - name: Upload PR context | ||
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: pr-context | ||
| path: pr/ |
Comment on lines
+34
to
+50
| init: | ||
| if: github.event_name != 'pull_request' | ||
| runs-on: ubuntu-latest | ||
| outputs: | ||
| sdk-url: ${{ steps.urls.outputs.sdk-url }} | ||
| image-urls: ${{ steps.urls.outputs.image-urls }} | ||
|
|
||
| steps: | ||
| - name: Checkout code | ||
| uses: actions/checkout@v6 | ||
|
|
||
| - name: Resolve SDK URL from latest wrynose nightly | ||
| id: urls | ||
| uses: ./.github/actions/resolve-nightly-download-url | ||
| with: | ||
| token: ${{ secrets.QUALCOMM_LINUX_PAT }} | ||
| artifact-token: ${{ secrets.S3_WEBAPP_TOKEN }} |
|
|
||
| permissions: | ||
| actions: read | ||
| checks: write |
Comment on lines
+30
to
+34
| - name: Checkout code | ||
| uses: actions/checkout@v6 | ||
| with: | ||
| ref: ${{ inputs.ref }} | ||
| allow-unsafe-pr-checkout: true |
Comment on lines
+42
to
+43
| - name: Checkout code | ||
| uses: actions/checkout@v6 |
| actions: read | ||
| checks: write | ||
| contents: read | ||
| statuses: write |
Comment on lines
+55
to
+59
| - name: Checkout code | ||
| uses: actions/checkout@v6 | ||
| with: | ||
| ref: ${{ steps.pr.outputs.sha }} | ||
| allow-unsafe-pr-checkout: true |
There was a problem hiding this comment.
Semgrep OSS found more than 20 potential problems in the proposed changes. Check the Files changed tab for more details.
bkosuri
force-pushed
the
bala/clo/debian/latest
branch
from
September 11, 2026 05:23
e05d1c9 to
a592dfe
Compare
Change-Id: If836e4b3ed3f2ce49e2bbd4c90e818107bd2d71c Signed-off-by: Bala Sai Kosuri <bkosuri@qti.qualcomm.com>
bkosuri
force-pushed
the
bala/clo/debian/latest
branch
from
September 11, 2026 05:29
a592dfe to
356303a
Compare
GirishKadirisani
merged commit Sep 11, 2026
2b14dfc
into
qualcomm-linux:clo/debian/latest
6 of 12 checks passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.