Date: September 30, 1998
Name of group: Phonedation
Team members: Kiri Wagstaff, Wes Weimer
Task: Forward Error Correction and Adaptive Playout
Description:
Our group has two teams working on the data exchange component, so we divided
that component into two separate tasks. We will be handling adaptive playout
algorithms and forward error correction, while Yu and Vincent will deal with
the audio encoding and packetization.
Our first goal is to implement an adaptive playout mechanism for the receiver
end of the telephony system. This will involve testing different versions of
playout algorithms. Secondly, we want to collect data on different forward
error correction schemes in order to fine-tune our data exchange system.
Ideally, we would like an adaptive FEC scheme, which requires feedback from
the receiver to the sender.
Pseudocode:
EstablishConnection(port, input, output, destination)
{
attempt_UDP_connection(destination, port);
while (unsuccessful)
{
wait_for_connection(port);
if !connection_from(destination)
reject;
}
// This is the thread version (see below).
spawn(encode_and_send_process); // Yu and Vincent handle this
spawn(receive_and_playout_process);
}
receive_and_playout_process()
{
while(event)
{
if (event == incoming_packet)
decode_packet;
determine_location_in_buffer(sample); // uses adaptive playout algorithm
store_sample_in_buffer;
decode_FEC_information;
for each FEC sample
if (buffer_has_higher_quality_version)
discard_sample;
else
store_sample_in_buffer;
if (event == time_to_play_sample)
if (sample_in_buffer)
play_sample;
else
take_action_determined_by_adaptive_playout_algorithm;
}
}
SetParameter(parameter, value)
{
update_paramater(value);
}
Interface provided to other teams:
- EstablishConnection(port, input, output, destination)
- port : port number
- input : input source for packets sent on this connection
- output : packets sent on this connection go to this output
- destination : remote host
- If A calls this function with port p and destination B, then
B must also call this function with port p and destination A. The
function is blocking and will either spawn a new thread to handle the
data exchange, or require that an update function be called
periodically.
- SetParameter(parameter, value)
- parameter : packet timelength, base packet encoding quality,
spike detection parameters
Interface needed from other teams:
We do not require any functionality from other components.
Schedule:
- 9/28-10/4 : Resolve behavior of EstablishConnection by consultation with
other components in our group.
- 10/5-10/25 : (Three weeks) Write basic code for forward error correction
and adaptive playout algorithms. Confer with the other group in component 1
to ensure that the packet format we're using can support adaptive FEC.
- 10/26-11/22 : (Four weeks) Network measurements : round-trip packet
times, packet losses, etc. Determine how to measure quality of playback, so
we can analyze the results of different approaches. Verify the assumptions in
the adaptive playout algorithm that characterize internet traffic (are losses
bursty? are spikes the biggest concern for data loss?), or modify the
algorithm to handle the characterization we find.
- 11/23-12/4: (Two weeks) Either implement an adaptive FEC scheme, or allow
selection of an appropriate scheme based on the user's description of the
current network state.
Needed from the course staff:
- Reflectors set up to allow measurements over long-distance paths.
References:
- Meeting with S. Keshav on goals for this component.
- Ramachandran Ramjee, Jim Kurose, Don Towsley, Henning Schulzrinne,
"Adaptive Playout Mechanisms for Packetized Audio Applications in
Wide-Area Networks", Proceedings of IEEE INFOCOMM '94, April 1994.
- Sue B. Moon, Jim Kurose, and Don Towsley, "Packet Audio Playout Delay
Adjustment: Performance Bounds and Algorithms", to appear on
ACM/Springer Multimedia Systems.
- Vicky Hardman, Martina Angela Sasse, Mark Handley, Anna Watson, "Reliable
Audio for Use over the Internet", Proceedings of INET '95.
- Matthew Podolsky, Cynthia Romer, Steven MaCanna, "Simulation of FEC-Based
Error Control for Packet Audio on the Internet", Proceedings of IEEE
INFOCOMM '98.
- Jean-C. Bolot, Andres Vega-Garcia, "The Case for FEC-Based Error
Control for Packet Audio in the Internet", ACM Multimedia Systems,
1997.
- Jean-C. Bolot, Andres Vega-Garcia, "Control Mechanisms for Packet
Audio in the Internet", Proceedings of IEEE INFOCOMM '96.