原始 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
}