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); }
void Log(string message) { var dictionary = new VarDictionary(); dictionary.Set("name", "log"); dictionary.Set("message", message); PostMessage(dictionary); }
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); }
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); } } } }