// Public Exposure public int Open(string url) { int ret; if (decoder != null) { decoder.Pause(); } Initialize(); if ((ret = decoder.Open(url)) != 0) { return(ret); } if (!decoder.isReady) { return(-1); } isReady = true; CurTime = 0; audioExternalDelay = 0; subsExternalDelay = 0; hasAudio = decoder.hasAudio; hasVideo = decoder.hasVideo; hasSubs = decoder.hasSubs; Width = (hasVideo) ? decoder.vStreamInfo.width : 0; Height = (hasVideo) ? decoder.vStreamInfo.height : 0; Duration = (hasVideo) ? decoder.vStreamInfo.durationTicks : decoder.aStreamInfo.durationTicks; return(0); }
public void Stop() { if (tsStream != null) { tsStream.Stop(); tsStream = null; } decoder.Pause(); Initialize(); }
private void Initialize() { if (openOrBuffer != null) { openOrBuffer.Abort(); } if (streamer != null && isTorrent) { streamer.Pause(); } if (decoder != null) { decoder.Pause(); } if (screamer != null) { screamer.Abort(); } if (aScreamer != null) { aScreamer.Abort(); } if (vScreamer != null) { vScreamer.Abort(); } if (sScreamer != null) { sScreamer.Abort(); } isReady = false; status = Status.STOPPED; beforeSeeking = Status.STOPPED; decoder.HWAccel = HWAccel; lock (aFrames) aFrames = new ConcurrentQueue <MediaFrame>(); lock (vFrames) vFrames = new ConcurrentQueue <MediaFrame>(); lock (sFrames) sFrames = new ConcurrentQueue <MediaFrame>(); if (streamer != null) { streamer.BufferingDoneClbk = BufferingDone; streamer.BufferingAudioDoneClbk = BufferingAudioDone; streamer.BufferingSubsDoneClbk = BufferingSubsDone; streamer.MediaFilesClbk = MediaFilesClbk; streamer.StatsClbk = StatsClbk; streamer.Stop(); } }