public Worker(int queueNumber) { super(); this.queueNumber=queueNumber; initialTime=scheduler.getClock().getTime(); }
public void activate() { this.active = true; cycleStart = clock.getTime(); this.start(); }
public Worker(int queueNumber) { super(); this.queueNumber=queueNumber; initialTime=scheduler.getClock().getTime(); }
public void reinit() { initialTime=scheduler.getClock().getTime(); }
public void reinit() { initialTime=scheduler.getClock().getTime(); }
@Override public void activate() { this.lastPacketData = scheduler.getClock().getTime(); this.startTime = scheduler.getClock().getTime(); output.start(); oobOutput.start(); if (this.postSpeechTimer > 0 || this.preSpeechTimer > 0 || this.maxRecordTime > 0) { scheduler.submitHeatbeat(this.heartbeat); } // send event fireEvent(recorderStarted); }
@Override public void onMediaTransfer(Frame frame) throws IOException { // extract data data = frame.getData(); offset = frame.getOffset(); len = frame.getLength(); byteBuffer.clear(); byteBuffer.limit(len - offset); byteBuffer.put(data, offset, len - offset); byteBuffer.rewind(); RecorderFileSink snk = sink.get(); if (snk != null) snk.write(byteBuffer); if (this.postSpeechTimer > 0 || this.preSpeechTimer > 0) { // detecting voice activity if (this.voiceDetector.detect(data, offset, len)) { this.lastPacketData = scheduler.getClock().getTime(); if(!this.speechDetected) { fireEvent(new RecorderEventImpl(RecorderEvent.SPEECH_DETECTED, this)); } this.speechDetected = true; } } else { this.lastPacketData = scheduler.getClock().getTime(); } }
@Override public void run() { long cycleDuration; while(active) { executeQueue(taskQueues[RECEIVER_QUEUE]); while(activeTasksCount.get()!=0) LockSupport.park(); executeQueue(taskQueues[SENDER_QUEUE]); while(activeTasksCount.get()!=0) LockSupport.park(); //sleep till next cycle cycleDuration=clock.getTime() - cycleStart; if(cycleDuration<4000000L) try { sleep(4L-cycleDuration/1000000L,(int)((4000000L-cycleDuration)%1000000L)); } catch(InterruptedException e) { //lets continue } //new cycle starts , updating cycle start time by 4ms cycleStart = cycleStart + 4000000L; } }
@Override public long perform() { final long currentTime = scheduler.getClock().getTime(); final long idleTime = currentTime - lastPacketData; // Abort recording operation if user did not speak during initial detection period if (preSpeechTimer > 0 && !speechDetected && idleTime > preSpeechTimer) { qualifier = RecorderEvent.NO_SPEECH; scheduler.submit(killRecording, PriorityQueueScheduler.INPUT_QUEUE); return 0; } // Abort recording operation if user did not speak for a while if (postSpeechTimer > 0 && speechDetected && idleTime > postSpeechTimer) { qualifier = RecorderEvent.SUCCESS; scheduler.submit(killRecording, PriorityQueueScheduler.INPUT_QUEUE); return 0; } // Abort recording if maximum time limit is reached final long duration = currentTime - startTime; if (maxRecordTime > 0 && duration >= maxRecordTime) { qualifier = RecorderEvent.MAX_DURATION_EXCEEDED; scheduler.submit(killRecording, PriorityQueueScheduler.INPUT_QUEUE); return 0; } scheduler.submitHeatbeat(this); return 0; }
if(initialDelay+initialTime>scheduler.getClock().getTime())
if(initialDelay+initialTime>scheduler.getClock().getTime())