/* * public void AudioPlayer_ResetPlayStreamPosition() * { * m_PlayStream.Position = m_StreamRiffHeaderEndPos; * m_PlayStream.Seek(m_StreamRiffHeaderEndPos, SeekOrigin.Begin); * }*/ #region Event / Callbacks private void OnAudioPlaybackFinished(object sender, AudioPlayer.AudioPlaybackFinishEventArgs e) { if (!TheDispatcher.CheckAccess()) { TheDispatcher.BeginInvoke(DispatcherPriority.Normal, (Action <object, AudioPlayer.AudioPlaybackFinishEventArgs>)OnAudioPlaybackFinished_, sender, e); return; } #if DEBUG Debugger.Break(); #endif }
private void OnAudioPlaybackFinished_(object sender, AudioPlayer.AudioPlaybackFinishEventArgs e) { bool gotoNext = State.Audio.EndOffsetOfPlayStream == State.Audio.DataLength && (IsAutoPlay || m_PlayAutoAdvance) && !IsSelectionSet && m_UrakawaSession.DocumentProject != null; //Logger.Log("AudioPaneViewModel.OnAudioPlaybackFinished", Category.Debug, Priority.Medium); if (State.Audio.HasContent) { SetPlayHeadTimeBypassAutoPlay(State.Audio.EndOffsetOfPlayStream); //updateWaveFormPlayHead(time); } if (gotoNext) { OnAudioPlaybackFinished_RefreshStatus(); Tuple <TreeNode, TreeNode> treeNodeSelection = m_UrakawaSession.GetTreeNodeSelection(); TreeNode nextNode = treeNodeSelection.Item1.GetNextSiblingWithManagedAudio(); next: if (nextNode != null) { if (Settings.Default.Audio_EnableSkippability && m_UrakawaSession.isTreeNodeSkippable(nextNode)) { nextNode = nextNode.GetNextSiblingWithManagedAudio(); goto next; } if (IsWaveFormLoading) { if (View != null) { View.CancelWaveFormLoad(true); } } //Logger.Log("-- PublishEvent [TreeNodeSelectedEvent] AudioPaneViewModel.OnAudioPlaybackFinished", Category.Debug, Priority.Medium); //EventAggregator.GetEvent<TreeNodeSelectedEvent>().Publish(nextNode); m_UrakawaSession.PerformTreeNodeSelection(nextNode); } else { m_PlayAutoAdvance = false; if (IsMonitoringAlways) { CommandStartMonitor.Execute(); } } } else { m_PlayAutoAdvance = false; if (m_RecordAfterPlayOverwriteSelection > 0) // && State.Selection.SelectionBeginBytePosition == m_RecordAfterPlayOverwriteSelection) { SetRecordAfterPlayOverwriteSelection(-1); m_RecordAfterPlayOverwriteSelection = 1; // hack CommandStartRecord.Execute(); m_RecordAfterPlayOverwriteSelection = -1; // hack } else { OnAudioPlaybackFinished_RefreshStatus(); if (IsMonitoringAlways) { CommandStartMonitor.Execute(); } } } }