{"adoption": {"forks": 241, "observed_at": "2026-08-28T04:03:18.581422+00:00", "stars": 1034}, "canonical_url": "https://ross.abutalabs.com/products/transform360", "card": {"archived": false, "artifact_type": "library", "description": "Transform360 is an equirectangular to cubemap transform for 360 video.", "domain": ["media", "graphics"], "enriched": true, "function": ["video-processing", "image-processing"], "health_score": 69, "homepage": null, "language": "C++", "license": "NOASSERTION", "license_family": "other", "maturity": "maintenance", "member_repos": ["facebook/transform360"], "name": "facebook/transform360", "platform": ["cpp", "cross-platform"], "pushed_at": "2026-05-08T22:16:23+00:00", "repo": "facebook/transform360", "stars": 1034, "tags": ["360-video", "equirectangular", "cubemap", "ffmpeg-filter", "vr-video", "video", "linux"], "topics": [], "urls": [], "use_cases": ["convert equirectangular 360 video to cubemap projection", "reproject 360 footage for VR playback", "process 360 video with ffmpeg filters", "optimize memory usage when transcoding 360 video", "control quality of specific regions in a 360 video frame"], "what_it_is": "Transform360 is a C++ video/image filter that converts 360-degree video between projections, typically from equirectangular to cubemap format. It is designed to be integrated as an FFmpeg video filter and offers improved memory usage, visual quality, and per-region quality control.", "when_to_avoid": ["you need a maintained turnkey tool with simple installation", "you are not comfortable rebuilding ffmpeg from source", "you work with non-360 video or non-projection transforms"], "when_to_choose": ["you need equirectangular-to-cubemap conversion in an ffmpeg pipeline", "you want fine-grained control over output quality regions of 360 video", "you need better memory/performance than naive projection transforms"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/transform360", "repo": "facebook/transform360", "role": "main", "score": 69}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.581422+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:06:33.001697+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "819e0d2197a2c37496cf3539849550b828bc48a9a62152612c47522c721f855b", "fetched_at": "2026-08-28T04:03:18.581422+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebook/transform360"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.581422+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:06:33.001697+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "819e0d2197a2c37496cf3539849550b828bc48a9a62152612c47522c721f855b", "fetched_at": "2026-08-28T04:03:18.581422+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebook/transform360"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:06:33.001697+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "819e0d2197a2c37496cf3539849550b828bc48a9a62152612c47522c721f855b", "fetched_at": "2026-08-28T04:03:18.581422+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebook/transform360"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.581422+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.581422+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.581422+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:06:33.001697+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "819e0d2197a2c37496cf3539849550b828bc48a9a62152612c47522c721f855b", "fetched_at": "2026-08-28T04:03:18.581422+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebook/transform360"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.581422+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.581422+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:06:33.001697+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "819e0d2197a2c37496cf3539849550b828bc48a9a62152612c47522c721f855b", "fetched_at": "2026-08-28T04:03:18.581422+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebook/transform360"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.581422+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.581422+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.581422+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:06:33.001697+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "819e0d2197a2c37496cf3539849550b828bc48a9a62152612c47522c721f855b", "fetched_at": "2026-08-28T04:03:18.581422+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebook/transform360"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.581422+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.581422+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:06:33.001697+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "819e0d2197a2c37496cf3539849550b828bc48a9a62152612c47522c721f855b", "fetched_at": "2026-08-28T04:03:18.581422+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebook/transform360"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:06:33.001697+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "819e0d2197a2c37496cf3539849550b828bc48a9a62152612c47522c721f855b", "fetched_at": "2026-08-28T04:03:18.581422+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebook/transform360"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:06:33.001697+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "819e0d2197a2c37496cf3539849550b828bc48a9a62152612c47522c721f855b", "fetched_at": "2026-08-28T04:03:18.581422+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebook/transform360"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:06:33.001697+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "819e0d2197a2c37496cf3539849550b828bc48a9a62152612c47522c721f855b", "fetched_at": "2026-08-28T04:03:18.581422+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebook/transform360"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 81, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3893, "days_push": 117, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 69, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}