Skip to content

[FEAT] Implement Vorbis/OGG audio file decoding. #54

Open
@scoobery

Description

@scoobery

Requirements

  • I have searched the existing issues to ensure this bug has not already been reported.
  • I have provided a clear and concise description of the bug.
  • I have provided detailed steps to reproduce the bug.
  • I have included a minimal reproducible example (MRE) if applicable.
  • I have provided error messages and stack traces if applicable.
  • I have completed the environment information.

1. Describe the Bug

I've tried out a couple of different .ogg files, and each one has produced the same backend exception whenever I try to open a DataProvider to it.

An unhandled exception of type 'SoundFlow.Exceptions.BackendException' occurred in SoundFlow.dll: 'Unable to initialize decoder.'
at SoundFlow.Backends.MiniAudio.MiniAudioDecoder..ctor(Stream stream)
at SoundFlow.Backends.MiniAudio.MiniAudioEngine.CreateDecoder(Stream stream)
at SoundFlow.Providers.ChunkedDataProvider..ctor(Stream stream, Int32 chunkSize)
at SoundFlow.Providers.ChunkedDataProvider..ctor(String filePath, Int32 chunkSize)
at Program.Main() in /home/[OMITTED FOR PRIVACY[/Program.cs:line 12

2. Steps to Reproduce

  1. Use my MRE code from below in a new project.
  2. Drop an .ogg file into the project named "Example.ogg".
  3. Try running the program.

Using the MRE below with any .ogg file should reproduce the issue on version 1.1.0.
I've confirmed that this is happening on both my Windows 10 and Fedora Workstation 42 machines.

3. Expected Behavior

The data provider should open without throwing an exception.

4. Current Behavior

The data provider does not open, and throws an exception.

5. Minimal Reproducible Example (MRE)

using SoundFlow.Backends.MiniAudio;
using SoundFlow.Components;
using SoundFlow.Providers;

static class Program
{
    static void Main()
    {
        var _backend = new MiniAudioEngine(48000, SoundFlow.Enums.Capability.Playback);

        // This line below will throw an exception. The same thing happens when using a Stream.
        var provider = new ChunkedDataProvider("Example.ogg");
        var musicTrack = new SoundPlayer(provider);
        Mixer.Master.AddComponent(musicTrack);
        musicTrack.Play();

        Console.ReadLine();

        musicTrack.Stop();
        Mixer.Master.RemoveComponent(musicTrack);
    }
}

6. Error Messages and Stack Trace (if applicable)

An unhandled exception of type 'SoundFlow.Exceptions.BackendException' occurred in SoundFlow.dll: 'Unable to initialize decoder.'
   at SoundFlow.Backends.MiniAudio.MiniAudioDecoder..ctor(Stream stream)
   at SoundFlow.Backends.MiniAudio.MiniAudioEngine.CreateDecoder(Stream stream)
   at SoundFlow.Providers.ChunkedDataProvider..ctor(Stream stream, Int32 chunkSize)
   at SoundFlow.Providers.ChunkedDataProvider..ctor(String filePath, Int32 chunkSize)
   at Program.Main() in /home/[OMITTED FOR PRIVACY[/Program.cs:line 12

SoundFlow Version

1.1.0

.NET Version

.NET 9.0

Operating System

Windows 10, Fedora Workstation 42

Architecture

x64

Audio Backend Used (if known)

MiniAudio

Specific Audio Hardware (if relevant)

No response

8. Affected Components/Modules (if known)

StreamDataProvider, ChunkedDataProvider, AssetDataProvider, etc.

9. Impact

Crash

10. Possible Workaround (if known)

No response

11. Additional Context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    backlog-featureA new feature request that has been planned for future implementation; not yet started.enhancementNew feature or request

    Projects

    Status

    Feature Request

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions