Ejemplo n.º 1
0
    void ImportTrackEvent(XmlElement parent, TrackEvents events)
    {
        TrackEvent trackEvent = null;
        AudioEvent audioEvent = null;
        VideoEvent videoEvent = null;

        if (parent.Name == "AudioEvent")
        {
            audioEvent = new AudioEvent();
            trackEvent = (TrackEvent)audioEvent;
        }
        else if (parent.Name == "VideoEvent")
        {
            videoEvent = new VideoEvent();
            trackEvent = (TrackEvent)videoEvent;
        }
        events.Add(trackEvent);
        try { trackEvent.Name = ChildString(parent, "Name"); } catch {}
        trackEvent.Start = ChildTimecode(parent, "Start");
        Timecode length = ChildTimecode(parent, "Length");

        if (0 >= length.Nanos)
        {
            throw new ApplicationException("invalid event length");
        }
        trackEvent.Length = length;
        try { trackEvent.PlaybackRate = ChildDouble(parent, "PlaybackRate"); } catch {}
        try { trackEvent.Mute = ChildBoolean(parent, "Mute"); } catch {}
        try { trackEvent.Locked = ChildBoolean(parent, "Locked"); } catch {}
        try { trackEvent.Loop = ChildBoolean(parent, "Loop"); } catch {}
        try { trackEvent.Selected = ChildBoolean(parent, "Selected"); } catch {}
        if (null != audioEvent)
        {
            try { audioEvent.Normalize = ChildBoolean(parent, "Normalize"); } catch {}
            try { audioEvent.InvertPhase = ChildBoolean(parent, "InvertPhase"); } catch {}
            try { audioEvent.Channels = ChildChannelRemapping(parent, "Channels"); } catch {}
        }
        else if (null != videoEvent)
        {
            try { videoEvent.UnderSampleRate = ChildDouble(parent, "UnderSampleRate"); } catch {}
            try { videoEvent.MaintainAspectRatio = ChildBoolean(parent, "MaintainAspectRatio"); } catch {}
            try { videoEvent.ReduceInterlace = ChildBoolean(parent, "ReduceInterlace"); } catch {}
            try { videoEvent.ResampleMode = ChildVideoResampleMode(parent, "ResampleMode"); } catch {}
        }
        Take activeTake = ImportTakes(parent, trackEvent.Takes, trackEvent.MediaType);

        if (null != activeTake)
        {
            trackEvent.ActiveTake = activeTake;
        }
        ImportFade(parent, "FadeIn", trackEvent.FadeIn);
        ImportFade(parent, "FadeOut", trackEvent.FadeOut);
        if (null != videoEvent)
        {
            ImportEnvelopes(parent, videoEvent.Envelopes);
            ImportEffects(parent, videoEvent.Effects, myVegas.VideoFX);
            ImportVideoMotion(parent, videoEvent.VideoMotion);
        }
    }
Ejemplo n.º 2
0
            private void _read()
            {
                _magic       = m_io.EnsureFixedContents(new byte[] { 77, 84, 114, 107 });
                _lenEvents   = m_io.ReadU4be();
                __raw_events = m_io.ReadBytes(LenEvents);
                var io___raw_events = new KaitaiStream(__raw_events);

                _events = new TrackEvents(io___raw_events, this, m_root);
            }
        public CustomApplicationContext()
        {
            Init db = new Init();
            SessionService = new Service(db);

            Te = new TrackEvents(new KeyboardHook.KeyboardHook(), new SessionSwitch.SessionSwitch(), SessionService);
            Application.ApplicationExit += Te.OnApplicationExit;

            InitializeContext();
        }
Ejemplo n.º 4
0
    void ExportEvents(XmlElement parent, TrackEvents events)
    {
        XmlElement elt = AddChild(parent, "Events");

        elt.SetAttribute("Count", events.Count.ToString(myNumberFormat));
        foreach (TrackEvent trackEvent in events)
        {
            ExportTrackEvent(elt, trackEvent);
        }
    }
Ejemplo n.º 5
0
        /// <summary>
        /// receive and handle input on click of feedback dialog
        /// </summary>
        /// <param name="step"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async Task <DialogTurnResult> MessageReceivedAsync(WaterfallStepContext step, CancellationToken cancellationToken = default(CancellationToken))
        {
            var question = (string)step.Result;

            step.ActiveDialog.State["question"] = question;
            string searchedText = step.Context.Activity.Text;

            // for storing data into telemetry.
            string lastSearchedText = await accessors.LastSearchPreference.GetAsync(step.Context, () => { return(string.Empty); });

            string lastAnswerText = await accessors.LastAnswerPreference.GetAsync(step.Context, () => { return(string.Empty); });

            int negative_flag = 0;

            if (searchedText.Contains(QNABotSettings.positivefeedback) || searchedText.Contains(QNABotSettings.negativefeedback))
            {
                try
                {
                    if (searchedText.Contains(QNABotSettings.positivefeedback))
                    {
                        TrackEvents.TrackEvent(lastSearchedText, lastAnswerText, "Yes");
                        await step.Context.SendActivityAsync(QNABotSettings.positivemsg);
                    }

                    else if (searchedText.Contains(QNABotSettings.negativefeedback) && lastSearchedText != "")
                    {
                        TrackEvents.TrackEvent(lastSearchedText, lastAnswerText, "No");

                        var feedback = step.Context.Activity.CreateReply(QNABotSettings.accurateanswer);
                        step.Context.Activity.Text = lastSearchedText;
                        var recognizerNegResult = await accessors.LuisServices[Settings.LuisName01].RecognizeAsync(step.Context, cancellationToken);
                        negative_flag = 1;
                        await CarouselDialog.CarouselAfterNegativeFeedback(feedback, recognizerNegResult, accessors, step, negative_flag, cancellationToken); // Carousel Dialog

                        await _userState.DeleteAsync(step.Context, cancellationToken);

                        negative_flag = 0;
                    }
                    else
                    {
                        TrackEvents.TrackEvent(lastSearchedText, lastAnswerText, "No");
                        await NoneOfAboveDialog.NoneofTheAbove(step);//No Answer Dialog
                    }
                }

                catch
                {
                    throw;
                }
            }
            return(await step.EndDialogAsync());
        }
Ejemplo n.º 6
0
            private void _read()
            {
                _magic = m_io.ReadBytes(4);
                if (!((KaitaiStream.ByteArrayCompare(Magic, new byte[] { 77, 84, 114, 107 }) == 0)))
                {
                    throw new ValidationNotEqualError(new byte[] { 77, 84, 114, 107 }, Magic, M_Io, "/types/track/seq/0");
                }
                _lenEvents   = m_io.ReadU4be();
                __raw_events = m_io.ReadBytes(LenEvents);
                var io___raw_events = new KaitaiStream(__raw_events);

                _events = new TrackEvents(io___raw_events, this, m_root);
            }
Ejemplo n.º 7
0
    void ImportTrackEvents(XmlElement parent, TrackEvents events)
    {
        XmlElement elt = parent["Events"];

        if (null == elt)
        {
            return;
        }
        foreach (XmlElement child in elt)
        {
            ImportTrackEvent(child, events);
        }
    }
Ejemplo n.º 8
0
        public static async Task directAnswer(string lastEvent, BotAccessors accessors, string score, WaterfallStepContext step, CancellationToken cancellationToken = default(CancellationToken))
        {
            var recognizerResult = await accessors.LuisServices[Settings.LuisName01].RecognizeAsync(step.Context, cancellationToken);
            var topIntent        = recognizerResult?.GetTopScoringIntent();

            string LastSearch = step.Context.Activity.Text;

            if (lastEvent.ToString().ToLower() != "postback")
            {
                await accessors.LastSearchPreference.SetAsync(step.Context, LastSearch);

                await accessors.UserState.SaveChangesAsync(step.Context, false, cancellationToken);
            }
            step.Context.Activity.Text = score;
            var response = await accessors.QnAServices[Settings.QnAName01].GetAnswersAsync(step.Context);

            if (response != null && response.Length > 0)
            {
                string responseType = "text";

                if (!string.IsNullOrEmpty(responseType))
                {
                    string LastAnswer = response[0].Answer;
                    if (lastEvent.ToString().ToLower() != "postback")
                    {
                        await accessors.LastAnswerPreference.SetAsync(step.Context, LastAnswer);

                        await accessors.UserState.SaveChangesAsync(step.Context, false, cancellationToken);
                    }
                    //if (true)
                    //{

                    //}
                    TrackEvents.TrackConversation(LastSearch, LastAnswer, "Direct Answer", topIntent.Value.score.ToString(), topIntent.Value.intent, from: step.Context.Activity.From);
                    await step.Context.SendCustomResponseAsync(response[0].Answer, responseType);

                    await step.BeginDialogAsync(FeedbackDialog.dialogId, null, cancellationToken);
                }
            }
            else
            {
                var message = QNABotSettings.sorrynextrelease;
                await step.Context.SendCustomResponseAsync(message);
            }
        }
Ejemplo n.º 9
0
        /// <summary>
        /// based on question returning answer from luis n qna.
        /// </summary>
        /// <param name="step"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        private async Task <DialogTurnResult> ProcessQuestionDialog(WaterfallStepContext step, CancellationToken cancellationToken = default(CancellationToken))
        {
            var question = (string)step.Result;

            step.ActiveDialog.State["question"] = question;
            string lastEvent    = string.Empty;
            string searchedText = step.Context.Activity.Text;


            // for storing data into telemetry.
            string lastSearchedText = await accessors.LastSearchPreference.GetAsync(step.Context, () => { return(string.Empty); });

            string lastAnswerText = await accessors.LastAnswerPreference.GetAsync(step.Context, () => { return(string.Empty); });


            if (step.Context.Activity.Text != null && isValidJson(step.Context.Activity.Text))
            {
                var cButton = JsonConvert.DeserializeObject <CardButton>(step.Context.Activity.Text);
                lastEvent = "postback";
                step.Context.Activity.Text = cButton.value;
            }

            var recognizerResult = await accessors.LuisServices[Settings.LuisName01].RecognizeAsync(step.Context, cancellationToken);

            var topIntent = recognizerResult?.GetTopScoringIntent();

            var msg = step.Context.Activity.CreateReply(QNABotSettings.accurateanswer);

            if (lastEvent.ToString() == "postback")
            {
                //TrackEvents.TrackConversation(searchedText, lastAnswerText, "Carousel Direct Answer");
                await DirectAnswerDialog.directAnswerCarousel(lastEvent, accessors, step, cancellationToken); //Direct Answer Dialog
            }
            else if ((recognizerResult != null && recognizerResult.Text.Contains(QNABotSettings.noneoftheabove)) || (topIntent != null && topIntent.Value.intent == "None"))
            {
                TrackEvents.TrackConversation(lastSearchedText, lastAnswerText, "None Intent Prompt", topIntent.Value.score.ToString(), from: step.Context.Activity.From);
                await NoneOfAboveDialog.NoneofTheAbove(step);
            }

            else if (recognizerResult != null && (recognizerResult.Text.Contains(QNABotSettings.howtoask) || recognizerResult.Text.Contains(QNABotSettings.howtocontacthr)))
            {
                TrackEvents.TrackConversation(lastSearchedText, lastAnswerText, "How To Ask/How to Contact Prompt", topIntent.Value.score.ToString(), from: step.Context.Activity.From);
                await ChoiceMenuDialog.ChoiceMenu(recognizerResult.Text, step);
            }
            else
            {
                double score = 0.0;
                if (topIntent != null && topIntent.HasValue)
                {
                    score = topIntent.Value.score;
                    score = score * 100;

                    // Direct answer if its button click event of carousel dialog.
                    //if (lastEvent.ToString() == "postback")
                    //{
                    //    //    //TrackEvents.TrackConversation(searchedText, lastAnswerText, "Carousel Direct Answer");
                    //    //    await DirectAnswerDialog.directAnswer(lastEvent, accessors, topIntent.Value.intent, step, cancellationToken); //Direct Answer Dialog
                    //}

                    if (lastEvent.ToString() != "postback")
                    {
                        var confidenceScore = ThresholdHandler.ConfidenceScoreIdentification(score);

                        switch (confidenceScore)
                        {
                        case (int)ConfidenceScoreEnum.high:
                            if (topIntent.Value.intent != "None")
                            {
                                await DirectAnswerDialog.directAnswer(lastEvent, accessors, topIntent.Value.intent, step, cancellationToken);     //Direct Answer Dialog
                            }
                            break;

                        default:
                            TrackEvents.TrackConversation(searchedText, lastAnswerText = "Carousel Options", "Carousel Prompt", confidenceScore.ToString(), topIntent.Value.intent, from: step.Context.Activity.From);
                            await CarouselDialog.Carousel(msg, recognizerResult, accessors, step, cancellationToken);         //Carousel Dialog

                            break;


                            //case (int)ConfidenceScoreEnum.mid:
                            //    TrackEvents.TrackConversation(searchedText, lastAnswerText = "Carousel Options", "Carousel Prompt", confidenceScore.ToString(), topIntent.Value.intent);
                            //    await CarouselDialog.Carousel(msg, recognizerResult, accessors, step, cancellationToken); //Carousel Dialog
                            //    break;

                            //default:
                            //    TrackEvents.TrackConversation(searchedText, lastAnswerText, "None of the Above Answer", confidenceScore.ToString(), topIntent.Value.intent);
                            //    await NoneOfAboveDialog.NoneofTheAbove(step);//No Answer Dialog
                            //    break;
                        }
                    }
                }
            }
            return(await step.NextAsync());
        }
Ejemplo n.º 10
0
 public override int GetHashCode()
 {
     return((((((Variation.GetHashCode() * 17) + Version.GetHashCode()) * 17) + TrackEvents.GetHashCode()) * 17 +
             DebugEventsUntilDate.GetHashCode()) * 17 + (Reason == null ? 0 : Reason.GetHashCode()));
 }
Ejemplo n.º 11
0
        public void FromVegas(Vegas vegas)
        {
            // ----------------------------------------------------------------
            // [1] スクリプト起動時に選択していたビデオトラックを取得
            // ----------------------------------------------------------------
            VideoTrack track = FindSelectedTrack(vegas.Project.Tracks);

            if (track == null)
            {
                return;
            }

            // ビデオトラックが無ければ中断
            if (track == null)
            {
                MessageBox.Show("ビデオトラックを選択してください。");
                return;
            }

            // ビデオトラックにトラックイベントが無ければ中断
            TrackEvents events = track.Events;

            if (events.Count == 0)
            {
                MessageBox.Show("トラックにビデオが含まれていません。");
                return;
            }

            // ----------------------------------------------------------------
            // [2] 座標データを含むバイナリファイルを選択する
            // ----------------------------------------------------------------
            OpenFileDialog ofd = new OpenFileDialog();

            ofd.CheckFileExists = true;
            ofd.CheckPathExists = true;
            if (ofd.ShowDialog() != DialogResult.OK)
            {
                MessageBox.Show("読み込みを中止します。");
                return;
            }

            // ----------------------------------------------------------------
            // [3] 座標データ( long tick, float x, float y )を
            //   を読み込むストリームを開く
            // ----------------------------------------------------------------
            BinaryReader reader = new BinaryReader(File.OpenRead(ofd.FileName));

            // 座標データ1つあたりのサイズ【座標データの形式によって変える】
            const long dataPerRow = sizeof(long) + sizeof(float) + sizeof(float);

            // 座標データ数
            long recordCount = reader.BaseStream.Length / dataPerRow;

            // ----------------------------------------------------------------
            // [4] トラック内のトラックイベントがある期間のトラックモーションを読み込む
            // ----------------------------------------------------------------
            // ビデオトラックのトラックモーションをクリアする
            track.TrackMotion.MotionKeyframes.Clear();

            // 座標データの間引き【お好みで変える】
            const long skipCount = 3;                                       // 間引き数
            long       skip      = 0;                                       // 間引き数カウンタ

            // 最後のトラックイベントの情報
            double farthestEnd = FindLastEventEnd(track);                   // 終了時刻[ms]

            // 直近のトラックイベントの情報
            double nearestStart = 0;                                        // 開始時刻[ms]
            double nearestEnd   = 0;                                        // 終了時刻[ms]

            // 座標データ数だけ以下を繰り返す
            for (long i = 0; i < recordCount; i++)
            {
                // 座標データの読み込み 【座標データの形式によって変える】
                double nt = (double)(reader.ReadInt64() / 10000);                 // 時間変換(決め打ち: 1tick = 100ns から msに変換)
                double nx = 1920 * (reader.ReadSingle() - 0.5f);                  // 座標変換(決め打ち: [0,1]を[-960, 960]に変換)
                double ny = 1080 * (0.5f - reader.ReadSingle());                  // 座標変換(決め打ち: [0,1]を[540,-540]に変換)

                // [4-A] 現在時刻ntが最後のトラックイベントの終了時刻を超えた時
                if (nt > farthestEnd)
                {
                    // 座標データを読み込む必要がないため、ループを抜ける。
                    break;
                }

                // [4-B] 現在時刻が、直近のトラックイベントの終了時刻を超えた時
                if (nt > nearestEnd)
                {
                    // 間引きカウンタリセット
                    skip = 0;

                    // 直近のトラックイベントの開始・終了時刻を更新する
                    nearestStart = FindNearestEventStart(track, nt);
                    nearestEnd   = FindNearestEventEnd(track, nt);
                }

                // [4-C] 現在時刻ntが直近のトラックイベントの範囲内の時
                if (nt >= nearestStart && nt <= nearestEnd)
                {
                    // データを間引く
                    skip--;
                    if (skip <= 0)
                    {
                        skip = skipCount;

                        // キーフレームを追加し、座標をセットする
                        TrackMotionKeyframe frame = track.TrackMotion.InsertMotionKeyframe(new Timecode(nt));
                        frame.PositionX = nx;
                        frame.PositionY = ny;
                    }
                }
            }

            // [5] ストリームを閉じる
            reader.Close();
        }