Hello Erik,
> My proposal:
> Add 'mixer' layer which will provide the following features to improve
> usability:
I started work on "proof of concept" for very similar idea. I didn't
finished it yet. But I have a few points which I would like to mention
and discuss it there:
1) There are at least four points where is RTP processed to audio - once
for "audio player" and once for "audio save". GTK and Qt UI branch has
own code for it => four places.
I analysed it and found that even Qt code is derived from GTK, it is
slightly different. On the other hand, the main difference is between
code in audio player and audio save in each branch.
Therefore my idea is to extract RTP audio processing code to some kind
of library.
I made part of work on it and found that there is one big issue - GTK
code "idea" is very different to Qt code. Up to now I found no way how
to prepare API for such library which can be used from GTK and Qt code
in parallel.
The question is whether it makes sense to update GTK code when there is
long term idea to leave it? If so, there is much more work than just for Qt.
2) Audio player has multiple ways how to decode RTP - with dejitter
buffer, based on timestamp, uninterrupted mode. But save audio has no
such option and it is very complicated to change it. If it will be
changed, there will be again two places with same options and code.
My idea is to move "save audio" to "audio play" dialog - it will share
common options and control.
BTW it makes to me more sense to control all RTP audio related tasks
from one place.
3) When I analysed GTK and Qt code, I found that there is main
difference between it. GTK stores all RTP data in memory, Qt extract it
to file. Playing is based on extracted data then.
As consequence of it, there are many C structures in GTK/Qt code which
are same named, but slightly different. And there are elements in
structures which are shared but used by GTK or Qt code only.
I think that there must be consensus about storing RTP data during media
processing before any library/mixer should be made. Based on this, code
should be cleared.
Sincerely yours,
Jirka Novak