Skip to content

fix(interop): initialise the x265 CSV column indices so gcc -O2 sees no maybe-uninitialized - #79

Merged
lusoris merged 1 commit into
masterfrom
fix/qp-report-csv-maybe-uninit
Oct 5, 2026
Merged

lusoris merged 1 commit into
masterfrom
fix/qp-report-csv-maybe-uninit

Conversation

@lusoris

@lusoris lusoris commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

BLUF: gcc 16 at -O2 -Wall -Wextra reports 7 -Wmaybe-uninitialized warnings in qp_report_csv.c; this initialises the column struct and adds a CI build that would have caught it.

  • Cause: csv_cols cols in x265_csv_read_rows() is uninitialised until the header row is seen; the optimiser cannot prove the header path always runs first. Every index now starts at -1 (absent), which every reader already treats as a missing column. No behaviour change.
  • Before: 7 warnings (type, poc, qp, bits, psnr_y/u/v); the whole project fails to build with werror at debugoptimized. After: 0 warnings, fast suite 28/28.
  • CI: the default debug build never runs the optimiser, so it cannot raise this class of warning. New step: gcc, debugoptimized, werror.
  • VMAFx/vmafx vendors this file; a re-vendor PR follows.

…no maybe-uninitialized

gcc 16 at -O2 -Wall -Wextra raised seven -Wmaybe-uninitialized warnings on the column struct of x265_csv_read_rows(). Start every index at -1 (absent). CI gains an optimised gcc build with werror.
@lusoris
lusoris merged commit 42cb171 into master Oct 5, 2026
8 checks passed
@lusoris
lusoris deleted the fix/qp-report-csv-maybe-uninit branch October 5, 2026 16:18
lusoris added a commit that referenced this pull request Oct 8, 2026
…onto master

The rebase onto 11e183e kept master's side of the two generated files at each
conflicting stop, so this commit renders them once at the tip.

CHANGELOG.md is rendered from changelog.d/ with
`scripts/release/concat-changelog-fragments.sh --write`; it now carries the
fragments from both this branch and master (#77, #78, #79, #89, #91).

.standards-baseline.json is re-recorded with the pinned engine (0af07a73,
`standardsctl baseline --record`) at 51 infractions: 28 HISS-01, 21 HISS-04,
two HISS-07. That is the branch's 56 minus the five interop and x265 CSV
entries that #77 cleared. Every recorded fingerprint is also present in
master's baseline (93) and in the branch's previous one (56), so no finding
is added. README and docs/development/build.md state the new count.

The FFmpeg patch stack regenerates byte for byte against n9.0.2, so it is
unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
lusoris added a commit that referenced this pull request Oct 8, 2026
…onto master

The rebase onto 11e183e kept master's side of the two generated files at each
conflicting stop, so this commit renders them once at the tip.

CHANGELOG.md is rendered from changelog.d/ with
`scripts/release/concat-changelog-fragments.sh --write`; it now carries the
fragments from both this branch and master (#77, #78, #79, #89, #91).

.standards-baseline.json is re-recorded with the pinned engine (0af07a73,
`standardsctl baseline --record`) at 51 infractions: 28 HISS-01, 21 HISS-04,
two HISS-07. That is the branch's 56 minus the five interop and x265 CSV
entries that #77 cleared. Every recorded fingerprint is also present in
master's baseline (93) and in the branch's previous one (56), so no finding
is added. README and docs/development/build.md state the new count.

The FFmpeg patch stack regenerates byte for byte against n9.0.2, so it is
unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.

1 participant