1cb93a386Sopenharmony_ci/* 2cb93a386Sopenharmony_ci* Copyright 2020 Google Inc. 3cb93a386Sopenharmony_ci* 4cb93a386Sopenharmony_ci* Use of this source code is governed by a BSD-style license that can be 5cb93a386Sopenharmony_ci* found in the LICENSE file. 6cb93a386Sopenharmony_ci*/ 7cb93a386Sopenharmony_ci 8cb93a386Sopenharmony_ci#include "modules/audioplayer/SkAudioPlayer.h" 9cb93a386Sopenharmony_ci#include <algorithm> 10cb93a386Sopenharmony_ci#include <cmath> 11cb93a386Sopenharmony_ci 12cb93a386Sopenharmony_ciSkAudioPlayer::~SkAudioPlayer() {} 13cb93a386Sopenharmony_ci 14cb93a386Sopenharmony_cidouble SkAudioPlayer::setTime(double t) { 15cb93a386Sopenharmony_ci t = std::min(std::max(t, 0.0), this->duration()); 16cb93a386Sopenharmony_ci if (!std::isfinite(t)) { 17cb93a386Sopenharmony_ci t = this->time(); 18cb93a386Sopenharmony_ci } 19cb93a386Sopenharmony_ci if (t != this->time()) { 20cb93a386Sopenharmony_ci t = this->onSetTime(t); 21cb93a386Sopenharmony_ci } 22cb93a386Sopenharmony_ci return t; 23cb93a386Sopenharmony_ci} 24cb93a386Sopenharmony_ci 25cb93a386Sopenharmony_cidouble SkAudioPlayer::setNormalizedTime(double t) { 26cb93a386Sopenharmony_ci this->setTime(t * this->duration()); 27cb93a386Sopenharmony_ci return this->normalizedTime(); 28cb93a386Sopenharmony_ci} 29cb93a386Sopenharmony_ci 30cb93a386Sopenharmony_ciSkAudioPlayer::State SkAudioPlayer::setState(State s) { 31cb93a386Sopenharmony_ci if (s != fState) { 32cb93a386Sopenharmony_ci fState = this->onSetState(s); 33cb93a386Sopenharmony_ci } 34cb93a386Sopenharmony_ci return fState; 35cb93a386Sopenharmony_ci} 36cb93a386Sopenharmony_ci 37cb93a386Sopenharmony_cifloat SkAudioPlayer::setRate(float r) { 38cb93a386Sopenharmony_ci r = std::min(std::max(r, 0.f), 1.f); 39cb93a386Sopenharmony_ci if (!std::isfinite(r)) { 40cb93a386Sopenharmony_ci r = fRate; 41cb93a386Sopenharmony_ci } 42cb93a386Sopenharmony_ci if (r != fRate) { 43cb93a386Sopenharmony_ci fRate = this->onSetRate(r); 44cb93a386Sopenharmony_ci } 45cb93a386Sopenharmony_ci return fRate; 46cb93a386Sopenharmony_ci} 47cb93a386Sopenharmony_ci 48cb93a386Sopenharmony_cifloat SkAudioPlayer::setVolume(float v) { 49cb93a386Sopenharmony_ci v = std::min(std::max(v, 0.f), 1.f); 50cb93a386Sopenharmony_ci if (!std::isfinite(v)) { 51cb93a386Sopenharmony_ci v = fVolume; 52cb93a386Sopenharmony_ci } 53cb93a386Sopenharmony_ci if (v != fVolume) { 54cb93a386Sopenharmony_ci fVolume = this->onSetVolume(v); 55cb93a386Sopenharmony_ci } 56cb93a386Sopenharmony_ci return fVolume; 57cb93a386Sopenharmony_ci} 58