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);
        }
Exemple #4
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));
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        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);
        }
Exemple #7
0
        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);
        }
Exemple #8
0
        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);
        }