diff --git a/.idea/dictionaries/denny.xml b/.idea/dictionaries/denny.xml index dc5ec847..408050c7 100644 --- a/.idea/dictionaries/denny.xml +++ b/.idea/dictionaries/denny.xml @@ -10,6 +10,7 @@ polyphase samplerate sdrtrunk + sheirer shoutcast streamable talkgroup diff --git a/src/audio/broadcast/AudioBroadcaster.java b/src/audio/broadcast/AudioBroadcaster.java index cbec6e17..59c903c7 100644 --- a/src/audio/broadcast/AudioBroadcaster.java +++ b/src/audio/broadcast/AudioBroadcaster.java @@ -103,10 +103,23 @@ public abstract class AudioBroadcaster implements IAudioPacketListener protected abstract void broadcastAudio(byte[] audio); /** - * Broadcasts the next song's audio metadata prior to streaming the next song. - * @param metadata + * Protocol-specific metadata updater */ - protected abstract void broadcastMetadata(AudioMetadata metadata); + protected abstract IBroadcastMetadataUpdater getMetadataUpdater(); + + /** + * Broadcasts the next song's audio metadata prior to streaming the next song. + * @param metadata for the next recording that will be streamed + */ + protected void broadcastMetadata(AudioMetadata metadata) + { + IBroadcastMetadataUpdater metadataUpdater = getMetadataUpdater(); + + if(metadataUpdater != null) + { + metadataUpdater.update(metadata); + } + } /** * Disconnects the broadcaster from the remote server for a reset or final stop. diff --git a/src/audio/broadcast/BroadcastFactory.java b/src/audio/broadcast/BroadcastFactory.java index 5f8b47fa..3fc95768 100644 --- a/src/audio/broadcast/BroadcastFactory.java +++ b/src/audio/broadcast/BroadcastFactory.java @@ -32,6 +32,7 @@ import audio.broadcast.shoutcast.v1.ShoutcastV1Configuration; import audio.broadcast.shoutcast.v1.ShoutcastV1ConfigurationEditor; import audio.broadcast.shoutcast.v2.ShoutcastV2AudioBroadcaster; import audio.broadcast.shoutcast.v2.ShoutcastV2Configuration; +import audio.broadcast.shoutcast.v2.ShoutcastV2ConfigurationEditor; import audio.convert.IAudioConverter; import audio.convert.ISilenceGenerator; import audio.convert.MP3AudioConverter; @@ -172,6 +173,9 @@ public class BroadcastFactory case SHOUTCAST_V1: editor = new ShoutcastV1ConfigurationEditor(broadcastModel, aliasModel, settingsManager); break; + case SHOUTCAST_V2: + editor = new ShoutcastV2ConfigurationEditor(broadcastModel, aliasModel, settingsManager); + break; default: editor = new EmptyEditor(); break; diff --git a/src/audio/broadcast/BroadcastModel.java b/src/audio/broadcast/BroadcastModel.java index 05b59cfe..fa0f10d2 100644 --- a/src/audio/broadcast/BroadcastModel.java +++ b/src/audio/broadcast/BroadcastModel.java @@ -488,60 +488,67 @@ public class BroadcastModel extends AbstractTableModel implements Listener