Update source changes till 01/06/2026 Dev#16
Merged
Merged
Conversation
- 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>
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.
Here are the gerrits source code gerrit merged.