{"id":18938945,"url":"https://github.com/teampyogg/vs-xiphaudiobuild","last_synced_at":"2026-04-30T06:34:50.010Z","repository":{"id":144121778,"uuid":"295162365","full_name":"TeamPyOgg/VS-XiphAudioBuild","owner":"TeamPyOgg","description":"A ready-to-build repo for Xiph.org's popular audio libraries on Visual Studio (Windows)","archived":false,"fork":false,"pushed_at":"2020-09-23T05:11:38.000Z","size":24363,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-12-31T22:12:10.460Z","etag":null,"topics":["audio","automatic","build","dlls","flac","library","ogg","ogg-opus","ogg-vorbis","openssl","opus","opusfile","prebuilt","prebuilt-libraries","visual-studio","vorbis","windows","xiph"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TeamPyOgg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2020-09-13T13:56:30.000Z","updated_at":"2020-09-23T05:11:40.000Z","dependencies_parsed_at":null,"dependency_job_id":"bcdc0647-8134-4031-82c0-175071112ea9","html_url":"https://github.com/TeamPyOgg/VS-XiphAudioBuild","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TeamPyOgg%2FVS-XiphAudioBuild","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TeamPyOgg%2FVS-XiphAudioBuild/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TeamPyOgg%2FVS-XiphAudioBuild/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TeamPyOgg%2FVS-XiphAudioBuild/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TeamPyOgg","download_url":"https://codeload.github.com/TeamPyOgg/VS-XiphAudioBuild/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239937701,"owners_count":19721484,"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","automatic","build","dlls","flac","library","ogg","ogg-opus","ogg-vorbis","openssl","opus","opusfile","prebuilt","prebuilt-libraries","visual-studio","vorbis","windows","xiph"],"created_at":"2024-11-08T12:15:52.313Z","updated_at":"2026-04-30T06:34:45.817Z","avatar_url":"https://github.com/TeamPyOgg.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VS-XiphAudioBuild\n## A ready-to-build setup for ogg, vorbis, FLAC, and opus libraries on Windows\n### Ever tried to build one of [Xiph.org](https://github.com/xiph)'s libraries and failed?\nNo wonder. Building them from scratch is near impossible.  \nBut worry not my friend, that's all in the past now. With this repository you're all set to build or simply download [prebuilt libraries](https://github.com/TeamPyOgg/VS-XiphAudioBuild/releases/latest) with little effort.\n\n## What's in this repository?\nFirst of all, there are prebuilt libraries in the [releases](https://github.com/TeamPyOgg/VS-XiphAudioBuild/releases) section. If you want to have the least amount of effort, you should start there.  \nIf you don't know which one to choose, have a look at [[Configurations](#configurations)] below.  \nYou can also build all of the libraries yourself. That includes:\n- [ogg](https://github.com/xiph/ogg)\n- [vorbis](https://github.com/xiph/vorbis)\n- vorbisfile (part of vorbis)\n- [opus](https://github.com/xiph/opus)\n- [opusenc](https://github.com/xiph/libopusenc)\n- [opusfile](https://github.com/xiph/opusfile)\n- [flac](https://github.com/xiph/flac) (libFLAC)\n- [openssl](https://github.com/openssl/openssl) (required for opusfile)\n## How to Build\n### Prerequisites\nBefore you can start building, you need a few things:\n- **Visual Studio** (The project was created using Visual Studio 2019, but it may also work with older versions)\n- **Perl** (See *[Setting up Perl](#setting-up-perl)* below)\n- **Time** (Yes, time. It can take quite a while to build)\n#### Setting up Perl\nPerl is required to build OpenSSL which, in turn, is required to build `opusfile`.  \nAlthough `openssl` recommends using ActivePerl, not only does it require you to register on the publisher's website, but it also seems to be complicated to set up and I didn't get it to work.  \nI recommend you to use StrawberryPerl instead, which is open source and more user-friendly in general.  \nTo install StrawberryPerl, simply download the latest **64-bit** version from their [website](http://strawberryperl.com/) (unless you want to *only* target 32-bit Windows systems) and run the installer.  \n\nAfter having installed Perl, you need to install an extension module. To do so, open up a command prompt (Press `[WIN]`+`[R]`, type `cmd` and hit `[RETURN]`) and enter the following command:\n```Shell\ncpan -i Text::Template\n```\nThe extension module should automagically install.\n### The build process\nNow you're all set. Go ahead and clone / download this repo (if you haven't already) and open up the XiphAudioBuild.sln solution file.  \nYou should be able to see the Project, including all the sub-projects in the solution-explorer.  \nNow it's time to select what you want to build.\n#### Configurations\nDepending on the type of application you want to use the generated libraries in, you're going to want to use a different configuration.  \nFirst of all there are two major differences between the libs:  \nShared and Static.\n  \n**Shared libraries**  \nShared libraries, also known as dynamic libraries are what you'll commonly see as `.DLL` files. These are generally the libraries you want to use, especially when you're developing with languages other than C or C++, as those can usually only deal with shared libraries.  \nThe other reason for using shared libraries is that they're easily repleacable with newer versions, without having to recomiple your own project for every bugfix release of a library.  \n**Static libraries**  \nStatic libaries are basically the opposite of shared libraries. When you include them in your project, they will be incorporated into your final binary, without any extra library files. This can be useful when you're trying to build a project that is supposed to output a single executable file without any other dependencies.  \n  \nThen there are two more categories:  \n**Runtime dependency** (`RuntimeDependency` suffix)  \nWhen the libraries are built using this option, they will require an appropriate Visual C++ redistributable package to be installed on the target system (i.e. they require that certain DLLs are present, such as `ucrtbased.dll` or `VCRUNTIME140D.dll`). You should only use this option when you're supplying a [redist package](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) that corresponds to your Visual C++ version together with your project, as the user might not be able to run it otherwise. You will have the benefit of a smaller file size as a result.  \n**No runtime dependency** (no suffix)  \nThis is what you want to use when you're building a library of your own or when using other languages than C or C++, as it already has all of the requirements built-in.  \n  \nAnd you'll have to choose from Release or Debug:  \n**Release**  \nThe production-ready versions of the library that have been compiled using optimizations and without any debugging symbols. This is what you want to use unless you're debugging with C / C++.  \n**Debug**  \nThe library versions with no optimizations, but with debugging information. This is what you should use for the debug configuration in your C / C++ project.\n\n#### Starting the build process\nWhen you've made the decision for which libraries you want to build, open up the Batch Build menu in Visual Studio by navigating to `[Build]-\u003e[Batch Build]` and select the checkmark for every configuration\u003c-\u003eplatform combination of the `BUILD_ALL` project that you want to bulid.  \nYou can also build only specific libraries by scrolling down and picking the appropriate project(s).  \nWhen you're done, hit the build button and let the compiler do it's magic.\n\n#### Output files\nWhen done building, you'll be presented with a bunch of different files in the `build` folder, depending on your configuration.  \nReally only three types of files interest you here:\nExtension | Description\n-|-\n`.DLL`|The shared library with all of the library's exported functions inside of it\n`.LIB`|The static library (or library part) that you can add to your C / C++ project in the *Linker* settings.\n`.PDB`|*Program Debug Database*, holds additional debug information about the library in question.\n\n**Happy building!**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fteampyogg%2Fvs-xiphaudiobuild","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fteampyogg%2Fvs-xiphaudiobuild","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fteampyogg%2Fvs-xiphaudiobuild/lists"}