From 0bb84954264dc4e768d54e39b97f6f6b6a61ed7e Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Tue, 23 Oct 2012 19:59:03 -0700 Subject: [PATCH] Detect audio and prioritize supported audio mimetypes. --- guacamole/src/main/webapp/scripts/interface.js | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/guacamole/src/main/webapp/scripts/interface.js b/guacamole/src/main/webapp/scripts/interface.js index 7ac5998ac..26177caaa 100644 --- a/guacamole/src/main/webapp/scripts/interface.js +++ b/guacamole/src/main/webapp/scripts/interface.js @@ -490,6 +490,9 @@ GuacamoleUI.supportedAudio = []; GuacamoleUI.eventTarget.style.top = window.pageYOffset + "px"; }); + var probably_supported = []; + var maybe_supported = []; + // Build array of supported audio formats [ 'audio/ogg; codecs="vorbis"', @@ -500,11 +503,22 @@ GuacamoleUI.supportedAudio = []; var audio = new Audio(); var support_level = audio.canPlayType(mimetype); - if (support_level != "") - GuacamoleUI.supportedAudio.push(mimetype); + // Trim semicolon and trailer + var semicolon = mimetype.indexOf(";"); + if (semicolon != -1) + mimetype = mimetype.substring(0, semicolon); + + // Partition by probably/maybe + if (support_level == "probably") + probably_supported.push(mimetype); + else if (support_level == "maybe") + maybe_supported.push(mimetype); }); + Array.prototype.push.apply(GuacamoleUI.supportedAudio, probably_supported); + Array.prototype.push.apply(GuacamoleUI.supportedAudio, maybe_supported); + })(); // Tie UI events / behavior to a specific Guacamole client