/* * private byte[] convertIEEE32bitFloatTo8bitPCMAndEncodeToMP3(WaveInEventArgs e) * { * byte[] recorded_buf = e.Buffer; * int recorded_length = e.BytesRecorded; * if(recorded_length == 0) * { * return null; * } * * //byte[] depthConv_buf = null; * //int depthConvBytes = -1; * * byte[] pcm16_buf = null; * int pcm16_len = -1; * * //byte[] pcm8_buf = null; * * byte[] mp3_buf = null; * try * { * //// 生データを再生可能なデータに変換 * var waveBufferResample = new BufferedWaveProvider(this._WaveIn.WaveFormat); * waveBufferResample.DiscardOnBufferOverflow = true; * waveBufferResample.ReadFully = false; // leave a buffer? * waveBufferResample.BufferLength = recorded_length; * var sampleStream = new WaveToSampleProvider(waveBufferResample); * * // Downsample to 8000 * var resamplingProvider = new WdlResamplingSampleProvider(sampleStream, RTPConfiguration.SamplesPerSecond); * * // Stereo to mono * var monoProvider = new StereoToMonoSampleProvider(resamplingProvider) * { * LeftVolume = 1f, * RightVolume = 1f * }; * * // Convert to 32bit float to 16bit PCM * var ieeeToPcm = new SampleToWaveProvider16(monoProvider); * * waveBufferResample.AddSamples(recorded_buf, 0, recorded_length); * * mp3_buf = SoundEncodeUtil.encodePCMtoMP3(ieeeToPcm); * * ////Convert 16bit PCM to 8bit PCM * //var depthConvertProvider = new WaveFormatConversionProvider(new WaveFormat(rtp_config.SamplesPerSecond, 8, 1), ieeeToPcm); * * //pcm16_len = recorded_length / (2 * 6 * 2); * //pcm16_buf = new byte[pcm16_len]; * //ieeeToPcm.Read(pcm16_buf, 0, pcm16_len); * //var depthConvertStream = new WaveFormatConversionStream(new WaveFormat(rtp_config.SamplesPerSecond, 8, 1), new RawSourceWaveStream(pcm16_buf, 0, pcm16_len, new WaveFormat(rtp_config.SamplesPerSecond, 16, 1))); * * //// データを源流から流す * //waveBufferResample.AddSamples(recorded_buf, 0, recorded_length); * * //int pcm8_len = pcm16_len / 2; * //pcm8_buf = new byte[pcm8_len]; * //depthConvertStream.Read(pcm8_buf, 0, pcm8_len); * * //mp3_buf = SoundEncodeUtil.encodePCMtoMP3(depthConvertProvider); * * * //var waveBufferResample = new BufferedWaveProvider(this._WaveIn.WaveFormat); * //waveBufferResample.AddSamples(recorded_buf, 0, recorded_length); * //mp3_buf = SoundEncodeUtil.encodePCMtoMP3(waveBufferResample); * * Console.WriteLine(Utils.getFormatedCurrentTime() + " converted 32bit float 64KHz stereo " + recorded_length.ToString() + " bytes to 16bit PCM 8KHz mono and encode it to mp3 compressed data " + mp3_buf.Length.ToString() + " bytes"); * } catch (Exception ex) * { * Console.WriteLine(ex); * Console.WriteLine("exit..."); * System.Windows.Forms.Application.Exit(); * } * * return mp3_buf; * } */ public void handleDataWithTCP(byte[] sdata_buf) { Console.WriteLine("call handleDataWithTcp"); if (!sdsock.IsConnected()) { return; } // こういうケースがあるようだ if (sdata_buf.Length == 0) { return; } Console.WriteLine("call SoundUtils.ToRTPPacket"); RTPPacket rtp = SoundUtils.ToRTPPacket(sdata_buf, config); Console.WriteLine("call sdsock.SendRTPPacket"); sdsock.SendRTPPacket(rtp, config.compress, GlobalConfiguration.SamplesPerSecond, config.BitsPerSample, config.Channels, config.isConvertMulaw); }