/******************************************************************************* * Copyright 2011 See AUTHORS file. * * 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. ******************************************************************************/ package com.badlogic.gdx.audio; import com.badlogic.gdx.utils.Disposable; /** * Encapsulates an audio device in 44.1khz mono or stereo mode. Use the {@link #writeSamples(float[], int, int)} and * {@link #writeSamples(short[], int, int)} methods to write float or 16-bit signed short PCM data directly to the audio * device. Stereo samples are interleaved in the order left channel sample, right channel sample. The {@link #dispose()} * method must be called when this AudioDevice is no longer needed. * * @author badlogicgames@gmail.com */ public interface AudioDevice extends Disposable { /** @return whether this AudioDevice is in mono or stereo mode. */ public boolean isMono(); /** * Writes the array of 16-bit signed PCM samples to the audio device and blocks until they have been processed. * * @param samples * The samples. * @param offset * The offset into the samples array * @param numSamples * the number of samples to write to the device */ public void writeSamples(short[] samples, int offset, int numSamples); /** * Writes the array of float PCM samples to the audio device and blocks until they have been processed. * * @param samples * The samples. * @param offset * The offset into the samples array * @param numSamples * the number of samples to write to the device */ public void writeSamples(float[] samples, int offset, int numSamples); /** @return the latency in samples. */ public int getLatency(); /** Frees all resources associated with this AudioDevice. Needs to be called when the device is no longer needed. */ public void dispose(); /** Sets the volume in the range [0,1]. */ public void setVolume(float volume); }