public static void Transcode(IFormat format, FormatData data, IFormat target, FormatData destination, ProgressIndicator progress) { if (target.CanRemux(format)) { target.Remux(format, data, destination, progress); } else if (target.Writable && format.Readable) { TranscodeOnly(format, data, target, destination, progress); } else { throw new NotSupportedException(); } }