public override void run() { AudioData obj = this.audio; for (;;) { try { System.Threading.Monitor.Enter(obj); try { Object.instancehelper_wait(this.audio); AudioFormat audioFormat = this.audio.getAudioFormat(); short[] audioData = this.audio.getAudioData(); int num = Math.max(0, this.selectionStart); int num2 = this.selectionEnd; if (num2 == -1) { num2 = audioData.Length; } DataLine.Info info = new DataLine.Info(ClassLiteral <SourceDataLine> .Value, audioFormat); this.line = (SourceDataLine)AudioSystem.getLine(info); this.line.open(audioFormat); this.line.start(); byte[] array = new byte[2]; int num3 = num; while (num3 < num2 && num3 < audioData.Length) { Utils.toBytes(audioData[num3], array, false); this.line.write(array, 0, array.Length); num3++; } this.line.drain(); this.line.close(); this.line = null; System.Threading.Monitor.Exit(obj); } catch (System.Exception ex) { Throwable.instancehelper_printStackTrace(ex); break; } continue; } catch (System.Exception ex3) { Throwable.instancehelper_printStackTrace(ex3); } break; } try { System.Threading.Monitor.Exit(obj); } catch (System.Exception ex8) { Throwable.instancehelper_printStackTrace(ex8); } }
public override void initialize() { base.initialize(); this.audioList = new LinkedBlockingQueue(); DataLine.Info info = new DataLine.Info(ClassLiteral <TargetDataLine> .Value, this.desiredFormat); if (!AudioSystem.isLineSupported(info)) { this.logger.info(new StringBuilder().append(this.desiredFormat).append(" not supported").toString()); AudioFormat nativeAudioFormat = DataUtil.getNativeAudioFormat(this.desiredFormat, this.getSelectedMixer()); if (nativeAudioFormat == null) { this.logger.severe("couldn't find suitable target audio format"); } else { this.finalFormat = nativeAudioFormat; this.doConversion = AudioSystem.isConversionSupported(this.desiredFormat, nativeAudioFormat); if (this.doConversion) { this.logger.info(new StringBuilder().append("Converting from ").append(this.finalFormat.getSampleRate()).append("Hz to ").append(this.desiredFormat.getSampleRate()).append("Hz").toString()); } else { this.logger.info(new StringBuilder().append("Using native format: Cannot convert from ").append(this.finalFormat.getSampleRate()).append("Hz to ").append(this.desiredFormat.getSampleRate()).append("Hz").toString()); } } } else { this.logger.info(new StringBuilder().append("Desired format: ").append(this.desiredFormat).append(" supported.").toString()); this.finalFormat = this.desiredFormat; } }
private TargetDataLine getAudioLine() { if (this.audioLine != null) { return(this.audioLine); } try { this.logger.info(new StringBuilder().append("Final format: ").append(this.finalFormat).toString()); DataLine.Info info = new DataLine.Info(ClassLiteral <TargetDataLine> .Value, this.finalFormat); Mixer selectedMixer = this.getSelectedMixer(); if (selectedMixer == null) { this.audioLine = (TargetDataLine)AudioSystem.getLine(info); } else { this.audioLine = (TargetDataLine)selectedMixer.getLine(info); } this.audioLine.addLineListener(new Microphone_1(this)); } catch (LineUnavailableException ex) { this.logger.severe(new StringBuilder().append("microphone unavailable ").append(Throwable.instancehelper_getMessage(ex)).toString()); } return(this.audioLine); }
public RawRecorder(AudioFormat audioFormat) { this.@lock = new object(); this.inFormat = audioFormat; this.outFormat = audioFormat; DataLine.Info info = new DataLine.Info(ClassLiteral <TargetDataLine> .Value, this.inFormat); if (!AudioSystem.isLineSupported(info)) { this.downsample = true; this.inFormat = new AudioFormat(44100f, 16, 1, true, false); info = new DataLine.Info(ClassLiteral <TargetDataLine> .Value, this.inFormat); if (!AudioSystem.isLineSupported(info)) { string text = new StringBuilder().append("Unsupported format: ").append(audioFormat).toString(); throw new LineUnavailableException(text); } } this.microphone = (TargetDataLine)AudioSystem.getLine(info); this.microphone.open(audioFormat, this.microphone.getBufferSize()); }
private bool read(int codecType, sceAtrac3plus.AtracFileInfo atracFileInfo) { codec = CodecFactory.getCodec(codecType); if (codec == null) { return(false); } int result = codec.init(atracFileInfo.atracBytesPerFrame, atracFileInfo.atracChannels, atracFileInfo.atracChannels, atracFileInfo.atracCodingMode); if (result < 0) { return(false); } AudioFormat audioFormat = new AudioFormat(44100, 16, atracFileInfo.atracChannels, true, false); DataLine.Info info = new DataLine.Info(typeof(SourceDataLine), audioFormat); try { mLine = (SourceDataLine)AudioSystem.getLine(info); mLine.open(audioFormat); } catch (LineUnavailableException) { return(false); } mLine.start(); inputOffset = atracFileInfo.inputFileDataOffset; inputPosition = inputOffset; inputBytesPerFrame = atracFileInfo.atracBytesPerFrame; channels = atracFileInfo.atracChannels; return(true); }