Repository navigation
chore(deps): Update dependency openai to >=2.38.0 - #7
Merged
Merged
Conversation
renovate
Bot
force-pushed
the
renovate/openai-2.x
branch
from
May 28, 2026 12:05
edbcf9c to
db9fe22
Compare
6 tasks done
lusoris
added a commit
that referenced
this pull request
May 29, 2026
Five actionable errno defects from the PR #125 code review: 1. vmaf_write_output_with_format: capture errno immediately after open(2) / fdopen(3) failure; return -errno instead of hardcoded -EINVAL so callers receive the OS-precise error code. 2. vmaf_cuda_state_init: map driver-library-missing → -ENOSYS and cuInit(0) failure → -ENODEV, mirroring the SYCL/HIP pattern already established in sycl/common.cpp and cuda/cuda_helper.cuh. 3. vmaf_close: propagate return values from vmaf_thread_pool_wait() and vmaf_framesync_destroy() (CERT ERR33-C / Power-of-10 #7). NULL-pool case (n_threads == 0) correctly returns 0. 4. vmaf_cuda_preallocate_pictures: return -EBUSY on double-call to prevent silent ring-buffer leak and in-flight picture corruption. 5. vmaf_init: return the actual sub-init error code rather than a hardcoded -ENOMEM for every error path. Fast test suite: 49/49. Pre-commit: all checks pass. ADR-0214 parity gate: unaffected (errno-only changes, no algorithm delta). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
lusoris
added a commit
that referenced
this pull request
May 29, 2026
Five actionable errno defects from the PR #125 code review: 1. vmaf_write_output_with_format: capture errno immediately after open(2) / fdopen(3) failure; return -errno instead of hardcoded -EINVAL so callers receive the OS-precise error code. 2. vmaf_cuda_state_init: map driver-library-missing → -ENOSYS and cuInit(0) failure → -ENODEV, mirroring the SYCL/HIP pattern already established in sycl/common.cpp and cuda/cuda_helper.cuh. 3. vmaf_close: propagate return values from vmaf_thread_pool_wait() and vmaf_framesync_destroy() (CERT ERR33-C / Power-of-10 #7). NULL-pool case (n_threads == 0) correctly returns 0. 4. vmaf_cuda_preallocate_pictures: return -EBUSY on double-call to prevent silent ring-buffer leak and in-flight picture corruption. 5. vmaf_init: return the actual sub-init error code rather than a hardcoded -ENOMEM for every error path. Fast test suite: 49/49. Pre-commit: all checks pass. ADR-0214 parity gate: unaffected (errno-only changes, no algorithm delta). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
lusoris
added a commit
that referenced
this pull request
Jun 2, 2026
Five actionable errno defects from the PR #125 code review: 1. vmaf_write_output_with_format: capture errno immediately after open(2) / fdopen(3) failure; return -errno instead of hardcoded -EINVAL so callers receive the OS-precise error code. 2. vmaf_cuda_state_init: map driver-library-missing → -ENOSYS and cuInit(0) failure → -ENODEV, mirroring the SYCL/HIP pattern already established in sycl/common.cpp and cuda/cuda_helper.cuh. 3. vmaf_close: propagate return values from vmaf_thread_pool_wait() and vmaf_framesync_destroy() (CERT ERR33-C / Power-of-10 #7). NULL-pool case (n_threads == 0) correctly returns 0. 4. vmaf_cuda_preallocate_pictures: return -EBUSY on double-call to prevent silent ring-buffer leak and in-flight picture corruption. 5. vmaf_init: return the actual sub-init error code rather than a hardcoded -ENOMEM for every error path. Fast test suite: 49/49. Pre-commit: all checks pass. ADR-0214 parity gate: unaffected (errno-only changes, no algorithm delta). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
lusoris
added a commit
that referenced
this pull request
Jun 2, 2026
#308 ENOSYS stubs + #316 dispatch token-boundary) (#525) * fix(core): propagate correct errno codes — PR #125 defects Five actionable errno defects from the PR #125 code review: 1. vmaf_write_output_with_format: capture errno immediately after open(2) / fdopen(3) failure; return -errno instead of hardcoded -EINVAL so callers receive the OS-precise error code. 2. vmaf_cuda_state_init: map driver-library-missing → -ENOSYS and cuInit(0) failure → -ENODEV, mirroring the SYCL/HIP pattern already established in sycl/common.cpp and cuda/cuda_helper.cuh. 3. vmaf_close: propagate return values from vmaf_thread_pool_wait() and vmaf_framesync_destroy() (CERT ERR33-C / Power-of-10 #7). NULL-pool case (n_threads == 0) correctly returns 0. 4. vmaf_cuda_preallocate_pictures: return -EBUSY on double-call to prevent silent ring-buffer leak and in-flight picture corruption. 5. vmaf_init: return the actual sub-init error code rather than a hardcoded -ENOMEM for every error path. Fast test suite: 49/49. Pre-commit: all checks pass. ADR-0214 parity gate: unaffected (errno-only changes, no algorithm delta). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(tools): check fseek / vmaf_picture_alloc / vmaf_read_pictures returns in vmaf_bench Discharge three S9 (JPL Power-of-10 r7) unchecked-return findings in `core/tools/vmaf_bench.c` surfaced by the 2026-05-30 audit. Independent of PR #304 (the vmaf.c/vmaf_bench.c CUDA/SYCL state-leak fix); no overlapping hunks. * `yuv_pair_read_frame` — the two `fseek` calls were `(void)`-cast, silencing the lint but hiding the semantic bug: a failed `fseek` leaves the FILE position undefined, after which `fread` silently feeds the wrong bytes into the benchmark. Now checks each `fseek` and returns `-EIO` with a `perror` diagnostic on failure. * `run_sycl_gpu_profile` per-frame loop — `vmaf_picture_alloc` returns were discarded; on allocation failure the subsequent `yuv_pair_read_frame -> ref->data[0]` dereference would crash on a sentinel-zero `VmafPicture`. Now captures the return code, logs, unrefs any already-allocated sibling, and breaks the loop. * `run_sycl_gpu_profile` end-of-stream block — the final `vmaf_read_pictures(vmaf, NULL, NULL, 0)` flush surfaces pooling / aggregation errors via its int return that the previous code discarded; now captured and propagated. `printf` / `vmaf_close` returns explicitly `(void)`-cast to match the surrounding file convention. Adds `#include <errno.h>` for `EIO`. No behavior change on success paths. Builds clean (`meson setup build-cpu core -Denable_cuda=false -Denable_sycl=false && ninja -C build-cpu`); clang-tidy on the touched file produces no new warnings vs master (line numbers shift only). * fix(core): emit -ENOSYS stubs for libvmaf_hip.h / libvmaf_metal.h when backend OFF Both `core/include/libvmaf/libvmaf_hip.h` and `core/include/libvmaf/libvmaf_metal.h` document the contract that every public entry point returns `-ENOSYS` when libvmaf is built without the relevant backend. The real bodies in `core/src/hip/common.c`, `core/src/metal/common.mm`, `core/src/metal/picture_import.mm`, and the `vmaf_hip_import_state` / `vmaf_metal_import_state` / `vmaf_metal_read_imported_pictures` definitions inside `core/src/libvmaf.c` all sit behind `#ifdef HAVE_HIP` / `#ifdef HAVE_METAL`, so a default `-Denable_hip=false -Denable_metal=disabled` build emitted none of those symbols into `libvmaf.so` and any downstream link that referenced them failed. Fix: add `core/src/hip/stubs.c` + `core/src/metal/stubs.c` that mirror the canonical `core/src/dnn/dnn_api.c` `VMAF_HAVE_DNN` stub pattern and wire each TU into `libvmaf_feature_static_lib` via `hip_sources` / `metal_sources` only when the backend is disabled. The stubs return `-ENOSYS`, set out-params to NULL on the pointer-returning entry points, and `vmaf_hip_available()` / `vmaf_metal_available()` correctly return 0. Verified locally with: meson setup build-cpu core -Denable_hip=false -Denable_metal=disabled \\ -Denable_cuda=false -Denable_sycl=false \\ -Denable_dnn=disabled ninja -C build-cpu nm -D build-cpu/src/libvmaf.so | grep -E "vmaf_(hip|metal)_" all 14 documented public symbols are present (T-type) and a smoke main linking against libvmaf.so observes -ENOSYS / NULL out-params on every entry point and 0 from the availability probes. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(gpu-dispatch): enforce token boundary on strategy-name match The shared VMAF_<BACKEND>_DISPATCH env-variable parser in core/src/gpu_dispatch_parse.h matched strategy names with strncmp(v, strategy_names[idx], slen) and accepted any string with the strategy name as a prefix. So VMAF_CUDA_DISPATCH=feature:directx silently routed to the valid "direct" strategy instead of being treated as unknown. A typo in any backend's dispatch env-var was indistinguishable from a valid override at the parse layer. Add a token-boundary check after the strncmp: the byte at v[slen] must be one of '\0', ',', '\n', ' ', or '\t' for a match to succeed. The terminator set mirrors the grammar documented in the header's leading doc comment plus newline (for env values read line-by-line in tests). Adds core/test/test_gpu_dispatch_parse.c (9 cases) wired into core/test/meson.build under the `fast` suite. The negative-control (prefix-without-boundary) cases fail against the previous code and pass against the fix, so any regression is caught locally and in CI. **Research digest** — no digest needed: trivial bug fix with a small, targeted reproducer. **Decision matrix** — no alternatives: only-one-way fix. The terminator set is mechanically derived from the doc-commented grammar plus '\n' for line-buffered tests. **AGENTS.md invariant note** — no rebase-sensitive invariants: file is fork-added (ADR-0483) and absent in upstream. **Reproducer / smoke-test command** — meson setup build-cpu core -Denable_cuda=false -Denable_sycl=false \ -Denable_hip=false -Denable_metal=disabled -Denable_dnn=disabled ninja -C build-cpu test/test_gpu_dispatch_parse -j4 meson test -C build-cpu --no-rebuild test_gpu_dispatch_parse **CHANGELOG fragment** — changelog.d/fixed/gpu-dispatch-parse-strict-match.md **Rebase note** — docs/rebase-notes.md entry gpu-dispatch-parse-strict-strategy-match (2026-05-30). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * chore(changelog): add bundle-core-c fragment for PRs #148 #307 #308 #316 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> Co-authored-by: Lusoris <lusoris@pm.me>
lusoris
added a commit
that referenced
this pull request
Jun 2, 2026
Replace the platform-#ifdef pthread_mutex_t/CRITICAL_SECTION lock bootstrap with std::mutex + std::lock_guard RAII; replace strdup + nullable char * with std::optional<std::string>; use std::string_view for the fast-path comparisons; add [[nodiscard]] to the public entry point. The Windows-specific InitOnceExecuteOnce / CRITICAL_SECTION branch (~25 LOC) is eliminated entirely. Compiled as an isolated gpu_dispatch_env_cpp23_lib static library with override_options=['cpp_std=c++23'], following the ADR-0708 pattern for metadata_handler_cpp20_lib. Public extern "C" symbol unchanged; all GPU backends link without modification. Fast-test gate: 49/49 pass (CPU-only build). Six deliverables (ADR-0108): D1: no digest needed: trivial mechanical conversion D2: ADR-0858 §Alternatives considered D3: core/AGENTS.md — added invariant #7 for isolated lib pattern D4: reproducer: meson setup core/build -Denable_cuda=false && ninja D5: changelog.d/changed/adr-0858-cpp23-gpu-dispatch-env.md D6: docs/rebase-notes.md — feat/cpp23-gpu-dispatch-env-20260529 entry Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
lusoris
added a commit
that referenced
this pull request
Jun 2, 2026
…136 opt+read_json_model + #154 feature_extractor + #198 cli_parse+vmaf) (#531) * refactor(core): C++23 pilot — log.c → log.cpp wired (ADR-0708 Wave 1) Converts core/src/log.c to core/src/log.cpp and wires it into the meson build as the second C++23 pilot under ADR-0708 (first was dict.c/dict.cpp per ADR-0727). The log.cpp file existed on master from the earlier PR #45 attempt but remained inert (meson still referenced log.c, see PR #205 "Wave 1 INERT" audit). This PR completes the conversion by: - Adding `extern "C"` guards to core/src/log.h so the header is includable from both C and C++ TUs. - Wrapping the function definitions in log.cpp in `extern "C"` so the emitted symbols carry C-mangling (verified via nm: `vmaf_log` and `vmaf_set_log_level` are C-mangled exports, same as the prior log.c build). - Replacing the C `static` file-scope log state with a C++ anonymous namespace (clang-tidy misc-use-anonymous-namespace clean). - Compiling log.cpp in an isolated `log_cpp23_lib` static_library with `override_options: ['cpp_std=' + libvmaf_cpu_cpp_std]`, mirroring the ADR-0708 `metadata_handler_cpp20_lib` pattern so the C++23 override does not leak to other TUs. - Removing log.c from libvmaf_sources; adding `log_cpp23_lib` objects to the libvmaf library() target. - Removing 21 inline `'../src/log.c'` source entries from test executables in core/test/meson.build; adding a shared `log_cpp23_test_objects` aggregate that those tests pick up via objects:. - Wiring the orphan `test_log` executable into the fast suite (mirrors the orphan-test sweep in draft PR #315) so the formatter / log-level filtering coverage is no longer silently dead. Behaviour is byte-identical to the prior C build: same fprintf format string, same va_list pass-through, same stderr destination, same ANSI colour codes. std::print / std::format were considered but rejected to preserve printf-style varargs at the libvmaf log surface. Build + test: meson setup build-cpu core -Denable_cuda=false -Denable_sycl=false \ -Denable_hip=false ninja -C build-cpu # 726 targets, all link clean meson test -C build-cpu --suite=fast # 50/50 pass, incl. new test_log ABI verification (nm libvmaf.so | grep vmaf_log): master: 0000000000000000 t vmaf_log (LTO-hidden) 0000000000000000 t vmaf_log.constprop.0 (LTO-hidden) this PR: 0000000000000000 T vmaf_log (externally visible) 0000000000000000 T vmaf_set_log_level (externally visible) The promotion from `t` (local) to `T` (global) is a consequence of moving the TU into an isolated static_library — the linker can no longer elide the symbol via LTO. This matches the established metadata_handler_cpp20_lib precedent (vmaf_metadata_* are also `T` in master). Neither symbol is marked VMAF_EXPORT, so the public libvmaf ABI is unchanged. **Research digest**: ADR-0708 (C++23 internals pilot policy) and the Wave 1 backlog rationale in ADR-0727 §Context. The log.c migration recipe is the same as metadata_handler (extern "C", isolated static_lib, cpp_std override) — no separate research digest needed. **Decision matrix**: log.c was chosen as the next pilot over mem.c, opt.c, and fex_ctx_vector.c because (1) its C surface is the smallest of the four (72 lines, two functions, no out-params), (2) it has zero callers in the public ABI (vmaf_log / vmaf_set_log_level are internal diagnostics, not VMAF_EXPORT-marked), and (3) the log.cpp body already existed in tree from a prior aborted Wave 1 attempt — adopting it is strictly cheaper than starting fresh from mem.c. See ADR-0708 `## Alternatives considered` for the original ROI ranking. **AGENTS.md invariant note**: no rebase-sensitive invariants — the log function semantics, output format, and stderr destination are unchanged. The rebase-mapping (upstream `libvmaf/src/log.c` → fork `core/src/log.cpp`) is recorded in docs/rebase-notes.md so future port-upstream-commit runs target the right file. **Reproducer / smoke-test command**: meson setup build-cpu core -Denable_cuda=false -Denable_sycl=false \ -Denable_hip=false ninja -C build-cpu meson test -C build-cpu test_log --print-errorlogs nm build-cpu/src/libvmaf.so | grep -E " T vmaf_log| T vmaf_set_log_level" **CHANGELOG fragment**: changelog.d/changed/log-c-to-cpp23.md **Rebase note**: docs/rebase-notes.md — section "log.c → log.cpp C++23 pilot (ADR-0708 Wave 1, 2026-05-30)". Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * refactor(core): convert gpu_dispatch_env.c → C++23 (ADR-0858) Replace the platform-#ifdef pthread_mutex_t/CRITICAL_SECTION lock bootstrap with std::mutex + std::lock_guard RAII; replace strdup + nullable char * with std::optional<std::string>; use std::string_view for the fast-path comparisons; add [[nodiscard]] to the public entry point. The Windows-specific InitOnceExecuteOnce / CRITICAL_SECTION branch (~25 LOC) is eliminated entirely. Compiled as an isolated gpu_dispatch_env_cpp23_lib static library with override_options=['cpp_std=c++23'], following the ADR-0708 pattern for metadata_handler_cpp20_lib. Public extern "C" symbol unchanged; all GPU backends link without modification. Fast-test gate: 49/49 pass (CPU-only build). Six deliverables (ADR-0108): D1: no digest needed: trivial mechanical conversion D2: ADR-0858 §Alternatives considered D3: core/AGENTS.md — added invariant #7 for isolated lib pattern D4: reproducer: meson setup core/build -Denable_cuda=false && ninja D5: changelog.d/changed/adr-0858-cpp23-gpu-dispatch-env.md D6: docs/rebase-notes.md — feat/cpp23-gpu-dispatch-env-20260529 entry Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * refactor(core): cpp23 Wave 8 — opt.cpp activation + read_json_model.cpp (ADR-0761) Activate opt.cpp (completing Wave 1 / ADR-0721) and convert read_json_model.c → read_json_model.cpp (new, 639 LOC). Both compile under cpp_std=c++23 in isolated static libraries (opt_cpp23_lib / read_json_model_cpp23_lib) linked into libvmaf.so via extract_all_objects(). Public C ABI unchanged. Changes per file: - opt.h: extern "C" guards added; opt_cpp23_lib wired into meson - read_json_model.cpp: nullptr, static_cast<>, [[nodiscard]] on 4 entry points; goto-past-init replaced with if/else scoping; C++ <c*> headers - log.h, model.h, read_json_model.h: extern "C" guards added - core/src/meson.build: opt_cpp23_lib + read_json_model_cpp23_lib static libs; opt.c and read_json_model.c comments in libvmaf_sources - core/test/meson.build: wave8_cpp23_objects variable; all affected test executables updated to use objects instead of direct source compilation - scripts/ci/coverage-check.sh: updated opt.c -> opt.cpp, read_json_model.c -> read_json_model.cpp in critical-coverage exclusion list - core/src/AGENTS.md: invariant 10 documenting the active .cpp files predict.c skipped: depends on feature_extractor.h / feature_collector.h without extern "C" guards; deferred to a later wave. Build: 49/49 fast-suite pass (CPU-only). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * refactor(core): rename feature_extractor.c → .cpp (ADR-0772) Six void* cast fixups, one atomic_load arithmetic guard, placement-new pool slot init (avoids copying std::atomic), extern "C" guards on feature_extractor.h / log.h / opt.h, and extern "C" on opt.cpp definition. meson.build refs updated; old .c deleted via git rm. Fast-test gate: 49/49 PASS (CPU-only build-0772). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * refactor(tools)!: C++23 Wave 8 — cli_parse.c + vmaf.c → .cpp (ADR-0809) Convert core/tools/cli_parse.c and core/tools/vmaf.c to C++23 translation units. Conservative idioms only: nullptr, static_cast, [[nodiscard]], [[noreturn]], std::string_view for option-string dispatch, and a ModelArrays RAII struct that replaces the three manual vmaf_model_destroy/free loops in vmaf.cpp's goto-cleanup block. - cli_parse.h: extern "C" guards for C caller compatibility - spinner.h: static internal linkage on spinner[]/spinner_length - meson.build: cpp files + cpp_args + override_options cpp_std=c++23 - .pre-commit-config.yaml: add --disable-version-check to semgrep entry to fix spurious exit-2 from semgrep 1.159.0 version-check notification Build: CPU-only build in container — 724 targets, zero errors. Smoke: vmaf --help output identical; Netflix golden pair scores 76.66783 (ADR-0214 PASS; places=4 >= 76.668). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * chore(bundle): add CHANGELOG fragment for C++23 wave bundle PR Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(ci): remove pre-existing conflict-marker residuals from workflow files Conflicts in .github/workflows/libvmaf-build-matrix.yml (2 blocks) and .github/workflows/security-scans.yml (1 block) were committed into the PR branch prior to this rebase. They produced blank lines or garbled YAML steps that would fail CI. Remove all conflict markers and restore the correct content matching the master baseline. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com> Co-authored-by: Lusoris <lusoris@pm.me>
lusoris
added a commit
that referenced
this pull request
Jun 3, 2026
…llow-up #7) Extend _VERSION_PROBE_PATTERNS to cover libx265 and libvpx-vp9 in addition to the existing libx264 and libsvtav1 entries, so _probe_encoder_version_from_ffmpeg can detect all three software encoder families from the ffmpeg -version configure summary. Add EncoderInfo dataclass (encoder, codec_detected: bool, version_label: str) and the public probe_encoder_info() helper that returns it. Callers can now check codec_detected directly instead of parsing the version label string. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
lusoris
added a commit
that referenced
this pull request
Jun 3, 2026
…ollow-up #7) _build_production_sample_extractor now accepts a backend kwarg and forwards it to run_score, so all 30 TPE probe-encode trials score on the same GPU backend as the mandatory verify pass. Previously the extractor always defaulted to CPU even when a GPU was available. _build_prod_predictor gains a backend kwarg forwarded to the extractor. fast_recommend (production path) calls select_backend once and passes the result to both the predictor and the verify pass. Remove the dead _ = backend stub from _gpu_verify that was left over from before the encode_runner forwarding was implemented. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
lusoris
added a commit
that referenced
this pull request
Jun 3, 2026
… follow-up #7) Add codec_adapters.parse_available_codecs(stdout, *, restrict_to_known=True) that parses ffmpeg -hide_banner -encoders output into a frozenset of available codec names. This is the codec-list parser that was deferred from the initial codec_adapters scaffolding ("parser arrives in a follow-up"). When restrict_to_known=True (default) only names in the adapter registry are returned; set False to get the full encoder list. Also update the supports_encoder_stats Protocol comment to remove the "parser arrives in a follow-up PR" placeholder and clarify the current state (x264+x265 text formats supported; libvpx binary format deferred). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
lusoris
added a commit
that referenced
this pull request
Jun 3, 2026
Add test_adr_0498_followup7.py covering all four sub-tasks: - EncoderInfo fields and probe_encoder_info detection for x264/x265/libvpx-vp9 - _VERSION_PROBE_PATTERNS coverage assertions - build_pass1_stats_command duplicate-fallback_duration removal regression - _build_production_sample_extractor backend parameter signature - _gpu_verify dead stub removal via source inspection - backend forwarding to run_score via mock injection - parse_available_codecs parsing and frozenset contract Fix test_encode_dispatcher_per_adapter to capture only the first subprocess call (the encode argv); the probe-cache expansion for libvpx-vp9 adds a second ffmpeg -version call that would otherwise overwrite the captured cmd. ADR-0108 deliverables: - changelog.d/fixed/0498-vmaf-tune-adr-0498-followup7.md - docs/rebase-notes.md (no rebase impact, all changes fork-local) - AGENTS.md invariant notes for probe-cache expansion, backend kwarg, parser Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
lusoris
added a commit
that referenced
this pull request
Jun 3, 2026
…n, backend dispatch, codec-list parser (#573) * fix(vmaf-tune): x264/x265/libvpx detection + EncoderInfo (ADR-0498 follow-up #7) Extend _VERSION_PROBE_PATTERNS to cover libx265 and libvpx-vp9 in addition to the existing libx264 and libsvtav1 entries, so _probe_encoder_version_from_ffmpeg can detect all three software encoder families from the ffmpeg -version configure summary. Add EncoderInfo dataclass (encoder, codec_detected: bool, version_label: str) and the public probe_encoder_info() helper that returns it. Callers can now check codec_detected directly instead of parsing the version label string. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(vmaf-tune): wire GPU backend through sample extractor (ADR-0498 follow-up #7) _build_production_sample_extractor now accepts a backend kwarg and forwards it to run_score, so all 30 TPE probe-encode trials score on the same GPU backend as the mandatory verify pass. Previously the extractor always defaulted to CPU even when a GPU was available. _build_prod_predictor gains a backend kwarg forwarded to the extractor. fast_recommend (production path) calls select_backend once and passes the result to both the predictor and the verify pass. Remove the dead _ = backend stub from _gpu_verify that was left over from before the encode_runner forwarding was implemented. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * feat(vmaf-tune): parse_available_codecs — codec-list parser (ADR-0498 follow-up #7) Add codec_adapters.parse_available_codecs(stdout, *, restrict_to_known=True) that parses ffmpeg -hide_banner -encoders output into a frozenset of available codec names. This is the codec-list parser that was deferred from the initial codec_adapters scaffolding ("parser arrives in a follow-up"). When restrict_to_known=True (default) only names in the adapter registry are returned; set False to get the full encoder list. Also update the supports_encoder_stats Protocol comment to remove the "parser arrives in a follow-up PR" placeholder and clarify the current state (x264+x265 text formats supported; libvpx binary format deferred). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * test(vmaf-tune): ADR-0498 follow-up #7 regression tests + deliverables Add test_adr_0498_followup7.py covering all four sub-tasks: - EncoderInfo fields and probe_encoder_info detection for x264/x265/libvpx-vp9 - _VERSION_PROBE_PATTERNS coverage assertions - build_pass1_stats_command duplicate-fallback_duration removal regression - _build_production_sample_extractor backend parameter signature - _gpu_verify dead stub removal via source inspection - backend forwarding to run_score via mock injection - parse_available_codecs parsing and frozenset contract Fix test_encode_dispatcher_per_adapter to capture only the first subprocess call (the encode argv); the probe-cache expansion for libvpx-vp9 adds a second ffmpeg -version call that would otherwise overwrite the captured cmd. ADR-0108 deliverables: - changelog.d/fixed/0498-vmaf-tune-adr-0498-followup7.md - docs/rebase-notes.md (no rebase impact, all changes fork-local) - AGENTS.md invariant notes for probe-cache expansion, backend kwarg, parser Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Lusoris <lusoris@pm.me> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
lusoris
added a commit
that referenced
this pull request
Sep 5, 2026
…-AV1-HDR knobs - Land profile report audit findings #2-#10 in report.py and cli.py: - #2: Unify bitrate axis labels and tick formatting (Mbps/kbps). - #3: Render em-dash for failed rows with 0.0 values in HTML/Markdown. - #4: Assign VideoToolbox encoders to distinct palette slots (15-17). - #5 & #8: Deduplicate pareto annotations to lowest-bitrate point with bitrate. - #6: Add --json-sidecar CLI flag and ReportData.from_dict round-trip. - #7: Add picked CRF label to scatter plot and deduplicate legend entries. - #9: Strip timestamp and pin svg.hashsalt for byte-identical rendering. - #10: Add failed target markers and failure annotations to sweep chart. - Document SVT-AV1-HDR tuning knobs and libsvtav1@svt-av1-hdr runtime variant in docs/usage/vmaf-tune.md and docs/usage/vmaf-tune-codec-adapters.md. - Add comprehensive regression tests in tools/vmaf-tune/tests/test_report.py. - Update docs/state.md, docs/rebase-notes.md, and changelog fragments.
lusoris
added a commit
that referenced
this pull request
Sep 5, 2026
…-AV1-HDR knobs - Land profile report audit findings #2-#10 in report.py and cli.py: - #2: Unify bitrate axis labels and tick formatting (Mbps/kbps). - #3: Render em-dash for failed rows with 0.0 values in HTML/Markdown. - #4: Assign VideoToolbox encoders to distinct palette slots (15-17). - #5 & #8: Deduplicate pareto annotations to lowest-bitrate point with bitrate. - #6: Add --json-sidecar CLI flag and ReportData.from_dict round-trip. - #7: Add picked CRF label to scatter plot and deduplicate legend entries. - #9: Strip timestamp and pin svg.hashsalt for byte-identical rendering. - #10: Add failed target markers and failure annotations to sweep chart. - Document SVT-AV1-HDR tuning knobs and libsvtav1@svt-av1-hdr runtime variant in docs/usage/vmaf-tune.md and docs/usage/vmaf-tune-codec-adapters.md. - Add comprehensive regression tests in tools/vmaf-tune/tests/test_report.py. - Update docs/state.md, docs/rebase-notes.md, and changelog fragments.
lusoris
added a commit
that referenced
this pull request
Sep 6, 2026
…-AV1-HDR knobs - Land profile report audit findings #2-#10 in report.py and cli.py: - #2: Unify bitrate axis labels and tick formatting (Mbps/kbps). - #3: Render em-dash for failed rows with 0.0 values in HTML/Markdown. - #4: Assign VideoToolbox encoders to distinct palette slots (15-17). - #5 & #8: Deduplicate pareto annotations to lowest-bitrate point with bitrate. - #6: Add --json-sidecar CLI flag and ReportData.from_dict round-trip. - #7: Add picked CRF label to scatter plot and deduplicate legend entries. - #9: Strip timestamp and pin svg.hashsalt for byte-identical rendering. - #10: Add failed target markers and failure annotations to sweep chart. - Document SVT-AV1-HDR tuning knobs and libsvtav1@svt-av1-hdr runtime variant in docs/usage/vmaf-tune.md and docs/usage/vmaf-tune-codec-adapters.md. - Add comprehensive regression tests in tools/vmaf-tune/tests/test_report.py. - Update docs/state.md, docs/rebase-notes.md, and changelog fragments.
lusoris
added a commit
that referenced
this pull request
Sep 6, 2026
…-AV1-HDR knobs - Land profile report audit findings #2-#10 in report.py and cli.py: - #2: Unify bitrate axis labels and tick formatting (Mbps/kbps). - #3: Render em-dash for failed rows with 0.0 values in HTML/Markdown. - #4: Assign VideoToolbox encoders to distinct palette slots (15-17). - #5 & #8: Deduplicate pareto annotations to lowest-bitrate point with bitrate. - #6: Add --json-sidecar CLI flag and ReportData.from_dict round-trip. - #7: Add picked CRF label to scatter plot and deduplicate legend entries. - #9: Strip timestamp and pin svg.hashsalt for byte-identical rendering. - #10: Add failed target markers and failure annotations to sweep chart. - Document SVT-AV1-HDR tuning knobs and libsvtav1@svt-av1-hdr runtime variant in docs/usage/vmaf-tune.md and docs/usage/vmaf-tune-codec-adapters.md. - Add comprehensive regression tests in tools/vmaf-tune/tests/test_report.py. - Update docs/state.md, docs/rebase-notes.md, and changelog fragments.
lusoris
added a commit
that referenced
this pull request
Sep 6, 2026
…-AV1-HDR knobs (#1296) * fix(vmaf-tune): address report audit findings #2-#10 and document SVT-AV1-HDR knobs - Land profile report audit findings #2-#10 in report.py and cli.py: - #2: Unify bitrate axis labels and tick formatting (Mbps/kbps). - #3: Render em-dash for failed rows with 0.0 values in HTML/Markdown. - #4: Assign VideoToolbox encoders to distinct palette slots (15-17). - #5 & #8: Deduplicate pareto annotations to lowest-bitrate point with bitrate. - #6: Add --json-sidecar CLI flag and ReportData.from_dict round-trip. - #7: Add picked CRF label to scatter plot and deduplicate legend entries. - #9: Strip timestamp and pin svg.hashsalt for byte-identical rendering. - #10: Add failed target markers and failure annotations to sweep chart. - Document SVT-AV1-HDR tuning knobs and libsvtav1@svt-av1-hdr runtime variant in docs/usage/vmaf-tune.md and docs/usage/vmaf-tune-codec-adapters.md. - Add comprehensive regression tests in tools/vmaf-tune/tests/test_report.py. - Update docs/state.md, docs/rebase-notes.md, and changelog fragments. * docs(vmaf-tune): correct SVT-AV1-HDR knob defaults against upstream Parameters.md The first cut of the knob table carried three defaults that contradict juliobbv-p/svt-av1-hdr Docs/Parameters.md @ 0033340 (tune=1 not 0, sharp-tx=1 not 0, noise-adaptive-filtering=2 not 0) and omitted twelve documented keys. Rebuild the table from the upstream parameter reference, state the three injection points for the -svtav1-params string and the ADR-0294 CRF/preset window the variant inherits, and drop the 'this PR' placeholders from docs/state.md so the ADR-0165 touch gate accepts the rows. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * docs(state): drop the duplicate rows a keep-both rebase created Each dropped row restates one origin/master already carries; master is the authoritative record. Verified with scripts/ci/check-state-md-rows.sh. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> --------- Co-authored-by: Lusoris <lusoris@pm.me> Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
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 PR contains the following updates:
>=2.37.0→>=2.38.0Release Notes
openai/openai-python (openai)
v2.38.0Compare Source
Full Changelog: v2.37.0...v2.38.0
Features
Chores
Configuration
📅 Schedule: (in timezone Europe/Vienna)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.