Add multimedia contrib section (New)#2676
Open
ahresse wants to merge 1 commit into
Open
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR adds a new contrib Checkbox provider under contrib/checkbox-multimedia/ intended to validate VA-API multimedia codec support via Fluster (decode conformance) and GStreamer VA-API pipelines (encode), plus a vainfo-based platform capability detector and unit tests for the helper scripts.
Changes:
- Introduces a new multimedia provider with codec test plans, jobs, and manifest entries for AV1/H.264/H.265/VP8/VP9/JPEG/MPEG-2/MPEG-4/VC-1.
- Adds platform detection tooling (
platform_config_resource.py) and an encoder pipeline validator (gst_encoder_quality.py) with unit tests. - Adds basic developer workflow docs and Makefile helpers for validating/testing/developing/running the provider.
Reviewed changes
Copilot reviewed 40 out of 43 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| contrib/checkbox-multimedia/units/test-plan.pxu | Top-level multimedia test plan wiring. |
| contrib/checkbox-multimedia/units/platform-config/test-plan.pxu | Test plan to run platform detection resource job. |
| contrib/checkbox-multimedia/units/platform-config/jobs.pxu | Platform config resource job + VA-API manifest entry. |
| contrib/checkbox-multimedia/units/image/codecs/test-plan.pxu | Codec suite test plans (overall + VA-API subsets). |
| contrib/checkbox-multimedia/units/image/codecs/category.pxu | Defines the codecs category. |
| contrib/checkbox-multimedia/units/image/codecs/av1/test-plan.pxu | AV1 codec test plans (decode/encode). |
| contrib/checkbox-multimedia/units/image/codecs/av1/manifest.pxu | AV1 capability manifest entries. |
| contrib/checkbox-multimedia/units/image/codecs/av1/jobs.pxu | AV1 decode/encode jobs. |
| contrib/checkbox-multimedia/units/image/codecs/h264/test-plan.pxu | H.264 codec test plans (decode/encode). |
| contrib/checkbox-multimedia/units/image/codecs/h264/manifest.pxu | H.264 capability manifest entries. |
| contrib/checkbox-multimedia/units/image/codecs/h264/jobs.pxu | H.264 decode/encode jobs. |
| contrib/checkbox-multimedia/units/image/codecs/h265/test-plan.pxu | H.265 codec test plans (decode/encode). |
| contrib/checkbox-multimedia/units/image/codecs/h265/manifest.pxu | H.265 capability manifest entries. |
| contrib/checkbox-multimedia/units/image/codecs/h265/jobs.pxu | H.265 decode/encode jobs. |
| contrib/checkbox-multimedia/units/image/codecs/jpeg/test-plan.pxu | JPEG codec test plans (decode/encode). |
| contrib/checkbox-multimedia/units/image/codecs/jpeg/manifest.pxu | JPEG capability manifest entries. |
| contrib/checkbox-multimedia/units/image/codecs/jpeg/jobs.pxu | JPEG decode/encode jobs. |
| contrib/checkbox-multimedia/units/image/codecs/mpeg2/test-plan.pxu | MPEG-2 codec test plans (decode). |
| contrib/checkbox-multimedia/units/image/codecs/mpeg2/manifest.pxu | MPEG-2 capability manifest entries. |
| contrib/checkbox-multimedia/units/image/codecs/mpeg2/jobs.pxu | MPEG-2 decode job. |
| contrib/checkbox-multimedia/units/image/codecs/mpeg4/test-plan.pxu | MPEG-4 codec test plans (decode/encode). |
| contrib/checkbox-multimedia/units/image/codecs/mpeg4/manifest.pxu | MPEG-4 capability manifest entries. |
| contrib/checkbox-multimedia/units/image/codecs/mpeg4/jobs.pxu | MPEG-4 decode/encode jobs. |
| contrib/checkbox-multimedia/units/image/codecs/vc1/test-plan.pxu | VC-1 codec test plans (decode). |
| contrib/checkbox-multimedia/units/image/codecs/vc1/manifest.pxu | VC-1 capability manifest entries. |
| contrib/checkbox-multimedia/units/image/codecs/vc1/jobs.pxu | VC-1 decode jobs. |
| contrib/checkbox-multimedia/units/image/codecs/vp8/test-plan.pxu | VP8 codec test plans (decode/encode). |
| contrib/checkbox-multimedia/units/image/codecs/vp8/manifest.pxu | VP8 capability manifest entries. |
| contrib/checkbox-multimedia/units/image/codecs/vp8/jobs.pxu | VP8 decode/encode jobs. |
| contrib/checkbox-multimedia/units/image/codecs/vp9/test-plan.pxu | VP9 codec test plans (decode/encode). |
| contrib/checkbox-multimedia/units/image/codecs/vp9/manifest.pxu | VP9 capability manifest entries. |
| contrib/checkbox-multimedia/units/image/codecs/vp9/jobs.pxu | VP9 decode/encode jobs. |
| contrib/checkbox-multimedia/units/category.pxu | Defines the provider’s top-level category. |
| contrib/checkbox-multimedia/bin/platform_config_resource.py | vainfo-based platform capability detector emitting resource fields. |
| contrib/checkbox-multimedia/bin/gst_encoder_quality.py | GStreamer encoder pipeline runner + output validation helper. |
| contrib/checkbox-multimedia/tests/test_platform_config_resource.py | Unit tests for platform detection script. |
| contrib/checkbox-multimedia/tests/test_gst_encoder_quality.py | Unit tests for GStreamer encoder quality script. |
| contrib/checkbox-multimedia/tests/init.py | Test package marker. |
| contrib/checkbox-multimedia/manage.py | Provider registration metadata. |
| contrib/checkbox-multimedia/README.md | Provider usage and dependency instructions. |
| contrib/checkbox-multimedia/Makefile | Developer convenience targets. |
| contrib/checkbox-multimedia/example-config.ini | Example configuration file for runs and/or platform config. |
| contrib/checkbox-multimedia/.gitignore | Local Python artifact ignores. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+4
to
+5
| include: | ||
| multimedia/image/codecs/av1/decode |
Comment on lines
+1
to
+21
| unit: test plan | ||
| id: multimedia-codecs | ||
| _name: Multimedia codec tests | ||
| include: | ||
| multimedia/image/codecs/av1/decode | ||
| multimedia/image/codecs/av1/encode | ||
| multimedia/image/codecs/h264/decode | ||
| multimedia/image/codecs/h264/encode | ||
| multimedia/image/codecs/h265/decode | ||
| multimedia/image/codecs/h265/encode | ||
| multimedia/image/codecs/jpeg/decode | ||
| multimedia/image/codecs/jpeg/encode | ||
| multimedia/image/codecs/mpeg2/decode | ||
| multimedia/image/codecs/mpeg4/decode | ||
| multimedia/image/codecs/mpeg4/encode | ||
| multimedia/image/codecs/vp8/decode | ||
| multimedia/image/codecs/vp8/encode | ||
| multimedia/image/codecs/vp9/decode | ||
| multimedia/image/codecs/vp9/encode | ||
| multimedia/image/codecs/vc1/decode | ||
|
|
Comment on lines
+5
to
+10
| @echo " make test - Run unit tests (./manage.py test)" | ||
| @echo " make validate - Validate PXU syntax (./manage.py validate)" | ||
| @echo " make develop - Register provider for local development" | ||
| @echo " make test - Run unit tests (./manage.py test)" | ||
| @echo " make validate - Validate PXU syntax (./manage.py validate)" | ||
| @echo " make develop - Register provider for local development" |
Comment on lines
+6
to
+9
| imports: from com.canonical.plainbox import manifest | ||
| requires: | ||
| manifest.has_av1_profile0_decoder_vaapi == 'True' | ||
| command: |
Signed-off-by: Alexandre Esse <alexandre.esse@canonical.com>
Comment on lines
+16
to
+29
| unit: test plan | ||
| id: multimedia-codecs-vaapi | ||
| _name: VA-API codec conformance tests | ||
| include: | ||
| nested_part: | ||
| multimedia-codecs-vaapi-av1 | ||
| multimedia-codecs-vaapi-h264 | ||
| multimedia-codecs-vaapi-h265 | ||
| multimedia-codecs-vaapi-jpeg | ||
| multimedia-codecs-vaapi-mpeg2 | ||
| multimedia-codecs-vaapi-mpeg4 | ||
| multimedia-codecs-vaapi-vc1 | ||
| multimedia-codecs-vaapi-vp8 | ||
| multimedia-codecs-vaapi-vp9 |
Comment on lines
+5
to
+10
| @echo " make test - Run unit tests (./manage.py test)" | ||
| @echo " make validate - Validate PXU syntax (./manage.py validate)" | ||
| @echo " make develop - Register provider for local development" | ||
| @echo " make test - Run unit tests (./manage.py test)" | ||
| @echo " make validate - Validate PXU syntax (./manage.py validate)" | ||
| @echo " make develop - Register provider for local development" |
Comment on lines
+23
to
+33
| id: multimedia/image/codecs/mpeg4/decode/main/vaapi | ||
| category_id: com.canonical.contrib.multimedia.codecs | ||
| flags: simple | ||
| estimated_duration: 1s | ||
| _summary: VA-API MPEG-4 Main decode | ||
| imports: from com.canonical.plainbox import manifest | ||
| requires: | ||
| manifest.has_mpeg4_main_decoder_vaapi == 'True' | ||
| command: | ||
| gst-launch-1.0 -q videotestsrc num-buffers=30 ! vampl4enc ! vaapidecode ! fakesink | ||
|
|
Comment on lines
+31
to
+42
| unit: test plan | ||
| id: multimedia-codecs-vaapi-encode | ||
| _name: VA-API encoder conformance tests | ||
| include: | ||
| nested_part: | ||
| multimedia-codecs-vaapi-av1-encode | ||
| multimedia-codecs-vaapi-h264-encode | ||
| multimedia-codecs-vaapi-h265-encode | ||
| multimedia-codecs-vaapi-jpeg-encode | ||
| multimedia-codecs-vaapi-mpeg4-encode | ||
| multimedia-codecs-vaapi-vp8-encode | ||
| multimedia-codecs-vaapi-vp9-encode |
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.
Description
Add a new Checkbox contrib provider under
contrib/checkbox-multimedia/for validating video codec support.Decoder tests use the fluster conformance framework with GStreamer-VAAPI backends. Test vectors are downloaded automatically on first run.
Encoder tests run GStreamer pipelines with VA-API encoder elements (
vah264enc,vah265enc,vavp8enc, etc.), producing a test pattern and validating that output is non-empty.Platform detection is automatic via
vainfoand can be overridden with a config file (PLATFORM_CONFIGenvironment variable).Supported codecs:
Resolved issues
N/A — new contrib provider.
Documentation
README added with dependency installation (fluster snap, gstreamer1.0-vaapi, libva-utils) and run instructions.
Tests
./manage.py validate— PASS./manage.py test— 54 unit tests, all PASS