Skip to content

Commit 460c2c7

Browse files
committed
Update
1 parent 92c5d27 commit 460c2c7

File tree

4 files changed

+23
-18
lines changed

4 files changed

+23
-18
lines changed

TuneLab/App.axaml.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
using System.Threading.Tasks;
2222
using System.Threading;
2323
using System.IO.Pipes;
24+
using System.Reflection;
25+
using TuneLab.Audio.FFmpeg;
2426

2527
namespace TuneLab;
2628

@@ -48,7 +50,9 @@ public override void OnFrameworkInitializationCompleted()
4850
};
4951

5052
// init audio engine
51-
AudioUtils.Init(new NAudioCodec());
53+
// AudioUtils.Init(new NAudioCodec());
54+
AudioUtils.Init(new FFmpegCodec(Path.Combine(
55+
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)!, "ffmpeg")));
5256
AudioEngine.SampleRate.Value = Settings.SampleRate;
5357
AudioEngine.BufferSize.Value = Settings.BufferSize;
5458
if (!string.IsNullOrEmpty(Settings.AudioDriver)) AudioEngine.CurrentDriver.Value = Settings.AudioDriver;

TuneLab/Audio/FFmpeg/FFmpegCodec.cs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -188,18 +188,18 @@ public IAudioStream Decode(string path)
188188
return new FileDecoderStream(path);
189189
}
190190

191-
public void EncodeToWav(string path, float[] buffer, int samplingRate, int bitPerSample, int channelCount)
191+
public void EncodeToWav(string path, float[] buffer, int SampleRate, int bitPerSample, int channelCount)
192192
{
193-
WaveFormat waveFormat = new WaveFormat(samplingRate, 16, channelCount);
193+
WaveFormat waveFormat = new WaveFormat(SampleRate, 16, channelCount);
194194
using WaveFileWriter writer = new WaveFileWriter(path, waveFormat);
195195
var bytes = NAudioCodec.To16BitsBytes(buffer);
196196
writer.Write(bytes, 0, bytes.Length);
197197
}
198198

199-
public IAudioStream Resample(IAudioProvider input, int outputSamplingRate)
199+
public IAudioStream Resample(IAudioProvider input, int outputSampleRate)
200200
{
201-
return new ResampledAudioStream(input, outputSamplingRate);
202-
// return new NAudioCodec.NAudioResamplerStream(input, outputSamplingRate);
201+
return new ResampledAudioStream(input, outputSampleRate);
202+
// return new NAudioCodec.NAudioResamplerStream(input, outputSampleRate);
203203
}
204204

205205
private abstract class FIFOStream<T>
@@ -282,7 +282,7 @@ protected int Decode(T[] buf, int requiredSize)
282282

283283
private unsafe class FileDecoderStream : FIFOStream<byte>, IAudioStream
284284
{
285-
public int SamplingRate => _codecContext != null ? _codecContext->sample_rate : 0;
285+
public int SampleRate => _codecContext != null ? _codecContext->sample_rate : 0;
286286
public int ChannelCount => _codecContext != null ? _codecContext->ch_layout.nb_channels : 0;
287287
public int SamplesPerChannel => (int)_samples;
288288

@@ -612,18 +612,18 @@ private void CloseFile()
612612

613613
private unsafe class ResampledAudioStream : FIFOStream<byte>, IAudioStream
614614
{
615-
public int SamplingRate { get; }
615+
public int SampleRate { get; }
616616
public int ChannelCount { get; }
617617
public int SamplesPerChannel { get; }
618618

619-
public int InputSamplingRate { get; }
619+
public int InputSampleRate { get; }
620620

621621
public ResampledAudioStream(IAudioProvider input, int sampleRate)
622622
{
623-
SamplingRate = sampleRate;
623+
SampleRate = sampleRate;
624624
ChannelCount = input.ChannelCount;
625-
SamplesPerChannel = (int)((long)input.SamplesPerChannel * sampleRate / input.SamplingRate);
626-
InputSamplingRate = input.SamplingRate;
625+
SamplesPerChannel = (int)((long)input.SamplesPerChannel * sampleRate / input.SampleRate);
626+
InputSampleRate = input.SampleRate;
627627

628628
_provider = input;
629629
_cachedBuffer = new List<byte>();
@@ -699,8 +699,8 @@ private void OpenResampler()
699699
ffmpeg.av_channel_layout_default(&chLayout, ChannelCount);
700700

701701
ret = ffmpeg.swr_alloc_set_opts2(&swr, &chLayout, AVSampleFormat.AV_SAMPLE_FMT_FLT,
702-
SamplingRate, &chLayout,
703-
AVSampleFormat.AV_SAMPLE_FMT_FLT, InputSamplingRate, 0, null);
702+
SampleRate, &chLayout,
703+
AVSampleFormat.AV_SAMPLE_FMT_FLT, InputSampleRate, 0, null);
704704

705705
ffmpeg.av_channel_layout_uninit(&chLayout);
706706
}
@@ -734,7 +734,7 @@ private void OpenResampler()
734734
* ensuring that the output buffer will contain at least all the
735735
* converted input samples */
736736
_max_dst_nb_samples = _dst_nb_samples =
737-
ffmpeg.av_rescale_rnd(src_nb_samples, SamplingRate, InputSamplingRate, AVRounding.AV_ROUND_UP);
737+
ffmpeg.av_rescale_rnd(src_nb_samples, SampleRate, InputSampleRate, AVRounding.AV_ROUND_UP);
738738

739739
/* buffer is going to be directly written to a rawaudio file, no alignment */
740740
var dst_data = _dst_data;
@@ -793,8 +793,8 @@ private void CloseResampler()
793793
}
794794

795795
/* compute destination number of samples */
796-
_dst_nb_samples = ffmpeg.av_rescale_rnd(ffmpeg.swr_get_delay(swr_ctx, InputSamplingRate) +
797-
src_nb_samples, SamplingRate, InputSamplingRate,
796+
_dst_nb_samples = ffmpeg.av_rescale_rnd(ffmpeg.swr_get_delay(swr_ctx, InputSampleRate) +
797+
src_nb_samples, SampleRate, InputSampleRate,
798798
AVRounding.AV_ROUND_UP);
799799
if (_dst_nb_samples > _max_dst_nb_samples)
800800
{

TuneLab/Audio/NAudio/NAudioCodec.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public AudioInfo GetAudioInfo(string path)
3030
return new AudioInfo() { duration = reader.TotalTime.TotalSeconds };
3131
}
3232

33-
static byte[] To16BitsBytes(float[] data)
33+
public static byte[] To16BitsBytes(float[] data)
3434
{
3535
byte[] results = new byte[data.Length * 2];
3636
for (int i = 0; i < data.Length; i++)

TuneLab/TuneLab.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
<PackageReference Include="System.Text.RegularExpressions" Version="4.3.1" />
4242
<PackageReference Include="Tomlyn" Version="0.17.0" />
4343
<PackageReference Include="ZstdSharp.Port" Version="0.8.3" />
44+
<PackageReference Include="FFmpeg.AutoGen" Version="5.1.1" />
4445
</ItemGroup>
4546

4647
<ItemGroup>

0 commit comments

Comments
 (0)