I have quite some experience with C programming, but I'm completely new to writing kernel or device drivers and I want to learn that. I have an idea to create a sort of 'microphone filter', which will receive the input from the microphone, then process it somehow (for example, increase the volume, etc) and then put the output as the output of the regular microphone device, so that all the programs that want to capture the input from the microphone, would get the sound, modified by the driver (the 'filter').
Now, as I already said, I'm completely new to all this and for now it's not very clear to me how it should be implemented. I guess I need to create a character device like /dev/dsp that I have, that will act as a mic? And maybe virtual_oss(8) should be utilized somehow?
So, I'd like to ask some help and advice from people who are experienced in things like that or similar subjects. Could you please help me to understand the overall process and explain how this functionality could be implemented (i.e. how can I 'capture' the microphone input and make the rest of the system 'think' that my output is the microphone output)? I'm not expecting to write the entire thing in the first place, my goal is to better understand the process in detail and, as a side effect, try to implement this model and practice more low-level programming.
Thank you!
Now, as I already said, I'm completely new to all this and for now it's not very clear to me how it should be implemented. I guess I need to create a character device like /dev/dsp that I have, that will act as a mic? And maybe virtual_oss(8) should be utilized somehow?
So, I'd like to ask some help and advice from people who are experienced in things like that or similar subjects. Could you please help me to understand the overall process and explain how this functionality could be implemented (i.e. how can I 'capture' the microphone input and make the rest of the system 'think' that my output is the microphone output)? I'm not expecting to write the entire thing in the first place, my goal is to better understand the process in detail and, as a side effect, try to implement this model and practice more low-level programming.
Thank you!