AUI Framework  master
Cross-platform base for C++ UI apps
Loading...
Searching...
No Matches
AOggSoundStream.h
    1//
    2// Created by dervisdev on 2/9/2023.
    3//
    4
    5#pragma once
    6
    7#include "AUI/IO/AFileInputStream.h"
    8#include "AUI/Audio/ISoundInputStream.h"
    9#include "AUI/Util/APimpl.h"
   10#include "AUI/IO/AStrongByteBufferInputStream.h"
   11
   12class ISeekableInputStream;
   13class AUrl;
   14
   15class OggVorbis_File;
   16
   17
   22class API_AUI_AUDIO AOggSoundStream: public ISoundInputStream {
   23public:
   24    static constexpr ASampleFormat SAMPLE_FORMAT = ASampleFormat::I16;
   25
   26    explicit AOggSoundStream(aui::non_null<_unique<IInputStream>> stream);
   27
   28    AAudioFormat info() override;
   29
   30    size_t read(char* dst, size_t size) override;
   31
   32private:
   33    class OggVorbisFile {
   34    public:
   35        explicit OggVorbisFile(_unique<IInputStream> stream);
   36
   37        ~OggVorbisFile();
   38
   39        size_t read(char* dst, size_t size);
   40
   41        [[nodiscard]]
   42        OggVorbis_File& file() noexcept;
   43
   44        [[nodiscard]]
   45        const OggVorbis_File& file() const noexcept;
   46
   47    private:
   48        _unique<IInputStream> mSourceStream;
   49        aui::fast_pimpl<OggVorbis_File, 944> mFile;
   50    };
   51
   52    OggVorbisFile mVorbisFile;
   53};
AAudioFormat info() override
Get general info about sound stream.
size_t read(char *dst, size_t size) override
Reads up to size bytes from stream. Blocking (waiting for new data) is allowed.
Uniform Resource Locator implementation.
Definition AUrl.h:31
Represents an input stream.
Definition IInputStream.h:26
Represents an input stream with updating reading position.
Definition ISeekableInputStream.h:27
Base interface for representing sound input streams of different formats.
Definition ISoundInputStream.h:15
ASampleFormat
Sample formats supported for mixing.
Definition ASampleFormat.h:12
@ I16
Signed 16-bit integer.
Definition ASampleFormat.h:16
Audio format descriptor.
Definition AAudioFormat.h:13
Definition values.h:109