mirror of
https://github.com/games-on-whales/gst-interpipe.git
synced 2026-10-15 12:51:56 +00:00
[PR #2] [MERGED] Forward upstream context queries across the interpipe boundary #1
Labels
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
games-on-whales/gst-interpipe#1
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/games-on-whales/gst-interpipe/pull/2
Author: @JBailes
Created: 6/15/2026
Status: ✅ Merged
Merged: 6/17/2026
Merged by: @ABeltramo
Base:
master← Head:feat/forward-context-queries📝 Commits (1)
17d88c0feat: forward upstream context queries across the interpipe boundary📊 Changes
7 files changed (+238 additions, -0 deletions)
View changed files
📝
gst/interpipe/gstinterpipeinode.c(+14 -0)📝
gst/interpipe/gstinterpipeinode.h(+17 -0)📝
gst/interpipe/gstinterpipesink.c(+21 -0)📝
gst/interpipe/gstinterpipesrc.c(+33 -0)📝
tests/check/Makefile.am(+1 -0)➕
tests/check/gst/test_context_query.c(+151 -0)📝
tests/check/meson.build(+1 -0)📄 Description
Summary
interpipesrc/interpipesinkalready forward buffers and events between decoupled pipelines, but not queries. That leaves no way for a consumer pipeline to discover a hardware context (e.g. aVADisplay) held by the producer pipeline, so VA/DMABuf elements on either side of an interpipe cannot share a context and each fall back to creating their own. This is the gap described in RidgeRun gst-interpipe#111.This adds a symmetric upstream query path, mirroring the existing
receive_eventmechanism:GstInterPipeINodegains areceive_queryvfunc (+ wrapper) so a listener can run a query against the node's own upstream peer.interpipesinkimplements it viagst_pad_peer_query()on its sink pad, so the query is answered by the producer pipeline. A read-only query is safe to serve even with multiple listeners, since they share the same single upstream.interpipesrcoverridesGstBaseSrc::queryand forwardsGST_QUERY_CONTEXT(which would otherwise dead-end at the source) across the boundary, falling through to default handling for everything else.Why context-only (for now)
GST_QUERY_CONTEXTis the canonical cross-pipeline need (sharedVADisplay/CUDA context) and is orthogonal to the existing caps negotiation machinery, so it carries no regression risk to the caps tests. Downstream allocation aggregation already landed in953db14; upstream caps/allocation forwarding can follow if needed.Testing
test_context_queryasserts a context query injected into aninterpipesrcreaches the producer pipeline and is answered across the boundary.meson/ninja.Context
Enables games-on-whales/wolf to drop its manual DMA-BUF format intersection and let VA zero-copy negotiate through the shared context instead (wolf PR #419).
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.