Example #1
0
void
CodecList::GetAllowedFormats (OpalMediaFormatList & formats)
{
  OpalMediaFormat::GetAllRegisteredMediaFormats (formats);
  formats.RemoveNonTransportable ();

  OpalMediaFormatList black_list;

  black_list += "Linear-16-Stereo-48kHz";
  black_list += "LPC-10";
  black_list += "Speex*";
  black_list += "FECC*";
  black_list += "RFC4175*";

  // Blacklist NSE, since it is unused in ekiga and might create
  // problems with some registrars (such as Eutelia)
  black_list += "NamedSignalEvent";

  // Only keep OPUS in mono mode (for VoIP chat)
  // and with the maximum sample rate
  black_list += "Opus-8*";
  black_list += "Opus-12*";
  black_list += "Opus-16*";
  black_list += "Opus-24*";
  black_list += "Opus-48S";

  // Only include the VP8 RFC version of the capability
  black_list += "VP8-OM";

  // Purge blacklisted codecs
  formats -= black_list;

  // Only keep audio and video codecs
  for (int i = 0 ; i < formats.GetSize () ; i++) {
    if (formats[i].GetMediaType () != OpalMediaType::Audio ()
        && formats[i].GetMediaType () != OpalMediaType::Video ())
      formats -= formats[i];
  }

  PTRACE(4, "Ekiga\tAll available audio & video media formats: " << setfill (',') << formats);
}