private void OnHandleMessage(object sender, Var varMessage) { if (!varMessage.IsDictionary) { LogToConsole(PPLogLevel.Error, "Invalid message!"); return; } var dictMessage = new VarDictionary(varMessage); string command = dictMessage.Get("command").AsString(); if (command == "start") { requestedSize = new PPSize(dictMessage.Get("width").AsInt(), dictMessage.Get("height").AsInt()); var var_track = dictMessage.Get("track"); if (!var_track.IsResource) { LogToConsole(PPLogLevel.Error, "Given track is not a resource"); return; } var resourceTrack = new MediaStreamVideoTrack(var_track.AsResource()); if (!resourceTrack.IsEmpty) { videoTrack = resourceTrack; videoTrack.HandleConfigure += OnConfigureTrack; videoTrack.HandleFrame += OnTrackFrame; videoEncoder = new VideoEncoder(this); videoProfile = VideoProfileFromString(dictMessage.Get("profile").AsString()); ConfigureTrack(); } } else if (command == "stop") { StopEncode(); Log("stopped"); } else { LogToConsole(PPLogLevel.Error, "Invalid command!"); } }
private void OnMessage(object sender, Var var_message) { if (!var_message.IsDictionary) { return; } var var_dictionary_message = new VarDictionary(var_message); var var_track = var_dictionary_message.Get("track"); if (!var_track.IsResource) { return; } var resourceTrack = var_track.AsResource(); audioTrack = new MediaStreamAudioTrack(resourceTrack); audioTrack.HandleBuffer += OnGetBuffer; audioTrack.GetBuffer(); }