You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
24 lines
1.2 KiB
24 lines
1.2 KiB
/* Воспроизведение собственного Opus-файла voice_file: worker декодирует PCM, SoundManager проигрывает. |
|
* Управление — в GUI-потоке; ready(duration,id) вызывается там же, 0 означает ошибку/busy. |
|
* cancelPending подавляет результат, не останавливая worker; уничтожение context также подавляет callback. |
|
* decodeOpusFile синхронно возвращает число кадров или -1; это отдельный API для worker. */ |
|
#pragma once |
|
|
|
#include <QString> |
|
#include <vector> |
|
#include <cstdint> |
|
#include <functional> |
|
class QObject; |
|
|
|
|
|
class VoicePlayer { |
|
public: |
|
static void playOpusFile(const QString& filePath, QObject* context, std::function<void(float, uint64_t)> ready); |
|
static void cancelPending(); |
|
static void stop(); |
|
static bool isPlaying(); |
|
static uint64_t playbackId(); |
|
static bool isPreparing(); |
|
static int decodeOpusFile(const QString& filePath, std::vector<int16_t>& outPcm, |
|
int& outSampleRate, int& outChannels, float& outDurationSec); |
|
};
|
|
|