Refactor StreamSessionConnectInfo

This commit is contained in:
Florian Märkl 2019-08-16 18:14:15 +02:00
commit 8d8b756df4
No known key found for this signature in database
GPG key ID: 125BC8A5A6A1E857
4 changed files with 26 additions and 21 deletions

View file

@ -46,8 +46,8 @@ struct StreamSessionConnectInfo
uint32_t log_level_mask;
QString log_file;
QString host;
QString regist_key;
QString morning;
QByteArray regist_key;
QByteArray morning;
ChiakiConnectVideoProfile video_profile;
};

View file

@ -95,12 +95,23 @@ int main(int argc, char *argv[])
connect_info.log_file = CreateLogFilename();
connect_info.host = host;
connect_info.regist_key = parser.value(regist_key_option);
connect_info.morning = parser.value(morning_option);
chiaki_connect_video_profile_preset(&connect_info.video_profile,
CHIAKI_VIDEO_RESOLUTION_PRESET_720p,
CHIAKI_VIDEO_FPS_PRESET_30);
connect_info.regist_key = parser.value(regist_key_option).toUtf8();
if(connect_info.regist_key.length() > sizeof(ChiakiConnectInfo::regist_key))
{
printf("Given regist key is too long.\n");
return 1;
}
connect_info.regist_key += QByteArray(sizeof(ChiakiConnectInfo::regist_key) - connect_info.regist_key.length(), 0);
connect_info.morning = QByteArray::fromBase64(parser.value(morning_option).toUtf8());
if(connect_info.morning.length() != sizeof(ChiakiConnectInfo::morning))
{
printf("Given morning has invalid size (expected %llu)", (unsigned long long)sizeof(ChiakiConnectInfo::morning));
return 1;
}
chiaki_connect_video_profile_preset(&connect_info.video_profile, settings.GetResolution(), settings.GetFPS());
if(connect_info.regist_key.isEmpty() || connect_info.morning.isEmpty())
parser.showHelp(1);
@ -142,9 +153,7 @@ int RunMain(QApplication &app, Settings *settings)
int RunStream(QApplication &app, const StreamSessionConnectInfo &connect_info)
{
StreamWindow window(connect_info);
window.resize(connect_info.video_profile.width, connect_info.video_profile.height);
window.show();
app.setQuitOnLastWindowClosed(true);
return app.exec();
}

View file

@ -50,23 +50,17 @@ StreamSession::StreamSession(const StreamSessionConnectInfo &connect_info, QObje
chiaki_connect_info.host = host_str.constData();
chiaki_connect_info.video_profile = connect_info.video_profile;
QByteArray auth_str = connect_info.regist_key.toUtf8();
size_t auth_len = auth_str.length();
if(auth_len > sizeof(chiaki_connect_info.regist_key))
auth_len = sizeof(chiaki_connect_info.regist_key);
memcpy(chiaki_connect_info.regist_key, auth_str.constData(), auth_len);
if(auth_len < sizeof(chiaki_connect_info.regist_key))
memset(chiaki_connect_info.regist_key + auth_len, 0, sizeof(chiaki_connect_info.regist_key) - auth_len);
if(connect_info.regist_key.size() != sizeof(chiaki_connect_info.regist_key))
throw ChiakiException("RegistKey invalid");
memcpy(chiaki_connect_info.regist_key, connect_info.regist_key.constData(), sizeof(chiaki_connect_info.regist_key));
size_t morning_size = sizeof(chiaki_connect_info.morning);
QByteArray morning_str = connect_info.morning.toUtf8();
ChiakiErrorCode err = chiaki_base64_decode(morning_str.constData(), morning_str.length(), chiaki_connect_info.morning, &morning_size);
if(err != CHIAKI_ERR_SUCCESS || morning_size != sizeof(chiaki_connect_info.morning))
if(connect_info.morning.size() != sizeof(chiaki_connect_info.morning))
throw ChiakiException("Morning invalid");
memcpy(chiaki_connect_info.morning, connect_info.morning.constData(), sizeof(chiaki_connect_info.morning));
memset(&keyboard_state, 0, sizeof(keyboard_state));
err = chiaki_session_init(&session, &chiaki_connect_info, log.GetChiakiLog());
ChiakiErrorCode err = chiaki_session_init(&session, &chiaki_connect_info, log.GetChiakiLog());
if(err != CHIAKI_ERR_SUCCESS)
throw ChiakiException("Chiaki Session Init failed: " + QString::fromLocal8Bit(chiaki_error_string(err)));

View file

@ -35,6 +35,8 @@ StreamWindow::StreamWindow(const StreamSessionConnectInfo &connect_info, QWidget
grabKeyboard();
session->Start();
resize(connect_info.video_profile.width, connect_info.video_profile.height);
}
StreamWindow::~StreamWindow()