Example #1
0
        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);
        }
Example #2
0
        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;
        }
Example #3
0
        void Log(string message)
        {
            var dictionary = new VarDictionary();

            dictionary.Set("name", "log");
            dictionary.Set("message", message);

            PostMessage(dictionary);
        }
Example #4
0
        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
        }
Example #5
0
        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);
                    }
                }
            }
        }
Example #6
0
        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!");
            }
        }
Example #7
0
        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);
        }
Example #8
0
        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();
        }
Example #9
0
        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);
        }
Example #10
0
 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;
 }