Profiles filtering#378
Open
ahresse wants to merge 4 commits into
Open
Conversation
ylatuya
reviewed
Jul 9, 2026
ahresse
force-pushed
the
profiles-filtering
branch
from
July 9, 2026 14:27
15538ff to
75782a9
Compare
Contributor
Author
|
@ylatuya I implemented your proposition in last commit. Quite useful to be able to list profiles indeed. |
profile 0: color depth: 8 bit/sample, chroma subsampling: 4:2:0 profile 1: color depth: 8 bit, chroma subsampling: 4:2:2, 4:2:0, 4:4:4 profile 2: color depth: 10–12 bit, chroma subsampling: 4:2:0 profile 3: color depth: 10–12 bit, chroma subsampling: 4:2:2, 4:2:0, 4:4:4 Signed-off-by: Alexandre Esse <alexandre.esse@canonical.com>
ahresse
force-pushed
the
profiles-filtering
branch
from
July 10, 2026 09:32
11394bb to
27c11b9
Compare
to filter test vectors by codec profile
Signed-off-by: Alexandre Esse <alexandre.esse@canonical.com>
- Add codec attribute to Profile enum - Profile members now carry a codec attribute via tuple values with a custom __new__ - list command shows profiles grouped by codec (filterable with -d/--codec) - TestVector stores/serializes codec alongside profile Signed-off-by: Alexandre Esse <alexandre.esse@canonical.com>
ahresse
force-pushed
the
profiles-filtering
branch
from
July 10, 2026 09:44
27c11b9 to
f8f6c0f
Compare
ylatuya
approved these changes
Jul 16, 2026
mdimopoulos
reviewed
Jul 16, 2026
Comment on lines
+81
to
+98
| CONSTRAINED_BASELINE = ("Constrained Baseline", Codec.H264) | ||
| BASELINE = ("Baseline", Codec.H264) | ||
| EXTENDED = ("Extended", Codec.H264) | ||
| MAIN = ("Main", Codec.H264) | ||
| HIGH = ("High", Codec.H264) | ||
| HIGH_10 = ("High 10", Codec.H264) | ||
| HIGH_10_INTRA = ("High 10 Intra", Codec.H264) | ||
| HIGH_4_2_2 = ("High 4:2:2", Codec.H264) | ||
| HIGH_4_2_2_INTRA = ("High 4:2:2 Intra", Codec.H264) | ||
| HIGH_4_4_4_INTRA = ("High 4:4:4 Intra", Codec.H264) | ||
| HIGH_4_4_4_PREDICTIVE = ("High 4:4:4 Predictive", Codec.H264) | ||
| CAVLC_4_4_4 = ("CAVLC 4:4:4", Codec.H264) | ||
| CAVLC_4_4_4_INTRA = ("CAVLC 4:4:4 Intra", Codec.H264) | ||
|
|
||
| MAIN_10 = ("Main 10", Codec.H264) | ||
| MAIN_STILL_PICTURE = ("Main Still Picture", Codec.H264) | ||
| MAIN_4_2_2_10 = ("Main 4:2:2 10", Codec.H264) | ||
| MAIN_4_4_4_12 = ("Main 4:4:4 12", Codec.H264) |
Contributor
There was a problem hiding this comment.
Some of these are definitely shared with H265 (and possibly H266).
Sorry, the comment above this piece of code is obsolete. I can't make a proper evaluation of the impact of the PR right now but please take it into account
cc @ylatuya
Contributor
There was a problem hiding this comment.
Right, profiles are shared among different codecs and they should be associated to a list of codecs instead of single codec.
ylatuya
requested changes
Jul 16, 2026
Comment on lines
+81
to
+98
| CONSTRAINED_BASELINE = ("Constrained Baseline", Codec.H264) | ||
| BASELINE = ("Baseline", Codec.H264) | ||
| EXTENDED = ("Extended", Codec.H264) | ||
| MAIN = ("Main", Codec.H264) | ||
| HIGH = ("High", Codec.H264) | ||
| HIGH_10 = ("High 10", Codec.H264) | ||
| HIGH_10_INTRA = ("High 10 Intra", Codec.H264) | ||
| HIGH_4_2_2 = ("High 4:2:2", Codec.H264) | ||
| HIGH_4_2_2_INTRA = ("High 4:2:2 Intra", Codec.H264) | ||
| HIGH_4_4_4_INTRA = ("High 4:4:4 Intra", Codec.H264) | ||
| HIGH_4_4_4_PREDICTIVE = ("High 4:4:4 Predictive", Codec.H264) | ||
| CAVLC_4_4_4 = ("CAVLC 4:4:4", Codec.H264) | ||
| CAVLC_4_4_4_INTRA = ("CAVLC 4:4:4 Intra", Codec.H264) | ||
|
|
||
| MAIN_10 = ("Main 10", Codec.H264) | ||
| MAIN_STILL_PICTURE = ("Main Still Picture", Codec.H264) | ||
| MAIN_4_2_2_10 = ("Main 4:2:2 10", Codec.H264) | ||
| MAIN_4_4_4_12 = ("Main 4:4:4 12", Codec.H264) |
Contributor
There was a problem hiding this comment.
Right, profiles are shared among different codecs and they should be associated to a list of codecs instead of single codec.
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.
This pull request adds support for filtering test vectors by codec profile, allowing users to specify which profiles to run via a new
-p/--profilescommand-line option. The feature is fully documented, supports multiple profiles, is case-insensitive, and includes automatic inference of VP9 profiles from test vector names. The implementation also introduces new profile values for VP9 in theProfileenum and ensures that only matching test vectors are executed when filtering is active.Profile Filtering Feature:
-p/--profilesargument to the CLI, enabling users to run only test vectors matching specified codec profiles; the option supports multiple, case-insensitive profile names and is documented inREADME.md[1] [2] [3] [4].fluster/fluster.pyto parse, validate, and store user-supplied profile names, mapping them to the new or existingProfileenum values; errors are reported for unknown profiles [1] [2] [3] [4] [5].VP9 Profile Support:
VP9 Profile 0throughVP9 Profile 3) to theProfileenum influster/codec.py.vp90-prefix → Profile 0) inTestSuite, and assigned inferred profiles to test vectors when loading VP9 test suites from JSON [1] [2].Test Vector Filtering Logic:
TestSuite.generate_teststo filter out test vectors whose profiles do not match the requested profiles, ensuring only relevant vectors are run.Interface and Internal Consistency:
fluster/fluster.pyandfluster/test_suite.py, ensuring consistent handling across the codebase [1] [2] [3].