mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-15 01:57:39 -05:00
135 WIP - resolves issue with recording.
This commit is contained in:
@@ -23,12 +23,16 @@ import alias.id.broadcast.BroadcastChannel;
|
|||||||
import alias.id.priority.Priority;
|
import alias.id.priority.Priority;
|
||||||
import channel.state.State;
|
import channel.state.State;
|
||||||
import module.decode.DecoderType;
|
import module.decode.DecoderType;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class Metadata
|
public class Metadata
|
||||||
{
|
{
|
||||||
|
private final static Logger mLog = LoggerFactory.getLogger(Metadata.class);
|
||||||
|
|
||||||
// Static unique metadata identifier tracking
|
// Static unique metadata identifier tracking
|
||||||
private static int UNIQUE_METADATA_ID_GENERATOR = 0;
|
private static int UNIQUE_METADATA_ID_GENERATOR = 0;
|
||||||
|
|
||||||
@@ -147,7 +151,7 @@ public class Metadata
|
|||||||
determineRecordable();
|
determineRecordable();
|
||||||
}
|
}
|
||||||
|
|
||||||
return mRecordable & !mDoNotRecord;
|
return mRecordable && !mDoNotRecord;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -635,6 +639,8 @@ public class Metadata
|
|||||||
{
|
{
|
||||||
Metadata copy = new Metadata(mMetadataID);
|
Metadata copy = new Metadata(mMetadataID);
|
||||||
|
|
||||||
|
copy.mDoNotRecord = mDoNotRecord;
|
||||||
|
copy.mRecordable = mRecordable;
|
||||||
copy.mState = mState;
|
copy.mState = mState;
|
||||||
copy.mPrimaryDecoderType = mPrimaryDecoderType;
|
copy.mPrimaryDecoderType = mPrimaryDecoderType;
|
||||||
copy.mChannelFrequency = mChannelFrequency;
|
copy.mChannelFrequency = mChannelFrequency;
|
||||||
|
|||||||
@@ -149,7 +149,7 @@ public class ChannelProcessingManager implements ChannelEventListener
|
|||||||
case NOTIFICATION_CONFIGURATION_CHANGE:
|
case NOTIFICATION_CONFIGURATION_CHANGE:
|
||||||
if(isProcessing(channel))
|
if(isProcessing(channel))
|
||||||
{
|
{
|
||||||
stopProcessing(channel, false);
|
stopProcessing(channel, true);
|
||||||
startProcessing(event);
|
startProcessing(event);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -217,33 +217,35 @@ public class ChannelProcessingManager implements ChannelEventListener
|
|||||||
MessageActivityModel messageModel = new MessageActivityModel(messageFilter);
|
MessageActivityModel messageModel = new MessageActivityModel(messageFilter);
|
||||||
processingChain.setMessageActivityModel(messageModel);
|
processingChain.setMessageActivityModel(messageModel);
|
||||||
|
|
||||||
//Set the recordable flag to true if the user has requested recording. The metadata class can still
|
|
||||||
//override recordability if any of the aliased values has 'Do Not Record' alias identifier.
|
|
||||||
processingChain.getChannelState().getMutableMetadata()
|
|
||||||
.setRecordable(channel.getRecordConfiguration() != null &&
|
|
||||||
channel.getRecordConfiguration().getRecorders().contains(RecorderType.AUDIO));
|
|
||||||
|
|
||||||
//Inject channel metadata that will be inserted into audio packets for recorder manager and streaming
|
|
||||||
processingChain.getChannelState().getMutableMetadata().receive(
|
|
||||||
new AttributeChangeRequest<String>(Attribute.CHANNEL_CONFIGURATION_SYSTEM, channel.getSystem()));
|
|
||||||
processingChain.getChannelState().getMutableMetadata().receive(
|
|
||||||
new AttributeChangeRequest<String>(Attribute.CHANNEL_CONFIGURATION_SITE, channel.getSite()));
|
|
||||||
processingChain.getChannelState().getMutableMetadata().receive(
|
|
||||||
new AttributeChangeRequest<String>(Attribute.CHANNEL_CONFIGURATION_NAME, channel.getName()));
|
|
||||||
|
|
||||||
if(channel.getSourceConfiguration().getSourceType() == SourceType.TUNER)
|
|
||||||
{
|
|
||||||
long frequency = ((SourceConfigTuner)channel.getSourceConfiguration()).getFrequency();
|
|
||||||
|
|
||||||
processingChain.getChannelState().getMutableMetadata().receive(
|
|
||||||
new AttributeChangeRequest<Long>(Attribute.CHANNEL_FREQUENCY, frequency));
|
|
||||||
}
|
|
||||||
|
|
||||||
processingChain.getChannelState().getMutableMetadata().receive(
|
|
||||||
new AttributeChangeRequest<DecoderType>(Attribute.PRIMARY_DECODER_TYPE,
|
|
||||||
channel.getDecodeConfiguration().getDecoderType()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Set the recordable flag to true if the user has requested recording. The metadata class can still
|
||||||
|
//override recordability if any of the aliased values has 'Do Not Record' alias identifier.
|
||||||
|
boolean recordable = channel.getRecordConfiguration() != null &&
|
||||||
|
channel.getRecordConfiguration().getRecorders().contains(RecorderType.AUDIO);
|
||||||
|
|
||||||
|
processingChain.getChannelState().getMutableMetadata().setRecordable(recordable);
|
||||||
|
|
||||||
|
//Inject channel metadata that will be inserted into audio packets for recorder manager and streaming
|
||||||
|
processingChain.getChannelState().getMutableMetadata().receive(
|
||||||
|
new AttributeChangeRequest<String>(Attribute.CHANNEL_CONFIGURATION_SYSTEM, channel.getSystem()));
|
||||||
|
processingChain.getChannelState().getMutableMetadata().receive(
|
||||||
|
new AttributeChangeRequest<String>(Attribute.CHANNEL_CONFIGURATION_SITE, channel.getSite()));
|
||||||
|
processingChain.getChannelState().getMutableMetadata().receive(
|
||||||
|
new AttributeChangeRequest<String>(Attribute.CHANNEL_CONFIGURATION_NAME, channel.getName()));
|
||||||
|
|
||||||
|
if(channel.getSourceConfiguration().getSourceType() == SourceType.TUNER)
|
||||||
|
{
|
||||||
|
long frequency = ((SourceConfigTuner)channel.getSourceConfiguration()).getFrequency();
|
||||||
|
|
||||||
|
processingChain.getChannelState().getMutableMetadata().receive(
|
||||||
|
new AttributeChangeRequest<Long>(Attribute.CHANNEL_FREQUENCY, frequency));
|
||||||
|
}
|
||||||
|
|
||||||
|
processingChain.getChannelState().getMutableMetadata().receive(
|
||||||
|
new AttributeChangeRequest<DecoderType>(Attribute.PRIMARY_DECODER_TYPE,
|
||||||
|
channel.getDecodeConfiguration().getDecoderType()));
|
||||||
|
|
||||||
/* Setup event logging */
|
/* Setup event logging */
|
||||||
List<Module> loggers = mEventLogManager.getLoggers(channel.getEventLogConfiguration(), channel.getName());
|
List<Module> loggers = mEventLogManager.getLoggers(channel.getEventLogConfiguration(), channel.getName());
|
||||||
|
|
||||||
|
|||||||
@@ -164,7 +164,8 @@ public class DecoderFactory
|
|||||||
ChannelMapModel channelMapModel,
|
ChannelMapModel channelMapModel,
|
||||||
ChannelProcessingManager channelProcessingManager,
|
ChannelProcessingManager channelProcessingManager,
|
||||||
AliasList aliasList,
|
AliasList aliasList,
|
||||||
Channel channel, Metadata metadata)
|
Channel channel,
|
||||||
|
Metadata metadata)
|
||||||
{
|
{
|
||||||
List<Module> modules = new ArrayList<Module>();
|
List<Module> modules = new ArrayList<Module>();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user