private static SampleInfo EncodeToOGG(byte[] payload) { payload = payload == null ? new byte[0] : payload; if (payload == null || payload.Length == 0) { return(default(SampleInfo)); } using (var decoder = SoundProcessorFactory.CreateDecoder(new MemoryStream(payload))) { if (decoder == null) { return(default(SampleInfo)); } else if (!(decoder is OggDecoder)) { short[] buffer = new short[44100 * 2]; using (var sampleStream = new MemoryStream()) using (var encoder = new OggEncoder(sampleStream, 44100, 2)) { long read = 0; do { read = decoder.Read(buffer, buffer.Length); encoder.Write(buffer, read); }while (read > 0); encoder.Flush(); payload = sampleStream.ToArray(); return(encoder.SampleInfo); } } return(decoder.SampleInfo); } }