{"action":"created","issue":{"url":"https://api.github.com/repos/tux3/qTox/issues/3524","repository_url":"https://api.github.com/repos/tux3/qTox","labels_url":"https://api.github.com/repos/tux3/qTox/issues/3524/labels{/name}","comments_url":"https://api.github.com/repos/tux3/qTox/issues/3524/comments","events_url":"https://api.github.com/repos/tux3/qTox/issues/3524/events","html_url":"https://github.com/tux3/qTox/pull/3524","id":165978984,"number":3524,"title":"qTox Audio API reimplementation based on RtAudio","user":{"login":"antis81","id":440517,"avatar_url":"https://avatars.githubusercontent.com/u/440517?v=3","gravatar_id":"","url":"https://api.github.com/users/antis81","html_url":"https://github.com/antis81","followers_url":"https://api.github.com/users/antis81/followers","following_url":"https://api.github.com/users/antis81/following{/other_user}","gists_url":"https://api.github.com/users/antis81/gists{/gist_id}","starred_url":"https://api.github.com/users/antis81/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/antis81/subscriptions","organizations_url":"https://api.github.com/users/antis81/orgs","repos_url":"https://api.github.com/users/antis81/repos","events_url":"https://api.github.com/users/antis81/events{/privacy}","received_events_url":"https://api.github.com/users/antis81/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":7,"created_at":"2016-07-17T14:27:52Z","updated_at":"2016-07-23T09:33:48Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/tux3/qTox/pulls/3524","html_url":"https://github.com/tux3/qTox/pull/3524","diff_url":"https://github.com/tux3/qTox/pull/3524.diff","patch_url":"https://github.com/tux3/qTox/pull/3524.patch"},"body":"**Important note:** Library bindings are kept in parallel to OpenAL until it can be replaced completely.\r\n\r\n\r\n**THIS IS A VERY EARLY DEVELOPMENT STATE! THE FOLLOWING CONCEPT & TODO LIST IS INCOMPLETE AND IS SUBJECT TO CHANGE.**\r\n\r\n- [x] add RtAudio library dependency\r\n- [ ] update build scripts and maintenace\r\n- [ ] update docs\r\n- [ ] **(last step)** remove OpenAL code and dependency\r\n\r\n# Concept\r\nThe goal of the qTox audio API is to create a flexible management mechanism for the use of audio resources within qTox. Access to audio resources is encapsulated in a special audio context, which defines the audio devices, that should be used to stream and/or monitor audio. Here are some examples for audio contexts:\r\n\r\n* qTox call\r\n* qTox group-call\r\n* audio preview (aka monitor)\r\n\r\n**qTox code won't be aware of the underlying API in use - namely RtAudio. Direct access to RtAudio from outside the API is strictly forbidden.**\r\n\r\n## Namespaces & Classes\r\n\r\nEach method, that belongs to the qTox audio API is wrapped by the `qTox::Audio` namespace. Within the namespace, there exist the following classes:\r\n\r\n* Obsolete: ~~Devices -> Controls access to audio devices and manages the devices, which are in use.~~\r\n* Device -> Represents an single input or output device, including an `RtAudio::DeviceInfo`, describing the device's capabilities.\r\n* StreamContext -> A streaming context configures the required input and/or output device.\r\n\r\n# TODO: Implementation\r\n\r\n- [x] implement a \"context\", that is used as a binding object for each audio context. Contexts are e.g. a \"qTox call\", a \"qTox group-call\" or the \"settings preview\"), which connects the required input/output devices.\r\n- [ ] settings for volume and gain (gain algorithm can be probably used from OpenAL implementation), if there's no prepared one.\r\n- [ ] Use `Opus` codec for audio filtering, compression and the like.\r\n\r\n## Want to help?\r\nThis PR will get merged into `master`, if implementation of audio API is complete or at least in a state, that provides feature parity to the current implementation. If you want to help with implementation or have ideas, please contact me (@antis81)."},"comment":{"url":"https://api.github.com/repos/tux3/qTox/issues/comments/234709334","html_url":"https://github.com/tux3/qTox/pull/3524#issuecomment-234709334","issue_url":"https://api.github.com/repos/tux3/qTox/issues/3524","id":234709334,"user":{"login":"Diadlo","id":6306608,"avatar_url":"https://avatars.githubusercontent.com/u/6306608?v=3","gravatar_id":"","url":"https://api.github.com/users/Diadlo","html_url":"https://github.com/Diadlo","followers_url":"https://api.github.com/users/Diadlo/followers","following_url":"https://api.github.com/users/Diadlo/following{/other_user}","gists_url":"https://api.github.com/users/Diadlo/gists{/gist_id}","starred_url":"https://api.github.com/users/Diadlo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Diadlo/subscriptions","organizations_url":"https://api.github.com/users/Diadlo/orgs","repos_url":"https://api.github.com/users/Diadlo/repos","events_url":"https://api.github.com/users/Diadlo/events{/privacy}","received_events_url":"https://api.github.com/users/Diadlo/received_events","type":"User","site_admin":false},"created_at":"2016-07-23T09:33:48Z","updated_at":"2016-07-23T09:33:48Z","body":"RTAudio comparable with GPL?"}}
{"actor":{"display_login":"Diadlo"}}