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); } }
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(); }
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); } }
/// <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()); }
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); }
void ImportTrackEvents(XmlElement parent, TrackEvents events) { XmlElement elt = parent["Events"]; if (null == elt) { return; } foreach (XmlElement child in elt) { ImportTrackEvent(child, events); } }
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); } }
/// <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()); }
public override int GetHashCode() { return((((((Variation.GetHashCode() * 17) + Version.GetHashCode()) * 17) + TrackEvents.GetHashCode()) * 17 + DebugEventsUntilDate.GetHashCode()) * 17 + (Reason == null ? 0 : Reason.GetHashCode())); }
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(); }