in source/aws-connect-vm-serverless/src/main/java/com/amazonaws/kvstream/KVSUtils.java [102:139]
public static ByteBuffer getByteBufferFromStream(StreamingMkvReader streamingMkvReader,
FragmentMetadataVisitor fragmentVisitor,
FragmentMetadataVisitor.BasicMkvTagProcessor tagProcessor,
String contactId) throws MkvElementVisitException {
while (streamingMkvReader.mightHaveNext()) {
Optional<MkvElement> mkvElementOptional = streamingMkvReader.nextIfAvailable();
if (mkvElementOptional.isPresent()) {
MkvElement mkvElement = mkvElementOptional.get();
mkvElement.accept(fragmentVisitor);
// Validate that we are reading data only for the expected contactId at start of every mkv master element
if (MkvTypeInfos.EBML.equals(mkvElement.getElementMetaData().getTypeInfo())) {
if (mkvElement instanceof MkvStartMasterElement) {
String contactIdFromStream = getContactIdFromStreamTag(tagProcessor);
if (contactIdFromStream != null && !contactIdFromStream.equals(contactId)) {
//expected Connect ContactId does not match the actual ContactId. End the streaming by
//returning an empty ByteBuffer
return ByteBuffer.allocate(0);
}
tagProcessor.clear();
}
} else if (MkvTypeInfos.SIMPLEBLOCK.equals(mkvElement.getElementMetaData().getTypeInfo())) {
MkvDataElement dataElement = (MkvDataElement) mkvElement;
Frame frame = ((MkvValue<Frame>) dataElement.getValueCopy()).getVal();
ByteBuffer audioBuffer = frame.getFrameData();
long trackNumber = frame.getTrackNumber();
MkvTrackMetadata metadata = fragmentVisitor.getMkvTrackMetadata(trackNumber);
if (TrackName.AUDIO_FROM_CUSTOMER.getName().equals(metadata.getTrackName())) {
return audioBuffer;
}
}
}
}
return ByteBuffer.allocate(0);
}