I have an application which communicates with an external server (own proprietary server) via SIP. On startup, my application registers with this server as a predefined user. Server is also configured with announcement files per user, which are played when an INVITE is received for that user. Playing means that the server reads this file and generates RTP packets and sends it to the application who sends INVITE. There is a default announcement, which sends approx 3700 RTP packets over the network when an INVITE is received.
In the emulator environment (SDK 2.0), my application and the server are in the same local network and hence Ethereal running on my machine shows the same count of RTP packets received. The application communicates with the server for RTP packets over UDP. For audio playing, the app uses CMdaAudioOutputStream, whose WriteL() is called with a buffer containing the RTP payload. The app also maintains a count of the packets received, which is incremented just after the RecvFrom() call and a count of packets played, which is incremented in the MaoscPlayComplete() method if aError == KErrNone. Both these counts are same around 3500, which is less than the actual packets sent from the server. But the announcement is played with acceptable audio quality. The difference in the number of packets displayed in Ethereal and that received by my application could be due to the Socket Receive Buffer size (currently set to 256K).
I have also tested the same application on the Nokia 6600 over GPRS with the server having a real IP. Even in this case, the application is able to receive RTP packets and play them, but the audio quality is very poor. The application COUNTS show that only around 800 (out of 3700) packets are received and played by the application. This may be due to the GPRS network delay.
My questions are
1. Can I do something to increase the audio quality on the emulator? I mean, what changes do I need to do in my applications so that it receives all the packets?
2. How do I confirm that this huge loss of packets on the handset is completely due to the network delay? The socket receive buffer size could also be a problem. This value is set to 256K but I cannot increase this while running the application on the handset, as it may not actually allocate that much memory for my application socket queue.
3. I have installed this application using the same SIS file as that for 6600 on the Nokia 6620. The application runs properly, but the playing of audio is even worse than that of 6600. Is there any difference in the audio APIs for 6600 and 6620?
Please help me out. I was unable to find any document that mentions about differences between 6600 and 6620 (apart from the device specifications document).