in src/main/java/com/amazonaws/kvstranscribestreaming/KVSUtils.java [83:115]
public static ByteBuffer getByteBufferFromStream(StreamingMkvReader streamingMkvReader,
FragmentMetadataVisitor fragmentVisitor,
KVSContactTagProcessor tagProcessor,
String contactId, String track) throws MkvElementVisitException {
while (streamingMkvReader.mightHaveNext()) {
Optional<MkvElement> mkvElementOptional = streamingMkvReader.nextIfAvailable();
if (mkvElementOptional.isPresent()) {
if (tagProcessor.shouldStopProcessing()) {
return ByteBuffer.allocate(0);
}
MkvElement mkvElement = mkvElementOptional.get();
mkvElement.accept(fragmentVisitor);
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 (track.equals(metadata.getTrackName())) {
return audioBuffer;
} else if ("Track_audio/L16".equals(metadata.getTrackName()) && TrackName.AUDIO_FROM_CUSTOMER.getName().equals(track)) {
// backwards compatibility
return audioBuffer;
}
// do nothing
}
}
}
return ByteBuffer.allocate(0);
}