added support for bitrate selection. This closes #9

This commit is contained in:
Aidan Campbell 2016-02-19 12:28:19 -05:00
parent 5e66aee4dd
commit ad9aadc30f
4 changed files with 30 additions and 3 deletions

View File

@ -38,7 +38,9 @@
<option value="30">30fps</option> <option value="30">30fps</option>
<option value="60">60fps</option> <option value="60">60fps</option>
</select> </select>
<output id='bitrateField'>15Mbps</output>
</div> </div>
<input id="bitrateSlider" class="mdl-slider mdl-js-slider" type="range" min="0" max="100" step="0.5" value="15">
</div> </div>
<div id="hostSettings"> <div id="hostSettings">

View File

@ -162,11 +162,13 @@ void MoonlightInstance::handleStartStream(std::string startStreamMessage) {
PostMessage(response); PostMessage(response);
response = ("Setting stream host to: " + splitString.at(1)); response = ("Setting stream host to: " + splitString.at(1));
PostMessage(response); PostMessage(response);
response = ("Setting stream bitrate to: " + splitString.at(5));
PostMessage(response);
// Populate the stream configuration // Populate the stream configuration
m_StreamConfig.width = stoi(splitString.at(2)); m_StreamConfig.width = stoi(splitString.at(2));
m_StreamConfig.height = stoi(splitString.at(3)); m_StreamConfig.height = stoi(splitString.at(3));
m_StreamConfig.fps = stoi(splitString.at(4)); m_StreamConfig.fps = stoi(splitString.at(4));
m_StreamConfig.bitrate = 15000; // kilobits per second m_StreamConfig.bitrate = stoi(splitString.at(5)); // kilobits per second
m_StreamConfig.packetSize = 1024; m_StreamConfig.packetSize = 1024;
m_StreamConfig.streamingRemotely = 0; m_StreamConfig.streamingRemotely = 0;
m_StreamConfig.audioConfiguration = AUDIO_CONFIGURATION_STEREO; m_StreamConfig.audioConfiguration = AUDIO_CONFIGURATION_STEREO;

View File

@ -7,6 +7,11 @@
main { main {
padding: 50px 100px; padding: 50px 100px;
} }
#bitrateField {
text-align: center;
display: block;
padding-top: 15px;
}
#hostSettings { #hostSettings {
padding: 5px 10px; padding: 5px 10px;
border: 1px dashed; border: 1px dashed;

View File

@ -9,9 +9,24 @@ function attachListeners() {
document.getElementById('showAppsButton').addEventListener('click', showAppsPushed); document.getElementById('showAppsButton').addEventListener('click', showAppsPushed);
document.getElementById('selectResolution').addEventListener('change', saveResolution); document.getElementById('selectResolution').addEventListener('change', saveResolution);
document.getElementById('selectFramerate').addEventListener('change', saveFramerate); document.getElementById('selectFramerate').addEventListener('change', saveFramerate);
document.getElementById('bitrateSlider').addEventListener('input', updateBitrateField); // input occurs every notch you slive
document.getElementById('bitrateSlider').addEventListener('change', saveBitrate); // change occurs once the mouse lets go.
window.addEventListener("resize", fullscreenNaclModule); window.addEventListener("resize", fullscreenNaclModule);
} }
function updateBitrateField() {
document.getElementById('bitrateField').innerHTML = document.getElementById('bitrateSlider').value + " Mbps"
}
function saveBitrate() {
storeData('bitrate', document.getElementById('bitrateSlider').value, null);
}
function loadBitrate(previousValue) {
document.getElementById('bitrateSlider').MaterialSlider.change(previousValue.bitrate != null ? previousValue.bitrate : '15');
updateBitrateField();
}
function moduleDidLoad() { function moduleDidLoad() {
console.log("NaCl module loaded."); console.log("NaCl module loaded.");
} }
@ -65,8 +80,10 @@ function startPushed() {
} }
var frameRate = document.getElementById('selectFramerate').value; var frameRate = document.getElementById('selectFramerate').value;
var resolution = document.getElementById('selectResolution').value; var resolution = document.getElementById('selectResolution').value;
// we told the user it was in Mbps. We're dirty liars and use Kbps behind their back.
var bitrate = parseInt(document.getElementById('bitrateSlider').value) * 1024;
console.log('startRequest:' + target + ":" + resolution + ":" + frameRate); console.log('startRequest:' + target + ":" + resolution + ":" + frameRate);
common.naclModule.postMessage('startRequest:' + target + ":" + resolution + ":" + frameRate + ":"); common.naclModule.postMessage('startRequest:' + target + ":" + resolution + ":" + frameRate + ":" + bitrate + ":");
// we just finished the gameSelection section. only expose the NaCl section // we just finished the gameSelection section. only expose the NaCl section
playGameMode(); playGameMode();
} }
@ -171,11 +188,12 @@ function loadHosts(previousValue) {
} }
function onWindowLoad(){ function onWindowLoad(){
// document.getElementById('streamSettings').style.display = 'none';
document.getElementById('gameSelection').style.display = 'none'; document.getElementById('gameSelection').style.display = 'none';
$("#bitrateField").addClass("bitrateField");
readData('resolution', loadResolution); readData('resolution', loadResolution);
readData('frameRate', loadFramerate); readData('frameRate', loadFramerate);
readData('hosts', loadHosts); readData('hosts', loadHosts);
readData('bitrate', loadBitrate);
} }
window.onload = onWindowLoad; window.onload = onWindowLoad;