*
* @see javax.sound.sampled.Mixer#getLine(javax.sound.sampled.Line.Info)
*/
public ASIODataLine getLine(Line.Info info) throws LineUnavailableException {
if (!isLineSupported(info))
throw new LineUnavailableException("Line not supported.");
boolean isInput;
if (SourceDataLine.class.isAssignableFrom(info.getLineClass()))
isInput = false;
else if (TargetDataLine.class.isAssignableFrom(info.getLineClass()))
isInput = true;
else
throw new LineUnavailableException("Line not supported.");
if (allLines == null)
createLines(isInput);
if (info instanceof ASIOLineInfo) {
ASIOLineInfo asioInfo = (ASIOLineInfo) info;
if (allLines.containsKey(asioInfo.toString()))
return allLines.get(asioInfo.toString());
}
/*
* boolean isInput;
* if(SourceDataLine.class.isAssignableFrom(info.getLineClass()))
* isInput = false; else
* if(TargetDataLine.class.isAssignableFrom(info.getLineClass()))
* isInput = true; else throw new LineUnavailableException("Line not
* supported.");
*/
for (Iterator<String> iter = allLines.keySet().iterator(); iter
.hasNext();) {
ASIODataLine line = allLines.get(iter.next());
ASIOLineInfo lineInfo = line.getLineInfo();
if (lineInfo.getChannelInfo().isInput() == isInput) {
AudioFormat[] formats = ((DataLine.Info) info).getFormats();
for (int i = 0; i < formats.length; i++) {
if (lineInfo.isFormatSupported(formats[i]))
return line;
}
}
}
throw new LineUnavailableException("Line not supported.");
}