{"id":17720160,"url":"https://github.com/arkq/openaptx","last_synced_at":"2026-01-06T04:56:14.989Z","repository":{"id":49386848,"uuid":"109118211","full_name":"arkq/openaptx","owner":"arkq","description":"Reverse-engineered apt-X audio codec","archived":false,"fork":false,"pushed_at":"2022-12-17T23:19:25.000Z","size":482,"stargazers_count":134,"open_issues_count":3,"forks_count":20,"subscribers_count":16,"default_branch":"master","last_synced_at":"2024-07-02T20:45:19.848Z","etag":null,"topics":["aptx","aptx-hd","library","reverse-engineering"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/arkq.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-11-01T10:31:14.000Z","updated_at":"2024-06-26T10:45:28.000Z","dependencies_parsed_at":"2023-01-29T18:15:29.229Z","dependency_job_id":null,"html_url":"https://github.com/arkq/openaptx","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arkq%2Fopenaptx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arkq%2Fopenaptx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arkq%2Fopenaptx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arkq%2Fopenaptx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arkq","download_url":"https://codeload.github.com/arkq/openaptx/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221435538,"owners_count":16820677,"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":["aptx","aptx-hd","library","reverse-engineering"],"created_at":"2024-10-25T15:26:28.674Z","updated_at":"2026-01-06T04:56:14.938Z","avatar_url":"https://github.com/arkq.png","language":"C","funding_links":[],"categories":["C"],"sub_categories":[],"readme":"# [open]aptx - reverse-engineered apt-X\n\nThis project is for research purposes only. Without a proper license private and commercial usage\nmight be a case of a patent infringement. If you are looking for a library, which can be installed\nand used legally (commercial, private and educational usage), go to the Qualcomm® aptX™\n[homepage](https://www.aptx.com/) and contact Qualcomm customer service.\n\nThe source code itself is licensed under the terms of the MIT license. However, compression\nalgorithms are patented and licensed under the terms of a proprietary license. Hence, compilation\nand redistribution in a binary format is forbidden!\n\n## Compilation\n\n```sh\nmkdir build \u0026\u0026 cd build\ncmake -DENABLE_DOC=ON -DWITH_FFMPEG=ON -DWITH_SNDFILE=ON ..\nmake \u0026\u0026 make install\n```\n\n### Prerequisites\n\n- CMake 3.22 or newer\n- [Doxygen](https://doxygen.nl/index.html) (optional)\n- [FFmpeg](https://ffmpeg.org/) 5.1.0 or newer (optional)\n- [libfreeaptx](https://github.com/regularhunter/libfreeaptx) 0.1.0 or newer (optional)\n- [libsndfile](https://libsndfile.github.io/libsndfile/) 1.0.19 or newer (optional)\n\n```sh\n# Install required packages on Debian-based systems\nsudo apt-get install cmake doxygen ffmpeg libfreeaptx-dev libsndfile1-dev\n```\n\n### Configure options\n\n- `ENABLE_DOC` - build and install manual files (requires Doxygen)\n- `ENABLE_APTX_DECODER_API` - build with apt-X / apt-X HD decoder API (default: ON)\n- `ENABLE_APTX_ENCODER_API` - build with apt-X / apt-X HD encoder API (default: ON)\n- `ENABLE_APTX422` - build reverse engineered apt-X library based on `bt-aptX-x86-4.2.2.so`\n- `ENABLE_APTXHD100` - build reverse engineered apt-X HD library based on `aptXHD-1.0.0-ARMv7A`\n- `WITH_FFMPEG` - use FFmpeg as a back-end (otherwise, stub library will be built)\n- `WITH_FREEAPTX` - use libfreeaptx as a back-end (FFmpeg back-end must be disabled)\n- `WITH_SNDFILE` - read file formats supported by libsndfile (used by openaptx utils)\n\nIn the apt-X stub library (build without FFmpeg back-end), all symbols are exported as\n[weak](https://en.wikipedia.org/wiki/Weak_symbol). As a consequence, it should be possible to\noverwrite them during runtime with other library which exports strong symbols. However, it might\nbe required to define `LD_DYNAMIC_WEAK` environment variable - for more information consult\n`ld.so` manual.\n\nWhen reverse-engineered libraries were enabled, they will be automatically linked with the apt-X\nstub library (build without FFmpeg back-end). See previous paragraph for the meaning of this.\n\n## Benchmark\n\nBelow is the result of a small benchmark test performed with various apt-X encoding libraries.\nTest was done with the usage of `aptxenc` and `aptxhdenc` tools from this repository.\nElapsed user time was calculated with the usage of a standard UNIX `time` command line tool. All\nlibraries (except original Qualcomm libraries) were compiled with Clang version 9.0.0 with the\n`O3` optimization level.\n\n### Setup\n\n- CPU: ARM Cortex-A53\n- Input file: WAV audio, Microsoft PCM, 16 bit, stereo 48000 Hz\n- Input duration: 15 minutes 45 seconds\n\n### Results\n\n| Library                                | apt-X   | Mbit/s  | apt-X HD | Mbit/s  |\n|----------------------------------------|---------|---------|----------|---------|\n| [libaptX-1.0.16-rel-Android21][1]      |   1m01s |    23.8 | \u0026mdash;  | \u0026mdash; |\n| [libaptXHD-1.0.1-rel-Android21][1]     | \u0026mdash; | \u0026mdash; |    1m04s |    22.7 |\n| openaptx-stub                          |   0m11s |     0.0 |    0m11s |     0.0 |\n| openaptx-ffmpeg (libavcodec-59.37.100) |   2m12s |    11.0 |    2m18s |    10.5 |\n| aptx422                                |   1m14s |    19.6 | \u0026mdash;  | \u0026mdash; |\n| aptxHD100                              | \u0026mdash; | \u0026mdash; |    1m16s |    19.1 |\n| [libopenaptx-0.2.0][2]                 |   1m17s |    18.8 |    1m19s |    18.4 |\n\n[1]: archive/aarch64 \"Archive with Qualcomm apt-X encoding libraries\"\n[2]: https://github.com/pali/libopenaptx \"The apt-X encoder/decoder based on FFmpeg code\"\n\n## Resources\n\n1. [AptX audio codec family](https://en.wikipedia.org/wiki/AptX)\n1. [AptX encoder source code](https://android.googlesource.com/platform/packages/modules/Bluetooth/+/refs/heads/main/system/embdrv/encoder_for_aptx/)\n1. [AptX HD encoder source code](https://android.googlesource.com/platform/packages/modules/Bluetooth/+/refs/heads/main/system/embdrv/decoder_for_aptxhd/)\n1. [Method and apparatus for electrical signal coding](https://www.google.com/patents/EP0398973B1?cl=en)\n1. [Two-channel QMF bank](https://www.hindawi.com/journals/isrn/2013/815619/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farkq%2Fopenaptx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farkq%2Fopenaptx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farkq%2Fopenaptx/lists"}