Compare commits

...

8 Commits

Author SHA1 Message Date
Denny
8621d1c8e2 Bumping build to 0.3.0-beta2 2017-01-29 09:11:11 -05:00
Denny Sheirer
1cd45a1b79 Merge pull request #162 from DSheirer/161-e4000-tuner-error
Resolves #161 - E4000 tuner error.
2017-01-29 09:08:41 -05:00
Denny
8215b78a43 Resolves #161 - E4000 tuner error. Tweaks settings in the USB transfer processor to improve latency in IQ buffer handling. 2017-01-29 09:07:48 -05:00
Denny
f53519ad59 Updated CHANGELOG 2017-01-29 06:56:21 -05:00
Denny
e6ab615931 Updates the overflowable queue to reduce thread contention on the queue size monitor 2017-01-29 06:26:12 -05:00
Denny Sheirer
0c84984fcc Merge pull request #160 from DSheirer/159-icecast-unresolved-host
159 icecast unresolved host
2017-01-29 06:17:44 -05:00
Denny
b3e493989e Updates javadoc 2017-01-29 06:16:46 -05:00
Denny
50e838749d Resovles #159 - adds UnresolvedHostException error in Icecast metadata updater. 2017-01-29 04:31:31 -05:00
8 changed files with 36 additions and 22 deletions

View File

@@ -1,11 +1,12 @@
0.3.0 2017xxxx (work in progress)
0.3.0-beta1 20170129
- FEATURE: audio streaming - adds capability to stream to multiple remote broadcast
servers (Broadcastify, Icecast v2.3 and v2.4+, and Shoutcast V1 and V2). Each
stream can be independently configured with a delay. Audio calls are directed
to one or more streams by attaching one or more stream identifiers to each alias.
- Requires Java 8 (or newer) for compatibility with eventual changeover to JavaFX
- Extensive GUI updates for tuner, channel and alias management.
- Requires Java 8 (or newer) for compatibility and eventual changeover to JavaFX
- Extensive GUI updates for tuner, channel and alias management. Includes new
'Now Playing' channel view and 'Detail' view.
- Updated alias list management of alias id values and wildcards. Weighting is now
applied to each wildcard so that they can be ordered from most specific to least
specific for lookup value matching purposes.
@@ -13,6 +14,10 @@
patch group aliases that roll-up aliases from each patched talkgroup to support
audio recording and streaming of patch calls according to the identifiers and
actions defined for each of the patched talkgroups.
- Implemented bounded queues for both tuner and individual channel IQ sample
buffers. Bounded queues have ability to enter/exit overflow state when queue
size reaches overflow threshold and reset when queue size falls below the reset
threshold.
- Updated airspy controller for airspy-mini specific sample rate handling.
- New developer remez filter designer tool and internal usage

View File

@@ -7,7 +7,7 @@
<property name="major" value="0"/>
<property name="minor" value="3"/>
<property name="patch" value="0"/>
<property name="release" value="-beta1"/>
<property name="release" value="-beta2"/>
<property name="filename" value="sdrtrunk_${major}.${minor}.${patch}${release}"/>
<!-- Build properties -->

View File

@@ -38,6 +38,7 @@ import java.io.UnsupportedEncodingException;
import java.net.ConnectException;
import java.net.InetSocketAddress;
import java.net.URLEncoder;
import java.nio.channels.UnresolvedAddressException;
import java.util.HashMap;
import java.util.Map;
import java.util.Queue;
@@ -152,6 +153,10 @@ public class IcecastBroadcastMetadataUpdater implements IBroadcastMetadataUpdate
{
//Do nothing, the server is unavailable
}
else if(throwableCause instanceof UnresolvedAddressException)
{
//Do nothing - the server is temporarily unavailable
}
else
{
if(!mStackTraceLoggingSuppressed)

View File

@@ -59,10 +59,10 @@ public class IcecastHTTPAudioBroadcaster extends IcecastAudioBroadcaster
private AtomicBoolean mConnecting = new AtomicBoolean();
/**
* Creates an Icecast 2.3.2 compatible broadcaster using TCP and a pseudo HTTP 1.0 protocol. This broadcaster is
* compatible with Icecast version 2.3.2 and older versions of the server software.
* Creates an Icecast 2.4.x compatible broadcaster using HTTP 1.1 protocol. This broadcaster is
* compatible with Icecast version 2.4.x and newer versions of the server software.
*
* Note: use @see IcecastHTTPAudioBroadcaster for Icecast version 2.4.x and newer.
* Note: use @see IcecastTCPAudioBroadcaster for Icecast version 2.3.x and older.
*
* This broadcaster uses the Apache Mina library for the streaming socket connection and for metadata updates. The
* IcecastHTTPIOHandler manages all interaction with the Icecast server and manages the overall broadcast state.

View File

@@ -55,15 +55,14 @@ public class OverflowableTransferQueue<E>
{
if(!mOverflow)
{
if(mCounter.get() > mMaximumSize)
mQueue.offer(e);
int size = mCounter.incrementAndGet();
if(size > mMaximumSize)
{
setOverflow(true);
}
else
{
mQueue.offer(e);
mCounter.incrementAndGet();
}
}
}
@@ -76,7 +75,12 @@ public class OverflowableTransferQueue<E>
if(drainCount > 0)
{
mCounter.addAndGet(-drainCount);
int size = mCounter.addAndGet(-drainCount);
if(mOverflow && size <= mResetThreshold)
{
setOverflow(false);
}
}
return drainCount;

View File

@@ -78,14 +78,9 @@ public abstract class RTL2832TunerController extends TunerController
private SampleRate mSampleRate = DEFAULT_SAMPLE_RATE;
private ByteSampleAdapter mSampleAdapter = new ByteSampleAdapter();
private Broadcaster<ComplexBuffer> mComplexBufferBroadcaster = new Broadcaster<>();
protected ByteSampleAdapter mSampleAdapter = new ByteSampleAdapter();
protected int mOscillatorFrequency = 28800000; //28.8 MHz
private USBTransferProcessor mUSBTransferProcessor;
protected USBTransferProcessor mUSBTransferProcessor;
protected Descriptor mDescriptor;
/**

View File

@@ -249,6 +249,11 @@ public class E4KTunerController extends RTL2832TunerController
throw new SourceException("E4K Tuner Controller - error during "
+ "init()", e);
}
String deviceName = getTunerType().getLabel() + " " + getUniqueID();
mUSBTransferProcessor = new RTL2832USBTransferProcessor(deviceName, mDeviceHandle, mSampleAdapter,
USB_TRANSFER_BUFFER_SIZE);
}
/**

View File

@@ -173,7 +173,7 @@ public class USBTransferProcessor implements TransferCallback
//Start transferred buffer dispatcher
mBufferDispatcherFuture = ThreadPool.SCHEDULED.scheduleAtFixedRate(mBufferDispatcher,
20, 20, TimeUnit.MILLISECONDS);
0, 11, TimeUnit.MILLISECONDS);
//Register with LibUSB processor so that it auto-starts LibUSB processing
TunerManager.LIBUSB_TRANSFER_PROCESSOR.registerTransferProcessor(this);