yonge 3 years ago
parent
commit
a943d84bb2

+ 13 - 2
audio-analysis/src/main/java/com/yonge/netty/dto/UserChannelContext.java

@@ -75,6 +75,8 @@ public class UserChannelContext {
 	
 	private HardLevelEnum hardLevel = HardLevelEnum.ADVANCED;
 	
+	private boolean handlerSwitch;
+	
 	private NotePlayResult queryNoteFrequency(MusicXmlNote xmlNote, double playFrequency) {
 
 		NotePlayResult result = new NotePlayResult();
@@ -145,6 +147,14 @@ public class UserChannelContext {
 		this.recordId = recordId;
 	}
 
+	public boolean getHandlerSwitch() {
+		return handlerSwitch;
+	}
+
+	public void setHandlerSwitch(boolean handlerSwitch) {
+		this.handlerSwitch = handlerSwitch;
+	}
+
 	public int getOffsetMS() {
 		return offsetMS;
 	}
@@ -199,6 +209,7 @@ public class UserChannelContext {
 		receivedTime = 0;
 		delayProcessed = false;
 		dynamicOffset = 0;
+		handlerSwitch = false;
 	}
 	
 	public MusicXmlBasicInfo getMusicXmlBasicInfo(Integer songId){
@@ -759,11 +770,11 @@ public class UserChannelContext {
 		
 		List<ChunkAnalysis> chunkAnalysisList = totalChunkAnalysisList.stream().filter(t -> Double.doubleToLongBits(t.getStartTime()) >= Double.doubleToLongBits(startTime) && Double.doubleToLongBits(t.getEndTime()) <= Double.doubleToLongBits(endTime)).collect(Collectors.toList());
 		
-		double correctedStartTime = queryFirstNoteStartTime(chunkAnalysisList, musicXmlNote);
+		/*double correctedStartTime = queryFirstNoteStartTime(chunkAnalysisList, musicXmlNote);
 		double correctedEndTime = correctedStartTime + musicXmlNote.getDuration();
 		
 		chunkAnalysisList = totalChunkAnalysisList.stream().filter(t -> Double.doubleToLongBits(t.getStartTime()) >= Double.doubleToLongBits(correctedStartTime) && Double.doubleToLongBits(t.getEndTime()) <= Double.doubleToLongBits(correctedEndTime)).collect(Collectors.toList());
-		
+		*/
 		if(chunkAnalysisList == null || chunkAnalysisList.size() == 0){
 			return false;
 		}

+ 6 - 8
audio-analysis/src/main/java/com/yonge/netty/server/service/AudioCompareHandler.java

@@ -93,8 +93,6 @@ public class AudioCompareHandler implements MessageHandler {
 
 	private SimpleDateFormat sdf = new SimpleDateFormat("yyMMddHHmmSS");
 	
-	private boolean handlerSwitch = false;
-
 	@Override
 	public String getAction() {
 		return "SOUND_COMPARE";
@@ -113,8 +111,6 @@ public class AudioCompareHandler implements MessageHandler {
 
 		switch (command) {
 		case "musicXml": // 同步music xml信息
-			
-			handlerSwitch = false;
 
 			musicXmlBasicInfo = JSONObject.toJavaObject(dataObj, MusicXmlBasicInfo.class);
 
@@ -123,6 +119,8 @@ public class AudioCompareHandler implements MessageHandler {
 			if (channelContext == null) {
 				channelContext = new UserChannelContext();
 			}
+			
+			channelContext.setHandlerSwitch(false);
 
 			channelContext.getSongMusicXmlMap().put(musicXmlBasicInfo.getExamSongId(), musicXmlBasicInfo);
 			channelContext.init(musicXmlBasicInfo.getPlatform(), musicXmlBasicInfo.getHeardLevel(), musicXmlBasicInfo.getSubjectId(), musicXmlBasicInfo.getBeatLength());
@@ -136,7 +134,7 @@ public class AudioCompareHandler implements MessageHandler {
 			// 清空缓存信息
 			channelContext.resetUserInfo();
 			
-			handlerSwitch = false;
+			channelContext.setHandlerSwitch(false);
 			
 			musicXmlBasicInfo = channelContext.getMusicXmlBasicInfo(null);
 
@@ -163,7 +161,7 @@ public class AudioCompareHandler implements MessageHandler {
 				return false;
 			}
 			
-			handlerSwitch = false;
+			channelContext.setHandlerSwitch(false);
 
 			WaveformWriter waveFileProcessor = channelContext.getWaveFileProcessor();
 			if (waveFileProcessor != null) {
@@ -238,7 +236,7 @@ public class AudioCompareHandler implements MessageHandler {
 			Integer offsetTime = dataObj.getInteger("offsetTime");
 			if(offsetTime != null){
 				channelContext.setOffsetMS(offsetTime);
-				handlerSwitch = true;
+				channelContext.setHandlerSwitch(true);
 			}
 
 			break;
@@ -292,7 +290,7 @@ public class AudioCompareHandler implements MessageHandler {
 
 		int totalLength = channelContext.getChannelBufferBytes().length;
 		
-		if (handlerSwitch == false) {
+		if (channelContext.getHandlerSwitch() == false) {
 			return false;
 		}