mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-13 17:17:29 -05:00
293 lines
6.2 KiB
Java
293 lines
6.2 KiB
Java
/*******************************************************************************
|
|
* sdrtrunk
|
|
* Copyright (C) 2014-2016 Dennis Sheirer
|
|
*
|
|
* 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 <http://www.gnu.org/licenses/>
|
|
*
|
|
******************************************************************************/
|
|
package audio.broadcast.icecast;
|
|
|
|
import audio.broadcast.BroadcastConfiguration;
|
|
import audio.broadcast.BroadcastFormat;
|
|
|
|
import javax.xml.bind.annotation.XmlAttribute;
|
|
import javax.xml.bind.annotation.XmlTransient;
|
|
import java.util.Base64;
|
|
|
|
public abstract class IcecastConfiguration extends BroadcastConfiguration
|
|
{
|
|
protected String mUserName = "source";
|
|
private String mMountPoint = "/stream";
|
|
private String mDescription;
|
|
private String mGenre;
|
|
private boolean mPublic;
|
|
private int mBitRate = 16;
|
|
private int mChannels = 1;
|
|
private int mSampleRate = 8000;
|
|
private String mURL;
|
|
|
|
public IcecastConfiguration(BroadcastFormat format)
|
|
{
|
|
super(format);
|
|
}
|
|
|
|
public IcecastConfiguration()
|
|
{
|
|
}
|
|
|
|
/**
|
|
* Base64 encoded version of the username and password with prepended 'Basic ' tag.
|
|
*/
|
|
@XmlTransient
|
|
public String getBase64EncodedCredentials()
|
|
{
|
|
StringBuilder sb = new StringBuilder();
|
|
|
|
if(hasUserName())
|
|
{
|
|
sb.append(getUserName()).append(":").append(getPassword());
|
|
}
|
|
else
|
|
{
|
|
sb.append(getPassword());
|
|
}
|
|
|
|
String base64 = Base64.getEncoder().encodeToString(sb.toString().getBytes());
|
|
|
|
return "Basic " + base64;
|
|
}
|
|
|
|
@XmlAttribute( name="user_name" )
|
|
public String getUserName()
|
|
{
|
|
return mUserName;
|
|
}
|
|
|
|
public void setUserName(String userName)
|
|
{
|
|
mUserName = userName;
|
|
}
|
|
|
|
public boolean hasUserName()
|
|
{
|
|
return mUserName != null;
|
|
}
|
|
|
|
/**
|
|
* Mount point or path to the stream
|
|
* @return mount point
|
|
*/
|
|
@XmlAttribute( name="mount_point" )
|
|
public String getMountPoint()
|
|
{
|
|
return mMountPoint;
|
|
}
|
|
|
|
/**
|
|
* Sets the mount point (path) for the stream
|
|
* @param mountPoint
|
|
*/
|
|
public void setMountPoint(String mountPoint)
|
|
{
|
|
if(mountPoint != null && !mountPoint.isEmpty())
|
|
{
|
|
if(mountPoint.startsWith("/"))
|
|
{
|
|
mMountPoint = mountPoint;
|
|
}
|
|
else
|
|
{
|
|
mMountPoint = "/" + mountPoint;
|
|
}
|
|
}
|
|
}
|
|
|
|
public boolean hasMountPoint()
|
|
{
|
|
return mMountPoint != null;
|
|
}
|
|
|
|
@XmlAttribute( name="description" )
|
|
public String getDescription()
|
|
{
|
|
return mDescription;
|
|
}
|
|
|
|
public void setDescription(String description)
|
|
{
|
|
mDescription = description;
|
|
}
|
|
|
|
public boolean hasDescription()
|
|
{
|
|
return mDescription != null;
|
|
}
|
|
|
|
/**
|
|
* Stream genre
|
|
*/
|
|
@XmlAttribute( name="genre" )
|
|
public String getGenre()
|
|
{
|
|
return mGenre;
|
|
}
|
|
|
|
/**
|
|
* Stream genre
|
|
* @param genre
|
|
*/
|
|
public void setGenre(String genre)
|
|
{
|
|
mGenre = genre;
|
|
}
|
|
|
|
public boolean hasGenre()
|
|
{
|
|
return mGenre != null;
|
|
}
|
|
|
|
/**
|
|
* Public visibility of the broadcastAudio
|
|
*/
|
|
@XmlAttribute( name="public" )
|
|
public boolean isPublic()
|
|
{
|
|
return mPublic;
|
|
}
|
|
|
|
/**
|
|
* Sets public visibility of the broadcastAudio
|
|
* @param isPublic indicates if the broadcastAudio should be visible to the public
|
|
*/
|
|
public void setPublic(boolean isPublic)
|
|
{
|
|
mPublic = isPublic;
|
|
}
|
|
|
|
/**
|
|
* Number of audio channels in the broadcastAudio
|
|
*/
|
|
@XmlAttribute( name="channels" )
|
|
public int getChannels()
|
|
{
|
|
return mChannels;
|
|
}
|
|
|
|
/**
|
|
* Sets the number of audio channels in the broadcastAudio
|
|
*/
|
|
public void setChannels(int channels)
|
|
{
|
|
mChannels = channels;
|
|
}
|
|
|
|
public boolean hasChannels()
|
|
{
|
|
return mChannels > 0;
|
|
}
|
|
|
|
/**
|
|
* Bit rate in bits per second
|
|
*/
|
|
@XmlAttribute( name="bitrate" )
|
|
public int getBitRate()
|
|
{
|
|
return mBitRate;
|
|
}
|
|
|
|
/**
|
|
* Bit rate
|
|
* @param bitRate in samples per second
|
|
*/
|
|
public void setBitRate(int bitRate)
|
|
{
|
|
mBitRate = bitRate;
|
|
}
|
|
|
|
public boolean hasBitRate()
|
|
{
|
|
return mBitRate > 0;
|
|
}
|
|
|
|
@XmlAttribute( name="sample_rate" )
|
|
public int getSampleRate()
|
|
{
|
|
return mSampleRate;
|
|
}
|
|
|
|
public void setSampleRate(int sampleRate)
|
|
{
|
|
mSampleRate = sampleRate;
|
|
}
|
|
|
|
public boolean hasSampleRate()
|
|
{
|
|
return mSampleRate > 0;
|
|
}
|
|
|
|
/**
|
|
* URL associated with the broadcastAudio where users can find additional details.
|
|
*/
|
|
@XmlAttribute( name="url" )
|
|
public String getURL()
|
|
{
|
|
return mURL;
|
|
}
|
|
|
|
/**
|
|
* URL associated with the broadcastAudio where users can find additional details.
|
|
* @param url
|
|
*/
|
|
public void setURL(String url)
|
|
{
|
|
mURL = url;
|
|
}
|
|
|
|
public boolean hasURL()
|
|
{
|
|
return mURL != null;
|
|
}
|
|
|
|
@Override
|
|
public boolean isValid()
|
|
{
|
|
if(!super.isValid())
|
|
{
|
|
return false;
|
|
}
|
|
else if(getUserName() == null)
|
|
{
|
|
return false;
|
|
}
|
|
else if(getMountPoint() == null)
|
|
{
|
|
return false;
|
|
}
|
|
else if(getChannels() != 1)
|
|
{
|
|
return false;
|
|
}
|
|
else if(getSampleRate() <= 0)
|
|
{
|
|
return false;
|
|
}
|
|
else if(getBitRate() <= 0)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
}
|