Public record
Software health reportschema 0.27.0 · metrics 1.13.0 · 2026-07-26 03:00 UTC

Servarr / FFmpeg

Mirror of https://git.ffmpeg.org/ffmpeg.git

CCustom license★ 1 star⑂ 2 forkssince Sep 2021forkView on GitHub ↗

Servarr/FFmpeg holds a health index of 33 out of 100, placing it in the At risk band. It scores highest on Sustainability & Governance (76/100) and lowest on Community & Adoption (9/100). It was last updated 31 days ago. 5 contributors account for most of its recent work.

33
overall / 100
At risk

Software health index

Metrics are grouped into weighted categories on one standardized 1–100 scale. Overall starts as their weighted mean; when public evidence triggers the High-Risk Jurisdiction Policy, the rating is adjusted and receives an At risk ceiling of 49. AI Readiness sits outside the overall score.

33
Excellent85-100Exemplary; meets essentially all checked criteria
Good70-84Healthy; minor gaps
Moderate50-69Acceptable with notable gaps; review recommended
At risk30-49Significant weaknesses; adoption warrants caution
Critical1-29Severe problems (abandoned, single-maintainer, no hygiene)
VitalityCommunity &AdoptionSustainability &GovernanceEngineeringQualitySecurityAI Readiness

Score profile

Each axis is a category. The shape matters more than the average — a healthy subject fills the whole shape, while a spike-and-crater profile means strength in one dimension is masking risk in another.

Ownership

ServarrOrganization
207 followers28 public repossince Oct 2019

This repository is backed by an organization — shared, accountable stewardship that can outlive any single maintainer.

Metrics by category

Vitality

Is the project alive — is code being written and are releases shipping?

11Critical · 22% of overall
How it's scored
18/36Push recency — last push 31 days ago
0/36Commit cadence — 0/52 weeks with commits
0/18Commit volume — 0 commits in the last year
0/10OpenSSF Scorecard: Maintained — 0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
Inputs used
commits_last_year0
human_commit_share1
days_since_last_push31
active_weeks_last_year0
How it's scored
0/27Ships releases — no releases published
0/36Release recency — no releases
0/27Release cadence — no releases
0/10OpenSSF Scorecard: Signed-Releases — no data
Inputs used
releases_count0
Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.

Community & Adoption

Does the project have users, downloads, attention, and a welcoming setup for contributors?

9Critical · 18% of overall
How it's scored
0/60Stars — 1 stars
0/25Forks — 2 forks
0/15Watchers — 0 watchers
Inputs used
forks2
stars1
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
How it's scored
0/22.5README
16.9/22.5License — license file present, not a recognized license
0/18CONTRIBUTING guide
0/13.5Code of conduct
0/7.2Issue template
0/6.3PR template
Inputs used
has_readmeno
has_licenseno
has_contributingno
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno

Sustainability & Governance

Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?

76Good · 24% of overall
How it's scored
45.9/54Bus factor — 5 contributor(s) cover half of all commits
15.4/22.5Commit distribution — top contributor authored 31% of commits
13.5/13.5Contributor breadth — 100 contributors
10/10OpenSSF Scorecard: Contributors — project has 18 contributing companies or organizations
Inputs used
bus_factor5
contributors_sampled100
top_contributor_share0.314
How it's scored
0/46.8Issue resolution — no issues or no data
38.2/38.3PR acceptance — 1/1 decided PRs merged
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Inputs used
merged_prs1
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs0
Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.
How it's scored
30/30Ownership backing — organization-owned
0/20Verified domain
16.7/25Owner reach — 207 followers of Servarr
22.6/25Track record — 28 public repos, account ~6 yr old
Inputs used
followers207
owner_typeOrganization
is_verified
owner_loginServarr
public_repos28
account_age_days2,464

Engineering Quality

Are baseline engineering and documentation practices in place?

34At risk · 20% of overall
How it's scored
0/24CI workflows
24/24Tests present
0/16Linter config
0/9.6Pre-commit hooks
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — no data
Inputs used
has_cino
has_testsyes
has_editorconfigno
has_linter_configno
has_precommit_configno
Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.

Documentation

40At risk
How it's scored
0/30README
25/25Documentation directory
15/15Documentation / homepage site — https://ffmpeg.org/
0/10Repository description
0/10Topics
0/10Wiki
Inputs used
topics
has_wikino
homepagehttps://ffmpeg.org/
has_readmeno
has_docs_diryes
has_descriptionno

Security

Are visible security and supply-chain practices strong, without unresolved high-risk jurisdiction exposure?

25Critical · 16% of overall
How it's scored
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
0/2.5CI-Tests — no data
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/30 approved changesets -- score normalized to 0
2.5/2.5Contributors — project has 18 contributing companies or organizations
0/10Dangerous-Workflow — no data
0/7.5Dependency-Update-Tool — no update tool detected
5/5Fuzzing — project is fuzzed
2.2/2.5License — license file detected
0/7.5Maintained — 0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
0/5Packaging — no data
0/5Pinned-Dependencies — no data
0/5SAST — no SAST tool detected
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — no data
0/7.5Token-Permissions — no data
0/7.5Vulnerabilities — 32 existing vulnerabilities detected
Inputs used
sourceopenssf_scorecard
checks_evaluated12
scorecard_versionv5.5.0
checks_inconclusive6
scorecard_aggregate2.6
Excluded from scoring (no data or not applicable): ci_tests, dangerous_workflow, packaging, pinned_dependencies, signed_releases, token_permissions. Remaining weights renormalized.

AI Readiness

How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score.

54Moderate · 0% of overall
How it's scored
0/45Agent instructions — no CLAUDE.md / AGENTS.md / editor rules
0/15Machine-readable docs (llms.txt)
35.7/40Legible commit history — 67 of 100 human commits state their intent (structured subject or explanatory body)
Inputs used
has_llms_txtno
legible_history_share0.67
agent_instruction_files
agent_instruction_max_bytes
How it's scored
18/18One-command bootstrap — Makefile, doc/Makefile, doc/examples/Makefile, fftools/Makefile, libavcodec/Makefile, libavcodec/aarch64/Makefile, libavcodec/alpha/Makefile, libavcodec/arm/Makefile, libavcodec/loongarch/Makefile, libavcodec/mips/Makefile, libavcodec/neon/Makefile, libavcodec/ppc/Makefile, libavcodec/riscv/Makefile, libavcodec/x86/Makefile, libavdevice/Makefile, libavfilter/Makefile, libavfilter/aarch64/Makefile, libavfilter/dnn/Makefile, libavfilter/x86/Makefile, libavformat/Makefile, libavutil/Makefile, libavutil/aarch64/Makefile, libavutil/arm/Makefile, libavutil/loongarch/Makefile, libavutil/mips/Makefile, libavutil/ppc/Makefile, libavutil/riscv/Makefile, libavutil/x86/Makefile, libpostproc/Makefile, libswresample/Makefile, libswresample/aarch64/Makefile, libswresample/arm/Makefile, libswresample/x86/Makefile, libswscale/Makefile, libswscale/aarch64/Makefile, libswscale/arm/Makefile, libswscale/loongarch/Makefile, libswscale/ppc/Makefile, libswscale/riscv/Makefile, libswscale/x86/Makefile, tests/Makefile, tests/api/Makefile, tests/checkasm/Makefile, tools/Makefile
22/22Automated tests
0/11Lint / format config
11/11Static type checking — C (statically typed)
0/10Reproducible environment
0/10Demonstrated agent practice — no agent-authored commits among the last 100
0/8Automated maintenance — no automated dependency updates observed
0/10OpenSSF Scorecard: Pinned-Dependencies — no data
Inputs used
has_nixno
has_testsyes
lockfiles
has_dockerfileno
typed_languageyes
bootstrap_filesMakefile, doc/Makefile, doc/examples/Makefile, fftools/Makefile, libavcodec/Makefile, libavcodec/aarch64/Makefile, libavcodec/alpha/Makefile, libavcodec/arm/Makefile, libavcodec/loongarch/Makefile, libavcodec/mips/Makefile, libavcodec/neon/Makefile, libavcodec/ppc/Makefile, libavcodec/riscv/Makefile, libavcodec/x86/Makefile, libavdevice/Makefile, libavfilter/Makefile, libavfilter/aarch64/Makefile, libavfilter/dnn/Makefile, libavfilter/x86/Makefile, libavformat/Makefile, libavutil/Makefile, libavutil/aarch64/Makefile, libavutil/arm/Makefile, libavutil/loongarch/Makefile, libavutil/mips/Makefile, libavutil/ppc/Makefile, libavutil/riscv/Makefile, libavutil/x86/Makefile, libpostproc/Makefile, libswresample/Makefile, libswresample/aarch64/Makefile, libswresample/arm/Makefile, libswresample/x86/Makefile, libswscale/Makefile, libswscale/aarch64/Makefile, libswscale/arm/Makefile, libswscale/loongarch/Makefile, libswscale/ppc/Makefile, libswscale/riscv/Makefile, libswscale/x86/Makefile, tests/Makefile, tests/api/Makefile, tests/checkasm/Makefile, tools/Makefile
has_devcontainerno
has_linter_configno
typecheck_configs
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0
Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Pinned-Dependencies. Remaining weights renormalized.
How it's scored
45/45Type-checkable code — C (statically typed)
52.7/55Manageable file sizes — 172/4,170 source files over 60KB
Inputs used
primary_languageC
largest_source_bytes920,659
source_files_sampled4,170
oversized_source_files172
How it's scored
0/40API schema (OpenAPI/GraphQL/proto)
0/20MCP server
40/40Runnable examples — examples
Inputs used
example_dirsexamples
has_mcp_signalno
api_schema_files

Key facts

1GitHub stars
100contributors
0commits, last 12 months
31days since last push
0releases
5bus factor
0open issues
package ecosystems

Data collection warnings

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • Community profile unavailable
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

More detail

Star and fork history 0 ★ / 2 ⇿
0Stars
2Forks

When each star and fork was added, collected from GitHub and bucketed by day. Cumulative growth sits directly above the daily additions it is made of, so the two read against each other: steady organic accretion looks nothing like an abrupt, short-lived burst. Where that difference is measurable, it is reported as growth authenticity.

111222212022-102024-082026-06

Each point covers 4 days.

OpenSSF Scorecard 2.6 / 10
2.6aggregate

Independent, tool-agnostic security assessment from the open-source OpenSSF Scorecard. Each check rewards a security practice, not a specific vendor's tool. Checks Scorecard could not determine are marked n/a and excluded from the security score (never counted as zero).Scorecard v5.5.0 · 2026-07-26 02:59 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
n/aCI-Testsno pull request found
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
10Contributorsproject has 18 contributing companies or organizations
n/aDangerous-Workflowno workflows found
0Dependency-Update-Toolno update tool detected
10Fuzzingproject is fuzzed
9Licenselicense file detected
0Maintained0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
n/aPackagingpackaging workflow not detected
n/aPinned-Dependenciesno dependencies found
0SASTno SAST tool detected
0Security-Policysecurity policy file not detected
n/aSigned-Releasesno releases found
n/aToken-PermissionsNo tokens found
0Vulnerabilities32 existing vulnerabilities detected
All dependencies not collected

The resolved dependency set could not be collected for this report: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Raw JSON report machine-readable
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": true,
      "size_kb": 383324,
      "has_wiki": false,
      "homepage": "https://ffmpeg.org/",
      "languages": {
        "C": 61642836,
        "Awk": 1912,
        "C++": 121723,
        "Cuda": 84917,
        "HTML": 1631,
        "Perl": 24964,
        "Roff": 132,
        "Ruby": 1462,
        "Metal": 7961,
        "Shell": 56461,
        "Python": 5992,
        "Verilog": 729,
        "Assembly": 4862105,
        "Makefile": 885107,
        "Objective-C": 104903
      },
      "pushed_at": "2026-06-24T17:45:12Z",
      "created_at": "2021-09-08T13:11:13Z",
      "owner_type": "Organization",
      "updated_at": "2022-05-06T04:14:59Z",
      "description": "Mirror of https://git.ffmpeg.org/ffmpeg.git",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": null,
      "default_branch": "master",
      "license_spdx_raw": "NOASSERTION",
      "primary_language": "C",
      "significant_languages": [
        "C"
      ]
    },
    "owner": {
      "blog": null,
      "name": null,
      "type": "Organization",
      "login": "Servarr",
      "company": null,
      "location": null,
      "followers": 207,
      "avatar_url": "https://avatars.githubusercontent.com/u/57051827?v=4",
      "created_at": "2019-10-27T01:09:02Z",
      "is_verified": null,
      "public_repos": 28,
      "account_age_days": 2464
    },
    "license": {
      "state": "custom",
      "spdx_id": null,
      "raw_spdx": "NOASSERTION",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": false
    },
    "activity": {
      "releases": [],
      "recent_commits": [
        {
          "oid": "fa4c2884dd568d4fc0d657d3622437aebc3563b3",
          "body": "…e timestamps",
          "is_bot": false,
          "headline": "avfilter/avf_showcwt: do not return initial black frames with negativ…",
          "author_name": "Paul B Mahol",
          "author_login": "richardpl",
          "committed_at": "2023-11-11T16:53:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "09f783692e218b446cf5778ce9271360458ebadc",
          "body": "Signed-off-by: James Almer <jamrial@gmail.com>",
          "is_bot": false,
          "headline": "avcodec/cbs_h266: H266RawSliceHeader, expose curr_subpic_idx",
          "author_name": "Nuo Mi",
          "author_login": "nuomi2021",
          "committed_at": "2023-11-11T14:53:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fa81de4af045317aefeae941cf54f349c39e81e0",
          "body": "We can directly get data ptr from tensor, so that extral memory\nallocation can be removed.\n\nSigned-off-by: Wenbin Chen <wenbin.chen@intel.com>",
          "is_bot": false,
          "headline": "libavfilter/dnn/openvino: Reduce redundant memory allocation",
          "author_name": "Wenbin Chen",
          "author_login": "wenbinc-Bin",
          "committed_at": "2023-11-11T01:32:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "49719d3cb58c03bc0a976f47d2c82e8ca48d1b3d",
          "body": null,
          "is_bot": false,
          "headline": "avfilter/avf_showcwt: add fm frequency scaler",
          "author_name": "Paul B Mahol",
          "author_login": "richardpl",
          "committed_at": "2023-11-11T00:19:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "409b29d3f92c8f0347527c3807c473094574f163",
          "body": "Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>",
          "is_bot": false,
          "headline": "doc/APIchanges: Fill in missing values",
          "author_name": "Michael Niedermayer",
          "author_login": "michaelni",
          "committed_at": "2023-11-10T01:04:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ac4e3e188af8bf6f0c4a808a24f6ff0daba78248",
          "body": "Fixes: out of array access\nFixes: 62467/clusterfuzz-testcase-minimized-ffmpeg_BSF_EVC_FRAME_MERGE_fuzzer-6092990982258688\n\nFound-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg\nReviewed-by: \"Dawid Kozinski/Multimedia (PLT) /SRPOL/Staff Engineer/Samsung Electronics\" <d.kozinski@samsung.com>\nSigned-off-by: Michael Niedermayer <michael@niedermayer.cc>",
          "is_bot": false,
          "headline": "avcodec/evc_parse: Check num_remaining_tiles_in_slice_minus1",
          "author_name": "Michael Niedermayer",
          "author_login": "michaelni",
          "committed_at": "2023-11-09T23:15:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bb0a684d93f793457f7bff3940a1398eb9e91703",
          "body": "Fixes: index -1 out of bounds for type 'CFrameBuffer [100]'\nFixes: 63877/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_FOURXM_fuzzer-5854263397711872\n\nFound-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg\nSigned-off-by: Michael Niedermayer <michael@niedermayer.cc>",
          "is_bot": false,
          "headline": "avcodec/4xm: Check for cfrm exhaustion",
          "author_name": "Michael Niedermayer",
          "author_login": "michaelni",
          "committed_at": "2023-11-09T23:14:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "19fcf4313148e86aa47d81a8d5d5e8d056f1f906",
          "body": "Fixes: Assertion !c->fc->nb_streams failed at libavformat/mov.c:7799\nFixes: 63875/clusterfuzz-testcase-minimized-ffmpeg_dem_MOV_fuzzer-5479178702815232\n\nFound-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg\nSigned-off-by: Michael Niedermayer <michael@niedermayer.cc>",
          "is_bot": false,
          "headline": "avformat/mov: Disallow FTYP after streams",
          "author_name": "Michael Niedermayer",
          "author_login": "michaelni",
          "committed_at": "2023-11-09T23:14:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "96d2a40b9ee0ddd1844b82c23a074804c316caa5",
          "body": "PGMYUV seems to be always limited range. This was a format originally\ninvented by FFmpeg at a time when YUVJ distinguished limited from full\nrange YUV, and this codec never appeared to output YUVJ in any\ncircumstance, so hard-coding limited range preserves the status quo.\n\nThe other formats are expl\n[…]\nag them yet, due to outstanding bugs w.r.t\ngrayscale formats and color range handling.\n\nThis change in behavior updates a bunch of FATE tests in trivial ways\n(added tagging being the only difference).",
          "is_bot": false,
          "headline": "avcodec/pnm: explicitly tag color range",
          "author_name": "Niklas Haas",
          "author_login": "haasn",
          "committed_at": "2023-11-09T11:53:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cf60046cdcdb67fce8cea11c4dbab5bb8f931430",
          "body": "When using vf_scale to force a specific output color space, also tag\nthis on the AVFrame. (Mirroring existing logic for output range)\n\nMove the sanity fix for RGB after the new assignment, to avoid leaking\nbogus YUV colorspace metadata for RGB spaces.",
          "is_bot": false,
          "headline": "avfilter/vf_scale: tag output color space",
          "author_name": "Niklas Haas",
          "author_login": "haasn",
          "committed_at": "2023-11-09T11:53:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5d5bb77af11eb6e9bea8b5eb5f1ecba10c72dcfd",
          "body": "No need to write a custom string parser when we can just use an integer\noption with preset values. The various bits of fallback logic are wholly\nredundant with equivalent logic already inside sws_getCoefficients.\n\nNote: I disallowed setting 'out_color_matrix=auto', because this does\nnot do anything meaningful in the current code (just hard-codes\nAVCOL_SPC_BT470BG fallback).",
          "is_bot": false,
          "headline": "avfilter/vf_scale: simplify color matrix parsing logic",
          "author_name": "Niklas Haas",
          "author_login": "haasn",
          "committed_at": "2023-11-09T11:53:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ea9557043e9e23a0b7e9709fbb2b2668d00522ef",
          "body": "Alpha planes must always be full range, so complain loudly if fed\nlimited range grayscale input.",
          "is_bot": false,
          "headline": "avfilter/vf_alphamerge: warn if input not full range",
          "author_name": "Niklas Haas",
          "author_login": "haasn",
          "committed_at": "2023-11-09T11:53:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b7284f24105c5f37aa8e6262e3ccc7b4ed157095",
          "body": "Alpha planes are explicitly full range, even for limited range YUVA\nformats. Mark them as such.",
          "is_bot": false,
          "headline": "avfilter/vf_extractplanes: tag alpha plane as full range",
          "author_name": "Niklas Haas",
          "author_login": "haasn",
          "committed_at": "2023-11-09T11:53:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "736284e7b98cebadbc5b248f1080950c207bb5a2",
          "body": "The documentation states that invalid entries default to SWS_CS_DEFAULT.\nA value of 0 is not a valid SWS_CS_*, yet the code incorrectly\nhard-codes it to BT.709 coefficients instead of SWS_CS_DEFAULT.",
          "is_bot": false,
          "headline": "swscale/yuv2rgb: fix sws_getCoefficients for colorspace=0",
          "author_name": "Niklas Haas",
          "author_login": "haasn",
          "committed_at": "2023-11-09T11:53:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d043e5c54c3f8e98be1a4bc1bcb76407af0e8ac7",
          "body": "This was a complete hack seemingly designed to work around a different\nbug, which was fixed in the previous commit. As such, there is no more\nreason not to do this, as it simply breaks changing color range in\nsws_setColorspaceDetails for no reason.",
          "is_bot": false,
          "headline": "swscale: don't omit ff_sws_init_range_convert for high-bit",
          "author_name": "Niklas Haas",
          "author_login": "haasn",
          "committed_at": "2023-11-09T11:53:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cedf589c09c567b72bf4c1a58db53d94622567e1",
          "body": "More commonly, this fixes the case of sws_setColorspaceDetails after\nsws_getContext, since the latter implies sws_init_context.\n\nThe problem here is that sws_init_context sets up the range conversion\nand fast path tables based on the values of srcRange/dstRange at init\ntime. This may result in locki\n[…]\n reason\nabout.\n\nReword the av_log message to make it clear that this special converter\nis not necessarily used, depending on whether or not there is range\nconversion or YUV matrix conversion going on.",
          "is_bot": false,
          "headline": "swscale: fix sws_setColorspaceDetails after sws_init_context",
          "author_name": "Niklas Haas",
          "author_login": "haasn",
          "committed_at": "2023-11-09T11:53:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "acf63d5350adeae551d412db699f8ca03f7e76b9",
          "body": null,
          "is_bot": false,
          "headline": "lavu/log: do not assume AVClass.item_name is always set",
          "author_name": "Anton Khirnov",
          "author_login": "elenril",
          "committed_at": "2023-11-09T10:25:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "26ebd96371d8d32ea5c227e0b97af5bbd847332f",
          "body": null,
          "is_bot": false,
          "headline": "fftools/ffmpeg_filter: return an error on ofilter_alloc() failure",
          "author_name": "Anton Khirnov",
          "author_login": "elenril",
          "committed_at": "2023-11-09T10:25:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5db07311a073a7ce7f2ea72bd80049403f3f7589",
          "body": null,
          "is_bot": false,
          "headline": "fftools/ffmpeg_filter: fail on ifilter_alloc() failure",
          "author_name": "Anton Khirnov",
          "author_login": "elenril",
          "committed_at": "2023-11-09T10:25:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ed0a50923a8fb36ff6535f5a87bfede41f6fac0e",
          "body": null,
          "is_bot": false,
          "headline": "fftools/cmdutils: only set array size after allocation succeeded",
          "author_name": "Anton Khirnov",
          "author_login": "elenril",
          "committed_at": "2023-11-09T10:25:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e900a559c25251398e6d0e0268ef836771fbec06",
          "body": "Adds another test that uses the start_duration and stop_duration\noptions instead of start and stop.\n\nSigned-off-by: Anton Khirnov <anton@khirnov.net>",
          "is_bot": false,
          "headline": "fate: enhance tpad filter test",
          "author_name": "Marvin Scholz",
          "author_login": "ePirat",
          "committed_at": "2023-11-09T10:11:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6667741029bce9a79b48caedf24d6cb69c5ead7d",
          "body": "The check if drawing needs to be initialized and supported formats\nshould be drawable ones was flawed, as pad_stop/pad_start is only\npopulated from stop_duration/start_duration after these checks.\n\nTo fix that, check the _duration variants as well and for better\nreadability and maintainability break the check out into its own\nhelper.\n\nFixes a regression from 86b252ea9dee18006910e30646ad1067f2d1323f\nFix #10621\n\nSigned-off-by: Anton Khirnov <anton@khirnov.net>",
          "is_bot": false,
          "headline": "avfilter/vf_tpad: fix check for drawing initialization",
          "author_name": "Marvin Scholz",
          "author_login": "ePirat",
          "committed_at": "2023-11-09T10:11:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "99fcdee5e80db8a2a8ff1ea9b66a9b74d8f96f67",
          "body": "We calculated offsets as pairs, but addressed them in the shader\nas single float values, while reading them as ivec2s.\n\nAlso removes unused code (was provisionally added if cooperative matrices\ncould be used, but that turned out to be impossible).",
          "is_bot": false,
          "headline": "nlmeans_vulkan: fix offsets calculation and various stride issues",
          "author_name": "Lynne",
          "author_login": "cyanreg",
          "committed_at": "2023-11-09T08:14:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "854012ec59623736a12db0b5f99ca4b602fb5206",
          "body": "Rather than the VkFormatFeatureFlagBits enum\n\nSigned-off-by: Víctor Manuel Jáquez Leal <vjaquez@igalia.com>",
          "is_bot": false,
          "headline": "avutil/hwcontext_vulkan: get VkFormatFeatureFlagBits2",
          "author_name": "Víctor Manuel Jáquez Leal",
          "author_login": "ceyusa",
          "committed_at": "2023-11-09T08:13:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6f39dee9747144106c6f4d6be9ebf9fe50491162",
          "body": "VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME is required on macOS,\nand VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR flag should\nbe set.\n\nSigned-off-by: Zhao Zhili <zhilizhao@tencent.com>",
          "is_bot": false,
          "headline": "avutil/hwcontext_vulkan: fix run on macOS",
          "author_name": "Zhao Zhili",
          "author_login": "quink-black",
          "committed_at": "2023-11-09T11:23:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f16900bda23414caf9ec3f9dc50db7d4caf59a8b",
          "body": "Texinfo 7.0 produces quite different HTML to Texinfo 6.8. Without\nthis change, enumerated option flags (i.e. Possible values of x\nare...) render as white text on a white background with Texinfo 7.0\nand are unreadable. This change removes a style for the selector\n`.table .table` which causes the background to turn white for these\nelements. As far as I can tell, it is not actually used anywhere in\nfiles generated by Texinfo 6.8.\n\nSigned-off-by: Frank Plowman <post@frankplowman.com>",
          "is_bot": false,
          "headline": "doc/html: fix styling issue with Texinfo 7.0",
          "author_name": "Frank Plowman",
          "author_login": "frankplow",
          "committed_at": "2023-11-08T22:54:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f01fdedb69e4accb1d1555106d8f682ff1f1ddc7",
          "body": "Resolves trac ticket #10636 (http://trac.ffmpeg.org/ticket/10636).\n\nTexinfo 7.0, released in November 2022, changed the names of various\nfunctions. Compiling docs with Texinfo 7.0 resulted in warnings and\nimproperly formatted documentation. More old names appear to have\nbeen removed in Texinfo 7.1, \n[…]\ntion before and after the patch.\n\nCC\nhttps://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg1938238.html\nhttps://bugs.gentoo.org/916104\n\nSigned-off-by: Frank Plowman <post@frankplowman.com>",
          "is_bot": false,
          "headline": "doc/html: support texinfo 7.0",
          "author_name": "Frank Plowman",
          "author_login": "frankplow",
          "committed_at": "2023-11-08T22:53:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2b4035d1dc57bc751c28dd8969856b269fad787e",
          "body": "By intent, and in practice, the \"active contributor\" criterion applies\nto the person authoring the commits, not the one pushing them into the\nrepository.",
          "is_bot": false,
          "headline": "doc/community: improve wording",
          "author_name": "Anton Khirnov",
          "author_login": "elenril",
          "committed_at": "2023-11-08T16:01:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "88f9164f97bbb4a3de539fb25a478d154176d16d",
          "body": "Cf.:\n* http://lists.ffmpeg.org/pipermail/ffmpeg-devel/2023-October/316054.html\n* http://lists.ffmpeg.org/pipermail/ffmpeg-devel/2023-November/316618.html",
          "is_bot": false,
          "headline": "doc/community: update the rules according to voting results",
          "author_name": "Anton Khirnov",
          "author_login": "elenril",
          "committed_at": "2023-11-08T16:01:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b82957a66a725568226db4746aa220375c2fbad1",
          "body": "Signed-off-by: James Almer <jamrial@gmail.com>",
          "is_bot": false,
          "headline": "avutil: bump minor version after recent commits",
          "author_name": "James Almer",
          "author_login": "jamrial",
          "committed_at": "2023-11-08T13:13:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "04e53927ad8d4e12c2d16ce749b906147a5c2070",
          "body": "Mapping to ITU-R BS.2051-3 \"Sound System G\" and ITU-R BS.1196-8 \"Channel\nConfiguration 20\".\n\nSigned-off-by: James Almer <jamrial@gmail.com>",
          "is_bot": false,
          "headline": "avutil/channel_layout: add a 9.1.4 channel layout",
          "author_name": "James Almer",
          "author_login": "jamrial",
          "committed_at": "2023-11-08T13:09:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b4169760b0d535a77b607acf8c8934864252a4f5",
          "body": "Mapping to ITU-R BS.2051-3 \"Sound System F\" and ITU-R BS.1196-8 \"Channel\nConfiguration 15\".\n\nSigned-off-by: James Almer <jamrial@gmail.com>",
          "is_bot": false,
          "headline": "avutil/channel_layout: add a 7.2.3 channel layout",
          "author_name": "James Almer",
          "author_login": "jamrial",
          "committed_at": "2023-11-08T13:09:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ed8ddf0bd3b188a08ae0b4e21235f7e3e6ce501b",
          "body": "When operating on large blocks of data it's common to repeatedly use\nan instruction on multiple registers. Using the REPX macro makes it\neasy to quickly write dense code to achieve this without having to\nexplicitly duplicate the same instruction over and over.\n\nFor example,\n\n    REPX {paddw x, m4}, \n[…]\nm x264:\nhttps://code.videolan.org/videolan/x264/-/commit/6d10612ab0007f8f60dd2399182efd696da3ffe4\n\nSigned-off-by: Frank Plowman <post@frankplowman.com>\nSigned-off-by: Anton Khirnov <anton@khirnov.net>",
          "is_bot": false,
          "headline": "x86inc: Add REPX macro to repeat instructions/operations",
          "author_name": "Henrik Gramner",
          "author_login": "Gramner",
          "committed_at": "2023-11-08T12:49:08Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5a2ca4bf7a3f8ba566283b48f0b8558d8c221e41",
          "body": "Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>",
          "is_bot": false,
          "headline": "MAINTAINERS: add myself as a mediacodec and videotoolbox maintainer",
          "author_name": "Zhao Zhili",
          "author_login": "quink-black",
          "committed_at": "2023-11-08T08:15:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "10869cd849504f0792770722be52884644c54fcf",
          "body": "Partially fixes ticket #798\n\nReviewed-by: James Almer <jamrial@gmail.com>\nReviewed-by: Michael Niedermayer <michael@niedermayer.cc>\nReviewed-by: Paul B Mahol <onemda@gmail.com>\nSigned-off-by: Peter Ross <pross@xvid.org>",
          "is_bot": false,
          "headline": "avcodec: LEAD MCMP decoder",
          "author_name": "Peter Ross",
          "author_login": "rouseabout",
          "committed_at": "2023-11-08T06:37:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f084e9b0beca71129f36d8ae58e027adddf37fa1",
          "body": "Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>",
          "is_bot": false,
          "headline": "avdevice/android_camera: fix build failure due to typo",
          "author_name": "Zhao Zhili",
          "author_login": "quink-black",
          "committed_at": "2023-11-07T03:10:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "adc87a5f7c99c89364b89e51d7c42fcb36cf15b0",
          "body": "This uses a more traditional approach allowing up processing of up to\nperiod minus two elements per iteration. This also allows the algorithm\nto work for all and any vector length.\n\nAs the T-Head C908 device under test can load 16 elements loop, there is\nunsurprisingly a little performance drop when\n[…]\nr:\npostfilter_15_c:         20189.5\npostfilter_15_rvv_f32:    7057.2\npostfilter_512_c:        20189.5\npostfilter_512_rvv_f32:   5667.2\npostfilter_1022_c:       20192.7\npostfilter_1022_rvv_f32:  5667.2",
          "is_bot": false,
          "headline": "lavc/opusdsp: rewrite R-V V postfilter",
          "author_name": "Rémi Denis-Courmont",
          "author_login": null,
          "committed_at": "2023-11-06T20:09:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "02594c8c011ca2cdc20334e9bb812ec8f6f37cf3",
          "body": "As in the aligned case, we can use VLSE64.V, though the way of doing so\ngets more convoluted, so the performance gains are more modest:\n\nget_pixels_unaligned_c:       126.7\nget_pixels_unaligned_rvv_i32: 145.5 (before)\nget_pixels_unaligned_rvv_i64:  62.2 (after)\n\nFor the reference, those are the aligned benchmarks (unchanged) on the\nsame T-Head C908 hardware:\n\nget_pixels_c:                 126.7\nget_pixels_rvi:                85.7\nget_pixels_rvv_i64:            33.2",
          "is_bot": false,
          "headline": "lavc/pixblockdsp: rework R-V V get_pixels_unaligned",
          "author_name": "Rémi Denis-Courmont",
          "author_login": null,
          "committed_at": "2023-11-06T17:42:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f68ad5d2de40e42b57b9f44ec69d9cbc0f709460",
          "body": "hf_g_filt_c:      1552.5\nhf_g_filt_rvv_f32: 679.5",
          "is_bot": false,
          "headline": "lavc/sbrdsp: R-V V sbr_hf_g_filt",
          "author_name": "Rémi Denis-Courmont",
          "author_login": null,
          "committed_at": "2023-11-06T17:42:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "44a0148fadc97798acf6c93016a14e7c956f0825",
          "body": "Makes better results in final output if multiple filters are cascaded at once.",
          "is_bot": false,
          "headline": "avfilter/af_adynamicequalizer: do detection of threshold first",
          "author_name": "Paul B Mahol",
          "author_login": "richardpl",
          "committed_at": "2023-11-05T15:00:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "799fad18280382e67b2a7d1834a7aed7e5f159d5",
          "body": null,
          "is_bot": false,
          "headline": "avfilter/af_adynamicequalizer: always start filtering from unit gain",
          "author_name": "Paul B Mahol",
          "author_login": "richardpl",
          "committed_at": "2023-11-05T15:00:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f9fdaa2ca92f1d111c5797e202ea48e6c3eb914f",
          "body": "Explicitly state what the implications of this are.",
          "is_bot": false,
          "headline": "configure: warn when threading is disabled",
          "author_name": "Anton Khirnov",
          "author_login": "elenril",
          "committed_at": "2023-11-05T10:30:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ad3df6bf35825fe94a673e2be515067acd61769c",
          "body": "Partially fixes #10617",
          "is_bot": false,
          "headline": "lavf/smacker: export sample_aspect_ratio",
          "author_name": "Anton Khirnov",
          "author_login": "elenril",
          "committed_at": "2023-11-05T10:30:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1a7a85137e593f5164027da7ce53219829253f65",
          "body": "Without this flag, timestamps were embedded into the final\nbinary if CUDA was enabled.\n\nSigned-off-by: Rob Hall <robxnanocode@outlook.com>\nSigned-off-by: Anton Khirnov <anton@khirnov.net>",
          "is_bot": false,
          "headline": "ffbuild: Add gzip -n flag to fix reproducible builds",
          "author_name": "Rob Hall",
          "author_login": "robxnano",
          "committed_at": "2023-11-05T10:30:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fd1712b6fb8b7acc04ccaa7c02b9a5c9f233cfb3",
          "body": "More user-friendly and self-explanatory what certain mode does.",
          "is_bot": false,
          "headline": "avfilter/af_adynamicequalizer: merge direction option with mode option",
          "author_name": "Paul B Mahol",
          "author_login": "richardpl",
          "committed_at": "2023-11-04T14:39:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "43226efc2188ec2cd16d3b9c4e189bcde1a2a0e5",
          "body": null,
          "is_bot": false,
          "headline": "avfilter/af_adynamicequalizer: add new structure to hold filtering state",
          "author_name": "Paul B Mahol",
          "author_login": "richardpl",
          "committed_at": "2023-11-04T14:39:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3f890fbfd9014843c51408c8f7ab3ba4aef7d354",
          "body": "Fixes: VUI extension leak\nFixes: 63004/clusterfuzz-testcase-minimized-ffmpeg_BSF_VVC_METADATA_fuzzer-4928832253329408\n\nFound-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg\n\nSigned-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>",
          "is_bot": false,
          "headline": "avcodec/cbs_h2645: Fix leak of SPS VUI extension data",
          "author_name": "Andreas Rheinhardt",
          "author_login": "mkver",
          "committed_at": "2023-11-04T00:27:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "de4846dd184bd5a7a66d8fec2e81922188906b17",
          "body": "Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>",
          "is_bot": false,
          "headline": "avfilter/deshake: Merge header into its only user",
          "author_name": "Andreas Rheinhardt",
          "author_login": "mkver",
          "committed_at": "2023-11-04T00:26:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2fdaeec41bef822df6a0c6294878a723300035b6",
          "body": "Redundant since ea043cc53ed3506775ec6239ed5f8a20718b1098\n(which made 16x16 no longer use MMX).\n\nSigned-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>",
          "is_bot": false,
          "headline": "avfilter/vf_deshake: Remove unnecessary emms_c",
          "author_name": "Andreas Rheinhardt",
          "author_login": "mkver",
          "committed_at": "2023-11-04T00:26:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "392ab35db1300141220e2e772e2f785c5bae8784",
          "body": "Unnecessary now that the pixelutils API abides by the ABI.\n\nSigned-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>",
          "is_bot": false,
          "headline": "avfilter/vf_mpdecimate: Remove emms_c",
          "author_name": "Andreas Rheinhardt",
          "author_login": "mkver",
          "committed_at": "2023-11-04T00:26:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5b85ca5317f28a73eadf10d604d2a7421b84bed8",
          "body": "We currently mostly do not empty the MMX state in our MMX\nDSP functions; instead we only do so before code that might\nbe using x87 code. This is a violation of the System V i386 ABI\n(and maybe of other ABIs, too):\n\"The CPU shall be in x87 mode upon entry to a function. Therefore,\nevery function that\n[…]\n fn(src1, 8, src2, 8);\n    av_assert0_fpu();\n\n[1]: https://raw.githubusercontent.com/wiki/hjl-tools/x86-psABI/intel386-psABI-1.1.pdf\n\nSigned-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>",
          "is_bot": false,
          "headline": "avutil/x86/pixelutils: Empty MMX state in ff_pixelutils_sad_8x8_mmxext",
          "author_name": "Andreas Rheinhardt",
          "author_login": "mkver",
          "committed_at": "2023-11-04T00:26:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8661b5e8f9e63d2775978f2aa3ee6fae4d515c53",
          "body": "Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>",
          "is_bot": false,
          "headline": "avfilter/vf_format: Deduplicate inputs",
          "author_name": "Andreas Rheinhardt",
          "author_login": "mkver",
          "committed_at": "2023-11-04T00:24:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c32c1a18b9bbc342521853aca320e08d1c871fb3",
          "body": "Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>",
          "is_bot": false,
          "headline": "avfilter/vsrc_testsrc: Deduplicate outputs",
          "author_name": "Andreas Rheinhardt",
          "author_login": "mkver",
          "committed_at": "2023-11-04T00:24:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "748c168f8eabc1800c6096d521a3a32954b7b50f",
          "body": "Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>",
          "is_bot": false,
          "headline": "avfilter/vf_xmedian: Deduplicate outputs",
          "author_name": "Andreas Rheinhardt",
          "author_login": "mkver",
          "committed_at": "2023-11-04T00:24:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "93abb9b560e8398191383fb439810f775348e32c",
          "body": "Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>",
          "is_bot": false,
          "headline": "avfilter/vf_hsvkey: Deduplicate inputs and outputs",
          "author_name": "Andreas Rheinhardt",
          "author_login": "mkver",
          "committed_at": "2023-11-04T00:24:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "50d3c5bd8ca5a1181c1a57dbb8006c9aa87d3c4d",
          "body": "Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>",
          "is_bot": false,
          "headline": "avfilter/vf_convolve: Deduplicate outputs",
          "author_name": "Andreas Rheinhardt",
          "author_login": "mkver",
          "committed_at": "2023-11-04T00:24:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e557d89ac109e4c6353481803f2feeb3313fc6ce",
          "body": "Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>",
          "is_bot": false,
          "headline": "avfilter/vf_chromakey: Deduplicate inputs and outputs",
          "author_name": "Andreas Rheinhardt",
          "author_login": "mkver",
          "committed_at": "2023-11-04T00:24:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2e2c28119ff179f9acd33b9b226f17ba625aa0af",
          "body": "Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>",
          "is_bot": false,
          "headline": "avfilter/vf_blend: Deduplicate outputs",
          "author_name": "Andreas Rheinhardt",
          "author_login": "mkver",
          "committed_at": "2023-11-04T00:24:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1d33a310df4efe717dee4cc1eede7adcfc2547d1",
          "body": "Also avoid using the avfilter-prefix for static objects.\n\nSigned-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>",
          "is_bot": false,
          "headline": "avfilter/vf_aspect: Deduplicate inputs",
          "author_name": "Andreas Rheinhardt",
          "author_login": "mkver",
          "committed_at": "2023-11-04T00:24:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a40f833bac72866dfc48de56d31432e27e7075dd",
          "body": "Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>",
          "is_bot": false,
          "headline": "avfilter/f_graphmonitor: Deduplicate outputs",
          "author_name": "Andreas Rheinhardt",
          "author_login": "mkver",
          "committed_at": "2023-11-04T00:24:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a02670ded71ef718799799d9f92b65c02852bd40",
          "body": "Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>",
          "is_bot": false,
          "headline": "avfilter/f_drawgraph: Deduplicate outputs",
          "author_name": "Andreas Rheinhardt",
          "author_login": "mkver",
          "committed_at": "2023-11-04T00:24:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5935423e1e8bf02362590ee5843f0a869872af9e",
          "body": "swb_offset_960_48 and swb_offset_960_32 coincide.\n\nSigned-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>",
          "is_bot": false,
          "headline": "avcodec/aactab: Deduplicate swb_offset_960 tabs",
          "author_name": "Andreas Rheinhardt",
          "author_login": "mkver",
          "committed_at": "2023-11-04T00:24:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4fb9d946883ba8a3e21a9e756aa27349e6e22cef",
          "body": "Fixes: Timeout\nFixes: 63661/clusterfuzz-testcase-minimized-ffmpeg_dem_LAF_fuzzer-6615365234589696\n\nFound-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg\nReviewed-by: Sean McGovern <gseanmcg@gmail.com>\nSigned-off-by: Michael Niedermayer <michael@niedermayer.cc>",
          "is_bot": false,
          "headline": "avformat/lafdec: Check for 0 parameters",
          "author_name": "Michael Niedermayer",
          "author_login": "michaelni",
          "committed_at": "2023-11-03T21:16:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "03a4aa9699c397f157394af3394fb065bd0a8166",
          "body": "Fixes: out of array write\nFixes: 63520/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_FLIC_fuzzer-4876198087622656\nRegression since: c7f8d42c12582b0626ea38117df6c9aea9fcf5b1 (was not posted to ffmpeg-devel)\n\nFound-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg\nReviewed-by: Sean McGovern <gseanmcg@gmail.com>\nSigned-off-by: Michael Niedermayer <michael@niedermayer.cc>",
          "is_bot": false,
          "headline": "avcodec/flicvideo: consider width in copy loops",
          "author_name": "Michael Niedermayer",
          "author_login": "michaelni",
          "committed_at": "2023-11-03T21:16:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c0a18e884c2d24d1052147082c358cb6929e97f1",
          "body": "Reviewed-by: Sean McGovern <gseanmcg@gmail.com>\nReviewed-by: Nicolas George <george@nsup.org>\nSigned-off-by: Michael Niedermayer <michael@niedermayer.cc>",
          "is_bot": false,
          "headline": "avfilter/buffersink: fix order of operation with = and <0",
          "author_name": "Michael Niedermayer",
          "author_login": "michaelni",
          "committed_at": "2023-11-03T21:17:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9450a4a7fef5816ee893177c903f0232724c57c6",
          "body": "Reviewed-by: Sean McGovern <gseanmcg@gmail.com>\nReviewed-by: Nicolas George <george@nsup.org>\nSigned-off-by: Michael Niedermayer <michael@niedermayer.cc>",
          "is_bot": false,
          "headline": "avfilter/framesync: fix order of operation with = and <0",
          "author_name": "Michael Niedermayer",
          "author_login": "michaelni",
          "committed_at": "2023-11-03T21:16:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "155f0c8ef7430e1f963c811e6bd4e2d85ee9f81b",
          "body": "Addresses the issue reported in ticket #4609.\n\nSigned-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>",
          "is_bot": false,
          "headline": "avformat/webpenc: Check seeks",
          "author_name": "Andreas Rheinhardt",
          "author_login": "mkver",
          "committed_at": "2023-11-03T13:47:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e920a8480185ff9112b2369a8f3418fa5d0ce5f0",
          "body": "Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>",
          "is_bot": false,
          "headline": "mailmap: remap my email accounts",
          "author_name": "Zhao Zhili",
          "author_login": "quink-black",
          "committed_at": "2023-11-03T12:57:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9dd49c8b52c3f6f5a486764fce42ec5d5fac8d16",
          "body": "This is cleaner, but it is also a workaround for when\nthe header exists, but cannot be compiled.\nThis will happen when the compiler has no inline asm\nsupport.\nPossibly the configure check should be improved as well.",
          "is_bot": false,
          "headline": "libavutil/log.c: only include valgrind header when used.",
          "author_name": "Reimar Döffinger",
          "author_login": "rdoeffinger",
          "committed_at": "2023-11-02T20:03:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0ea184fc39b48096713dbdf9c9b39de3a976d6eb",
          "body": "Fixes compilation with tcc, which does not have aarch64\ninline asm support.",
          "is_bot": false,
          "headline": "libavutil/aarch64/cpu.c: HWCAPS requires inline asm support.",
          "author_name": "Reimar Döffinger",
          "author_login": "rdoeffinger",
          "committed_at": "2023-11-02T20:03:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a31992634f0d3b1ab2d2a6b89440dd0120af5b97",
          "body": "The test can currently pass when _Pragma is not supported, since\n_Pragma might be treated as a implicitly declared function.\nThis happens e.g. with tinycc.\nExtending the check to 2 pragmas both matches the actual use\nbetter and avoids this misdetection.",
          "is_bot": false,
          "headline": "configure: fix _Pragma check.",
          "author_name": "Reimar Döffinger",
          "author_login": "rdoeffinger",
          "committed_at": "2023-11-02T20:03:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "02064ba3a37754183cf7e7a4c1ffd3cdf971b5dc",
          "body": "…data\n\nFixes ticket #10638 (and should also fix ticket #10482)\nby restoring the behaviour from before\n3c7dd5ed37da6d2de06c4850de5a319ca9cdd47f.\n\nSigned-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>",
          "is_bot": false,
          "headline": "fftools/ffmpeg_mux_init: Restrict disabling automatic copying of meta…",
          "author_name": "Andreas Rheinhardt",
          "author_login": "mkver",
          "committed_at": "2023-11-02T12:24:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4dbfb52230c4993e58598386ac79b964589dc00e",
          "body": "The `-caption_encoding` option was reported as having a default value of\n'ass', whereas it's actually 'auto'.\n\nSigned-off-by: zheng qian <xqq@xqq.im>\nSigned-off-by: Gyan Doshi <ffmpeg@gyani.pro>",
          "is_bot": false,
          "headline": "doc/decoders: correctly note an option's default in libaribcaption",
          "author_name": "zheng qian",
          "author_login": "xqq",
          "committed_at": "2023-11-02T08:37:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d06fd18f8f4c6a81ef94cbb600620d83ad51269d",
          "body": "With 128-bit vectors, this is mostly pointless but also harmless.\nPerformance gains should be more noticeable with larger vector sizes.\n\nneg_odd_64_c:       76.2\nneg_odd_64_rvv_i64: 74.7",
          "is_bot": false,
          "headline": "lavc/sbrdsp: R-V V neg_odd_64",
          "author_name": "Rémi Denis-Courmont",
          "author_login": null,
          "committed_at": "2023-11-01T20:53:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b0aba7dd0c1ee34941370997fd20049150f04a36",
          "body": "sum_square_c:       803.5\nsum_square_rvv_f32: 283.2",
          "is_bot": false,
          "headline": "lavc/sbrdsp: R-V V sum_square",
          "author_name": "Rémi Denis-Courmont",
          "author_login": null,
          "committed_at": "2023-11-01T20:53:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "86bee424730bc0dcba0e101773e6f3c71e39bd29",
          "body": "sum64x5_c:       385.0\nsum64x5_rvv_f32: 116.0",
          "is_bot": false,
          "headline": "lavc/sbrdsp: R-V V sum64x5",
          "author_name": "Rémi Denis-Courmont",
          "author_login": null,
          "committed_at": "2023-11-01T20:53:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eba73142adc776d7fe0639d3cff23d878da0174a",
          "body": "Up until now each thread had its own buffer pool for extradata\nbuffers when using frame-threading. Each thread can have at most\nthree references to extradata and in the long run, each thread's\nbufferpool seems to fill up with three entries. But given\nthat at any given time there can be at most 2 + n\n[…]\nno references to any other frames),\nthis is wasteful. This commit therefore uses a single buffer pool\nthat is synced across threads.\n\nSigned-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>",
          "is_bot": false,
          "headline": "avcodec/vp9: Join extradata buffer pools",
          "author_name": "Andreas Rheinhardt",
          "author_login": "mkver",
          "committed_at": "2023-11-01T19:16:02Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0c44f63b0282e2e830d5bf479016984cff69221a",
          "body": "To do this, make FFRefStructPool itself refcounted according\nto the RefStruct API.\n\nSigned-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>",
          "is_bot": false,
          "headline": "avcodec/refstruct: Allow to share pools",
          "author_name": "Andreas Rheinhardt",
          "author_login": "mkver",
          "committed_at": "2023-11-01T19:15:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "92abc7266b5a7139d85699cce2b2c94c1e4ed2ed",
          "body": "Up until now, the VAAPI encoder uses fake data with the\nAVBuffer-API: The data pointer does not point to real memory,\nbut is instead just a VABufferID converted to a pointer.\nThis has probably been copied from the VAAPI-hwcontext-API\n(which presumably does it to avoid allocations).\n\nThis commit chan\n[…]\nes this without causing additional allocations\nby switching to the RefStruct-pool API. This also fixes an\nunchecked av_buffer_ref().\n\nSigned-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>",
          "is_bot": false,
          "headline": "avcodec/vaapi_encode: Use RefStruct pool API, stop abusing AVBuffer API",
          "author_name": "Andreas Rheinhardt",
          "author_login": "mkver",
          "committed_at": "2023-11-01T19:14:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8c0350f57ef4c5f7ff4ec56865029e30cbf2877e",
          "body": "It avoids allocations and corresponding error checks.\n\nSigned-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>",
          "is_bot": false,
          "headline": "avcodec/vp9: Use RefStruct-pool API for extradata",
          "author_name": "Andreas Rheinhardt",
          "author_login": "mkver",
          "committed_at": "2023-11-01T19:14:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "090d9956fd092023e63f61a37bde36bba55d0258",
          "body": "This is in preparation for the following commit.\n\nReviewed-by: Anton Khirnov <anton@khirnov.net>\nSigned-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>",
          "is_bot": false,
          "headline": "avcodec/refstruct: Allow to always return zeroed pool entries",
          "author_name": "Andreas Rheinhardt",
          "author_login": "mkver",
          "committed_at": "2023-11-01T19:13:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e01e30ede1d0a06df90c0c7816cb51941bcd3bc9",
          "body": "It involves less allocations, in particular no allocations\nafter the entry has been created. Therefore creating a new\nreference from an existing one can't fail and therefore\nneed not be checked. It also avoids indirections and casts.\n\nAlso note that nvdec_decoder_frame_init() (the callback\nto initia\n[…]\n nvdec (like\nmost other hwaccels) not being run in a truely frame-threaded\nway.\n\nTested-by: Timo Rothenpieler <timo@rothenpieler.org>\nSigned-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>",
          "is_bot": false,
          "headline": "avcodec/nvdec: Use RefStruct-pool API for decoder pool",
          "author_name": "Andreas Rheinhardt",
          "author_login": "mkver",
          "committed_at": "2023-11-01T19:13:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fd2e65871c6fdc79cba5e3eef877a81ec83d57c6",
          "body": "It involves less allocations and therefore has the nice property\nthat deriving a reference from a reference can't fail,\nsimplifying hevc_ref_frame().\n\nSigned-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>",
          "is_bot": false,
          "headline": "avcodec/hevcdec: Use RefStruct-pool API instead of AVBufferPool API",
          "author_name": "Andreas Rheinhardt",
          "author_login": "mkver",
          "committed_at": "2023-11-01T19:10:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "736b510fcc386df89a403a3ed11c4d1dec599cd1",
          "body": "It involves less allocations and therefore has the nice property\nthat deriving a reference from a reference can't fail.\nThis allows for considerable simplifications in\nff_h264_(ref|replace)_picture().\nSwitching to the RefStruct API also allows to make H264Picture\nsmaller, because some AVBufferRef* pointers could be removed\nwithout replacement.\n\nSigned-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>",
          "is_bot": false,
          "headline": "avcodec/h264dec: Use RefStruct-pool API instead of AVBufferPool API",
          "author_name": "Andreas Rheinhardt",
          "author_login": "mkver",
          "committed_at": "2023-11-01T19:07:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "26c0a7321fdef730050156fcef0b986ac4373b6c",
          "body": "Very similar to the AVBufferPool API, but with some differences:\n1. Reusing an already existing entry does not incur an allocation\nat all any more (the AVBufferPool API needs to allocate an AVBufferRef).\n2. The tasks done while holding the lock are smaller; e.g.\nallocating new entries is now perform\n[…]\nuct API; an FFRefStructPool\nwould then be freed via ff_refstruct_unref().)\n\nReviewed-by: Michael Niedermayer <michael@niedermayer.cc>\nSigned-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>",
          "is_bot": false,
          "headline": "avcodec/refstruct: Add RefStruct pool API",
          "author_name": "Andreas Rheinhardt",
          "author_login": "mkver",
          "committed_at": "2023-11-01T19:07:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "92bcc6703acf346f0a5257de2410400a2e81a754",
          "body": "In the aligned case, the existing RVI assembler is actually much\nfaster. In the unaligned case, there is nothing much to gain over C.",
          "is_bot": false,
          "headline": "lavc/pixblockdsp: remove R-V V get_pixels_16",
          "author_name": "Rémi Denis-Courmont",
          "author_login": null,
          "committed_at": "2023-11-01T17:27:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "28840cf499ad0149d690385d8d36666efe15aa95",
          "body": "jpeg2000_rct_int_c:       2592.2\njpeg2000_rct_int_rvv_i32: 1154.2",
          "is_bot": false,
          "headline": "lavc/jpeg2000dsp: R-V V rct_int",
          "author_name": "Rémi Denis-Courmont",
          "author_login": null,
          "committed_at": "2023-11-01T16:52:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "73dea2bb917456e197cbb57b31275b6231e07acc",
          "body": "jpeg2000_ict_float_c:       3112.2\njpeg2000_ict_float_rvv_f32: 1225.0",
          "is_bot": false,
          "headline": "lavc/jpeg2000dsp: R-V V ict_float",
          "author_name": "Rémi Denis-Courmont",
          "author_login": null,
          "committed_at": "2023-11-01T16:52:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b2a441a3bed281a74b7fced77ef974897e407e32",
          "body": "This is so that they can be loaded from assembler, rather than\nduplicated.",
          "is_bot": false,
          "headline": "lavc/jpeg2000dsp: make coefficients extern",
          "author_name": "Rémi Denis-Courmont",
          "author_login": null,
          "committed_at": "2023-11-01T16:52:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a5259f326bcaf933a25df64aa49417c25990f7d3",
          "body": "This makes the code more testable as uninitialized fields are 0\nand not random values from the last call\n\nSigned-off-by: Michael Niedermayer <michael@niedermayer.cc>",
          "is_bot": false,
          "headline": "avcodec/vlc: Pass VLC_MULTI_ELEM directly not by pointer",
          "author_name": "Michael Niedermayer",
          "author_login": "michaelni",
          "committed_at": "2023-11-01T15:40:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8516609edde98391017fb145b4f492c01b360a03",
          "body": "Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>",
          "is_bot": false,
          "headline": "avcodec/vlc: Replace mysterious max computation code in multi vlc",
          "author_name": "Michael Niedermayer",
          "author_login": "michaelni",
          "committed_at": "2023-11-01T15:40:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "356b1ba765623ec1640a366e587232f1631800f8",
          "body": "These entries do not correspond to VLC symbols that can be used\nthey do corrupt various variables like min/max bits\n\nThis also no longer assumes that there is a single non subtable\nentry\nProbably fixes some infinite loops too\n\nSigned-off-by: Michael Niedermayer <michael@niedermayer.cc>",
          "is_bot": false,
          "headline": "avcodec/vlc: Skip subtable entries in multi VLC",
          "author_name": "Michael Niedermayer",
          "author_login": "michaelni",
          "committed_at": "2023-11-01T15:40:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c2f2bf82c1b3987e2d1a75cc79c4b58d286a2291",
          "body": "Fixes: Timeout\nFixes: 63362/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_CSCD_fuzzer-4694620065628160\n\nFound-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg\nSigned-off-by: Michael Niedermayer <michael@niedermayer.cc>",
          "is_bot": false,
          "headline": "tools/target_dec_fuzzer: Adjust threshold for CSCD",
          "author_name": "Michael Niedermayer",
          "author_login": "michaelni",
          "committed_at": "2023-11-01T15:40:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2817efbba331ac1d3a39fbee78b480008ce20a93",
          "body": "Fixes: shift exponent 32 is too large for 32-bit type 'int'\nFixes: 63151/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_HEVC_fuzzer-5067531154751488\n\nFound-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg\nSigned-off-by: Michael Niedermayer <michael@niedermayer.cc>",
          "is_bot": false,
          "headline": "avcodec/dovi_rpu: Use 64 bit in get_us/se_coeff()",
          "author_name": "Michael Niedermayer",
          "author_login": "michaelni",
          "committed_at": "2023-11-01T15:40:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2def61778777e998e2ac538f56b8e6779b0ca8c1",
          "body": "Fixes: signed integer overflow: 1900031961 + 553590817 cannot be represented in type 'int'\nFixes: 63061/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_APE_fuzzer-5166188298371072\n\nFound-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg\nSigned-off-by: Michael Niedermayer <michael@niedermayer.cc>",
          "is_bot": false,
          "headline": "avcodec/apedec: Fix integer overflow in predictor_decode_stereo_3950()",
          "author_name": "Michael Niedermayer",
          "author_login": "michaelni",
          "committed_at": "2023-11-01T15:40:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "98c2711b58ce65eae02cb2ece3a664e1119fd8fe",
          "body": "Fixes: Assertion failure in mov_read_iloc( in mov_read_iloc())\nFixes: 62866/clusterfuzz-testcase-minimized-ffmpeg_dem_MOV_fuzzer-5282997370486784\n\nFound-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg\nSigned-off-by: Michael Niedermayer <michael@niedermayer.cc>",
          "is_bot": false,
          "headline": "avformat/mov: Check that is_still_picture_avif has no trak based streams",
          "author_name": "Michael Niedermayer",
          "author_login": "michaelni",
          "committed_at": "2023-11-01T15:40:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "68cc1744db828e929b74f96478c18f1d226510be",
          "body": "The check is based on not infinite looping. It is likely\na more strict check can be done\n\nFixes: Infinite loop\nFixes: 62473/clusterfuzz-testcase-minimized-ffmpeg_BSF_EVC_FRAME_MERGE_fuzzer-5719883750703104\nFixes: 62765/clusterfuzz-testcase-minimized-ffmpeg_dem_EVC_fuzzer-6448531252314112\nFixes: 6337\n[…]\nree/master/projects/ffmpeg\nReviewed-by: \"Dawid Kozinski/Multimedia (PLT) /SRPOL/Staff Engineer/Samsung Electronics\" <d.kozinski@samsung.com>\nSigned-off-by: Michael Niedermayer <michael@niedermayer.cc>",
          "is_bot": false,
          "headline": "avcodec/evc_parse: Check tid",
          "author_name": "Michael Niedermayer",
          "author_login": "michaelni",
          "committed_at": "2023-11-01T15:40:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d35eecd24fb62a4060ef89dfdd1c45f5549fb71d",
          "body": "The use of float based functions is both unneeded and wrong due to unpredictable rounding\n\nSigned-off-by: Michael Niedermayer <michael@niedermayer.cc>",
          "is_bot": false,
          "headline": "avcodec/evc_parse: remove pow() and log2()",
          "author_name": "Michael Niedermayer",
          "author_login": "michaelni",
          "committed_at": "2023-11-01T15:40:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f2687a3b691d98ffa9ce356279ed37e9e18af9a9",
          "body": "Everything besides VLC.table is basically write-only\nand even VLC.table can be removed by accessing the\nunderlying table directly.\n\nSigned-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>",
          "is_bot": false,
          "headline": "avcodec/wmavoice: Avoid unnecessary VLC structure",
          "author_name": "Andreas Rheinhardt",
          "author_login": "mkver",
          "committed_at": "2023-10-31T20:44:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5615f9dab4e7f911ce8799c34c0ca425b0e2a090",
          "body": "For all VLCs here, the number of bits of the VLC is write-only,\nbecause it is hardcoded at the call site. Therefore one can replace\nthese VLC structures with the only thing that is actually used:\nThe pointer to the VLCElem table. And in most cases one can even\navoid this.\n\nSigned-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>",
          "is_bot": false,
          "headline": "avcodec/wmaprodec: Avoid superfluous VLC structures",
          "author_name": "Andreas Rheinhardt",
          "author_login": "mkver",
          "committed_at": "2023-10-31T20:44:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 0,
      "commits_last_year": 0,
      "latest_release_at": null,
      "latest_release_tag": null,
      "releases_from_tags": false,
      "days_since_last_push": 31,
      "active_weeks_last_year": 0,
      "days_since_latest_release": null,
      "mean_days_between_releases": null
    },
    "community": {
      "has_readme": false,
      "has_license": false,
      "has_description": false,
      "has_contributing": false,
      "health_percentage": null,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": []
    },
    "popularity": {
      "forks": 2,
      "stars": 1,
      "watchers": 0,
      "fork_history": {
        "days": [
          {
            "date": "2022-10-28",
            "count": 1
          },
          {
            "date": "2026-06-24",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 2,
        "total_forks": 2
      },
      "star_history": null,
      "open_issues_and_prs": 0
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [
        "Makefile",
        "doc/Makefile",
        "doc/examples/Makefile",
        "fftools/Makefile",
        "libavcodec/Makefile",
        "libavcodec/aarch64/Makefile",
        "libavcodec/alpha/Makefile",
        "libavcodec/arm/Makefile",
        "libavcodec/loongarch/Makefile",
        "libavcodec/mips/Makefile",
        "libavcodec/neon/Makefile",
        "libavcodec/ppc/Makefile",
        "libavcodec/riscv/Makefile",
        "libavcodec/x86/Makefile",
        "libavdevice/Makefile",
        "libavfilter/Makefile",
        "libavfilter/aarch64/Makefile",
        "libavfilter/dnn/Makefile",
        "libavfilter/x86/Makefile",
        "libavformat/Makefile",
        "libavutil/Makefile",
        "libavutil/aarch64/Makefile",
        "libavutil/arm/Makefile",
        "libavutil/loongarch/Makefile",
        "libavutil/mips/Makefile",
        "libavutil/ppc/Makefile",
        "libavutil/riscv/Makefile",
        "libavutil/x86/Makefile",
        "libpostproc/Makefile",
        "libswresample/Makefile",
        "libswresample/aarch64/Makefile",
        "libswresample/arm/Makefile",
        "libswresample/x86/Makefile",
        "libswscale/Makefile",
        "libswscale/aarch64/Makefile",
        "libswscale/arm/Makefile",
        "libswscale/loongarch/Makefile",
        "libswscale/ppc/Makefile",
        "libswscale/riscv/Makefile",
        "libswscale/x86/Makefile",
        "tests/Makefile",
        "tests/api/Makefile",
        "tests/checkasm/Makefile",
        "tools/Makefile"
      ],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [],
      "largest_source_bytes": 920659,
      "source_files_sampled": 4170,
      "oversized_source_files": 172,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [],
      "advisories": {
        "error": null,
        "scope": null,
        "source": null,
        "findings": [],
        "collected": false,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 0,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [],
      "dependencies": [],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 0,
        "merged_prs": 1,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 0
      },
      "bus_factor": 5,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "michaelni",
          "commits": 28887,
          "avatar_url": "https://avatars.githubusercontent.com/u/729390?v=4"
        },
        {
          "type": "User",
          "login": "richardpl",
          "commits": 5744,
          "avatar_url": "https://avatars.githubusercontent.com/u/469155?v=4"
        },
        {
          "type": "User",
          "login": "mkver",
          "commits": 5201,
          "avatar_url": "https://avatars.githubusercontent.com/u/18448094?v=4"
        },
        {
          "type": "User",
          "login": "elenril",
          "commits": 5044,
          "avatar_url": "https://avatars.githubusercontent.com/u/1765950?v=4"
        },
        {
          "type": "User",
          "login": "DonDiego",
          "commits": 4681,
          "avatar_url": "https://avatars.githubusercontent.com/u/3358278?v=4"
        },
        {
          "type": "User",
          "login": "jamrial",
          "commits": 3708,
          "avatar_url": "https://avatars.githubusercontent.com/u/2442845?v=4"
        },
        {
          "type": "User",
          "login": "mansr",
          "commits": 2794,
          "avatar_url": "https://avatars.githubusercontent.com/u/322231?v=4"
        },
        {
          "type": "User",
          "login": "ubitux",
          "commits": 2711,
          "avatar_url": "https://avatars.githubusercontent.com/u/34467?v=4"
        },
        {
          "type": "User",
          "login": "mstorsjo",
          "commits": 2431,
          "avatar_url": "https://avatars.githubusercontent.com/u/69727?v=4"
        },
        {
          "type": "User",
          "login": "cehoyos",
          "commits": 2165,
          "avatar_url": "https://avatars.githubusercontent.com/u/3754917?v=4"
        }
      ],
      "contributors_sampled": 100,
      "top_contributor_share": 0.314
    },
    "quality_signals": {
      "has_ci": false,
      "has_tests": true,
      "ci_workflows": [],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": null,
            "reason": "no pull request found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 0/30 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 18 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": null,
            "reason": "no workflows found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 10,
            "reason": "project is fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 9,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 0,
            "reason": "0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": null,
            "reason": "no dependencies found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "no SAST tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": null,
            "reason": "No tokens found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "32 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "fa4c2884dd568d4fc0d657d3622437aebc3563b3",
        "ran_at": "2026-07-26T02:59:59Z",
        "aggregate_score": 2.6,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": null,
      "oldest_open_prs": [],
      "last_merged_pr_at": "2022-10-28T19:33:37Z",
      "ci_last_conclusion": null,
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/Servarr/FFmpeg",
    "host": "github.com",
    "name": "FFmpeg",
    "owner": "Servarr"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "at_risk",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 33,
      "inputs": {
        "security": 25,
        "vitality": 11,
        "community": 9,
        "governance": 76,
        "engineering": 34
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "critical",
        "name": "Vitality",
        "value": 11,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "critical",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 18,
            "inputs": {
              "commits_last_year": 0,
              "human_commit_share": 1,
              "days_since_last_push": 31,
              "active_weeks_last_year": 0
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 31 days ago",
                "points": 18,
                "status": "partial",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 31
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "0/52 weeks with commits",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "0 commits in the last year",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "critical",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 1,
            "inputs": {
              "releases_count": 0
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "no releases published",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_releases_published",
                    "params": {}
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "no releases",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_releases",
                    "params": {}
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "no releases",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_releases",
                    "params": {}
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "dormant",
              "guards": [
                "no_open_demand"
              ],
              "signals": [
                "scorecard_unmaintained"
              ],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": 0,
              "unanswered_open_issues": 0,
              "days_since_last_merged_pr": 1366,
              "days_since_last_human_commit": 987,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "no human commit for 987 days, with nothing left unanswered; held at dormant by nothing open to answer",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_quiet",
                    "params": {
                      "days": 987
                    }
                  },
                  {
                    "code": "abandonment_guarded",
                    "params": {
                      "guards": "nothing open to answer"
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "critical",
        "name": "Community & Adoption",
        "value": 9,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 1,
            "inputs": {
              "forks": 2,
              "stars": 1,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "1 stars",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "2 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "0 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "critical",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 19,
            "inputs": {
              "has_readme": false,
              "has_license": false,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file present, not a recognized license",
                "points": 16.9,
                "status": "partial",
                "details": [
                  {
                    "code": "license_custom",
                    "params": {}
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "good",
        "name": "Sustainability & Governance",
        "value": 76,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "excellent",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "bus_factor": 5,
              "contributors_sampled": 100,
              "top_contributor_share": 0.314
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "5 contributor(s) cover half of all commits",
                "points": 45.9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 5
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 31% of commits",
                "points": 15.4,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 31
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "100 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 100
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 18 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "issue_resolution"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 72,
            "inputs": {
              "merged_prs": 1,
              "open_issues": 0,
              "closed_issues": 0,
              "issue_closed_ratio": null,
              "closed_unmerged_prs": 0
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "no issues or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_issues_or_data",
                    "params": {}
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "1/1 decided PRs merged",
                "points": 38.2,
                "status": "met",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 1,
                      "decided": 1
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 69,
            "inputs": {
              "followers": 207,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "Servarr",
              "public_repos": 28,
              "account_age_days": 2464
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "207 followers of Servarr",
                "points": 16.7,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 207,
                      "login": "Servarr"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "28 public repos, account ~6 yr old",
                "points": 22.6,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 28
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 6
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "at_risk",
        "name": "Engineering Quality",
        "value": 34,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "at_risk",
            "name": "Engineering practices",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_ci_tests"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 30,
            "inputs": {
              "has_ci": false,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "at_risk",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "topics": [],
              "has_wiki": false,
              "homepage": "https://ffmpeg.org/",
              "has_readme": false,
              "has_docs_dir": true,
              "has_description": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://ffmpeg.org/",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "critical",
        "name": "Security",
        "value": 25,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "critical",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): CI-Tests, Dangerous-Workflow, Packaging, Pinned-Dependencies, Signed-Releases, Token-Permissions. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "ci_tests",
                    "dangerous_workflow",
                    "packaging",
                    "pinned_dependencies",
                    "signed_releases",
                    "token_permissions"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 25,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 12,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 6,
              "scorecard_aggregate": 2.6
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 18 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no workflows found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is fuzzed",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.2,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "no SAST tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "No tokens found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "32 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 4
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "moderate",
        "name": "AI Readiness",
        "value": 54,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "at_risk",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 36,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.67,
              "agent_instruction_files": [],
              "agent_instruction_max_bytes": null
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "no CLAUDE.md / AGENTS.md / editor rules",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_instructions",
                    "params": {}
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "67 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 35.7,
                "status": "partial",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 67,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Pinned-Dependencies. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_pinned_dependencies"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 57,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [
                "Makefile",
                "doc/Makefile",
                "doc/examples/Makefile",
                "fftools/Makefile",
                "libavcodec/Makefile",
                "libavcodec/aarch64/Makefile",
                "libavcodec/alpha/Makefile",
                "libavcodec/arm/Makefile",
                "libavcodec/loongarch/Makefile",
                "libavcodec/mips/Makefile",
                "libavcodec/neon/Makefile",
                "libavcodec/ppc/Makefile",
                "libavcodec/riscv/Makefile",
                "libavcodec/x86/Makefile",
                "libavdevice/Makefile",
                "libavfilter/Makefile",
                "libavfilter/aarch64/Makefile",
                "libavfilter/dnn/Makefile",
                "libavfilter/x86/Makefile",
                "libavformat/Makefile",
                "libavutil/Makefile",
                "libavutil/aarch64/Makefile",
                "libavutil/arm/Makefile",
                "libavutil/loongarch/Makefile",
                "libavutil/mips/Makefile",
                "libavutil/ppc/Makefile",
                "libavutil/riscv/Makefile",
                "libavutil/x86/Makefile",
                "libpostproc/Makefile",
                "libswresample/Makefile",
                "libswresample/aarch64/Makefile",
                "libswresample/arm/Makefile",
                "libswresample/x86/Makefile",
                "libswscale/Makefile",
                "libswscale/aarch64/Makefile",
                "libswscale/arm/Makefile",
                "libswscale/loongarch/Makefile",
                "libswscale/ppc/Makefile",
                "libswscale/riscv/Makefile",
                "libswscale/x86/Makefile",
                "tests/Makefile",
                "tests/api/Makefile",
                "tests/checkasm/Makefile",
                "tools/Makefile"
              ],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "Makefile, doc/Makefile, doc/examples/Makefile, fftools/Makefile, libavcodec/Makefile, libavcodec/aarch64/Makefile, libavcodec/alpha/Makefile, libavcodec/arm/Makefile, libavcodec/loongarch/Makefile, libavcodec/mips/Makefile, libavcodec/neon/Makefile, libavcodec/ppc/Makefile, libavcodec/riscv/Makefile, libavcodec/x86/Makefile, libavdevice/Makefile, libavfilter/Makefile, libavfilter/aarch64/Makefile, libavfilter/dnn/Makefile, libavfilter/x86/Makefile, libavformat/Makefile, libavutil/Makefile, libavutil/aarch64/Makefile, libavutil/arm/Makefile, libavutil/loongarch/Makefile, libavutil/mips/Makefile, libavutil/ppc/Makefile, libavutil/riscv/Makefile, libavutil/x86/Makefile, libpostproc/Makefile, libswresample/Makefile, libswresample/aarch64/Makefile, libswresample/arm/Makefile, libswresample/x86/Makefile, libswscale/Makefile, libswscale/aarch64/Makefile, libswscale/arm/Makefile, libswscale/loongarch/Makefile, libswscale/ppc/Makefile, libswscale/riscv/Makefile, libswscale/x86/Makefile, tests/Makefile, tests/api/Makefile, tests/checkasm/Makefile, tools/Makefile",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Makefile, doc/Makefile, doc/examples/Makefile, fftools/Makefile, libavcodec/Makefile, libavcodec/aarch64/Makefile, libavcodec/alpha/Makefile, libavcodec/arm/Makefile, libavcodec/loongarch/Makefile, libavcodec/mips/Makefile, libavcodec/neon/Makefile, libavcodec/ppc/Makefile, libavcodec/riscv/Makefile, libavcodec/x86/Makefile, libavdevice/Makefile, libavfilter/Makefile, libavfilter/aarch64/Makefile, libavfilter/dnn/Makefile, libavfilter/x86/Makefile, libavformat/Makefile, libavutil/Makefile, libavutil/aarch64/Makefile, libavutil/arm/Makefile, libavutil/loongarch/Makefile, libavutil/mips/Makefile, libavutil/ppc/Makefile, libavutil/riscv/Makefile, libavutil/x86/Makefile, libpostproc/Makefile, libswresample/Makefile, libswresample/aarch64/Makefile, libswresample/arm/Makefile, libswresample/x86/Makefile, libswscale/Makefile, libswscale/aarch64/Makefile, libswscale/arm/Makefile, libswscale/loongarch/Makefile, libswscale/ppc/Makefile, libswscale/riscv/Makefile, libswscale/x86/Makefile, tests/Makefile, tests/api/Makefile, tests/checkasm/Makefile, tools/Makefile"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "C (statically typed)",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "C"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "no agent-authored commits among the last 100",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 98,
            "inputs": {
              "primary_language": "C",
              "largest_source_bytes": 920659,
              "source_files_sampled": 4170,
              "oversized_source_files": 172
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "C (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "C"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "172/4170 source files over 60KB",
                "points": 52.7,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 4170,
                      "oversized": 172
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "at_risk",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "has_mcp_signal": false,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "Community profile unavailable",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-26T03:00:22.229391Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/s/Servarr/FFmpeg.svg",
  "full_name": "Servarr/FFmpeg",
  "license_state": "custom",
  "license_spdx": null
}

Scores are signals, not warranties. They reflect publicly visible practices on GitHub — not a code audit, and not a security guarantee.

Missing data is excluded and weights renormalized, never scored as zero. Methodology is versioned and open: metrics v1.13.0, schema v0.27.0 — full methodology · metrics wiki.

How one result sits in the wider record: aggregate statistics.