Profiles filtering - #378
Conversation
15538ff to
75782a9
Compare
|
@ylatuya I implemented your proposition in last commit. Quite useful to be able to list profiles indeed. |
27c11b9 to
f8f6c0f
Compare
| 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) |
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
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.
| 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) |
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.
f8f6c0f to
339ae09
Compare
|
@ylatuya and @mdimopoulos: Last commit might fulfil your previous comments. |
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>
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>
Redefine each Profile member to carry a list of codecs instead of a single one, so profiles common to several codec families can be shared, e.g. "Main" (H.264, H.265, AV1, MPEG2) and "Main 10" (H.265, H.266). Signed-off-by: Alexandre Esse <alexandre.esse@canonical.com>
dbe9c53 to
83a80f1
Compare
The codec field was only serialized next to the profile and never read back as a Codec enum, causing a type mismatch on reload. Remove it entirely since the test suite already carries the codec. Signed-off-by: Alexandre Esse <alexandre.esse@canonical.com>
AV1 defines Main, High and Professional profiles. Main already maps to Codec.AV1, so add AV1 to the shared High profile for a complete profile listing. Signed-off-by: Alexandre Esse <alexandre.esse@canonical.com>
Add the -p/--profiles option to the reference subcommand so reference runs can be restricted to specific codec profiles, mirroring run. Signed-off-by: Alexandre Esse <alexandre.esse@canonical.com>
Signed-off-by: Alexandre Esse <alexandre.esse@canonical.com>
Match the test_vector_names pattern by storing the profiles to filter as a Set instead of a List. Signed-off-by: Alexandre Esse <alexandre.esse@canonical.com>
Sort codecs and their profiles alphabetically in list_profiles for a deterministic listing. Signed-off-by: Alexandre Esse <alexandre.esse@canonical.com>
|
I suspect CI to fail because of network failures. (Github is experiencing degraded performance right now. (https://www.githubstatus.com/) - |
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].