mirror of
https://git.sr.ht/~thestr4ng3r/chiaki
synced 2025-08-14 18:57:07 -07:00
Improve GUI CLI for streaming (#346)
This commit is contained in:
parent
03c82ea515
commit
e83cb04049
5 changed files with 57 additions and 25 deletions
|
@ -58,8 +58,9 @@ struct StreamSessionConnectInfo
|
|||
QByteArray morning;
|
||||
ChiakiConnectVideoProfile video_profile;
|
||||
unsigned int audio_buffer_size;
|
||||
bool fullscreen;
|
||||
|
||||
StreamSessionConnectInfo(Settings *settings, QString host, QByteArray regist_key, QByteArray morning);
|
||||
StreamSessionConnectInfo(Settings *settings, QString host, QByteArray regist_key, QByteArray morning, bool fullscreen);
|
||||
};
|
||||
|
||||
class StreamSession : public QObject
|
||||
|
|
|
@ -84,11 +84,14 @@ int real_main(int argc, char *argv[])
|
|||
|
||||
QStringList cmds;
|
||||
cmds.append("stream");
|
||||
cmds.append("list");
|
||||
#ifdef CHIAKI_ENABLE_CLI
|
||||
cmds.append(cli_commands.keys());
|
||||
#endif
|
||||
|
||||
parser.addPositionalArgument("command", cmds.join(", "));
|
||||
parser.addPositionalArgument("nickname", "Needed for stream command to get credentials for connecting. "
|
||||
"Use 'list' to get the nickname.");
|
||||
parser.addPositionalArgument("host", "Address to connect to (when using the stream command)");
|
||||
|
||||
QCommandLineOption regist_key_option("registkey", "", "registkey");
|
||||
|
@ -97,44 +100,69 @@ int real_main(int argc, char *argv[])
|
|||
QCommandLineOption morning_option("morning", "", "morning");
|
||||
parser.addOption(morning_option);
|
||||
|
||||
QCommandLineOption fullscreen_option("fullscreen", "Start window in fullscreen (only for use with stream command)");
|
||||
parser.addOption(fullscreen_option);
|
||||
|
||||
parser.process(app);
|
||||
QStringList args = parser.positionalArguments();
|
||||
|
||||
if(args.length() == 0)
|
||||
return RunMain(app, &settings);
|
||||
|
||||
if(args[0] == "list")
|
||||
{
|
||||
for(const auto &host : settings.GetRegisteredHosts())
|
||||
printf("Host: %s \n", host.GetPS4Nickname().toLocal8Bit().constData());
|
||||
return 0;
|
||||
}
|
||||
if(args[0] == "stream")
|
||||
{
|
||||
if(args.length() < 2)
|
||||
parser.showHelp(1);
|
||||
|
||||
QString host = args[1];
|
||||
//QString host = args[sizeof(args) -1]; //the ip is always the last param for stream
|
||||
QString host = args[args.size()-1];
|
||||
QByteArray morning;
|
||||
QByteArray regist_key;
|
||||
|
||||
if(parser.value(regist_key_option).isEmpty() || parser.value(morning_option).isEmpty())
|
||||
parser.showHelp(1);
|
||||
|
||||
QByteArray regist_key = parser.value(regist_key_option).toUtf8();
|
||||
if(regist_key.length() > sizeof(ChiakiConnectInfo::regist_key))
|
||||
if(parser.value(regist_key_option).isEmpty() && parser.value(morning_option).isEmpty())
|
||||
{
|
||||
printf("Given regist key is too long (expected size <=%llu, got %d)\n",
|
||||
(unsigned long long)sizeof(ChiakiConnectInfo::regist_key),
|
||||
regist_key.length());
|
||||
return 1;
|
||||
if(args.length() < 3)
|
||||
parser.showHelp(1);
|
||||
for(const auto &temphost : settings.GetRegisteredHosts())
|
||||
{
|
||||
if(temphost.GetPS4Nickname() == args[1])
|
||||
{
|
||||
morning = temphost.GetRPKey();
|
||||
regist_key = temphost.GetRPRegistKey();
|
||||
break;
|
||||
}
|
||||
printf("No configuration found for '%s'\n", args[1].toLocal8Bit().constData());
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
regist_key += QByteArray(sizeof(ChiakiConnectInfo::regist_key) - regist_key.length(), 0);
|
||||
|
||||
QByteArray morning = QByteArray::fromBase64(parser.value(morning_option).toUtf8());
|
||||
if(morning.length() != sizeof(ChiakiConnectInfo::morning))
|
||||
else
|
||||
{
|
||||
printf("Given morning has invalid size (expected %llu, got %d)\n",
|
||||
(unsigned long long)sizeof(ChiakiConnectInfo::morning),
|
||||
morning.length());
|
||||
printf("Given morning has invalid size (expected %llu)", (unsigned long long)sizeof(ChiakiConnectInfo::morning));
|
||||
return 1;
|
||||
regist_key = parser.value(regist_key_option).toUtf8();
|
||||
if(regist_key.length() > sizeof(ChiakiConnectInfo::regist_key))
|
||||
{
|
||||
printf("Given regist key is too long (expected size <=%llu, got %d)\n",
|
||||
(unsigned long long)sizeof(ChiakiConnectInfo::regist_key),
|
||||
regist_key.length());
|
||||
return 1;
|
||||
}
|
||||
regist_key += QByteArray(sizeof(ChiakiConnectInfo::regist_key) - regist_key.length(), 0);
|
||||
morning = QByteArray::fromBase64(parser.value(morning_option).toUtf8());
|
||||
if(morning.length() != sizeof(ChiakiConnectInfo::morning))
|
||||
{
|
||||
printf("Given morning has invalid size (expected %llu, got %d)\n",
|
||||
(unsigned long long)sizeof(ChiakiConnectInfo::morning),
|
||||
morning.length());
|
||||
printf("Given morning has invalid size (expected %llu)", (unsigned long long)sizeof(ChiakiConnectInfo::morning));
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
StreamSessionConnectInfo connect_info(&settings, host, regist_key, morning);
|
||||
|
||||
StreamSessionConnectInfo connect_info(&settings, host, regist_key, morning, parser.isSet(fullscreen_option));
|
||||
return RunStream(app, connect_info);
|
||||
}
|
||||
#ifdef CHIAKI_ENABLE_CLI
|
||||
|
|
|
@ -263,7 +263,7 @@ void MainWindow::ServerItemWidgetTriggered()
|
|||
}
|
||||
|
||||
QString host = server.GetHostAddr();
|
||||
StreamSessionConnectInfo info(settings, host, server.registered_host.GetRPRegistKey(), server.registered_host.GetRPKey());
|
||||
StreamSessionConnectInfo info(settings, host, server.registered_host.GetRPRegistKey(), server.registered_host.GetRPKey(), false);
|
||||
new StreamWindow(info);
|
||||
}
|
||||
else
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
|
||||
#define SETSU_UPDATE_INTERVAL_MS 4
|
||||
|
||||
StreamSessionConnectInfo::StreamSessionConnectInfo(Settings *settings, QString host, QByteArray regist_key, QByteArray morning)
|
||||
StreamSessionConnectInfo::StreamSessionConnectInfo(Settings *settings, QString host, QByteArray regist_key, QByteArray morning, bool fullscreen)
|
||||
: settings(settings)
|
||||
{
|
||||
key_map = settings->GetControllerMappingForDecoding();
|
||||
|
@ -41,6 +41,7 @@ StreamSessionConnectInfo::StreamSessionConnectInfo(Settings *settings, QString h
|
|||
this->regist_key = regist_key;
|
||||
this->morning = morning;
|
||||
audio_buffer_size = settings->GetAudioBufferSize();
|
||||
this->fullscreen = fullscreen;
|
||||
}
|
||||
|
||||
static void AudioSettingsCb(uint32_t channels, uint32_t rate, void *user);
|
||||
|
|
|
@ -38,6 +38,8 @@ StreamWindow::StreamWindow(const StreamSessionConnectInfo &connect_info, QWidget
|
|||
|
||||
try
|
||||
{
|
||||
if(connect_info.fullscreen)
|
||||
showFullScreen();
|
||||
Init();
|
||||
}
|
||||
catch(const Exception &e)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue