private void HandleEncoderProbed(object sender, VideoEncoder.VideoProfileInfo profileInfo) { var dict = new VarDictionary(); dict.Set("name", "supportedProfiles"); VarArray js_profiles = new VarArray(); dict.Set("profiles", js_profiles); if (profileInfo.Result < 0) { LogError(profileInfo.Result, "Cannot get supported profiles"); PostMessage(dict); } if (profileInfo.VideoProfileDescriptions.Count > 0) { var idx = 0u; foreach (var profile in profileInfo.VideoProfileDescriptions) { js_profiles.Set(idx++, VideoProfileToString(profile.Profile)); } } PostMessage(dict); }
public override string ToString(MyDictionary ProcList, VarDictionary VarDict, Dictionary<ulong, TFunc> NewSubs) { string s = "$"+ins.ToAsmString(); if (bytes[0] == 0xE8) if (ins.Operand1.ValueType == TUP.AsmResolver.ASM.OperandType.Normal) s = AddProc(((Offset)ins.Operand1.Value).FileOffset + Addr, ProcList, NewSubs); if (bytes[0] == 0xFF) if (bytes[1] == 0x15) if (ins.Operand1.ValueType == TUP.AsmResolver.ASM.OperandType.DwordPointer) s = AddProc(((Offset)ins.Operand1.Value).Va, ProcList, NewSubs); if (bytes[0] == 0xA3)//mov somevar, EAX { TVar Var1 = new TVar(((Offset)ins.Operand1.Value).Va, "", 4); if (!VarDict.ContainsKey(((Offset)ins.Operand1.Value).Va)) { VarDict.AddVar(Var1); }; s = VarDict[((Offset)ins.Operand1.Value).Va].FName + " = EAX;"; } if ((bytes[0] == 0xC2) |//retn (bytes[0] == 0xC3))//ret s = "$ret"; return s; }
void Log(string message) { var dictionary = new VarDictionary(); dictionary.Set("name", "log"); dictionary.Set("message", message); PostMessage(dictionary); }
private void Header() { MoveNextToken(); // PROGRAM MoveNextToken(); // VAR var regCount = 0; while (Token != null && Token is VarToken) { MoveNextToken(); // IDE VarDictionary.Add(Token, regCount++); MoveNextToken(); // : MoveNextToken(); // INTEGER MoveNextToken(); // ; MoveNextToken(); } MoveNextToken(); // BEGIN }
async Task UpdateNetworkList() { using (var networkMonitor = new PepperSharp.NetworkMonitor(this)) { var networkListInfo = await networkMonitor.UpdateNetworkListAsync(); if (networkListInfo.Result != PPError.Ok) { PostMessage($"UpdateNetworkList failed: {networkListInfo.Result}"); return; } using (var networkList = networkListInfo.NetworkList) { // Send the new network list to JavaScript. using (var varNetworkList = new VarArray()) { uint infoIndex = 0; foreach (var nic in networkList.NetworkInterfaces) { using (VarDictionary varNetwork = new VarDictionary()) { varNetwork.Set("displayName", nic.DisplayName); varNetwork.Set("name", nic.Name); varNetwork.Set("state", GetEnumAsString(typeof(NetworkInterfaceState), nic.State)); varNetwork.Set("type", GetEnumAsString(typeof(NetworkInterfaceType), nic.NetworkType)); varNetwork.Set("MTU", nic.MTU); using (var varIPAddresses = new VarArray()) { uint j = 0; foreach (var address in nic.NetAddresses) { varIPAddresses.Set(j++, address.DescriptionWithPort); } varNetwork.Set("ipAddresses", varIPAddresses); varNetworkList.Set(infoIndex++, varNetwork); } } } PostMessage(varNetworkList); } } } }
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!"); } }
void PostDataMessage(byte[] buffer, uint size) { var dictionary = new VarDictionary(); dictionary.Set("name", "data"); VarArrayBuffer array_buffer = null; byte[] dataPtr = null; uint dataOffset = 0; if (videoProfile == VideoProfile.Vp8Any || videoProfile == VideoProfile.Vp9Any) { uint frameOffset = 0; if (encodedFrames == 1) { array_buffer = new VarArrayBuffer(size + ivfWriter.GetFileHeaderSize() + ivfWriter.GetFrameHeaderSize()); dataPtr = array_buffer.Map(); frameOffset = ivfWriter.WriteFileHeader(dataPtr, VideoProfileToString(videoProfile).ToUpper(), frameSize.Width, frameSize.Height); } else { array_buffer = new VarArrayBuffer(size + ivfWriter.GetFrameHeaderSize()); dataPtr = array_buffer.Map(); } var timestamp = frameTimeStampQueue.Peek(); frameTimeStampQueue.Dequeue(); dataOffset = frameOffset + ivfWriter.WriteFrameHeader(dataPtr, frameOffset, timestamp, size); } Array.Copy(buffer, 0, dataPtr, dataOffset, size); // Make sure we flush the buffer data back to unmanaged memeory. array_buffer.Flush(); array_buffer.Unmap(); dictionary.Set("data", array_buffer); PostMessage(dictionary); }
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(); }
public override string ToString(MyDictionary ProcList, VarDictionary VarDict, Dictionary <ulong, TFunc> NewSubs) { string s = "$" + ins.ToAsmString(); if (bytes[0] == 0xE8) { if (ins.Operand1.ValueType == TUP.AsmResolver.ASM.OperandType.Normal) { s = AddProc(((Offset)ins.Operand1.Value).FileOffset + Addr, ProcList, NewSubs); } } if (bytes[0] == 0xFF) { if (bytes[1] == 0x15) { if (ins.Operand1.ValueType == TUP.AsmResolver.ASM.OperandType.DwordPointer) { s = AddProc(((Offset)ins.Operand1.Value).Va, ProcList, NewSubs); } } } if (bytes[0] == 0xA3)//mov somevar, EAX { TVar Var1 = new TVar(((Offset)ins.Operand1.Value).Va, "", 4); if (!VarDict.ContainsKey(((Offset)ins.Operand1.Value).Va)) { VarDict.AddVar(Var1); } ; s = VarDict[((Offset)ins.Operand1.Value).Va].FName + " = EAX;"; } if ((bytes[0] == 0xC2) | //retn (bytes[0] == 0xC3)) //ret { s = "$ret"; } return(s); }
public override string ToString(MyDictionary ProcList, VarDictionary VarDict, Dictionary<ulong, TFunc> NewSubs) { if (!(bytes==null)) if (bytes.Count() > 0) switch (bytes[0]) { case 0x74: return "$jz Loc_" + OpToString(0).Remove(0, 2); case 0x75: return "$jnz Loc_" + OpToString(0).Remove(0, 2); case 0xE8://call; return AddProc(ops[0].value.imm.imm64, ProcList, NewSubs); case 0xE9://jmp; case 0xEB://jmp; return "$jmp Loc_" + OpToString(0).Remove(0, 2); case 0xA3://mov somevar, EAX { TVar Var1 = new TVar((ulong)disp.value.d64, "", 4); if (!VarDict.ContainsKey((ulong)disp.value.d64)) { VarDict.AddVar(Var1); }; return VarDict[(ulong)disp.value.d64].FName + " = " + OpToString(1) + ";"; } case 0xFF: { if (this.bytes[1] == 0x15) return AddProc(disp.value.d64, ProcList, NewSubs); } break; case 0x0F: { if (this.bytes[1] == 0x86) return "$jbe Loc_" + OpToString(0).Remove(0, 2); }break; } string ret = "$"+mnemonic; if (ops[0].size > 0) ret += " " + OpToString(0); if (ops[1].size > 0) ret += ", " + OpToString(1); if (ops[2].size > 0) ret += ", " + OpToString(2); return ret; }