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:

Interface needed from other teams:

We do not require any functionality from other components.

Schedule:

Needed from the course staff:

References:

  1. Meeting with S. Keshav on goals for this component.
  2. 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.
  3. Sue B. Moon, Jim Kurose, and Don Towsley, "Packet Audio Playout Delay Adjustment: Performance Bounds and Algorithms", to appear on ACM/Springer Multimedia Systems.
  4. Vicky Hardman, Martina Angela Sasse, Mark Handley, Anna Watson, "Reliable Audio for Use over the Internet", Proceedings of INET '95.
  5. Matthew Podolsky, Cynthia Romer, Steven MaCanna, "Simulation of FEC-Based Error Control for Packet Audio on the Internet", Proceedings of IEEE INFOCOMM '98.
  6. Jean-C. Bolot, Andres Vega-Garcia, "The Case for FEC-Based Error Control for Packet Audio in the Internet", ACM Multimedia Systems, 1997.
  7. Jean-C. Bolot, Andres Vega-Garcia, "Control Mechanisms for Packet Audio in the Internet", Proceedings of IEEE INFOCOMM '96.