Skip to content

Update source changes till 01/06/2026 Dev#16

Merged
GirishKadirisani merged 27 commits into
mainfrom
dev
Jun 1, 2026
Merged

Update source changes till 01/06/2026 Dev#16
GirishKadirisani merged 27 commits into
mainfrom
dev

Conversation

@GirishKadirisani
Copy link
Copy Markdown
Contributor

Here are the gerrits source code gerrit merged.

  1. gst-plugin-codec2: add ContentAdaptiveCoding for encoding.
  2. gst-camera-prebuffered-data-app : fix infinite snapshot loop.
  3. cmake: use in-tree targets for gstreamer-qcom-oss base libraries
  4. qtivcomposer: Fix zorder property update handling.
  5. gst-plugin-vtransform: clean cache in stop and flush event.
  6. qtiqmmfsrc: rename qmmfsrc plugin to camsrc and update references
  7. mlaconverter: Remove unsupported tensor types
  8. gst-rgba-watermark-example: switch to qtivoverlay watermark pipeline.
  9. gst-plugin-codec2: limit max pending works.
  10. gst-plugin-ml: remove input tensor name assignment to ML metadata during execute
  11. mlbin: fix incorrect ghost pad assignment
  12. cmake: Remove unused definitions
  13. OpenCV: HOTFIX: Add Compile-time version checking
  14. socketsrc: Mark as LIVE source
  15. socketsrc: Cleanup resources during PAUSED to READY transition
  16. socketsrc: Parent class change_state before element-specific cleanup
  17. gst-camera-metadata-example: Modify tag dump.
  18. mlmetaextractor: Add propose_allocation for video meta support
  19. socketsrc: change fd allocator to dmabuf allocator
  20. qtiqmmfsrc: Revise tsbase to reset logic to GST_CLOCK_TIME_NONE
  21. gst-plugin-codec2: Add VideoEncodingMode for plugin.
  22. Enable camera sample apps in gstreamer1.0-qcom-sample-apps
  23. c2venc: support to config bitrate boost margin to c2
  24. OpenCV: Add support for additional formats
  25. OpenCV: Add support for background fill
  26. OpenCV: Add support for multiple formats
  27. gst-camera-metadata-example: Support dynamatic capture with META.

Hongyong Huang and others added 27 commits June 1, 2026 10:57
- Issue: Old design in capture with metadata only support capture-image
  signal, while there is dynamic-capture-image inside capture signal.
- Fix: Add GstCaptureModeOption to split the cases.

Signed-off-by: Hongyong Huang <hongyong@qti.qualcomm.com>
Signed-off-by: Girish K <girik@qti.qualcomm.com>
Add support for the following format conversions:
YUY2-based:
YUY2 to NV12/NV21
YUY2 to RGB(A)/BGR(A)
YUY2 to GRAY
NV12/NV21 to YUY2
RGB(A)/BGR(A) to YUY2
GRAY to YUY2

Other:
RGB(A)/BGR(A) to NV12/NV21
GRAY to NV12/NV21

Minor fixes:
Add version check for some YUY2 conversions
Fix discolouration in 4-channel RGB formats
Change some c++-style syntax elements to c-style
Fix YUY2 horizontal flip and rotate
Code cleanup

Signed-off-by: Angel Ivanov <aivanov@qti.qualcomm.com>
Signed-off-by: Girish K <girik@qti.qualcomm.com>
New featuer: Add function for background fill in OpenCV engine.

Specifics: fill_background() is used both in pipelines,
which use a blit, as well as in cases, where padding is needeed
due to different aspect ratios.

Signed-off-by: Angel Ivanov <aivanov@qti.qualcomm.com>
Signed-off-by: Girish K <girik@qti.qualcomm.com>
Add support for the following formats and conversions:
I420:
NV12/NV21 -> I420
I420 -> NV12/NV21
I420 -> RGB(A)/BGR(A)
I420 -> GRAY
RGB(A)/BGR(A) -> I420
GRAY -> I420

YV12:
NV12/NV21 -> YV12
YV12 -> NV12/NV21
YV12 -> RGB(A)/BGR(A)
YV12 -> GRAY
RGB(A)/BGR(A) -> YV12
GRAY -> YV12

UYVY:
NV12/NV21 -> UYVY
UYVY -> NV12/NV21
UYVY -> RGB(A)/BGR(A)
UYVY -> GRAY
RGB(A)/BGR(A) -> UYVY
GRAY -> UYVY

YVYU:
NV12/NV21 -> YVYU
YVYU -> NV12/NV21
YVYU -> RGB(A)/BGR(A)
YVYU -> GRAY
RGB(A)/BGR(A) -> YVYU
GRAY -> YVYU

Add intermediary color conversion for packed source formats

Add I420, YV12, UYVY and YVYU to vtransform caps

Signed-off-by: Angel Ivanov <aivanov@qti.qualcomm.com>
Signed-off-by: Girish K <girik@qti.qualcomm.com>
-Used to set bitrate boost margin.
-Its for CAC feature, for apps like VCHAT which needs higher bitrate for low resolution clip, bitrate can be boosted with this setting.

Signed-off-by: Shihong Cui <shihcui@qti.qualcomm.com>
Signed-off-by: Girish K <girik@qti.qualcomm.com>
This change adds compilation support in CMakeLists for:
 - GstD-camera-single-stream-example

It also updates gstreamer1.0-qcom-sample-apps.install to include:
 - gst-camera-fd-stream-example
 - gst-camera-metadata-example
 - gst-camera-per-port-example
 - gst-camera-burst-capture-example

 Additionally, Debian rules are updated to enable:
 - GST_SAMPLE_APPS_CAMERA

Signed-off-by: Shantanu Majumdar <shanmaju@qti.qualcomm.com>
Signed-off-by: Girish K <girik@qti.qualcomm.com>
-Description:
  Used by applications for setting the encoding usecase to
  meet the functionality/quality/performance.

-Options:
  prosight: The max quality for professional editing.
  depth: Encode depth with less lossy compression.
  lookahead: Improve quality by using future frame information.

Signed-off-by: Ziyi Gai <zgai@qti.qualcomm.com>
Signed-off-by: Girish K <girik@qti.qualcomm.com>
In the current logic, when a single stream stops, tsbase is reset to
GST_CLOCK_TIME_NONE. However, in scenarios with multiple streams,
stopping one stream also triggers the reset, which adversely affects the
timestamps of other active streams. The logic should be revised so that
tsbase is only reset when all streams have stopped.

Signed-off-by: Girish K <girik@qti.qualcomm.com>
- Open-source plugins such as `waylandsink` expect DMA-BUF–backed
  memory rather than FD-backed memory. Updated the buffer allocation
  logic to use `gst_dmabuf_allocator_new()` and
  `gst_dmabuf_allocator_alloc_with_flags()` to align with these
  expectations.

Signed-off-by: Bala Sai Kosuri <bkosuri@qti.qualcomm.com>
Signed-off-by: Girish K <girik@qti.qualcomm.com>
Implement propose_allocation to advertise GstVideoMeta support, enabling
upstream elements to avoid buffer copy and send DMA-buf backed buffers.
Keep the base class propose_allocation handling unchanged.

Signed-off-by: Raja Ganapathi Busam <rbusam@qti.qualcomm.com>
Signed-off-by: Girish K <girik@qti.qualcomm.com>
- Issue: When dumping tag which has too long length, previous version
  would interrupted midway. Such as org.codeaurora.qcamera3.bayer_grid
  r_stats's value is an array with 3072 sub-items, which is longer than
  default MAX_SIZE 200.
- Solution: Change g_snprintf to g_strdup_printf for dynamtic tag
  length.

Signed-off-by: Hongyong Huang <hongyong@qti.qualcomm.com>
Signed-off-by: Girish K <girik@qti.qualcomm.com>
- When transitioning from PLAYING to READY, the element was sending
  a DISCONNECT message and closing the socket BEFORE the parent
  GstBaseSrc class had a chance to stop the source task.
- This follows GStreamer's recommended pattern:
  Downward transitions: Parent first, then cleanup

Signed-off-by: Bala Sai Kosuri <bkosuri@qti.qualcomm.com>
Signed-off-by: Girish K <girik@qti.qualcomm.com>
- The thread_done flag indicates whether the socket connection
  is ready, but was only being reset during READY→NULL transition.
  This caused issues when cycling PLAYING→READY→PLAYING without
  going to NULL.
- The thread_done remains set always even when a new socket
  connection is being created during to READY->PLAYING transition.
- Moving cleanup to PAUSED->READY transition as allocation was
  done during READY->PAUSED.

Signed-off-by: Bala Sai Kosuri <bkosuri@qti.qualcomm.com>
Signed-off-by: Girish K <girik@qti.qualcomm.com>
- socketsrc receives data only during PLAYING state.
- Setting as LIVE source prevents unwanted _create calls
  in lower states.
- This minimizes error handling during state changes.

Signed-off-by: Bala Sai Kosuri <bkosuri@qti.qualcomm.com>
Signed-off-by: Girish K <girik@qti.qualcomm.com>
Add compile-time version checking for OCV 4.9.0+-exclusive format conversions ([RGB/BGR/RGBA/BGRA] -> [UYVY, YVYU])

Signed-off-by: Angel Ivanov <aivanov@qti.qualcomm.com>
Signed-off-by: Girish K <girik@qti.qualcomm.com>
BASE_COMMON_PC_IN is removed as the path is now derived from the QTI_PLUGINS_BASE_SOURCE_DIR.

Signed-off-by: Tushar Patra Jamula <tjamula@qti.qualcomm.com>
Signed-off-by: Girish K <girik@qti.qualcomm.com>
Issue:
In gst_ml_bin_link_plugins(), the non-video output branch incorrectly
reuses the same ghost pad (src pad) when linking both the post-process
output and the input queue element.
The code first assigns the src ghost pad to the mlpostprocess "src" pad,
and then overrides it by assigning the same ghost pad to the "sink" pad
of the inqueue element.
As a result, the final target of the src ghost pad becomes inqueue.sink,
while the sink ghost pad remains unassigned. This leads to an invalid
internal topology where the bin input and output pads are not correctly
connected, breaking the data flow.

Fix:
Update the logic to explicitly switch to the sink ghost pad before
linking the input queue element. After assigning the src ghost pad to
mlpostprocess "src", reassign gpad to the sink ghost pad using
GST_ELEMENT (mlbin)->sinkpads->data, and then link it to the inqueue "sink".
This ensures that each ghost pad is correctly connected to its
corresponding internal element without overriding previous assignments.

Signed-off-by: Filip Kardzhaliyski <fkardzha@qti.qualcomm.com>
Signed-off-by: Girish K <girik@qti.qualcomm.com>
…ing execute

Input tensor names were being populated into GstMLTensorMeta during
engine execute for multiple backends (ONNX, QNN, SNPE, TFLite).

This metadata mutation is unnecessary at execution time and can lead
to inconsistent or backend-specific behavior. Tensor names are already
known at model initialization and should not be modified per-frame.

Remove redundant mlmeta->name assignments from execute paths across
all ML engines to keep buffer metadata immutable during inference.

Signed-off-by: Tushar Darote <tdarote@qti.qualcomm.com>
Signed-off-by: Girish K <girik@qti.qualcomm.com>
-Issue: Video Decoder could only accept 16 as max pending works.
-Fix: reset max pending buffers to 11 as usual;
      expand max pending buffers to 26 only for video encoder.

Signed-off-by: Ziyi Gai <zgai@qti.qualcomm.com>
Signed-off-by: Girish K <girik@qti.qualcomm.com>
- Replace qtioverlay with qtivoverlay in the RGBA watermark example.
- Use qtivoverlay images property for watermark configuration.
- Support repeated -I/--image options for one or more watermark entries.
- Add support for destination width/height different from image
  resolution.
- Use the default RGBA watermark when no image entry is specified.
- Update CLI to use -C/--camera for camera selection.
- Keep -h available as a short help option.
- Keep the example registered in gst-plugin-examples build.

Signed-off-by: Hongyong Huang <hongyong@qti.qualcomm.com>
Signed-off-by: Girish K <girik@qti.qualcomm.com>
Remove all unsupported tensor types from src caps
since only FLOAT32 is supported for mlaconverter.

Signed-off-by: Shradha Somani <shrasoma@qti.qualcomm.com>
Signed-off-by: Girish K <girik@qti.qualcomm.com>
- Rename GStreamer plugin from `qtiqmmfsrc` to `qticamsrc`
- Rename project and library identifiers from QMMF source to camera
- Rename source/header files (qmmf_* -> camera_*)
- Register `qticamsrc` as primary element
- Keep `qtiqmmfsrc` as backward-compatible alias with GST_RANK_NONE
- Update package summary to reflect camera service
- Renamed install file to match new package name fpr debian
- Updated installed library name

This change generalizes the plugin naming from QMMF-specific
to a broader camera service abstraction while maintaining
backward compatibility.

Signed-off-by: Jai Shiv <jshiv@qti.qualcomm.com>
Signed-off-by: Girish K <girik@qti.qualcomm.com>
- flush cached surfaces in case src element has been switched.

Signed-off-by: Ziyi Gai <zgai@qti.qualcomm.com>
Signed-off-by: Girish K <girik@qti.qualcomm.com>
- Re-sort sink pads when sink pad zorder property is updated.
- Reuse existing zorder compare helper to keep composition order
  updated.

Signed-off-by: Hongyong Huang <hongyong@qti.qualcomm.com>
Signed-off-by: Girish K <girik@qti.qualcomm.com>
This change fixes SDK based compilation only. When built via Yocto,
pkg_check_modules continues to resolve libraries as before since
CMake targets from gst-plugin-base are not available in that context.

When building with ENABLE_GST_PLUGIN_BASE=ON using the SDK, the
build was failing with:

  cc1: error: include location "/usr/include/gstreamer-1.0" is
  unsafe for cross-compilation [-Werror=poison-system-directories]
  cc1: all warnings being treated as errors

Root cause:
  When built together with gst-plugin-base, each base library
  generates its .pc file into CMAKE_CURRENT_BINARY_DIR and prepends
  it to PKG_CONFIG_PATH. Since this build tree path is outside the
  sysroot, PKG_CONFIG_SYSROOT_DIR is not applied to it, causing
  pkg-config to resolve libdir=/usr/lib and includedir=/usr/include
  as host paths instead of sysroot paths. As a result, plugins
  received host include paths (/usr/include) which the SDK cross
  compiler rejects as unsafe for cross-compilation.

Fix:
  Replace bare pkg_check_modules calls for all gstreamer-qcom-oss-*
  packages with if(TARGET)/else() guards across all plugin
  CMakeLists.txt files. When base libraries are built in the same
  CMake invocation, CMake targets are used directly bypassing
  pkg-config entirely. When built standalone or via Yocto,
  pkg_check_modules falls back to resolving from the sysroot
  as before.

Signed-off-by: Raja Ganapathi Busam <rbusam@qti.qualcomm.com>
Signed-off-by: Girish K <girik@qti.qualcomm.com>
 - trigger_snapshot() is used as a GLib timeout callback
   via g_timeout_add(). A GLib timeout callback
   repeats if it returns TRUE and stops if it returns
   FALSE. The function was returning 'success'
   (TRUE on successful snapshot trigger), causing
   g_timeout_add to repeatedly call trigger_snapshot()
   every 1ms, resulting in hundreds of capture-image
   signals being emitted.
 - This caused excessive snapshot captures, multiple
   callback triggers in  plugin.
 - fix is to return false from the trigger_snapshot
   function to make sure it is called exactly once

Signed-off-by: Shubhankar Kulkarni <shukulk@qti.qualcomm.com>
Signed-off-by: Girish K <girik@qti.qualcomm.com>
- Adaptively adjust the bit rate of the encoded video content to
  achieve better quality at a lower bit rate.

Signed-off-by: Ziyi Gai <zgai@qti.qualcomm.com>
Signed-off-by: Girish K <girik@qti.qualcomm.com>
@GirishKadirisani GirishKadirisani merged commit bf7adb2 into main Jun 1, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants