{"id":50927609,"url":"https://github.com/phantomcortex/gstreamer-plugin-xwm","last_synced_at":"2026-06-17T01:00:17.286Z","repository":{"id":365304570,"uuid":"1266707871","full_name":"phantomcortex/gstreamer-plugin-xwm","owner":"phantomcortex","description":"GStreamer plugin for Microsoft xWMA (.xwm) audio: typefinder + xwmademux demuxer with accurate duration and seeking; decode via avdec_wmav2.","archived":false,"fork":false,"pushed_at":"2026-06-16T18:32:52.000Z","size":54,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-06-16T20:23:20.909Z","etag":null,"topics":["audio","fedora","gstreamer","rust","wma","xwma"],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/phantomcortex.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-11T22:02:53.000Z","updated_at":"2026-06-16T18:33:35.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/phantomcortex/gstreamer-plugin-xwm","commit_stats":null,"previous_names":["phantomcortex/gstreamer-plugin-xwm"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/phantomcortex/gstreamer-plugin-xwm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phantomcortex%2Fgstreamer-plugin-xwm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phantomcortex%2Fgstreamer-plugin-xwm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phantomcortex%2Fgstreamer-plugin-xwm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phantomcortex%2Fgstreamer-plugin-xwm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/phantomcortex","download_url":"https://codeload.github.com/phantomcortex/gstreamer-plugin-xwm/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phantomcortex%2Fgstreamer-plugin-xwm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34429493,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-16T02:00:06.860Z","response_time":126,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio","fedora","gstreamer","rust","wma","xwma"],"created_at":"2026-06-17T01:00:16.676Z","updated_at":"2026-06-17T01:00:17.268Z","avatar_url":"https://github.com/phantomcortex.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gstreamer-plugin-xwm\n\nA GStreamer plugin that makes **Microsoft xWMA** (`.xwm`) audio files play in any\nGStreamer-based application — [Decibels](https://apps.gnome.org/Decibels/) (GNOME Audio\nPlayer), Totem, Rhythmbox, etc. — with no special player required.\n\n`.xwm` is a RIFF container (`RIFF…XWMA`) wrapping WMAv2 audio, used heavily by games\n(e.g. Skyrim/Bethesda titles). GStreamer already ships the WMA decoder\n(`avdec_wmav2`, from `gst-libav`), but `.xwm` files never play because nothing\n**recognises** the container or autoplugs a demuxer for it. This plugin fills exactly\nthat gap.\n\n## What it provides\n\n| Feature | Description |\n|---|---|\n| `xwma_typefind` | Typefinder for the `RIFF…XWMA` magic + `.xwm` extension (rank PRIMARY) |\n| `xwmademux` | Demuxer: parses the RIFF chunks and emits an `audio/x-wma` stream |\n\nDecoding is **delegated to `avdec_wmav2`** via `decodebin` autoplugging. The demuxer\nsynthesises the fixed 6-byte WMAv2 `codec_data` (`00 00 00 00 1F 00`) that xWMA files\nomit but the decoder requires.\n\n```\nfilesrc ! [typefind] ! xwmademux ! avdec_wmav2 ! audioconvert ! autoaudiosink\n          \\________________ all autoplugged by decodebin/playbin _____________/\n```\n\n## Building\n\nRequires GStreamer ≥ 1.20, `gst-libav` (for `avdec_wmav2`), Rust, and\n[`cargo-c`](https://github.com/lu-zero/cargo-c).\n\n```bash\ncargo cbuild --release\n# Try it without installing:\nGST_PLUGIN_PATH=$PWD/target/\u003ctriple\u003e/release \\\n  gst-launch-1.0 filesrc location=song.xwm ! decodebin ! audioconvert ! autoaudiosink\n```\n\nInstall system-wide (drops `libgstxwm.so` into the GStreamer plugin dir):\n\n```bash\ncargo cinstall --release --prefix=/usr --libdir=/usr/lib64\n```\n\n### Fedora RPM\n\n```bash\nrpmdev-setuptree\ngit archive --format=tar.gz --prefix=gstreamer-plugin-xwm-0.1.0/ \\\n    -o ~/rpmbuild/SOURCES/gstreamer-plugin-xwm-0.1.0.tar.gz HEAD\ncp packaging/gstreamer-plugin-xwm.spec ~/rpmbuild/SPECS/\nrpmbuild -bb ~/rpmbuild/SPECS/gstreamer-plugin-xwm.spec\nsudo dnf install ~/rpmbuild/RPMS/x86_64/gstreamer-plugin-xwm-0.1.0-1.*.x86_64.rpm\n```\n\nThis installs `libgstxwm.so` to `%{_libdir}/gstreamer-1.0/`. Because `xwmademux`\nis rank *primary*, it then outranks libav's `avdemux_xwma` (rank *marginal*) so\n`decodebin`/`playbin` pick it automatically — giving correct duration and seeking.\n\n\u003e **Note on Decibels (and other flatpak apps):** a flatpak is sandboxed and uses\n\u003e its *own* bundled GStreamer, so it will **not** see a host-installed plugin and\n\u003e will keep falling back to `avdemux_xwma`. Use a non-flatpak (RPM) build of the\n\u003e player, or build this plugin against the matching freedesktop SDK and expose it\n\u003e with a flatpak override.\n\n## Status\n\n- ✅ Playback of WMAv2 xWMA via autoplugging (`decodebin`/`playbin`).\n- ✅ Accurate duration and a complete progress bar (derived from the `dpds` index).\n- ✅ Accurate seeking via the `dpds` index (TIME→byte mapping, per-packet timestamps).\n\n## License\n\n[MPL-2.0](LICENSE), matching the GStreamer Rust plugin convention.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphantomcortex%2Fgstreamer-plugin-xwm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphantomcortex%2Fgstreamer-plugin-xwm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphantomcortex%2Fgstreamer-plugin-xwm/lists"}