From 71f7c57b7fade6f3261c44f2836b9f8adb26edfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Velad=20Galv=C3=A1n?= Date: Wed, 10 Jan 2024 17:31:46 +0100 Subject: [PATCH] fix(Ads): Fix muting/unmuting ads won't affect video and vice versa (#6073) Fixes https://github.com/shaka-project/shaka-player/issues/6071 --- lib/ads/client_side_ad.js | 6 ++++-- lib/ads/client_side_ad_manager.js | 8 +++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/lib/ads/client_side_ad.js b/lib/ads/client_side_ad.js index c4a179b49a..9f1cdd7c0a 100644 --- a/lib/ads/client_side_ad.js +++ b/lib/ads/client_side_ad.js @@ -155,6 +155,7 @@ shaka.ads.ClientSideAd = class { * @export */ setVolume(volume) { + this.video_.volume = volume; return this.manager_.setVolume(volume); } @@ -197,13 +198,14 @@ shaka.ads.ClientSideAd = class { * @export */ setMuted(muted) { + this.video_.muted = muted; // Emulate the "mute" functionality, where current, pre-mute // volume is saved and can be restored on unmute. if (muted) { this.volume_ = this.getVolume(); - this.setVolume(0); + this.manager_.setVolume(0); } else { - this.setVolume(this.volume_); + this.manager_.setVolume(this.volume_); } } diff --git a/lib/ads/client_side_ad_manager.js b/lib/ads/client_side_ad_manager.js index 62d9a70c6d..38a6589a1d 100644 --- a/lib/ads/client_side_ad_manager.js +++ b/lib/ads/client_side_ad_manager.js @@ -234,10 +234,12 @@ shaka.ads.ClientSideAdManager = class { videoPlayHead.currentTime = this.video_.currentTime; }); this.eventManager_.listen(this.video_, 'volumechange', () => { + if (!this.ad_) { + return; + } + this.ad_.setVolume(this.video_.volume); if (this.video_.muted) { - this.imaAdsManager_.setVolume(0); - } else { - this.imaAdsManager_.setVolume(this.video_.volume); + this.ad_.setMuted(true); } }); }