/* * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved * * Licensed under the Apache License, Version 2.0 (the License); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an AS IS BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ using System; using System.Diagnostics; using Native = Interop.AudioEffect; namespace Tizen.Multimedia { /// /// Represents an equalizer band of . /// /// 3 public class EqualizerBand { private readonly AudioEffect _owner; private readonly int _index; internal EqualizerBand(AudioEffect owner, int index) { Debug.Assert(owner != null); _owner = owner; _index = index; Log.Debug(PlayerLog.Tag, "frequency : " + Frequency + ", range : " + FrequencyRange); } /// /// Sets or gets the gain for the equalizer band. /// /// The value indicating new gain in decibel(dB). /// The player that this EqualizerBand belongs to has already been disposed of. /// /// is not inside of . /// /// /// If audio offload is enabled by calling . (Since tizen 6.0) /// /// 3 public int Level { get { _owner.Player.ValidateNotDisposed(); _owner.Player.AudioOffload.CheckDisabled(); Native.GetEqualizerBandLevel(_owner.Player.Handle, _index, out var value). ThrowIfFailed(_owner.Player, "Failed to get the level of the equalizer band"); Log.Info(PlayerLog.Tag, "get level : " + value); return value; } set { _owner.Player.ValidateNotDisposed(); _owner.Player.AudioOffload.CheckDisabled(); if (value < _owner.BandLevelRange.Min || _owner.BandLevelRange.Max < value) { Log.Error(PlayerLog.Tag, "invalid level : " + value); throw new ArgumentOutOfRangeException(nameof(value), value, $"valid value range is { nameof(AudioEffect.BandLevelRange) }." + $"but got {value}."); } Native.SetEqualizerBandLevel(_owner.Player.Handle, _index, value). ThrowIfFailed(_owner.Player, "Failed to set the level of the equalizer band"); } } /// /// Gets the frequency in dB. /// /// /// If audio offload is enabled by calling . (Since tizen 6.0) /// /// 3 public int Frequency { get { _owner.Player.AudioOffload.CheckDisabled(); Native.GetEqualizerBandFrequency(_owner.Player.Handle, _index, out var frequency). ThrowIfFailed(_owner.Player, "Failed to initialize equalizer band"); return frequency; } } /// /// Gets the frequency range in dB. /// /// /// If audio offload is enabled by calling . (Since tizen 6.0) /// /// 3 public int FrequencyRange { get { _owner.Player.AudioOffload.CheckDisabled(); Native.GetEqualizerBandFrequencyRange(_owner.Player.Handle, _index, out var frequencyRange). ThrowIfFailed(_owner.Player, "Failed to initialize equalizer band"); return frequencyRange; } } } }