예제 #1
0
        //<SnippetDataCueEntered>
        private void MetadataTrack_DataCueEntered(TimedMetadataTrack sender, MediaCueEventArgs args)
        {
            DataCue cue  = (DataCue)args.Cue;
            string  data = System.Text.Encoding.Unicode.GetString(cue.Data.ToArray());

            System.Diagnostics.Debug.WriteLine("Cue entered: " + data);
        }
예제 #2
0
        private void AddTimedMetaDataTrack_Data()
        {
            //<SnippetAddDataTrack>
            TimedMetadataTrack metadataTrack = new TimedMetadataTrack("ID_0", "en-us", TimedMetadataKind.Data);

            metadataTrack.Label       = "Custom data track";
            metadataTrack.CueEntered += MetadataTrack_DataCueEntered;
            metadataTrack.CueExited  += MetadataTrack_CueExited;

            // Example cue data
            string data = "Cue data";

            byte[] bytes = new byte[data.Length * sizeof(char)];
            System.Buffer.BlockCopy(data.ToCharArray(), 0, bytes, 0, bytes.Length);
            Windows.Storage.Streams.IBuffer buffer = bytes.AsBuffer();

            for (int i = 0; i < 10; i++)
            {
                DataCue cue = new DataCue()
                {
                    Id        = "ID_" + i,
                    Data      = buffer,
                    StartTime = TimeSpan.FromSeconds(3 + i * 3),
                    Duration  = TimeSpan.FromSeconds(2)
                };

                metadataTrack.AddCue(cue);
            }

            mediaSource.ExternalTimedMetadataTracks.Add(metadataTrack);
            //</SnippetAddDataTrack>
        }
예제 #3
0
        private void MetadataTrack_DataCueEntered(TimedMetadataTrack sender, MediaCueEventArgs args)
        {
            var     playbackList = _mediaPlayer.Source as MediaPlaybackList;
            DataCue cue          = (DataCue)args.Cue;

            OnPlaybackCueTriggered(new PlaybackCueTriggeredEventArgs()
            {
                Segment = (int)playbackList.CurrentItemIndex,
                EventId = Convert.ToInt32(cue.Id),
                Time    = cue.StartTime
            });
        }
예제 #4
0
        public bool LoadAudioCues(List <InkEvent> events)
        {
            if (CurrentSession.Segments == 0)
            {
                this.LogMessage(RECORD_LOG_NAME, "LoadAudioCues() failed because No audio segments");
                return(false);
            }

            if (_playbackList == null)
            {
                this.LogMessage(RECORD_LOG_NAME, "LoadAudioCues() failed because MediaPlaybackList is null.");
                return(false);
            }

            foreach (var ev in events)
            {
                if (ev.SegmentId >= CurrentSession.Segments)
                {
                    this.LogMessage(RECORD_LOG_NAME, "LoadAudioCues() failed because event segment ID out of range: " + ev.SegmentId);
                }

                string data  = "Cue data";
                byte[] bytes = new byte[data.Length];
                System.Buffer.BlockCopy(data.ToCharArray(), 0, bytes, 0, bytes.Length);
                IBuffer buffer = bytes.AsBuffer();

                var cue = new DataCue {
                    Data = buffer, Id = ev.Id.ToString(), StartTime = ev.TimeHappened
                };
                var playbackItem = _playbackList.Items[ev.SegmentId];
                var track        = playbackItem.TimedMetadataTracks[0];

                try
                {
                    track.AddCue(cue);
                }
                catch (Exception e)
                {
                    this.LogMessage(RECORD_LOG_NAME, "LoadAudioCues() failed because Exception loading cue: " + e.Message);
                }
            }

            return(true);
        }