135 WIP - resolves issue with recording.

This commit is contained in:
Denny
2017-01-25 21:04:28 -05:00
parent e2e00a98d5
commit 07933831d2
3 changed files with 37 additions and 28 deletions

View File

@@ -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;

View File

@@ -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());

View File

@@ -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>();