looper/backends/playback/gme/gme_backend.hpp
Zachary Hall a0c44bcf24
Some checks failed
Build / build-gentoo (push) Failing after 17s
Build / download-system-deps (push) Successful in 3m5s
Build / get-source-code (push) Successful in 9m6s
Build / build-deb (push) Failing after 5m15s
Build / build-appimage (push) Successful in 4m27s
Build / build-android (push) Failing after 2m52s
Build / build-windows (push) Failing after 7m11s
Add support for macOS
- Remove unused OpenMP from playback backend
  - Fix update_assets on macOS
  - Add support for Objective C++ on macOS
  - Add macOS-specific code into the Dear ImGui backend
  - Add macOS .app packaging
  - Add support for global menus, and include support for macOS global menu into the Dear ImGui backend
2025-02-09 10:11:30 -08:00

47 lines
1.5 KiB
C++

#pragma once
#include "playback_backend.hpp"
#include <cstdint>
#include <stddef.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <streambuf>
#include <vector>
#include <util.hpp>
#include <SDL.h>
#include <gme/gme.h>
#include "file_backend.hpp"
class GmeBackend : public PlaybackBackend {
File *file;
Fifo<int16_t> audio_buf;
Music_Emu *gme_backend;
int streamidx;
int loop_len, loop_start;
std::map<std::string, int> voices;
std::optional<int> get_voice_id(std::string path);
public:
uint64_t get_min_samples() override;
std::optional<uint64_t> get_max_samples() override;
inline std::string get_id() override {
return "gme";
}
inline std::string get_name() override {
return "Game Music Emu";
}
void add_licenses() override;
std::vector<Property> get_property_list() override;
bool set(std::string path, google::protobuf::Any value) override;
std::optional<google::protobuf::Any> get(std::string path) override;
std::optional<google::protobuf::Any> reset(std::string path) override;
void seek_samples(uint64_t position) override;
void load(const char *filename) override;
void switch_stream(int idx) override;
void cleanup() override;
int get_stream_idx() override;
size_t render(void *buf, size_t maxlen) override;
uint64_t get_position_samples() override;
inline uint64_t get_length_samples() override {
return length;
}
inline ~GmeBackend() override { }
};