aboutsummaryrefslogtreecommitdiff
path: root/include/AudioPlayer.hpp
blob: 22c3be8f519ffdaa65cee22cdb4ee2c227fadd19 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#pragma once

#include <thread>

namespace gsr {
    // Only plays raw stereo PCM audio in 48000hz in s16le format.
    // Use this command to convert an audio file (input.wav) to a format playable by this class (output.pcm):
    // ffmpeg -i input.wav -f s16le -acodec pcm_s16le -ar 48000 output.pcm
    class AudioPlayer {
    public:
        AudioPlayer() = default;
        ~AudioPlayer();
        AudioPlayer(const AudioPlayer&) = delete;
        AudioPlayer& operator=(const AudioPlayer&) = delete;

        bool play(const char *filepath);
    private:
        std::thread thread;
        bool stop_playing_audio = false;
        int audio_file_fd = -1;
    };
}