Skip to content

Add multimedia contrib section (New)#2676

Open
ahresse wants to merge 1 commit into
mainfrom
multimedia
Open

Add multimedia contrib section (New)#2676
ahresse wants to merge 1 commit into
mainfrom
multimedia

Conversation

@ahresse

@ahresse ahresse commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

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 vainfo and can be overridden with a config file (PLATFORM_CONFIG environment variable).

Supported codecs:

Codec Decode Encode
AV1 Profile 0 / 1 / 2 Profile 0
H.264 / AVC Baseline / Main / High / High 10 / 4:2:2 / 4:4:4 Main
H.265 / HEVC Main / Main 10 / Main 12 / 4:2:2 / 4:4:4 Main
VP8 Version 0-3 Version 0-3
VP9 Profile 0 / 1 / 2 / 3 Profile 0
JPEG Baseline Baseline
MPEG-2 Simple / Main
MPEG-4 Simple / Advanced Simple / Main Simple
VC-1 Simple / Main / Advanced

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

Copilot AI review requested due to automatic review settings July 10, 2026 14:12

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 40 out of 43 changed files in this pull request and generated 4 comments.

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
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