Ejemplo n.º 1
0
 /// <summary>
 /// Get MediaItem position in CurrentPlaylist or -1 when not found,
 /// need for "InsertMediaItem(int atPosition, MediaItem item)"
 /// </summary>
 public int MediaItemPosition(MediaItem item)
 {
     return currentPlaylist.GetMediaItemIndex(item);
 }
Ejemplo n.º 2
0
 private void DoOnMediaItemEndPlay(object sender, MediaItem item)
 {
     Console.WriteLine("MediaItem End Play = " + item.MediaFile);
     Console.WriteLine();
 }
Ejemplo n.º 3
0
        private NetStreamHelper NewNetStreamHelper(MediaItem item)
        {
            NetStreamHelper nth = null;
            if (netConnection != null && netConnection.IsConnected)
            {
                nth = new NetStreamHelper();
                nth.NetStream = new NetStream(netConnection, false);
                nth.NetStream.OnAssignStream_ID += new NS_OnAssignStream_ID(NS_OnAssignStream_ID);

                nth.Item = item;
                nth.Buffer = new CircularBlockBuffer(Convert.ToInt32(((128 * 1024) / 8) * 30)); // 30 seconden buffer voor 128kbit mp3 stream (= 480kb)
                // renumber
                for (int i = 0; i < netStreams.Count; i++)
                {
                    netStreams[i].IndexNumberInList = i;
                } //for
                nth.IndexNumberInList = netStreams.Count;
            }

            return nth;
        }
Ejemplo n.º 4
0
 private void DoOnNextMediaItemChanged(object sender, MediaItem oldMediaItem, MediaItem newMediaItem)
 {
     if (newMediaItem == null)
     {
         AddLogLine("Next Media = None");
         lNext.Text = "";
     }
     else
     {
         AddLogLine("Next Media = " + newMediaItem.MediaFile);
         lNext.Text = newMediaItem.MediaFile;
     }
 }
Ejemplo n.º 5
0
 private void DoOnMediaItemSeekEnd(object sender, MediaItem item)
 {
     Console.WriteLine("SeekEnd (" + item.MediaFile + ")");
 }
Ejemplo n.º 6
0
 /// <summary>
 /// Remove and MediaItem from the playlist
 /// </summary>
 public bool RemoveMediaItem(MediaItem item)
 {
     return RemoveMediaItem(item.GUID);
 }
Ejemplo n.º 7
0
        private void DoOnNextMediaItemChanged(object sender, MediaItem oldMediaItem, MediaItem newMediaItem)
        {
            if (OnNextMediaItemChanged != null)
            {
                MP_Params param = new MP_Params();
                param.Params = new object[] { OnNextMediaItemChanged, this, oldMediaItem, newMediaItem };

                SynchronizationContext sc;
                lock (lockVAR)
                {
                    sc = synchronizationContext;
                } //lock
                if (sc != null)
                {
                    sc.Post(HandleOnEventCallUserCode, param);
                }
                else
                {
                    HandleOnEventCallUserCode(param);
                }
            }

            DoEvent_MP_OnControleButtonStateChange(OnControleButtonStateChange, this);
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Deep clone
        /// </summary>
        public object Clone()
        {
            MediaItem clone = new MediaItem();

            clone.GUID = new Guid(GUID.ToString());
            clone.MediaFile = MediaFile;
            clone.SkipBecauseOfError = SkipBecauseOfError;
            clone.NetStreamDurationInMS = NetStreamDurationInMS;
            clone.MetaDurationInMS = MetaDurationInMS;
            if (MetaData is ICloneable)
            {
                clone.MetaData = (MediaItemMetaData)(MetaData as ICloneable).Clone();
            }
            else
            {
                clone.MetaData = MetaData;
            }
            if (Tag is ICloneable)
            {
                clone.Tag = (Tag as ICloneable).Clone();
            }
            else
            {
                clone.Tag = Tag;
            }
            clone._ShuffleDone = _ShuffleDone;

            return clone;
        }
Ejemplo n.º 9
0
        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] // hide it for code completion
        protected internal bool InsertMediaItem(int atPosition, MediaItem item)
        {
            if (atPosition < 0)
            {
                atPosition = 0;
            }

            int oldPreviousMediaItemIndex = PreviousMediaItemIndex;
            int oldCurrentMediaItemIndex = CurrentMediaItemIndex;
            int oldNextMediaItemIndex = NextMediaItemIndex;
            lock (lockVAR)
            {
                // Check if not too many tracks in playlist
                if (playlist.Count >= MAX_MEDIAITEMS)
                {
                    return false;
                }
                // Check GUID is unique. This is a requirment for the playlist to work correctly!!!
                foreach (MediaItem tmpItem in playlist)
                {
                    if (item.GUID.Equals(tmpItem.GUID))
                    {
                        return false;
                    }
                } //foreach


                // Pre checks are done, we can continue
                item._ShuffleDone = false;

                if (atPosition <= previousMediaItemIndex)
                {
                    // correct previousMediaItem index
                    previousMediaItemIndex++;
                }
                if (atPosition <= currentMediaItemIndex)
                {
                    playlist.Insert(atPosition, item);
                    currentMediaItemIndex++;
                }
                else
                {
                    if (atPosition >= playlist.Count)
                    {
                        playlist.Add(item);
                    }
                    else
                    {
                        playlist.Insert(atPosition, item);
                    }
                }

                // Maak eerste item actief
                if (!CheckIndexValidInPlaylist(currentMediaItemIndex))
                {
                    if (playlist.Count <= 0)
                    {
                        currentMediaItemIndex = -1;
                    }
                    else
                    {
                        currentMediaItemIndex = 0;
                    }
                }

                if (oldPreviousMediaItemIndex >= atPosition)
                {
                    oldPreviousMediaItemIndex++;
                }
                if (oldNextMediaItemIndex >= atPosition)
                {
                    oldNextMediaItemIndex++;
                }
                //correct historyList
                for (int i = 0; i < previousHistoryList.Count; i++)
                {
                    if (previousHistoryList[i] >= atPosition)
                    {
                        previousHistoryList[i]++;
                    }
                } //foreach

                // When going to 2 items a "next" has a new chance to become valid
                if ((shuffleMode && playlist.Count == 2) || !shuffleMode)
                {
                    nextMediaItemIndex = CalcNextMediaItem(false);
                }
                if (!shuffleMode)
                {
                    // when not in shuflemode previous will not change in subsequent calc to CalcPreviousMediaItem as long 
                    // as currentMediaItemIndex stays the same (content can off course change)
                   previousMediaItemIndex = CalcPreviousMediaItem(currentMediaItemIndex);
                }
            }
            int newPreviousMediaItemIndex = PreviousMediaItemIndex;
            int newCurrentMediaItemIndex = CurrentMediaItemIndex;
            int newNextMediaItemIndex = NextMediaItemIndex;


            // Fire event playlist has changed
            if (OnPlaylistChanged != null)
            {
                OnPlaylistChanged(this, this);
            }

            // Do we need to fire an event that the previous MediaItem has changed?
            if (oldPreviousMediaItemIndex != newPreviousMediaItemIndex && OnCurrentMediaItemChanged != null)
            {
                OnCurrentMediaItemChanged(this, SafeSelectClonedMediaItem(oldPreviousMediaItemIndex), SafeSelectClonedMediaItem(newPreviousMediaItemIndex));
            }
            // Do we need to fire an event that the current MediaItem has changed?
            if (oldCurrentMediaItemIndex != newCurrentMediaItemIndex && OnCurrentMediaItemChanged != null)
            {
                OnCurrentMediaItemChanged(this, SafeSelectClonedMediaItem(oldCurrentMediaItemIndex), SafeSelectClonedMediaItem(newCurrentMediaItemIndex));
            }
            // Do we need to fire an event that the next MediaItem has changed?
            if (oldNextMediaItemIndex != newNextMediaItemIndex && OnNextMediaItemChanged != null)
            {
                OnNextMediaItemChanged(this, SafeSelectClonedMediaItem(oldNextMediaItemIndex), SafeSelectClonedMediaItem(newNextMediaItemIndex));
            }

            return true;
        }
Ejemplo n.º 10
0
        private void MP_OnPreBuffer(object sender, MediaItem mediaItem, PreBufferState state)
        {
            switch (state)
            {
                case PreBufferState.PrebufferingStarted:
                    lPreBuf.BackColor = Color.Orange;
                    lPreBuf.Visible = true;
                    break;
                case PreBufferState.PrebufferingReady:
                    lPreBuf.BackColor = Color.Green;
                    lPreBuf.Visible = true;
                    break;
                case PreBufferState.PrebufferingEndedAndPlaying:
                case PreBufferState.PrebufferingEndedAndCanceled:
                case PreBufferState.Unknown:
                default:
                    lPreBuf.Visible = false;
                    break;

            } //switch
        }
Ejemplo n.º 11
0
        private void bInsert_Click(object sender, EventArgs e)
        {
            if (mediaplayer != null && lbPlaylist.SelectedIndex >= 0)
            {
                MediaItem item = new MediaItem("MP3:Kriss_-_03_-_jazz_club.mp3");
                item.MetaDurationInMS = ((5 * 60) + 25) * 1000;
                mediaplayer.InsertMediaItem(PlaylistPosition.Next, item);

                UpdateScreenPlaylist();
            }
        }
Ejemplo n.º 12
0
 private void DoOnMediaItemEndPlay(object sender, MediaItem item)
 {
     AddLogLine("MediaItem End Play = " + item.MediaFile);
     AddLogLine("");
 }
Ejemplo n.º 13
0
 private void DoOnMediaItemSeekEnd(object sender, MediaItem item)
 {
     AddLogLine("SeekEnd (" + item.MediaFile + ")");
 }
Ejemplo n.º 14
0
        private void DoOnMediaItemStartPlay(object sender, MediaItem item)
        {
            lFilename.Text = item.MediaFile;
            AddLogLine("");
            AddLogLine("MediaItem Start Play = " + item.MediaFile);

            int count = 0;
            foreach (MediaItem mediaItem in mediaplayer.CurrentPlaylist)
            {
                if (item.GUID.Equals(mediaItem.GUID))
                {
                    lbPlaylist.SelectedIndex = count;
                    break;
                }
                count++;
            } //foreach
        }
Ejemplo n.º 15
0
        /// <summary>
        /// Insert a MediaItem at the specified location.
        /// </summary>
        public bool InsertMediaItem(int atPosition, MediaItem item)
        {
            MediaItem preBufferedItem = null;
            lock (lockVAR)
            {
                if (netStreams.Count > 1)
                {
                    preBufferedItem = netStreams[1].Item;
                }
            } //lock

            bool result = currentPlaylist.InsertMediaItem(atPosition, item);

            MediaItem nextBufferedItem = currentPlaylist.NextMediaItem;

            if (preBufferedItem != null && nextBufferedItem != null && item.GUID.Equals(nextBufferedItem.GUID))
            {
                MP_Message message = new MP_Message();
                message.MethodCall = MP_MethodCall.KillPreBufferedMediaItem;
                AddMessageToPump(message);
            }

            return result;
        }
Ejemplo n.º 16
0
        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] // hide it for code completion
        protected internal bool ChangeCurrentMediaItem(MediaItem newItem, bool addCurrentToPreviousHistory)
        {
            // Should only be changed by "Mediaplayer" class!!
            lock (lockVAR)
            {
                bool found = true;
                int index = -1;

                if (newItem != null)
                {
                    // First find selected item
                    found = false;
                    foreach (MediaItem item in playlist)
                    {
                        index++;
                        if (item.GUID.Equals(newItem.GUID))
                        {
                            // found
                            found = true;
                            break;
                        }
                    } //foreach
                }
                if (!found)
                {
                    index = -1;
                }

                // Let this property handle it all
                return ChangeCurrentMediaItemIndex(index, addCurrentToPreviousHistory);
            } //lock
        }
Ejemplo n.º 17
0
 /// <summary>
 /// Insert a MediaItem at the specified location.
 /// </summary>
 public bool InsertMediaItem(PlaylistPosition position, MediaItem item)
 {
     return InsertMediaItem(currentPlaylist.AtPositionInsertMediaItem(position), item);
 }
Ejemplo n.º 18
0
 [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] // hide it for code completion
 protected internal int GetMediaItemIndex(MediaItem mediaItem)
 {
     return GetMediaItemIndex(mediaItem.GUID);
 }
Ejemplo n.º 19
0
 /// <summary>
 /// Change the to be played MediaItem
 /// </summary>
 public bool ChangeCurrentMediaItem(MediaItem newItem, bool addCurrentToPreviousHistory)
 {
     return currentPlaylist.ChangeCurrentMediaItem(newItem, addCurrentToPreviousHistory);
 }
Ejemplo n.º 20
0
 private void DoOnNextMediaItemChanged(object sender, MediaItem oldMediaItem, MediaItem newMediaItem)
 {
     if (newMediaItem == null)
     {
         Console.WriteLine("Next Media = None");
     }
     else
     {
         Console.WriteLine("Next Media = " + newMediaItem.MediaFile);
     }
 }
Ejemplo n.º 21
0
        private void DoEvent_MP_OnPreBuffer(MP_OnPreBuffer doEvent, object sender, MediaItem mediaItem, PreBufferState state)
        {
            if (doEvent != null && mediaItem != null)
            {
                MP_Params param = new MP_Params();
                param.Params = new object[] { doEvent, sender, mediaItem, state };

                SynchronizationContext sc;
                lock (lockVAR)
                {
                    sc = synchronizationContext;
                } //lock
                if (sc != null)
                {
                    sc.Post(HandleOnEventCallUserCode, param);
                }
                else
                {
                    HandleOnEventCallUserCode(param);
                }
            }
        }
Ejemplo n.º 22
0
        private void NewPlaylist()
        {
            if (mediaplayer != null)
            {
                mediaplayer.ClearPlaylist();

                MediaItem item;

                item = new MediaItem("MP3:Comfort_Fit_-_03_-_Sorry.mp3");
                item.MetaDurationInMS = ((3 * 60) + 21) * 1000;
                mediaplayer.InsertMediaItem(PlaylistPosition.Last, item);

                item = new MediaItem("MP3:Kriss_-_03_-_jazz_club.mp3");
                item.MetaDurationInMS = ((5 * 60) + 25) * 1000;
                mediaplayer.InsertMediaItem(PlaylistPosition.Last, item);

                item = new MediaItem("MP3:Monopole_-_02_-_Stereo-vision_radio.mp3");
                item.MetaDurationInMS = ((8 * 60) + 16) * 1000;
                mediaplayer.InsertMediaItem(PlaylistPosition.Last, item);

                item = new MediaItem("MP3:Paper_Navy_-_08_-_Swan_Song.mp3");
                item.MetaDurationInMS = ((3 * 56) + 18) * 1000;
                mediaplayer.InsertMediaItem(PlaylistPosition.Last, item);
            }
        }