Skip to content

Commit

Permalink
Fixes shifted audio level glow on thumbnails. Fixes missing audio lev…
Browse files Browse the repository at this point in the history
…el indicator on large video avatar.
  • Loading branch information
yanas committed Feb 5, 2016
1 parent 4228537 commit e7e8dc3
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 19 deletions.
4 changes: 2 additions & 2 deletions css/videolayout_default.css
Original file line number Diff line number Diff line change
Expand Up @@ -420,7 +420,7 @@
position: absolute;
top: 0px;
left: 0px;
z-index: 1;
z-index: 2;
visibility: inherit;
}

Expand All @@ -435,7 +435,7 @@
margin: auto;
position: relative;
border-radius: 50px;
z-index: 2;
z-index: 3;
visibility: inherit;
}

Expand Down
36 changes: 22 additions & 14 deletions modules/UI/audio_levels/AudioLevels.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,8 @@ function drawAudioLevelCanvas(id, audioLevel) {
* been observed to pile into the console, strain the CPU.
*/
if (audioLevelCanvasOrig) {
audioLevelCanvasCache[id] = CanvasUtil.cloneCanvas(audioLevelCanvasOrig);
audioLevelCanvasCache[id]
= CanvasUtil.cloneCanvas(audioLevelCanvasOrig);
}
}

Expand All @@ -68,13 +69,14 @@ function drawAudioLevelCanvas(id, audioLevel) {

if (shadowLevel > 0) {
// drawContext, x, y, w, h, r, shadowColor, shadowLevel
CanvasUtil.drawRoundRectGlow(drawContext,
interfaceConfig.CANVAS_EXTRA / 2, interfaceConfig.CANVAS_EXTRA / 2,
canvas.width - interfaceConfig.CANVAS_EXTRA,
canvas.height - interfaceConfig.CANVAS_EXTRA,
interfaceConfig.CANVAS_RADIUS,
interfaceConfig.SHADOW_COLOR,
shadowLevel);
CanvasUtil.drawRoundRectGlow(
drawContext,
interfaceConfig.CANVAS_EXTRA / 2, interfaceConfig.CANVAS_EXTRA / 2,
canvas.width - interfaceConfig.CANVAS_EXTRA,
canvas.height - interfaceConfig.CANVAS_EXTRA,
interfaceConfig.CANVAS_RADIUS,
interfaceConfig.SHADOW_COLOR,
shadowLevel);
}
}

Expand All @@ -88,11 +90,14 @@ function getShadowLevel (audioLevel) {
let shadowLevel = 0;

if (audioLevel <= 0.3) {
shadowLevel = Math.round(interfaceConfig.CANVAS_EXTRA/2*(audioLevel/0.3));
shadowLevel
= Math.round(interfaceConfig.CANVAS_EXTRA/2*(audioLevel/0.3));
} else if (audioLevel <= 0.6) {
shadowLevel = Math.round(interfaceConfig.CANVAS_EXTRA/2*((audioLevel - 0.3) / 0.3));
shadowLevel
= Math.round(interfaceConfig.CANVAS_EXTRA/2*((audioLevel - 0.3) / 0.3));
} else {
shadowLevel = Math.round(interfaceConfig.CANVAS_EXTRA/2*((audioLevel - 0.6) / 0.4));
shadowLevel
= Math.round(interfaceConfig.CANVAS_EXTRA/2*((audioLevel - 0.6) / 0.4));
}

return shadowLevel;
Expand Down Expand Up @@ -203,7 +208,8 @@ const AudioLevels = {
},

updateDominantSpeakerAudioLevel (audioLevel) {
if($("#domiantSpeaker").css("visibility") == "hidden" || ASDrawContext === null) {
if($("#dominantSpeaker").css("visibility") == "hidden"
|| ASDrawContext === null) {
return;
}

Expand All @@ -214,7 +220,6 @@ const AudioLevels = {

ASDrawContext.shadowBlur = getShadowLevel(audioLevel);


// Fill the shape.
ASDrawContext.fill();
},
Expand All @@ -223,7 +228,10 @@ const AudioLevels = {
let canvasWidth = thumbWidth + interfaceConfig.CANVAS_EXTRA;
let canvasHeight = thumbHeight + interfaceConfig.CANVAS_EXTRA;

BottomToolbar.getThumbs().children('canvas').width(canvasWidth).height(canvasHeight);
BottomToolbar.getThumbs().children('canvas').each(function () {
$(this).attr('width', canvasWidth);
$(this).attr('height', canvasHeight);
});

Object.keys(audioLevelCanvasCache).forEach(function (id) {
audioLevelCanvasCache[id].width = canvasWidth;
Expand Down
5 changes: 3 additions & 2 deletions modules/UI/videolayout/LargeVideo.js
Original file line number Diff line number Diff line change
Expand Up @@ -418,13 +418,14 @@ export default class LargeVideoManager {
// change the avatar url on large
this.updateAvatar(Avatar.getAvatarUrl(id));

let isVideoMuted = stream? stream.isMuted() : true;
let isVideoMuted = stream ? stream.isMuted() : true;

// show the avatar on large if needed
this.videoContainer.showAvatar(isVideoMuted);

// do not show stream if video is muted
let promise = isVideoMuted ? Promise.resolve() : this.videoContainer.show();
let promise
= isVideoMuted ? Promise.resolve() : this.videoContainer.show();

// resolve updateLargeVideo promise after everything is done
promise.then(resolve);
Expand Down
3 changes: 2 additions & 1 deletion modules/UI/videolayout/VideoLayout.js
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,8 @@ var VideoLayout = {
this.onVideoTypeChanged(localId, stream.videoType);

let {thumbWidth, thumbHeight} = this.calculateThumbnailSize();
AudioLevels.updateAudioLevelCanvas(null, thumbWidth, thumbHeight);
AudioLevels.updateAudioLevelCanvas(
null, thumbWidth, thumbHeight);

if (!stream.isMuted()) {
localVideoThumbnail.changeVideo(stream);
Expand Down

0 comments on commit e7e8dc3

Please sign in to comment.