feat(VideoManager): add HTTP MJPEG video source - #14730
Conversation
cc522a8 to
536a1d7
Compare
536a1d7 to
ad69015
Compare
Build ResultsPlatform Status
All builds passed. Pre-commit
Pre-commit hooks: 2 passed, 76 failed, 7 skipped. Test Resultslinux-coverage-integration: 52 passed, 0 skipped Code CoverageCoverage: 70.6% No baseline available for comparison Artifact Sizes
Updated: 2026-09-03 04:43:24 UTC • Commit: d5ab4fb • Triggered by: Linux |
Codecov Report❌ Patch coverage is ❌ Your patch check has failed because the patch coverage (23.95%) is below the target coverage (30.00%). You can increase the patch coverage or adjust the target coverage. Additional details and impacted files@@ Coverage Diff @@
## master #14730 +/- ##
==========================================
+ Coverage 25.47% 34.48% +9.01%
==========================================
Files 769 945 +176
Lines 65912 85719 +19807
Branches 30495 39531 +9036
==========================================
+ Hits 16788 29561 +12773
+ Misses 37285 36474 -811
- Partials 11839 19684 +7845
Flags with carried forward coverage won't be shown. Click here to find out more.
... and 658 files with indirect coverage changes Continue to review full report in Codecov by Harness.
🚀 New features to boost your workflow:
|
|
@HTRamsey, this focused HTTP MJPEG source is ready for review. Exact head |
e9303ae to
2cc2389
Compare
af1201e to
b482159
Compare
|
Restacked this branch onto current
Local checks passed: JSON parsing, |
b482159 to
d5ab4fb
Compare
Description
QGroundControl supports RTP, RTSP, and MPEG transports, but not the multipart MJPEG feeds exposed by many cameras and small video servers.
This adds a generic HTTP MJPEG Video Stream source:
http://andhttps://URLs in Video settings;souphttpsrc ! multipartdemux ! jpegparseinto QGC's existing decode/display receiver;The endpoint must return
multipart/x-mixed-replacewith JPEG parts. Web pages, single-image URLs, arbitrary HTTP video files, request-header authentication, and recording-policy changes are out of scope.The branch is rebased directly onto current
master. The deterministic local HTTP fixture from #14729 is already inmaster; #14727 is independent and is no longer carried by this branch. The HTTP feature diff is 15 files with 416 additions and 18 deletions.Type of Change
Testing
An integrated candidate containing this transport was manually exercised on Linux, Windows, and Android. The camera-free GStreamer test starts a local HTTP server, sends a real multipart JPEG response, and requires frame delivery through
appsink. Additional tests cover source properties, plugin packaging, malformed or unsafe URLs, TLS policy, and diagnostic handling.Current head:
d5ab4fbd5980522a788cb186c17c424d51b2ca8c. Fresh exact-head CI is running after the rebase. The previous integrated head completed the QGC Linux x64/arm64, unit/integration, sanitizer, coverage, Windows, macOS, iOS, Android, Docker, custom-plugin, and CodeQL checks.Platforms Tested
Flight Stacks Tested
Not applicable; this change is confined to video reception.
Screenshots
Not applicable; the UI addition uses the existing Video settings layout.
Checklist
Related Issues
By submitting this pull request, I confirm that my contribution is made under the terms of the project's dual license (Apache 2.0 and GPL v3).