This is a toy project to see how one aspect of the technology really works.
There is some code to don on a PC and some code for an Android App. (Gingerbread version if possible).
In details: -- On the PC:
1. There is on the PC an audio file played with the same speed as the media-player, but transmitted via a specific UDP port.
The audio is being requested from an App. The data provided are in the RTP protocol.
2. There is the same audio played on a PC and outputted on the loudspeaker using a standard media player, but delayed by
a by few hundred milliseconds (say 100-3000msec)
There is a very simple android app (no fancy design necessary) with 2 interfaces
3. Audio Latency Measurement: An App is listening to audio from loud-speaker via the Apps microphone.
a. At the same time, the App is requesting the audio data (via RTP) from the PC (UDP) port.
. Note: The IP address of the PC has to be inserted manually into the App, but then saved for the next use.
One button should be there to delete a previous IP address
b. Once the data on the PC are requested by the App, the Media player is starting on the PC with a delayed of 100-3000 msec
to play the same audio file on the loudspeaker. (There is some easy way to set the delay-time outside the code – you can
c. Using cross correlation, the audio latency between the audio from the loudspeaker and the audio from the RTP audio stream
is measured (in milliseconds).
More information on this algorithm can be found in [url removed, login to view] ,
[url removed, login to view]
and using FFT: [url removed, login to view]
d. Once audio latency is determined, the Interface switches to the Audio Player interface.
4. Audio Player Interface: The Audio Player in the App is delaying the output of the audio-stream by the measured latency amount
and is then playing the RTP audio stream using a standard audio player in the App. (the audio from the loudspeaker and the
app should be in sync).