X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsonitus%2Fdata%2FSource.java;h=b12ec20f71a26b46cacc492e0bde0509da17b965;hb=fa5196e029c48636f0c318311244395cfae49953;hp=270a8bf6b47a7d5d8defbef60a0dc6ed1ff23c35;hpb=6e88b4e3439165dbd6584c79d3f909e10af95f49;p=sonitus.git diff --git a/src/main/java/net/pterodactylus/sonitus/data/Source.java b/src/main/java/net/pterodactylus/sonitus/data/Source.java index 270a8bf..b12ec20 100644 --- a/src/main/java/net/pterodactylus/sonitus/data/Source.java +++ b/src/main/java/net/pterodactylus/sonitus/data/Source.java @@ -1,62 +1,32 @@ -/* - * Sonitus - Source.java - Copyright © 2013 David Roden - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - package net.pterodactylus.sonitus.data; -import java.io.EOFException; import java.io.IOException; /** - * Defines an arbitrary media source. This can be almost anything; an MP3 file, - * a FastTracker module, or a decoded WAVE file. + * A source produces an audio stream and accompanying metadata. * * @author David ‘Bombe’ Roden */ -public interface Source { - - /** - * Returns the format of this source. - * - * @return The format of this source - */ - Format format(); +public interface Source extends ControlledComponent { /** - * Returns the metadata of this source. + * Returns the metadata of the audio stream. * - * @return The metadata of this source + * @return The metadata of the audio stream */ Metadata metadata(); /** - * Retrieves the given name of bytes from this source. The source should always - * try to read as much data as was requested but is free to return a byte array - * with less elements that requested. However, the byte array will always be - * the same size as the data that was actually read, i.e. there are no excess - * elements in the returned array. + * Retrieves data from the audio stream. * * @param bufferSize - * The size of the buffer - * @return A buffer that contains the read data - * @throws EOFException - * if the end of the source was reached + * The maximum amount of bytes to retrieve from the audio stream + * @return A buffer filled with up to {@code bufferSize} bytes of data; the + * returned buffer may contain less data than requested but will not + * contain excess elements * @throws IOException * if an I/O error occurs */ - byte[] get(int bufferSize) throws EOFException, IOException; + byte[] get(int bufferSize) throws IOException; }