Set Bitrate in LaunchSpec

This commit is contained in:
Florian Märkl 2019-08-21 13:36:10 +02:00
commit b9b4b7321b
5 changed files with 17 additions and 9 deletions

View file

@ -35,6 +35,7 @@ typedef struct chiaki_launch_spec_t
unsigned int width;
unsigned int height;
unsigned int max_fps;
unsigned int bw_kbps_sent;
} ChiakiLaunchSpec;
CHIAKI_EXPORT int chiaki_launchspec_format(char *buf, size_t buf_size, ChiakiLaunchSpec *launch_spec);

View file

@ -48,6 +48,7 @@ typedef struct chiaki_connect_video_profile_t
unsigned int width;
unsigned int height;
unsigned int max_fps;
unsigned int bitrate;
} ChiakiConnectVideoProfile;
typedef enum {

View file

@ -28,18 +28,18 @@ static const char launchspec_fmt[] =
"{"
"\"resolution\":"
"{"
"\"width\":%u,"
"\"height\":%u"
"\"width\":%u," // 0
"\"height\":%u" // 1
"},"
"\"maxFps\":%u,"
"\"maxFps\":%u," // 2
"\"score\":10"
"}"
"],"
"\"network\":{"
"\"bwKbpsSent\":2000,"
"\"bwKbpsSent\":%u," // 3
"\"bwLoss\":0.001000,"
"\"mtu\":%u," // 0
"\"rtt\":%u," // 1
"\"mtu\":%u," // 4
"\"rtt\":%u," // 5
"\"ports\":[53,2053]"
"},"
"\"slotId\":1,"
@ -73,7 +73,7 @@ static const char launchspec_fmt[] =
"\"region\":\"US\","
"\"languagesUsed\":[\"en\",\"jp\"]"
"},"
"\"handshakeKey\":\"%s\"" // 2
"\"handshakeKey\":\"%s\"" // 6
"}";
CHIAKI_EXPORT int chiaki_launchspec_format(char *buf, size_t buf_size, ChiakiLaunchSpec *launch_spec)
@ -85,7 +85,7 @@ CHIAKI_EXPORT int chiaki_launchspec_format(char *buf, size_t buf_size, ChiakiLau
int written = snprintf(buf, buf_size, launchspec_fmt,
launch_spec->width, launch_spec->height, launch_spec->max_fps,
launch_spec->mtu, launch_spec->rtt, handshake_key_b64);
launch_spec->bw_kbps_sent, launch_spec->mtu, launch_spec->rtt, handshake_key_b64);
if(written < 0 || written >= buf_size)
return -1;
return written;

View file

@ -54,22 +54,27 @@ CHIAKI_EXPORT void chiaki_connect_video_profile_preset(ChiakiConnectVideoProfile
case CHIAKI_VIDEO_RESOLUTION_PRESET_360p:
profile->width = 640;
profile->height = 360;
profile->bitrate = 2000;
break;
case CHIAKI_VIDEO_RESOLUTION_PRESET_540p:
profile->width = 960;
profile->height = 540;
profile->bitrate = 6000;
break;
case CHIAKI_VIDEO_RESOLUTION_PRESET_720p:
profile->width = 1280;
profile->height = 720;
profile->bitrate = 6000; // TODO: 10000 by default
break;
case CHIAKI_VIDEO_RESOLUTION_PRESET_1080p:
profile->width = 1920;
profile->height = 1080;
profile->bitrate = 10000; // TODO
break;
default:
profile->width = 0;
profile->height = 0;
profile->bitrate = 0;
break;
}
@ -595,7 +600,7 @@ static bool session_thread_request_session(ChiakiSession *session)
ChiakiHttpResponse http_response;
CHIAKI_LOGV(session->log, "Session Response Header:");
chiaki_log_hexdump(session->log, CHIAKI_LOG_VERBOSE, buf, header_size);
chiaki_log_hexdump(session->log, CHIAKI_LOG_VERBOSE, (const uint8_t *)buf, header_size);
err = chiaki_http_response_parse(&http_response, buf, header_size);
if(err != CHIAKI_ERR_SUCCESS)
{

View file

@ -659,6 +659,7 @@ static ChiakiErrorCode stream_connection_send_big(ChiakiStreamConnection *stream
launch_spec.width = session->connect_info.video_profile.width;
launch_spec.height = session->connect_info.video_profile.height;
launch_spec.max_fps = session->connect_info.video_profile.max_fps;
launch_spec.bw_kbps_sent = session->connect_info.video_profile.bitrate;
union
{