naudio / NAudio

Audio and MIDI library for .NET
MIT License
5.37k stars 1.09k forks source link

WaveBuffer BufferCount is always zero #1111

Closed GundlackFlorian closed 5 months ago

GundlackFlorian commented 5 months ago

Hello,

I noticed that when i'm using WaveBuffer the [Type]BufferCount is always zero, i guess this isn't normal.

    private void WasapiCaptureOnDataAvailable( object? sender, WaveInEventArgs e )
    {
        var waveBuffer = new WaveBuffer( e.Buffer );
        Trace.WriteLine( $"BytesRecorded: {e.BytesRecorded}" );
        Trace.WriteLine( $"FloatBufferCount: {waveBuffer.FloatBufferCount}" );
        Trace.WriteLine( $"ByteBufferCount: {waveBuffer.ByteBufferCount}" );
    }

My output:

...
BytesRecorded: 21168
FloatBufferCount: 0
ByteBufferCount: 0
BytesRecorded: 17640
FloatBufferCount: 0
ByteBufferCount: 0
BytesRecorded: 21168
FloatBufferCount: 0
ByteBufferCount: 0
BytesRecorded: 17640
FloatBufferCount: 0
ByteBufferCount: 0
...

I'm using NAudio 2.2.1 .net 7.0 C# 11.0

GundlackFlorian commented 5 months ago

Ok if i set the number of bytes it works

    private void WasapiCaptureOnDataAvailable( object? sender, WaveInEventArgs e )
    {
        Trace.WriteLine( $"{e.BytesRecorded}" );
        var waveBuffer = new WaveBuffer( e.Buffer )
        {
            numberOfBytes = e.BytesRecorded
        };
        Trace.WriteLine($"{waveBuffer.FloatBufferCount}");
    }

Little bit weird that it can't be set in the ctor and that it is not specified in the doc/samples.