Публічний реєстр
Звіт про здоров'я програмного забезпеченнясхема 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 р.форкПереглянути на GitHub ↗

Servarr/FFmpeg має індекс здоров’я 33 зі 100, що відповідає смузі «У зоні ризику». Найвищий показник — Sustainability & Governance (76/100), найнижчий — Community & Adoption (9/100). Останнє оновлення було 31 день тому. Більшість нещодавньої роботи виконують 5 учасників.

33
загалом / 100
У зоні ризику

Індекс здоров'я програмного забезпечення

Метрики згруповано у зважені категорії на шкалі 1–100. Загальна оцінка починається як їхнє середнє; коли публічні дані активують Політику юрисдикцій високого ризику, рейтинг коригується й отримує верхню межу 49 («Під ризиком»). Готовність до ШІ не входить до індексу.

33
Відмінний85-100Зразковий; відповідає практично всім перевіреним критеріям
Добрий70-84Здоровий; незначні прогалини
Помірний50-69Прийнятний, але з помітними прогалинами; рекомендовано перевірку
У зоні ризику30-49Суттєві слабкі місця; впровадження потребує обережності
Критичний1-29Серйозні проблеми (покинутий, єдиний мейнтейнер, без базової гігієни)
ЖиттєздатністьСпільнота тавпровадженняСталість таврядуванняІнженернаякістьБезпекаГотовність доШІ

Профіль оцінок

Кожна вісь — окрема категорія. Форма важить більше, ніж середнє: здоровий об'єкт заповнює всю фігуру, тоді як профіль із піками та провалами означає, що сила в одному вимірі маскує ризик в іншому.

Власність

ServarrОрганізація
207 підписників28 публічних репозиторіївз жовт. 2019 р.

За цим репозиторієм стоїть організація — спільна, підзвітна опіка, здатна пережити будь-якого окремого мейнтейнера.

Метрики за категоріями

Життєздатність

Чи живий проєкт — чи пишеться код і чи виходять релізи?

11Критичний · 22% загального індексу
Як обчислюється оцінка
18/36Свіжість push — останній push 31 дн. тому
0/36Ритм комітів — 0/52 тижнів із комітами
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
Як обчислюється оцінка
0/22.5README
16.9/22.5Ліцензія — файл ліцензії наявний, не є визнаною ліцензією
0/18Настанови CONTRIBUTING
0/13.5Кодекс поведінки
0/7.2Шаблон issue
0/6.3Шаблон PR
Використані вхідні дані
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Вирішення issue — немає issue або даних
38.2/38.3Прийняття PR — злито 1/1 вирішених PR
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
Виключено з оцінювання (немає даних або не застосовно): Вирішення issue. Залишкові ваги перенормовано.
Як обчислюється оцінка
30/30Підтримка власника — у власності організації
0/20Верифікований домен
16.7/25Охоплення власника — 207 підписників у Servarr
22.6/25Послужний список — 28 публічних репозиторіїв, вік облікового запису ~6 р.
Використані вхідні дані
followers207
owner_typeOrganization
is_verified
owner_loginServarr
public_repos28
account_age_days2 464

Інженерна якість

Чи наявні базові інженерні практики та документація?

34У зоні ризику · 20% загального індексу

Інженерні практики

30У зоні ризику
Як обчислюється оцінка
0/24Процеси CI
24/24Наявні тести
0/16Конфігурація лінтера
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. Залишкові ваги перенормовано.

Готовність до ШІ

Наскільки репозиторій оснащений для розробки та супроводу за участі ШІ-агентів? Незалежний, експериментальний бейдж — вага 0.0, тож він подається окремо і не впливає на загальний індекс здоров'я.

54Помірний · 0% загального індексу
Як обчислюється оцінка
0/45Інструкції для агентів — немає CLAUDE.md / AGENTS.md / правил редактора
0/15Машиночитана документація (llms.txt)
35.7/40Читабельна історія комітів — намір зазначено у 67 з 100 людських комітів (структурований заголовок або пояснювальний текст)
Використані вхідні дані
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/11Конфігурація лінтера / форматера
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Керовані розміри файлів — 172/4 170 файлів вихідного коду понад 60 КБ
Використані вхідні дані
primary_languageC
largest_source_bytes920 659
source_files_sampled4 170
oversized_source_files172
Як обчислюється оцінка
0/40Схема API (OpenAPI/GraphQL/proto)
0/20Сервер MCP
40/40Придатні до запуску приклади — examples
Використані вхідні дані
example_dirsexamples
has_mcp_signalні
api_schema_files

Ключові факти

1зірок GitHub
100контриб'юторів
0комітів за останні 12 місяців
31днів від останнього пушу
0релізів
5бас-фактор
0відкритих issue
пакетних екосистем

Попередження щодо збору даних

  • 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

Докладніше

Історія зірок і форків 0 ★ / 2 ⇿
0Зірки
2Форки

Коли додано кожну зірку й форк — зібрано з 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 — повна методологія · вікі метрик.

Як окремий результат виглядає на тлі всього реєстру: сукупна статистика.