private static CodecInfo TryCreateCodecInfo(int payloadFormatNumber) { CodecInfo codecInfo = null; switch (payloadFormatNumber) { case 0: codecInfo = new G711UCodecInfo(); break; case 2: codecInfo = new G726CodecInfo(32 * 1000); break; case 8: codecInfo = new G711ACodecInfo(); break; case 10: codecInfo = new PCMCodecInfo(44100, 16, 2); break; case 11: codecInfo = new PCMCodecInfo(44100, 16, 1); break; case 26: codecInfo = new MJPEGCodecInfo(); break; case 98: codecInfo = new MetadataCodecInfo(); break; case 105: codecInfo = new H264CodecInfo(); break; } return(codecInfo); }
private static CodecInfo TryCreateCodecInfo(string codecName, int samplesFrequency, int channels) { if (codecName == "JPEG") { return(new MJPEGCodecInfo()); } if (codecName == "H264") { return(new H264CodecInfo()); } bool isPcmu = codecName == "PCMU"; bool isPcma = codecName == "PCMA"; if (isPcmu || isPcma) { G711CodecInfo g711CodecInfo; if (isPcmu) { g711CodecInfo = new G711UCodecInfo(); } else { g711CodecInfo = new G711ACodecInfo(); } if (samplesFrequency != 0) { g711CodecInfo.SampleRate = samplesFrequency; } if (channels != 0) { g711CodecInfo.Channels = channels; } return(g711CodecInfo); } if (codecName == "L16" || codecName == "L8") { return(new PCMCodecInfo(samplesFrequency != 0 ? samplesFrequency : 8000, codecName == "L16" ? 16 : 8, channels != 0 ? channels : 1)); } if (codecName == "MPEG4-GENERIC") { return(new AACCodecInfo()); } if (codecName.Contains("726")) { int bitrate; if (codecName.Contains("16")) { bitrate = 16000; } else if (codecName.Contains("24")) { bitrate = 24000; } else if (codecName.Contains("32")) { bitrate = 32000; } else if (codecName.Contains("40")) { bitrate = 40000; } else { return(null); } var g726CodecInfo = new G726CodecInfo(bitrate); if (samplesFrequency != 0) { g726CodecInfo.SampleRate = samplesFrequency; } else if (channels != 0) { g726CodecInfo.Channels = channels; } return(g726CodecInfo); } return(null); }