On 20/09/2019 11:50, Marc Gonzalez wrote:
One more concern popped up: if the audio stream changes mid-capture (for example, a different TV program uses different audio settings), then I would detect this in the eARC receiver, but it's not clear (to me) how to propagate the info to the DSP...
I'm not even sure when the HW params actually get applied... Is it for SNDRV_PCM_IOCTL_PREPARE? SNDRV_PCM_IOCTL_START?
I enabled debug logs in the sound layer: echo "file sound/* +fpm" > /sys/kernel/debug/dynamic_debug/control
and sprinkled dump_stack() in several driver callbacks.
When I run 'tinycap /tmp/earc.wav -t 10 -r 44100 -b 32' I see the open/SyS_openat call and the capture ioctl call which together generate calls to 1) dpcm_fe_dai_open 2) dpcm_fe_dai_hw_params 3) dpcm_fe_dai_prepare 4) dpcm_fe_dai_trigger
But everything looks "synchronous", as in "reaction to user-space commands". I don't see how "asynchronous" events are dealt with, such as the stream params changing while a capture is active?
Regards.