{"adoption": {"forks": 353, "observed_at": "2026-08-28T04:03:34.672876+00:00", "stars": 1097}, "canonical_url": "https://ross.abutalabs.com/products/md360player4android", "card": {"archived": false, "artifact_type": "library", "description": "It is a lite library to render 360 degree panorama video for Android. VR Player.", "domain": ["android-tools", "media", "mobile-development"], "enriched": true, "function": ["graphics", "video-processing", "ui-components"], "health_score": 20, "homepage": null, "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["ashqal/MD360Player4Android"], "name": "ashqal/MD360Player4Android", "platform": ["jvm"], "pushed_at": "2022-03-10T09:04:46+00:00", "repo": "ashqal/MD360Player4Android", "stars": 1097, "tags": ["360-video", "vr-player", "opengl-es", "panorama", "glsurfaceview", "android"], "topics": [], "urls": [], "use_cases": ["play 360 degree panorama videos on Android", "build a VR video player app", "render equirectangular video with OpenGL", "add gyroscope-based interactive 360 video viewing", "integrate 360 rendering with IjkMediaPlayer or MediaPlayer"], "what_it_is": "A lightweight Android library that renders 360-degree panorama video using OpenGL ES 2.0. It only handles rendering of video frames onto a VR view, delegating playback to any player with a setSurface API such as MediaPlayer or IjkMediaPlayer.", "when_to_avoid": ["you need full playback control, streaming, or codec handling built in", "you need actively maintained VR features or newer Android VR SDKs", "your project requires OpenGL ES 3.0 or Vulkan features"], "when_to_choose": ["you need a lightweight 360 video renderer on Android", "you already have a video player and only need VR rendering", "you want motion or touch interactive panorama playback"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/md360player4android", "repo": "ashqal/MD360Player4Android", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:34.672876+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:46:23.724146+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8384b60498d9a54aec955ffaeeef208db3272d21812c4a91d71e323bb39e17ae", "fetched_at": "2026-08-28T04:03:34.672876+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ashqal/MD360Player4Android"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:34.672876+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:46:23.724146+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8384b60498d9a54aec955ffaeeef208db3272d21812c4a91d71e323bb39e17ae", "fetched_at": "2026-08-28T04:03:34.672876+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ashqal/MD360Player4Android"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:46:23.724146+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8384b60498d9a54aec955ffaeeef208db3272d21812c4a91d71e323bb39e17ae", "fetched_at": "2026-08-28T04:03:34.672876+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ashqal/MD360Player4Android"}], "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:34.672876+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:34.672876+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:34.672876+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:46:23.724146+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8384b60498d9a54aec955ffaeeef208db3272d21812c4a91d71e323bb39e17ae", "fetched_at": "2026-08-28T04:03:34.672876+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ashqal/MD360Player4Android"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:34.672876+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:34.672876+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:46:23.724146+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8384b60498d9a54aec955ffaeeef208db3272d21812c4a91d71e323bb39e17ae", "fetched_at": "2026-08-28T04:03:34.672876+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ashqal/MD360Player4Android"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:34.672876+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:34.672876+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:34.672876+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:46:23.724146+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8384b60498d9a54aec955ffaeeef208db3272d21812c4a91d71e323bb39e17ae", "fetched_at": "2026-08-28T04:03:34.672876+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ashqal/MD360Player4Android"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:34.672876+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:34.672876+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:46:23.724146+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8384b60498d9a54aec955ffaeeef208db3272d21812c4a91d71e323bb39e17ae", "fetched_at": "2026-08-28T04:03:34.672876+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ashqal/MD360Player4Android"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:46:23.724146+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8384b60498d9a54aec955ffaeeef208db3272d21812c4a91d71e323bb39e17ae", "fetched_at": "2026-08-28T04:03:34.672876+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ashqal/MD360Player4Android"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:46:23.724146+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8384b60498d9a54aec955ffaeeef208db3272d21812c4a91d71e323bb39e17ae", "fetched_at": "2026-08-28T04:03:34.672876+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ashqal/MD360Player4Android"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:46:23.724146+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8384b60498d9a54aec955ffaeeef208db3272d21812c4a91d71e323bb39e17ae", "fetched_at": "2026-08-28T04:03:34.672876+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ashqal/MD360Player4Android"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:39:23.370411+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3818, "days_push": 1637, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}