mirror of
https://github.com/badaix/snapcast.git
synced 2025-05-31 09:56:16 +02:00
Fix writing "PCM device not found" for file player
This commit is contained in:
parent
376ca7ff9e
commit
c88b2d170b
3 changed files with 22 additions and 2 deletions
|
@ -33,6 +33,19 @@ namespace player
|
||||||
static constexpr auto LOG_TAG = "FilePlayer";
|
static constexpr auto LOG_TAG = "FilePlayer";
|
||||||
static constexpr auto kDefaultBuffer = 50ms;
|
static constexpr auto kDefaultBuffer = 50ms;
|
||||||
|
|
||||||
|
static constexpr auto kDescription = "Raw PCM file output";
|
||||||
|
|
||||||
|
std::vector<PcmDevice> FilePlayer::pcm_list(const std::string& parameter)
|
||||||
|
{
|
||||||
|
auto params = utils::string::split_pairs(parameter, ',', '=');
|
||||||
|
string filename;
|
||||||
|
if (params.find("filename") != params.end())
|
||||||
|
filename = params["filename"];
|
||||||
|
if (filename.empty())
|
||||||
|
filename = "stdout";
|
||||||
|
return {PcmDevice{0, filename, kDescription}};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
FilePlayer::FilePlayer(boost::asio::io_context& io_context, const ClientSettings::Player& settings, std::shared_ptr<Stream> stream)
|
FilePlayer::FilePlayer(boost::asio::io_context& io_context, const ClientSettings::Player& settings, std::shared_ptr<Stream> stream)
|
||||||
: Player(io_context, settings, stream), timer_(io_context), file_(nullptr)
|
: Player(io_context, settings, stream), timer_(io_context), file_(nullptr)
|
||||||
|
|
|
@ -40,6 +40,9 @@ public:
|
||||||
void start() override;
|
void start() override;
|
||||||
void stop() override;
|
void stop() override;
|
||||||
|
|
||||||
|
/// List the dummy file PCM device
|
||||||
|
static std::vector<PcmDevice> pcm_list(const std::string& parameter);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void requestAudio();
|
void requestAudio();
|
||||||
void loop();
|
void loop();
|
||||||
|
|
|
@ -59,6 +59,8 @@ static constexpr auto LOG_TAG = "Snapclient";
|
||||||
|
|
||||||
PcmDevice getPcmDevice(const std::string& player, const std::string& parameter, const std::string& soundcard)
|
PcmDevice getPcmDevice(const std::string& player, const std::string& parameter, const std::string& soundcard)
|
||||||
{
|
{
|
||||||
|
LOG(DEBUG, LOG_TAG) << "Trying to get PCM device for player: " << player << ", parameter: "
|
||||||
|
<< ", card: " << soundcard << "\n";
|
||||||
#if defined(HAS_ALSA) || defined(HAS_PULSE) || defined(HAS_WASAPI)
|
#if defined(HAS_ALSA) || defined(HAS_PULSE) || defined(HAS_WASAPI)
|
||||||
vector<PcmDevice> pcm_devices;
|
vector<PcmDevice> pcm_devices;
|
||||||
#if defined(HAS_ALSA)
|
#if defined(HAS_ALSA)
|
||||||
|
@ -73,6 +75,8 @@ PcmDevice getPcmDevice(const std::string& player, const std::string& parameter,
|
||||||
if (player == player::WASAPI)
|
if (player == player::WASAPI)
|
||||||
pcm_devices = WASAPIPlayer::pcm_list();
|
pcm_devices = WASAPIPlayer::pcm_list();
|
||||||
#endif
|
#endif
|
||||||
|
if (player == player::FILE)
|
||||||
|
return FilePlayer::pcm_list(parameter).front();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
int soundcardIdx = cpt::stoi(soundcard);
|
int soundcardIdx = cpt::stoi(soundcard);
|
||||||
|
@ -386,8 +390,8 @@ int main(int argc, char** argv)
|
||||||
#if defined(HAS_ALSA)
|
#if defined(HAS_ALSA)
|
||||||
if (settings.player.pcm_device.idx == -1)
|
if (settings.player.pcm_device.idx == -1)
|
||||||
{
|
{
|
||||||
cout << "PCM device \"" << pcm_device << "\" not found\n";
|
LOG(ERROR, LOG_TAG) << "PCM device \"" << pcm_device << "\" not found\n";
|
||||||
// exit(EXIT_FAILURE);
|
// exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue