private void PlayerStateChanged(object sender, PlayerStateEventArgs e) { if (e.OldState == PlayerState.Closed) { var audioDecoder = Player.Filters.Audio.FirstOrDefault(f => f.ClsId == s_ClsIdLavAudioDecoder); if (audioDecoder == null) { return; } ComThread.Do(() => { var settings = (ILAVAudioSettings)audioDecoder.Base; m_LavAudioSettings = settings; }); m_AddDelayMenu.Enabled = true; m_MinusDelayMenu.Enabled = true; m_ResetDelayMenu.Enabled = true; } else if (e.NewState == PlayerState.Closed) { m_LavAudioSettings = null; m_AddDelayMenu.Enabled = false; m_MinusDelayMenu.Enabled = false; m_ResetDelayMenu.Enabled = false; } }
private void AddDelay(int delayMs) { if (m_LavAudioSettings == null) { return; } int delay = 0; ComThread.Do(() => { bool enabled; m_LavAudioSettings.GetAudioDelay(out enabled, out delay); if (!enabled) { delay = 0; } delay += delayMs; m_LavAudioSettings.SetAudioDelay(true, delay); }); ShowDelayText(delay); }
private void ResetDelay() { if (m_LavAudioSettings == null) { return; } ComThread.Do(() => m_LavAudioSettings.SetAudioDelay(false, 0)); ShowDelayText(0); }
private void OnMediaLoaded(object sender, EventArgs eventArgs) { m_KeyFrames = new long?[0]; var filter = VideoSourceFilter; if (filter == null) { return; } ComThread.Do(() => SaveKeyFrameInfo(filter.Base)); }
public static bool LoadFile(string subtitleFile) { if (!IsSubtitleFilterLoaded()) { return(false); } ComThread.Do(() => { var extSubSource = SubtitleFilter.Base as IDirectVobSub; var hr = extSubSource.put_FileName(subtitleFile); DsError.ThrowExceptionForHR(hr); }); return(true); }
public static bool SetTiming(SubtitleTiming timing) { if (!IsSubtitleFilterLoaded()) { return(false); } ComThread.Do(() => { var extSubSource = SubtitleFilter.Base as IDirectVobSub; var hr = extSubSource.put_SubtitleTiming(timing.Delay, timing.SpeedMultiplier, timing.SpeedDivisor); DsError.ThrowExceptionForHR(hr); }); return(true); }
public static bool SelectLanguage(string lang) { ComThread.Do(() => { var extSubSource = SubtitleFilter.Base as IDirectVobSub; if (extSubSource == null || string.IsNullOrWhiteSpace(lang)) { return; } int iCount; var hr = extSubSource.get_LanguageCount(out iCount); DsError.ThrowExceptionForHR(hr); Trace.WriteLine("LoadExternalSubtitle Count: " + iCount); for (var i = 0; i < iCount; i++) { string langName; hr = extSubSource.get_LanguageName(i, out langName); DsError.ThrowExceptionForHR(hr); Trace.WriteLine("LoadExternalSubtitle SubName " + langName); if (lang != langName) { continue; } Trace.WriteLine("LoadExternalSubtitle Select Stream " + i); hr = extSubSource.put_SelectedLanguage(i); DsError.ThrowExceptionForHR(hr); var iSelected = 0; hr = extSubSource.get_SelectedLanguage(out iSelected); DsError.ThrowExceptionForHR(hr); Trace.WriteLine("LoadExternalSubtitle Select Result: " + iSelected); break; } }); return(true); }
public static SubtitleTiming GetTiming() { if (!IsSubtitleFilterLoaded()) { return(null); } SubtitleTiming timing = null; ComThread.Do(() => { var extSubSource = SubtitleFilter.Base as IDirectVobSub; int delay, mul, div; var hr = extSubSource.get_SubtitleTiming(out delay, out mul, out div); DsError.ThrowExceptionForHR(hr); timing = new SubtitleTiming(delay, mul, div); }); return(timing); }