Exemple #1
0
        // 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);
        }
Exemple #2
0
        public void Stop()
        {
            if (tsStream != null)
            {
                tsStream.Stop();
                tsStream = null;
            }

            decoder.Pause();
            Initialize();
        }
Exemple #3
0
        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();
            }
        }