Commit Graph

45 Commits

Author SHA1 Message Date
Marcin Smoczyński
f1fc9df152 [EGD-4977] Reduce audio lag during voice call
Reduce audio delay by reducing audio buffer size in router operation.
Audio streams are now created directly in the operations, not in the
audio service, which gives more flexibility.

Audio Buffer size is calculated based on endpoints (source, sink) and
operation capabilities. This commit also enables allocations in a
non-cacheable region of OCRAM for endpoints that use DMA for data
transport.

Introduce power-of-two operations that use built-in functions and
possibly dedicated hardware instructions of an MCU. These operations
are required by the audio stream buffer size calculation algorithm.

Signed-off-by: Marcin Smoczyński <smoczynski.marcin@gmail.com>
2021-02-01 22:22:12 +01:00
Hubert Chrzaniuk
bb6989c2a8 [EGD-4978] Add Bluetooth virtual audio device
Bluetooth audio device requires different handling than other
audio devices. The commit adds proxy device that does not
handle requests itself but instead sends requests too Bluetooth
service.
2020-12-21 13:46:40 +01:00
Hubert Chrzaniuk
6b36d35507 [EGD-5009] Change messy callback logic in audio module
Refactor audio module to use only one callback for communication
with audio service. This also simplifies the logic and removes
necessity to define defaults for audio values in multiple places.
2020-12-18 14:52:57 +01:00
Marcin Smoczyński
871b250d86 [EGD-4534] Change audio data path synchronization
Refactor audio data path to fix several synchronization issues and
excessive copy operations on large memory blocks. Introduce
audio::Stream data structure to allow connecting audio source and sink
with a zero-copy capability.

Introduce system mechanisms:
 - critical section guard lock needed for stream synchronization
 - non-cacheable memory allocator to allocate memory for DMA safe
   buffers

Update the Googletest CMake template to match the capabilities of the
Catch2 template.

Signed-off-by: Marcin Smoczyński <smoczynski.marcin@gmail.com>
Signed-off-by: Hubert Chrzaniuk <hubert.chrzaniuk@mudita.com>
2020-12-17 12:20:40 +01:00
Hubert Chrzaniuk
7ccc52c04c [EGD-4357] Improve error handling in audio (#990)
- error code can be now returned also during
   initialization
 - fixed crash when user requested to playback
   file that does not exist
2020-11-12 16:15:42 +01:00
Hubert Chrzaniuk
b7e1a04a12 [EGD-4301] Bluetooth Audio profile support (#984)
- implemented audio sink/source switching
 - reorganized / renamed sound events
 - moved SetBluetoothStreamData and AudioDevice instance to base Operation class
 - added audio profiles RecordingBluetoothHSP, RoutingBluetoothHSP
 - removed unused audio Profiles
 - removed redundant OutputPath and InputPath classes from CodecParamsMAX98090
2020-11-09 17:53:28 +01:00
Bartosz Cichocki
061479780b [EGD-4011] added BT audio device with A2DP playback (#870)
Co-authored-by: SP2FET <bartosz.cichocki@mudita.com>
2020-10-22 09:59:13 +02:00
Hubert Chrzaniuk
4c22ef5107 [EGD-4099] BT set stream (#846) 2020-10-20 13:43:53 +02:00
Radoslaw Wicik
2276ceed67 [EGD-3743] Update copyrights in fies 2020-10-20 12:55:10 +02:00
Marcin Smoczyński
2635367efb [EGD-4003] audio: fix workers destroying (#806)
Improve workers destroying by replacing sudden death with a gentle close
request.

Make (De)Init static - when creating second instance of a codec there
was a situation when destructing one instance was causing first one to
stop working, because they share common hardware resources.
2020-10-20 11:02:40 +02:00
Hubert Chrzaniuk
8c748a39b2 [EGD-4100] Fix playback restart on audio profile change (#848) 2020-10-16 13:53:57 +02:00
Hubert Chrzaniuk
ebcef7a692 [EGD-4054] Audio API for setting stream parameters (#826) 2020-10-15 09:27:15 +02:00
Jakub Pyszczak
2df98eea48 [EGD-3841] Add audio vibration and enable sound option 2020-10-06 17:06:34 +02:00
Hubert Chrzaniuk
f38960e1b3 [EDG-3870] Fix audio looping (#769) 2020-10-05 16:56:19 +02:00
hubert-chrzaniuk
70b01e9e6e [EGD-3779] Add sounds looping and merging (#744)
* [EGD-3779] Add sounds looping and merging
2020-09-30 11:44:52 +02:00
hubert-chrzaniuk
b327fc36e2 [EGD-3778] Add priorities and sound mux to audio system (#726) 2020-09-28 11:50:13 +02:00
Jakub Pyszczak
d7617b2f3c [EGD-3487] Volume buttons 2020-09-24 10:53:25 +02:00
jimmorrisson
7b626ce755 [EGD-3098] Add audio volume control per functionality. 2020-09-20 13:41:19 +02:00
jimmorrisson
63685f9247 [EGD-3097] Add storing and updating audio settings in database. 2020-09-11 12:06:03 +02:00
jimmorrisson
aa4fe6cc4e [EGD-3481] Null pattern / smart pointer access clean up in audio module 2020-08-21 10:03:35 +02:00
Szymon Mroczek
c994718be3 [EGD-3427] Handling of RoutingHeadset request 2020-08-07 11:32:05 +02:00
alek
bc7f0091ca [EGD-3423] Added simple music player 2020-08-04 16:53:12 +02:00
Szymon Mroczek
217148cf43 [EGD-3099] SwitchProfile and SendEvent APIs converted to return RetCode instead of dummy int32_t 2020-07-29 09:08:49 +02:00
Szymon Mroczek
151c804b2e [EGD-3099] Volume and Gain APIs converted to return RetCode instead of dummy int32_t 2020-07-29 09:08:49 +02:00
Szymon Mroczek
8d7b2a4eb8 [EGD-3099] Resume API converted to return RetCode instead of dummy int32_t 2020-07-29 09:08:49 +02:00
Szymon Mroczek
1aca6706f6 [EGD-3099] Pause API converted to return RetCode instead of dummy int32_t 2020-07-29 09:08:49 +02:00
Szymon Mroczek
b2894c596d [EGD-3099] Stop API converted to return RetCode instead of dummy int32_t 2020-07-29 09:08:49 +02:00
Szymon Mroczek
eb3fd9c4c6 [EGD-3099] Start API converted to return RetCode instead of dummy int32_t 2020-07-29 09:08:49 +02:00
alek
cb0f0b2a9b [EGD-3095] added audio workers synchronization mutexes
Added incoming call ring tone.
2020-07-23 23:58:29 +02:00
Alek Rudnik
09cf520c12 Egd 558 adjust volume during a call (#283)
* [EGD-558][fix] change error to info

* [EGD-558] added volume control of currently active audio operation

* [EGD-558] added ringing on incoming call

* [EGD-558] mini clean up in callwindow

* [EGD-558] removed reinterpret_casts and added some logging

* [EGD-558] rewritten methods to increment/decrement volume

* [EGD-558] clean up

* [EGD-558] moved volume control to application class
added nullptr checks

* [EGD-558] fixed types

* [EGD-558] added some audio debug logs

* [EGD-558] left a comment why ringing sound is currently disabled

* [EGD-558] PR fixes

* [EGD-558] PR fix

* [EGD-558] added propper error codes on pointer checking in Audio.cpp
2020-04-10 11:00:17 +02:00
Adam Dobrowolski
4a61f400e7 EGD-3055 Fixed printf issues 2020-04-08 12:23:53 +02:00
Przemyslaw Brudny
c0822b6658 [EDG-3019] Moved log.hpp and debug.hpp into main PurePhone repo 2020-03-24 15:55:32 +01:00
Adam Dobrowolski
abe6813ce6 EGD-3026 Wall Werror and Wextra added to project 2020-03-24 14:17:12 +01:00
Przemyslaw Brudny
8f92715951 [EDG-3019] Segger utils moved to git submodule 2020-03-23 18:37:37 +01:00
Radoslaw Wicik
a8573a404c Apply new style 2020-03-17 10:03:16 +01:00
Mateusz
3c12d2bfe8 WiP: Preparation to merge 2019-08-02 14:13:02 +02:00
Mateusz
0df92c22c7 WiP: Fixed error handling in decoder/encoder/Operation layer 2019-08-02 13:55:25 +02:00
Mateusz
655fe5fd06 WiP: mp3 decoder optimization 2019-08-01 15:43:32 +02:00
Mateusz
749c14c7c6 WiP: fixed unit tests
Small profile refactor
Fixed bugs
2019-08-01 13:06:57 +02:00
Mateusz
d3a76d8b99 WiP: new BSP layer for I2C, RT1051 driver for audiocodec 2019-07-29 19:49:43 +02:00
Mateusz
933854a704 WiP: added service-audio 2019-07-29 14:39:44 +02:00
Mateusz
43d794910c WiP: Added volume control API 2019-07-29 12:13:25 +02:00
Mateusz
30678c1ee8 WiP: Implementation of profiles switching logic 2019-07-25 22:53:57 +02:00
Mateusz
5b4719ed7c WiP: Profiles implementation, Recorder template, various fixes in BSP layer, extended BSP & module-audio API 2019-07-23 16:10:29 +02:00
Mateusz
fd17c1a0d9 WiP: module-audio template
Moved decoder layer from old NXPhone project
2019-07-22 15:06:25 +02:00