公开记录
软件健康报告模式 0.27.0 · 指标 1.13.0 · 2026-07-26 03:00 UTC

Servarr / FFmpeg

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

C自定义许可证★ 1 星标⑂ 2 复刻始于 2021年9月复刻在 GitHub 上查看 ↗

Servarr/FFmpeg 的健康指数为 100 分中的 33 分,处于「存在风险」区间。 其得分最高的类别是Sustainability & Governance(76/100),最低的是Community & Adoption(9/100)。 最近一次更新在 31 天前。 近期的大部分工作由 5 位贡献者完成。

33
总分 / 100
存在风险

软件健康指数

指标归入加权类别,统一采用 1–100 量表。总体分先取类别加权平均;当公开证据触发高风险司法辖区政策时,评级会按政策调整,并设置 49(有风险)的上限。AI 就绪度不计入总体分。

33
优秀85-100堪称典范;基本满足所有检验标准
良好70-84健康;仅有轻微不足
中等50-69可接受,但存在明显不足;建议进行审查
存在风险30-49存在重大薄弱环节;采用时应保持审慎
危急1-29问题严重(项目被弃置、仅有单一维护者、缺乏基本工程规范)
活力社区与采用可持续性与治理工程质量安全AI 就绪度

评分画像

每条轴代表一个类别。形状比平均值更重要——健康的对象会填满整个图形,而“一峰一谷”式画像意味着某一维度的优势正掩盖另一维度的风险。

所有权

Servarr组织
207 关注者28 个公开仓库始于 2019年10月

该仓库由组织支持——共同承担、可问责的托管责任,可延续于任何单一维护者之后。

按类别列示的指标

活力

项目是否仍有生命——是否仍在编写代码,是否仍在发布版本?

11危急 · 占总体的 22%
评分方式
18/36推送新近度 — 最近一次推送于 31 天前
0/36提交节奏 — 52 周中有 0 周有提交
0/18提交量 — 最近一年 0 次提交
0/10OpenSSF Scorecard:Maintained — 0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
所用输入
commits_last_year0
human_commit_share1
days_since_last_push31
active_weeks_last_year0
评分方式
0/27有发布版本 — 未发布任何发布版本
0/36发布时效 — 没有发布版本
0/27发布节奏 — 没有发布版本
0/10OpenSSF Scorecard:Signed-Releases — 无数据
所用输入
releases_count0
已排除计分(无数据或不适用):OpenSSF Scorecard:Signed-Releases。 其余权重已重新归一化。

社区与采用

项目是否拥有用户、下载量与关注度,并具备欢迎贡献者参与的配置?

9危急 · 占总体的 18%
评分方式
0/60星标 — 1 个星标
0/25复刻 — 2 个复刻
0/15关注者 — 0 位关注者
所用输入
forks2
stars1
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history

社区健康

19危急
评分方式
0/22.5README
16.9/22.5许可证 — 存在许可证文件,但不是可识别的许可证
0/18CONTRIBUTING 指南
0/13.5行为准则
0/7.2议题模板
0/6.3PR 模板
所用输入
has_readme
has_license
has_contributing
has_issue_template
has_code_of_conduct
has_pull_request_template

可持续性与治理

项目能否在其成员之外延续——巴士系数、响应能力、由谁支持,以及软件包的维护状况?

76良好 · 占总体的 24%
评分方式
45.9/54巴士系数 — 5 位贡献者贡献了半数提交
15.4/22.5提交分布 — 头号贡献者编写了 31% 的提交
13.5/13.5贡献者广度 — 100 位贡献者
10/10OpenSSF Scorecard:Contributors — project has 18 contributing companies or organizations
所用输入
bus_factor5
contributors_sampled100
top_contributor_share0.314
评分方式
0/46.8议题解决 — 没有议题或无数据
38.2/38.3PR 接受 — 已裁定的 PR 中 1/1 已合并
0/15OpenSSF Scorecard:Code-Review — Found 0/30 approved changesets -- score normalized to 0
所用输入
merged_prs1
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs0
已排除计分(无数据或不适用):议题解决。 其余权重已重新归一化。
评分方式
30/30所有权背书 — 组织持有
0/20已验证域名
16.7/25所有者影响力 — Servarr 有 207 位关注者
22.6/25既往记录 — 28 个公开仓库,账户约 6 年
所用输入
followers207
owner_typeOrganization
is_verified
owner_loginServarr
public_repos28
account_age_days2,464

工程质量

基础的工程与文档实践是否到位?

34存在风险 · 占总体的 20%

工程实践

30存在风险
评分方式
0/24CI 工作流
24/24存在测试
0/16Linter 配置
0/9.6Pre-commit 钩子
0/6.4.editorconfig
0/20OpenSSF Scorecard:CI-Tests — 无数据
所用输入
has_ci
has_tests
has_editorconfig
has_linter_config
has_precommit_config
已排除计分(无数据或不适用):OpenSSF Scorecard:CI-Tests。 其余权重已重新归一化。

文档

40存在风险
评分方式
0/30README
25/25文档目录
15/15文档 / 主页站点 — https://ffmpeg.org/
0/10仓库描述
0/10主题标签
0/10Wiki
所用输入
topics
has_wiki
homepagehttps://ffmpeg.org/
has_readme
has_docs_dir
has_description

安全

可见的安全与供应链实践是否稳固,且不存在未解决的高风险司法辖区暴露?

25危急 · 占总体的 16%

安全态势

25危急
评分方式
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 — 无数据
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 — 无数据
0/7.5Dependency-Update-Tool — no update tool detected
5/5Fuzzing — project is fuzzed
2.2/2.5许可证 — 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 — 无数据
0/5Pinned-Dependencies — 无数据
0/5SAST — no SAST tool detected
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — 无数据
0/7.5Token-Permissions — 无数据
0/7.5Vulnerabilities — 32 existing vulnerabilities detected
所用输入
sourceopenssf_scorecard
checks_evaluated12
scorecard_versionv5.5.0
checks_inconclusive6
scorecard_aggregate2.6
已排除计分(无数据或不适用):ci_tests, dangerous_workflow, packaging, pinned_dependencies, signed_releases, token_permissions。 其余权重已重新归一化。

AI 就绪度

该仓库在多大程度上具备与 AI 编码代理协同开发与维护的条件?这是一枚独立的实验性徽章——权重为 0.0,因此单独呈现,不影响总体健康评分。

54中等 · 占总体的 0%
评分方式
0/45代理指令 — 没有 CLAUDE.md / AGENTS.md / 编辑器规则
0/15机器可读文档(llms.txt)
35.7/40可读的提交历史 — 100 次人类提交中有 67 次说明了意图(结构化标题或解释性正文)
所用输入
has_llms_txt
legible_history_share0.67
agent_instruction_files
agent_instruction_max_bytes
评分方式
18/18一条命令的引导启动 — 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/22自动化测试
0/11Lint / 格式化配置
11/11静态类型检查 — C(静态类型)
0/10可复现环境
0/10已体现的代理实践 — 最近 100 次提交中没有代理编写的提交
0/8自动化维护 — 未观察到自动依赖更新
0/10OpenSSF Scorecard:Pinned-Dependencies — 无数据
所用输入
has_nix
has_tests
lockfiles
has_dockerfile
typed_language
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_devcontainer
has_linter_config
typecheck_configs
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0
已排除计分(无数据或不适用):OpenSSF Scorecard:Pinned-Dependencies。 其余权重已重新归一化。
评分方式
45/45可类型检查的代码 — C(静态类型)
52.7/55可控的文件大小 — 采样的 4,170 个源文件中有 172 个超过 60KB
所用输入
primary_languageC
largest_source_bytes920,659
source_files_sampled4,170
oversized_source_files172

机器可读接口

40存在风险
评分方式
0/40API 模式(OpenAPI/GraphQL/proto)
0/20MCP 服务器
40/40可运行示例 — examples
所用输入
example_dirsexamples
has_mcp_signal
api_schema_files

关键数据

1GitHub 星标
100贡献者
0最近 12 个月提交数
31距最近推送天数
0发布版本数
5巴士系数(bus factor)
0开放议题
软件包生态系统数

数据采集警告

  • 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

更多细节

Star 与 Fork 历史 0 ★ / 2 ⇿
0Star
2Fork

每颗 star 和每个 fork 的添加时间,来自 GitHub 并按天汇总。累计增长位于其构成来源——每日新增——的正上方,二者可相互对照:稳定的自然增长与短暂的突增形态截然不同。当这一差别可被衡量时,它会作为增长真实性予以报告。

111222212022-102024-082026-06

每个点涵盖 4 天。

OpenSSF Scorecard 2.6 / 10
2.6综合

来自开源项目 OpenSSF Scorecard 的独立、工具无关的安全评估。每项检查奖励的是安全实践本身,而非特定供应商的工具。Scorecard 无法判定的检查项标记为 不适用,并从安全评分中剔除(绝不按零分计)。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
不适用CI-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
不适用Dangerous-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
不适用Packagingpackaging workflow not detected
不适用Pinned-Dependenciesno dependencies found
0SASTno SAST tool detected
0Security-Policysecurity policy file not detected
不适用Signed-Releasesno releases found
不适用Token-PermissionsNo tokens found
0Vulnerabilities32 existing vulnerabilities detected
全部依赖 未采集

本报告未能采集到解析后的依赖集合:GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

原始 JSON 报告 机器可读
{
  "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
}

评分是信号,而非担保。 评分反映的是 GitHub 上公开可见的实践——不是代码审计,也不是安全保证。

缺失数据将被剔除并重新归一化权重,绝不按零分计。方法论已版本化并公开:指标 v1.13.0、模式 v0.27.0—— 完整方法论 · 指标知识库.

单项结果在整体记录中的位置: 汇总统计.