On 2/24/2020 5:14 PM, Mark Brown wrote:
On Mon, Feb 24, 2020 at 11:28:57AM +0000, Jon Hunter wrote:
On 21/02/2020 16:55, Mark Brown wrote:
The ideal thing in a component model would be to represent those sample rate convertors directly to usrspace so the routing and rewriting is explicit.
I assume that it would be OK for the sample rate converter itself to expose mixer controls to configure its input and output rates so the user could configure as needed?
I don't think so, I'd not expect the individual drivers to be doing anything user visible here - if we know what a digital transformation looks like the framework should be offering anything that's needed to users (and hiding controls that don't have any practical control in a given system).
Are you suggesting to have some alternate way of users configuring sample rates (and other params) and not use mixer control method?
This is a typical use case we see, - [stream-1] Lets say high resolution audio is playing (96kHz, 24-bit, stereo) - [stream-2] Randomly system notifications of small durations come (48kHz, 16-bit, stereo) The requirement is, both streams should be mixed and played.
Tegra Audio HW has Mixer module for mixing multiple streams. In above case, stream-2 requires upsampling to 96kHz (employ SRC) and 24-bit. Then mix with stream1 and play. This needs to be configured at runtime. In another session, mixing for 192kHz and 48kHz might be required with the same audio path. Idea was to allow users to setup their custom path for specific audio applications. In the current series, I am focussing on I/O modules (where overrides do not demonstrate the above use case) and does not include other HW accelerators that Tegra Audio HW offers. Things would be more complicated when user wants to use multiplexers and demultiplexers. For simple use cases overrides are not used.
Is there a better way for user to configure custom audio paths?
Is there any *need* for these to be user configurable? What's normally happening at the minute is that either the external DAIs are fixed configuration and the DSP just converts everything or there's no format conversion done and things get passed through.
I can see that in most cases there are a finite set of configurations that the end user may use. However, we would like to make the configuration flexible as possible and this also allow us to test lots of different configurations for verification purposes as well.
Internal testing often requires things that can't be exposed to users, the extreme examples are things like battery chargers with health and safety issues if the full range of control is available.