Fixed Point Attrafax - FAX solution for Switchfin |
|
|
|
Written by Administrator
|
Friday, 06 August 2010 08:03 |
It was a few weeks since we have been working on Attrafax as FAX solution for Switchfin.
Why we selected Attrafax? Well up to our knowledge we have two open source options SpanDSP and Attrafax. SpanDSP in my personal opinion is more advanced and optimized code from algorithmic view but as a result the code requires more time to be understood and modified. Attrafax from the other hand is very clean code. In addition it includes T38 gateway support so we decided to give it a try. Here I would like to say that we have not done comparison between those two packages in any way or shape and what I share is just our fillings having 1, 2 weeks touch of those FAX solutions. We would like to thank the authors of SpanDSP and Attrafax for there generosity sharing their work!!!
The first thing we saw when we put Attrafax was that it is not working on Blackfin. :) Well it took us few days to realize that Blackfin is crunching the floating point algos to slowly It was processing the 160 samples frame (20ms) for about 60ms.
It was clear that we need to rewrite the modem part of the code in fixed point. Initially we have optimized V21 receiver and we got the FAX packets DIS, DCS coming properly. So we decided to give it a try with the rest of the code. This where we spend those few weeks.
Now we have the critical parts of V21, V17, V29, V27 in fixed point arithmetic. Single V29 frame is processed for around 9ms now so eventually we can fit two FAX channels. There is still room for further optimizations but without big changes in the code I don't think we can achieve more than 4 FAX channels on 600MHz Blackfin. Fortunately we don't need that much in our application.
We have successfully tested fax termination in BR4 using the following test setup.
FAX machine --->ATA--(sip)-->BR4 Appliance -> tiff file Jason just told me that he had success with T38 stack and Zoiper client using IP02.
So things starting to look good :)
Stay tuned. Dimitar |