コード例 #1
0
        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);
            }
        }
コード例 #2
0
 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;
     }
 }
コード例 #3
0
 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);
 }
コード例 #4
0
        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());
        }
コード例 #5
0
        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);
        }