Files
sfml-streamer/producer.cpp
2026-06-26 22:53:15 +03:00

92 lines
1.9 KiB
C++

#include "Player.h"
#include <iostream>
#include <string>
namespace {
void printUsage() {
std::cout
<< "Usage:\n"
<< " sender file <audio-file> <port> <ip> [ip ...] [--no-local]\n"
<< " sender mic <port> <ip> [ip ...] [--no-local]\n";
}
bool configureTargets(Player& player, int startIndex, int argc, char** argv) {
bool hasTarget = false;
bool localPlayback = true;
for (int i = startIndex; i < argc; ++i) {
const std::string arg = argv[i];
if (arg == "--no-local") {
localPlayback = false;
continue;
}
player.addAddress(arg);
hasTarget = true;
}
if (!hasTarget) {
return false;
}
player.setLocalPlayback(localPlayback);
return true;
}
}
int main(int argc, char** argv) {
if (argc < 2) {
printUsage();
return 1;
}
const std::string mode = argv[1];
if (mode == "file") {
if (argc < 5) {
printUsage();
return 1;
}
Player player(std::stoi(argv[3]));
if (!configureTargets(player, 4, argc, argv)) {
printUsage();
return 1;
}
player.setFilePath(argv[2]);
player.playFile();
std::cout << "Press ENTER to stop\n";
std::cin.get();
player.stopPlayback();
}
else if (mode == "mic") {
if (argc < 4) {
printUsage();
return 1;
}
Player player(std::stoi(argv[2]));
if (!configureTargets(player, 3, argc, argv)) {
printUsage();
return 1;
}
if (!player.playMic()) {
return 1;
}
std::cout << "Press ENTER to stop\n";
std::cin.get();
player.stopPlayback();
}
else {
std::cerr << "Unknown mode\n";
printUsage();
return 1;
}
return 0;
}