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 ); }
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); } }