Skip to content

Conversation

@ramyathallam
Copy link

@ramyathallam ramyathallam commented Jan 13, 2026

Gstreamer Multimedia TestSuite (Video/Audio/Display/Camera)

Implement comprehensive GStreamer validation with 21 test cases across
four independent suites:

  • Video: H.264/H.265/VP9 encode/decode with V4L2 (10 tests)
  • Audio: PulseAudio capture/playback (2 tests)
  • Display: Wayland compositor validation (4 tests)
  • Camera: libcamera capture and encoding (5 tests)

Features master runner, per-suite execution, common validation framework,
detailed logging, and CI/CD integration (LAVA YAML configs).

@bhargav0610 bhargav0610 requested review from bhargav0610, smuppand and vnarapar and removed request for bhargav0610 January 13, 2026 11:26
@smuppand
Copy link
Contributor

smuppand commented Jan 13, 2026

@ramyathallam files itself are missing in the PR. Please follow the guidelines.

  1. Please add sign-off in each commit.
  2. GitHub shows +0/−0 and “There are no new changes to show” because the branch you’re merging (ramyathallam:main) ends up identical to the base (qualcomm-linux:main).
  3. fix the existing PR by removing the revert (history rewrite)

Signed-off-by: ramyathallam <rthallam@qti.qualcomm.com>
Signed-off-by: rthallam <rthallam@qti.qualcomm.com>
Signed-off-by: ramyathallam <rthallam@qti.qualcomm.com>
Signed-off-by: rthallam <rthallam@qti.qualcomm.com>
Signed-off-by: ramyathallam <rthallam@qti.qualcomm.com>
Signed-off-by: ramyathallam <rthallam@qti.qualcomm.com>
Signed-off-by: ramyathallam <rthallam@qti.qualcomm.com>
Implemented comprehensive GStreamer validation with 21 test cases across
four independent suites:

Video: H.264/H.265/VP9 encode/decode with V4L2 (10 tests)
Audio: PulseAudio capture/playback (2 tests)
Display: Wayland compositor validation (4 tests)
Camera: libcamera capture and encoding (5 tests)
Features master runner, per-suite execution, common validation framework,
detailed logging, and CI/CD integration (LAVA YAML configs)

Signed-off-by: ramyathallam <rthallam@qti.qualcomm.com>
Copy link
Contributor

@smuppand smuppand left a comment

Choose a reason for hiding this comment

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

Refactor runners to reuse Runner/utils/lib_gstreamer.sh + functestlib.sh (no duplicate pipeline runner frameworks, no CSV/JUnit unless you provide the proper usage and justification). We will review once it fixes all above

@@ -0,0 +1,322 @@
# GStreamer Audio Tests
Copy link
Contributor

Choose a reason for hiding this comment

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

Standardize to one canonical location
Runner/suites/Multimedia/Gstreamer/<Audio|Video|Display|Camera>/...
Remove/avoid Runner/suites/Gstreamer/... (top-level under Runner)


run:
steps:
- cd Runner/suites/Gstreamer/Audio
Copy link
Contributor

Choose a reason for hiding this comment

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

After you move suites under Runner/suites/Multimedia/Gstreamer/..., update YAML to:
cd Runner/suites/Multimedia/Gstreamer/Audio

}

run_test_suite() {
local suite_name="$1"
Copy link
Contributor

Choose a reason for hiding this comment

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

Replace local x=... with plain variables (or wrap in subshell patterns carefully).
Run ShellCheck against every added/modified run.sh and keep it clean like your other suites.

done
}

run_test_suite() {
Copy link
Contributor

Choose a reason for hiding this comment

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

Put all GStreamer common logic in:
Runner/utils/lib_gstreamer.sh (extend it)
Keep suite run.sh minimal:
parse args/env
call lib_gstreamer.sh functions to build/run pipelines with timeouts
apply evidence checks (reuse audio_common evidence helpers)
write .res (PASS/FAIL/SKIP only)
If you need “decode/encode matrix”, do it as:
a list of configs inside run.sh or a small .list file in the suite folder
iterate configs, emit per-config logs, aggregate final PASS/FAIL

# Overall result
if [ "$pass" -eq 0 ] && [ "$fail" -eq 0 ] && [ "$skip" -gt 0 ]; then
log_skip "$TESTNAME: SKIP"
printf '%s\n' "$TESTNAME SKIP" >"$RES_FILE"
Copy link
Contributor

Choose a reason for hiding this comment

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

Some parts imply richer result output (“PASS ”). Your testkit’s LAVA flow typically expects .res to contain only PASS|FAIL|SKIP, and then send-to-lava.sh handles publishing. (Your AudioPlayback follows this.) Make all new suites follow that exact contract.

@smuppand
Copy link
Contributor

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.

2 participants