Right, but I am afraid that complex userspace/kernelspace context changes breaks performance.This seems to be an interesting approach.Interesting but impossible to do for ioctl calls.
When the application does a ioctl(fd_of_mnt_video0,VIDIOC_G_FMT,&arg) for example, there is no way for the userspace helper to catch this ioctl.
The application could only open/read from the userspace helper's file /mnt/video0.
ioctl would still have to be done on the kernel device driver.
I thought also about a /proc interface for decompression algorithms (a helper would listen on a /proc file and write on another /proc file) but /proc is not designed for that kind of thing.
A separate library seems to be the simplest solution.
There are some ways for this to work. For example, you may create a
helper device for the daemon driver to bind, even requiring it to have
root permission.