{"id":17250072,"url":"https://github.com/stephengold/j-ogg-all","last_synced_at":"2025-04-14T05:31:43.277Z","repository":{"id":53887714,"uuid":"347587525","full_name":"stephengold/j-ogg-all","owner":"stephengold","description":"Open-source JVM libraries for reading Ogg bitstreams and decoding the media they contain.","archived":false,"fork":false,"pushed_at":"2025-03-01T05:48:21.000Z","size":1962,"stargazers_count":13,"open_issues_count":0,"forks_count":5,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-27T19:51:03.079Z","etag":null,"topics":["audio","codec","decoder","flac","java","jvm-library","library","mdct","modified-discrete-cosine-transform","ogg","ogg-vorbis","open-source","streaming-audio","vorbis"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stephengold.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}},"created_at":"2021-03-14T08:55:05.000Z","updated_at":"2025-03-01T05:48:24.000Z","dependencies_parsed_at":"2023-02-16T02:46:07.741Z","dependency_job_id":"fb9213b9-2956-40c1-84af-1c3fdacd16f8","html_url":"https://github.com/stephengold/j-ogg-all","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stephengold%2Fj-ogg-all","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stephengold%2Fj-ogg-all/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stephengold%2Fj-ogg-all/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stephengold%2Fj-ogg-all/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stephengold","download_url":"https://codeload.github.com/stephengold/j-ogg-all/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248826619,"owners_count":21167723,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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","codec","decoder","flac","java","jvm-library","library","mdct","modified-discrete-cosine-transform","ogg","ogg-vorbis","open-source","streaming-audio","vorbis"],"created_at":"2024-10-15T06:46:06.518Z","updated_at":"2025-04-14T05:31:42.983Z","avatar_url":"https://github.com/stephengold.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# J-ogg-all Project\n\n[The J-ogg-all Project][joggall] provides 2 [JVM] libraries\nfor reading [Ogg] bitstreams and decoding media they contain.\n\nIt contains 2 subprojects:\n\n1. library: builds the full \"j-ogg-all\" runtime library, including decoders for\n   [Vorbis], [Free Lossless Audio Codec (FLAC)][flac], and [Theora] media.\n   This library also provides optional interfaces to\n   [the Java Media Framework (JMF)][jmf].\n2. vorbis: builds a reduced library (\"j-ogg-vorbis\") for decoding\n   Vorbis audio only (no support for FLAC, Theora, or JMF).\n\nComplete source code (in [Java]) is provided under\n[an informal license][license].\n\n\n\u003ca name=\"toc\"\u003e\u003c/a\u003e\n\n## Contents of this document\n\n+ [Important features](#features)\n+ [What's missing](#todo)\n+ [How to add j-ogg-all to an existing project](#addall)\n+ [How to add j-ogg-vorbis to an existing project](#addvorbis)\n+ [How to build the project from source](#build)\n+ [Downloads](#downloads)\n+ [Conventions](#conventions)\n+ [External links](#links)\n+ [History](#history)\n\n\n\u003ca name=\"features\"\u003e\u003c/a\u003e\n\n## Important features\n\n+ read bitstreams and metadata from [Ogg] containers\n+ decode [Vorbis] audio\n+ decode [FLAC] audio\n+ extract album art from Vorbis comments\n\n[Jump to the table of contents](#toc)\n\n\n\u003ca name=\"todo\"\u003e\u003c/a\u003e\n\n## What's missing\n\n+ The [Theora] decoder is very incomplete.\n+ No decoders are provided for:\n  + Constrained Energy Lapped Transform (CELT) audio\n  + Continuous Media Markup Language (CMML)\n  + [Daala video][daala]\n  + [Opus interactive audio][opus]\n  + [Speex audio][speex]\n\n[Jump to the table of contents](#toc)\n\n\u003ca name=\"addall\"\u003e\u003c/a\u003e\n\n## How to add j-ogg-all to an existing project\n\nThe j-ogg-all library is available pre-built.\nIt depends on the Java Media Framework.\nAdding j-ogg-all to an existing JVM project should be\na simple matter of adding these libraries to the classpath.\n\nFor projects built using [Maven] or [Gradle], it is sufficient to add a\ndependency on j-ogg-all.\nThe build tool should automatically resolve the dependency on JMF.\n\n### Gradle-built projects\n\nAdd to the project’s \"build.gradle\" or \"build.gradle.kts\" file:\n\n    repositories {\n        mavenCentral()\n    }\n    dependencies {\n        implementation(\"com.github.stephengold:j-ogg-all:1.0.6\")\n    }\n\nFor some older versions of Gradle,\nit's necessary to replace `implementation` with `compile`.\n\n### Maven-built projects\n\nAdd to the project’s \"pom.xml\" file:\n\n    \u003crepositories\u003e\n      \u003crepository\u003e\n        \u003cid\u003emvnrepository\u003c/id\u003e\n        \u003curl\u003ehttps://repo1.maven.org/maven2/\u003c/url\u003e\n      \u003c/repository\u003e\n    \u003c/repositories\u003e\n\n    \u003cdependency\u003e\n      \u003cgroupId\u003ecom.github.stephengold\u003c/groupId\u003e\n      \u003cartifactId\u003ej-ogg-all\u003c/artifactId\u003e\n      \u003cversion\u003e1.0.6\u003c/version\u003e\n    \u003c/dependency\u003e\n\n[Jump to the table of contents](#toc)\n\n\n\u003ca name=\"addvorbis\"\u003e\u003c/a\u003e\n\n## How to add j-ogg-vorbis to an existing project\n\nThe j-ogg-vorbis library is available pre-built.\nAdding j-ogg-vorbis to an existing JVM project should be\na simple matter of adding this library to the classpath.\n\n### Gradle-built projects\n\nAdd to the project’s \"build.gradle\" file:\n\n    repositories {\n        mavenCentral()\n    }\n    dependencies {\n        implementation(\"com.github.stephengold:j-ogg-vorbis:1.0.6\")\n    }\n\nFor some older versions of Gradle,\nit's necessary to replace `implementation` with `compile`.\n\n### Maven-built projects\n\nAdd to the project’s \"pom.xml\" file:\n\n    \u003crepositories\u003e\n      \u003crepository\u003e\n        \u003cid\u003emvnrepository\u003c/id\u003e\n        \u003curl\u003ehttps://repo1.maven.org/maven2/\u003c/url\u003e\n      \u003c/repository\u003e\n    \u003c/repositories\u003e\n\n    \u003cdependency\u003e\n      \u003cgroupId\u003ecom.github.stephengold\u003c/groupId\u003e\n      \u003cartifactId\u003ej-ogg-vorbis\u003c/artifactId\u003e\n      \u003cversion\u003e1.0.6\u003c/version\u003e\n    \u003c/dependency\u003e\n\n[Jump to the table of contents](#toc)\n\n\n\u003ca name=\"build\"\u003e\u003c/a\u003e\n\n## How to build the project from source\n\n1. Install a [Java Development Kit (JDK)][adoptium],\n   if you don't already have one.\n2. Point the `JAVA_HOME` environment variable to your JDK installation:\n   (In other words, set it to the path of a directory/folder\n   containing a \"bin\" that contains a Java executable.\n   That path might look something like\n   \"C:\\Program Files\\Eclipse Adoptium\\jdk-17.0.3.7-hotspot\"\n   or \"/usr/lib/jvm/java-17-openjdk-amd64/\" or\n   \"/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home\" .)\n  + using Bash or Zsh: `export JAVA_HOME=\"` *path to installation* `\"`\n  + using [Fish]: `set -g JAVA_HOME \"` *path to installation* `\"`\n  + using Windows Command Prompt: `set JAVA_HOME=\"` *path to installation* `\"`\n  + using PowerShell: `$env:JAVA_HOME = '` *path to installation* `'`\n3. Download and extract the j-ogg-all source code from [GitHub]:\n  + using [Git]:\n    + `git clone https://github.com/stephengold/j-ogg-all.git`\n    + `cd j-ogg-all`\n    + `git checkout -b latest 1.0.6`\n  + using a web browser:\n    + browse to [the latest release][latest]\n    + follow the \"Source code (zip)\" link\n    + save the ZIP file\n    + extract the contents of the saved ZIP file\n    + `cd` to the extracted directory/folder\n4. Run the [Gradle] wrapper:\n  + using Bash or Fish or PowerShell or Zsh: `./gradlew build`\n  + using Windows Command Prompt: `.\\gradlew build`\n\nAfter a successful build,\nMaven artifacts will be found\nin \"library/build/libs\" and \"vorbis/build/libs\".\n\nYou can install the artifacts to your local Maven repository:\n+ using Bash or Fish or PowerShell or Zsh: `./gradlew install`\n+ using Windows Command Prompt: `.\\gradlew install`\n\nYou can restore the project to a pristine state:\n+ using Bash or Fish or PowerShell or Zsh: `./gradlew clean`\n+ using Windows Command Prompt: `.\\gradlew clean`\n\n[Jump to the table of contents](#toc)\n\n\n\u003ca name=\"downloads\"\u003e\u003c/a\u003e\n\n## Downloads\n\nReleases can be downloaded from [GitHub](https://github.com/stephengold/j-ogg-all/releases)\nor from the Maven Central Repository:\n+ [j-ogg-all](https://central.sonatype.com/artifact/com.github.stephengold/j-ogg-all/1.0.6)\n+ [j-ogg-vorbis](https://central.sonatype.com/artifact/com.github.stephengold/j-ogg-vorbis/1.0.6)\n\n[Jump to the table of contents](#toc)\n\n\n\u003ca name=\"conventions\"\u003e\u003c/a\u003e\n\n## Conventions\n\nPackage names begin with `de.jarnbjo.`\n\nThe source code is compatible with JDK 7.\nThe pre-built libraries are compatible with JDK 8.\n\n[Jump to the table of contents](#toc)\n\n\n\u003ca name=\"links\"\u003e\u003c/a\u003e\n\n## External links\n\n+ [reference implementation of the Ogg container format](https://github.com/xiph/ogg)\n+ [reference implementation of the Vorbis codec](https://gitlab.xiph.org/xiph/vorbis)\n+ [Vorbis samples](https://getsamplefiles.com/sample-audio-files/ogg)\n\n[Jump to the table of contents](#toc)\n\n\n\u003ca name=\"history\"\u003e\u003c/a\u003e\n\n## History\n\nThe j-ogg-all project was created by Tor-Einar Jarnbjo circa 2002,\nprobably based on reference implementations in C.\n\nIn March 2021, Stephen Gold revived the project at GitHub\nand added Gradle build scripts.\n\nIn September 2022, Robert Pengelly contributed code\nto retrieve album art from Vorbis media.\n\nIn February 2023, the \"library\" and \"vorbis\" subprojects split off.\n\n[Jump to the table of contents](#toc)\n\n\n[adoptium]: https://adoptium.net/releases.html \"Adoptium Project\"\n[daala]: https://xiph.org/daala/ \"Daala codec\"\n[fish]: https://fishshell.com/ \"Fish command-line shell\"\n[flac]: https://xiph.org/flac/ \"Free Lossless Audio Codec\"\n[git]: https://git-scm.com \"Git\"\n[github]: https://github.com \"GitHub\"\n[gradle]: https://gradle.org \"Gradle Project\"\n[java]: https://en.wikipedia.org/wiki/Java_(programming_language) \"Java\"\n[jmf]: https://www.oracle.com/java/technologies/javase/java-media-framework.html \"Java Media Framework\"\n[joggall]: https://github.com/stephengold \"J-ogg-all Project\"\n[jvm]: https://en.wikipedia.org/wiki/Java_virtual_machine \"Java Virtual Machine\"\n[latest]: https://github.com/stephengold/j-ogg-all/releases/latest \"latest release\"\n[license]: https://github.com/stephengold/j-ogg-all/blob/master/LICENSE \"j-ogg-all license\"\n[maven]: https://maven.apache.org \"Maven Project\"\n[ogg]: https://www.xiph.org/ogg/ \"Ogg container format\"\n[opus]: https://opus-codec.org/ \"Opus codec\"\n[speex]: https://speex.org/ \"Speex codec\"\n[theora]: https://theora.org/ \"Theora codec\"\n[vorbis]: https://xiph.org/vorbis/ \"Vorbis codec\"\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstephengold%2Fj-ogg-all","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstephengold%2Fj-ogg-all","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstephengold%2Fj-ogg-all/lists"}