public int SetPositions(DsLong pCurrent, AMSeekingSeekingFlags dwCurrentFlags, DsLong pStop, AMSeekingSeekingFlags dwStopFlags)
        {
            if (m_pUnknown == IntPtr.Zero) return E_NOINTERFACE;

            SetPositionsProc _Proc = GetProcDelegate<SetPositionsProc>(14);

            if (_Proc == null) return E_UNEXPECTED;

            return (HRESULT)_Proc(
                        m_pUnknown,
                        pCurrent, dwCurrentFlags, pStop, dwStopFlags
                        );
        }
Exemple #2
0
        private void ChangePosition(long changeBy, AMSeekingSeekingFlags seekType)
        {
            long cPos, cDuration;
            int hr;

            try
            {
                hr = this.mediaSeeking.GetCurrentPosition(out cPos);
                DsError.ThrowExceptionForHR(hr);

                hr = this.mediaSeeking.GetDuration(out cDuration);
                DsError.ThrowExceptionForHR(hr);

                long nPos = 0;

                if (seekType == AMSeekingSeekingFlags.RelativePositioning)
                    nPos = cPos + (changeBy * TICK_MULT);
                else if (seekType == AMSeekingSeekingFlags.AbsolutePositioning)
                    nPos = changeBy;

                if (nPos < cDuration && nPos >= 0)
                {
                    DsLong ndspos = new DsLong(nPos);
                    hr = this.mediaSeeking.SetPositions(nPos, AMSeekingSeekingFlags.AbsolutePositioning, 0, AMSeekingSeekingFlags.NoPositioning);//mediaPosition.put_CurrentPosition(nPos);
                    DsError.ThrowExceptionForHR(hr);
                }
            }
            catch (Exception ex)
            {
                //MessageBox.Show("Error skipping: {0}", ex.Message);
                using (EPDialog ed = new EPDialog())
                    ed.ShowDialog("Error", string.Format("Error skipping: {0}", ex.Message), 10);
            }
        }