/// <summary>
        /// This is called when PrepareForConnection was successful
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="c"></param>
        /// <param name="h"></param>
        protected void ConnectionSink(AVRenderer sender, AVConnection c, object h)
        {
            lock (ConnectionLock)
            {
                if (TableOfHandles.ContainsKey(h) == false)
                {
                    return;
                }
            }

            //			OpenSource.Utilities.InstanceTracker.StopTimer("PrepareForConnection");

            _AVR.OnCreateConnection2 -= new AVRenderer.ConnectionHandler(ConnectionSink);
            c.OnCurrentURIChanged    += new AVConnection.CurrentURIChangedHandler(UriEventSink);

            if (this.CurrentPlayListMode == PlayListMode.SINGLE_URI)
            {
                c.OnPlayStateChanged += new AVConnection.PlayStateChangedHandler(PlayStateSink);
            }
            c.CurrentPlayList = this;

            OpenSource.Utilities.InstanceTracker.StartTimer();

            //			c.SetAVTransportURI(PlayListUri, "", c, new CpAVTransport.Delegate_OnResult_SetAVTransportURI(SetURISink));
            c.SetAVTransportURI(PlayListUri, PlayListMetaData, c, new CpAVTransport.Delegate_OnResult_SetAVTransportURI(SetURISink));
        }
        /// <summary>
        /// This method gets called when the PlayState of the connection changes
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="NewState"></param>
        protected void PlayStateSink(AVConnection sender, AVConnection.PlayState NewState)
        {
            if (NewState == AVConnection.PlayState.STOPPED)
            {
                if (FakePlayQueue.Count == 0)
                {
                    return;
                }

                if (sender.MediaResource.ContentUri != PlayListUri)
                {
                    // Somebody else changed the Uri from under us, so we have no choice
                    // but to give up
                    FakePlayQueue.Clear();
                    return;
                }

                IMediaResource r = (IMediaResource)FakePlayQueue.Dequeue();
                PlayListUri = r.ContentUri;
                //ToDo: Add MetaData
                sender.SetAVTransportURI(r.ContentUri, "", sender, new CpAVTransport.Delegate_OnResult_SetAVTransportURI(FakePlayListSink));
            }
        }
        /// <summary>
        /// This is called when PrepareForConnection was successful and
        /// returned a recycled connection id
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="c"></param>
        /// <param name="h"></param>
        protected void RecycledSink(AVRenderer sender, AVConnection c, object h)
        {
            lock (ConnectionLock)
            {
                if (TableOfHandles.ContainsKey(h) == false)
                {
                    return;
                }
            }

            _AVR.OnRecycledConnection2 -= new AVRenderer.ConnectionHandler(RecycledSink);

            IsRecycled             = true;
            c.OnCurrentURIChanged += new AVConnection.CurrentURIChangedHandler(UriEventSink);

            if (this.CurrentPlayListMode == PlayListMode.SINGLE_URI)
            {
                c.OnPlayStateChanged += new AVConnection.PlayStateChangedHandler(PlayStateSink);
            }
            c.CurrentPlayList = this;

            //			c.SetAVTransportURI(PlayListUri, "", c, new CpAVTransport.Delegate_OnResult_SetAVTransportURI(this.SetURISink));
            c.SetAVTransportURI(PlayListUri, PlayListMetaData, c, new CpAVTransport.Delegate_OnResult_SetAVTransportURI(this.SetURISink));
        }
Exemplo n.º 4
0
        /// <summary>
        /// This method gets called when the PlayState of the connection changes
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="NewState"></param>
        protected void PlayStateSink(AVConnection sender, AVConnection.PlayState NewState)
        {
            if (NewState == AVConnection.PlayState.STOPPED)
            {
                if (FakePlayQueue.Count == 0) return;

                if (sender.MediaResource.ContentUri != PlayListUri)
                {
                    // Somebody else changed the Uri from under us, so we have no choice
                    // but to give up
                    FakePlayQueue.Clear();
                    return;
                }

                IMediaResource r = (IMediaResource)FakePlayQueue.Dequeue();
                PlayListUri = r.ContentUri;
                //ToDo: Add MetaData
                sender.SetAVTransportURI(r.ContentUri, "", sender, new CpAVTransport.Delegate_OnResult_SetAVTransportURI(FakePlayListSink));
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// This is called when PrepareForConnection was successful and
        /// returned a recycled connection id
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="c"></param>
        /// <param name="h"></param>
        protected void RecycledSink(AVRenderer sender, AVConnection c, object h)
        {
            lock (ConnectionLock)
            {
                if (TableOfHandles.ContainsKey(h) == false) return;
            }

            _AVR.OnRecycledConnection2 -= new AVRenderer.ConnectionHandler(RecycledSink);

            IsRecycled = true;
            c.OnCurrentURIChanged += new AVConnection.CurrentURIChangedHandler(UriEventSink);

            if (this.CurrentPlayListMode == PlayListMode.SINGLE_URI)
            {
                c.OnPlayStateChanged += new AVConnection.PlayStateChangedHandler(PlayStateSink);
            }
            c.CurrentPlayList = this;

            //			c.SetAVTransportURI(PlayListUri, "", c, new CpAVTransport.Delegate_OnResult_SetAVTransportURI(this.SetURISink));
            c.SetAVTransportURI(PlayListUri, PlayListMetaData, c, new CpAVTransport.Delegate_OnResult_SetAVTransportURI(this.SetURISink));
        }
Exemplo n.º 6
0
        /// <summary>
        /// This is called when PrepareForConnection was successful
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="c"></param>
        /// <param name="h"></param>
        protected void ConnectionSink(AVRenderer sender, AVConnection c, object h)
        {
            lock (ConnectionLock)
            {
                if (TableOfHandles.ContainsKey(h) == false) return;
            }

            //			OpenSource.Utilities.InstanceTracker.StopTimer("PrepareForConnection");

            _AVR.OnCreateConnection2 -= new AVRenderer.ConnectionHandler(ConnectionSink);
            c.OnCurrentURIChanged += new AVConnection.CurrentURIChangedHandler(UriEventSink);

            if (this.CurrentPlayListMode == PlayListMode.SINGLE_URI)
            {
                c.OnPlayStateChanged += new AVConnection.PlayStateChangedHandler(PlayStateSink);
            }
            c.CurrentPlayList = this;

            OpenSource.Utilities.InstanceTracker.StartTimer();

            //			c.SetAVTransportURI(PlayListUri, "", c, new CpAVTransport.Delegate_OnResult_SetAVTransportURI(SetURISink));
            c.SetAVTransportURI(PlayListUri, PlayListMetaData, c, new CpAVTransport.Delegate_OnResult_SetAVTransportURI(SetURISink));

        }