CUETools: fix profiles

This commit is contained in:
Grigory Chudov
2014-11-30 18:31:07 -05:00
parent cc3d921b8d
commit c671f200df
7 changed files with 132 additions and 10 deletions

View File

@@ -15,6 +15,19 @@ namespace CUETools.Codecs
public CUEToolsUDCList encoders;
public CUEToolsUDCList decoders;
public CUEToolsCodecsConfig(CUEToolsCodecsConfig src)
{
encoders = new CUEToolsUDCList(true);
foreach (var enc in src.encoders)
encoders.Add(enc.Clone());
decoders = new CUEToolsUDCList(false);
foreach (var dec in src.decoders)
decoders.Add(dec.Clone());
formats = new Dictionary<string, CUEToolsFormat>();
foreach (var fmt in src.formats)
formats.Add(fmt.Key, fmt.Value.Clone(this));
}
public CUEToolsCodecsConfig(List<Type> encs, List<Type> decs)
{
encoders = new CUEToolsUDCList(true);

View File

@@ -30,10 +30,21 @@
return "." + extension;
}
}
public CUEToolsFormat Clone(CUEToolsCodecsConfig cfg)
{
var res = this.MemberwiseClone() as CUEToolsFormat;
if (decoder != null) cfg.decoders.TryGetValue(decoder.extension, decoder.lossless, decoder.name, out res.decoder);
if (encoderLossy != null) cfg.encoders.TryGetValue(encoderLossy.extension, encoderLossy.lossless, encoderLossy.name, out res.encoderLossy);
if (encoderLossless != null) cfg.encoders.TryGetValue(encoderLossless.extension, encoderLossless.lossless, encoderLossless.name, out res.encoderLossless);
return res;
}
public override string ToString()
{
return extension;
}
public string extension;
public CUEToolsUDC encoderLossless;
public CUEToolsUDC encoderLossy;

View File

@@ -81,6 +81,13 @@ namespace CUETools.Codecs
type = dectype;
}
public CUEToolsUDC Clone()
{
var res = this.MemberwiseClone() as CUEToolsUDC;
if (settings != null) res.settings = settings.Clone();
return res;
}
public override string ToString()
{
return name;