#pragma warning restore 0169 public void Configure(CaptureSettings settings, IntPtr window_handle) { IntPtr err = IntPtr.Zero; EncodingQuality qual = settings.EncodingSettings.EncodingQuality; Device device = settings.Device; DeviceVideoFormat format = settings.Format; EncodingProfile enc; VideoStandard std; IntPtr outFile, sourceElement, deviceID; enc = settings.EncodingSettings.EncodingProfile; std = settings.EncodingSettings.VideoStandard; outFile = Marshaller.StringToPtrGStrdup(settings.EncodingSettings.OutputFile); sourceElement = Marshaller.StringToPtrGStrdup(device.SourceElement); deviceID = Marshaller.StringToPtrGStrdup(device.ID); gst_camera_capturer_configure(Handle, outFile, (int)settings.Device.DeviceType, sourceElement, deviceID, format.width, format.height, format.fps_n, format.fps_d, (int)enc.VideoEncoder, (int)enc.AudioEncoder, (int)enc.Muxer, qual.VideoQuality, qual.AudioQuality, settings.EncodingSettings.EnableAudio, std.Width, std.Height, window_handle, out err); Marshaller.Free(outFile); Marshaller.Free(sourceElement); Marshaller.Free(deviceID); if (err != IntPtr.Zero) { throw new GLib.GException(err); } }
public ConfigState() { /* Set default values */ fastTagging = false; currentDatabase = Constants.DEFAULT_DB_NAME; lang = null; autoSave = false; captureVideoStandard = VideoStandards.P480_16_9.Clone(); captureEncodingProfile = EncodingProfiles.MP4.Clone(); captureEncodingQuality = EncodingQualities.Medium.Clone(); renderVideoStandard = VideoStandards.P720_16_9.Clone(); renderEncodingProfile = EncodingProfiles.MP4.Clone(); renderEncodingQuality = EncodingQualities.High.Clone(); overlayTitle = true; enableAudio = false; fps_n = 25; fps_d = 1; autorender = false; autorenderDir = null; lastRenderDir = null; lastDir = null; reviewPlaysInSameWindow = true; defaultTemplate = null; hotkeys = new Hotkeys(); projectSortMethod = ProjectSortMethod.Date; ignoreUpdaterVersion = null; }
private Bc4Block EncodeBlock(RawBlock4X4Rgba32 block, EncodingQuality quality) { Bc4Block output = new Bc4Block(); byte[] colors = new byte[16]; var pixels = block.AsSpan; for (int i = 0; i < 16; i++) { if (luminanceAsRed) { colors[i] = (byte)(new ColorYCbCr(pixels[i]).y * 255); } else { colors[i] = pixels[i].R; } } switch (quality) { case EncodingQuality.Fast: return(FindRedValues(output, colors, 3)); case EncodingQuality.Balanced: return(FindRedValues(output, colors, 4)); case EncodingQuality.BestQuality: return(FindRedValues(output, colors, 8)); default: throw new ArgumentOutOfRangeException(nameof(quality), quality, null); } }
private static Bc7Block EncodeBlock(RawBlock4X4Rgba32 rawBlock, EncodingQuality quality) { switch (quality) { case EncodingQuality.Fast: return(Bc7EncoderFast.EncodeBlock(rawBlock)); case EncodingQuality.Balanced: return(Bc7EncoderBalanced.EncodeBlock(rawBlock)); case EncodingQuality.BestQuality: return(Bc7EncoderBestQuality.EncodeBlock(rawBlock)); default: throw new ArgumentOutOfRangeException(nameof(quality), quality, null); } }
public static ListStore FillQuality(ComboBox qualityBox, EncodingQuality def) { ListStore qualityStore; int index = 0, active = 0; qualityStore = new ListStore(typeof(string), typeof(EncodingQuality)); foreach (EncodingQuality qual in EncodingQualities.All) { qualityStore.AppendValues(qual.Name, qual); if (qual.Equals(def)) { active = index; } index++; } qualityBox.Model = qualityStore; qualityBox.Active = active; return(qualityStore); }
public ConfigState() { /* Set default values */ fastTagging = false; currentDatabase = Constants.DEFAULT_DB_NAME; lang = null; autoSave = false; captureVideoStandard = VideoStandards.P480_16_9; captureEncodingProfile = EncodingProfiles.MP4; captureEncodingQuality = EncodingQualities.Medium; renderVideoStandard = VideoStandards.P720_16_9; renderEncodingProfile = EncodingProfiles.MP4; renderEncodingQuality = EncodingQualities.High; overlayTitle = true; enableAudio = false; fps_n = 25; fps_d = 1; autorender = false; autorenderDir = null; reviewPlaysInSameWindow = true; }
public byte[] Encode(RawBlock4X4Rgba32[] blocks, int blockWidth, int blockHeight, EncodingQuality quality, bool parallel) { byte[] outputData = new byte[blockWidth * blockHeight * Marshal.SizeOf <Bc7Block>()]; Span <Bc7Block> outputBlocks = MemoryMarshal.Cast <byte, Bc7Block>(outputData); if (parallel) { Parallel.For(0, blocks.Length, i => { Span <Bc7Block> outputBlocks = MemoryMarshal.Cast <byte, Bc7Block>(outputData); outputBlocks[i] = EncodeBlock(blocks[i], quality); }); } else { for (int i = 0; i < blocks.Length; i++) { outputBlocks[i] = EncodeBlock(blocks[i], quality); } } return(outputData); }
public static void ExecuteEncodingTest(Image <Rgba32> image, CompressionFormat format, EncodingQuality quality, string filename, ITestOutputHelper output) { BcEncoder encoder = new BcEncoder(); encoder.OutputOptions.quality = quality; encoder.OutputOptions.generateMipMaps = true; encoder.OutputOptions.format = format; using FileStream fs = File.OpenWrite(filename); encoder.Encode(image, fs); fs.Close(); var psnr = TestHelper.DecodeCheckPSNR(filename, image); output.WriteLine("RGBA PSNR: " + psnr + "db"); if (quality == EncodingQuality.Fast) { Assert.True(psnr > 25); } else { Assert.True(psnr > 30); } }
private Bc5Block EncodeBlock(RawBlock4X4Rgba32 block, EncodingQuality quality) { Bc5Block output = new Bc5Block(); byte[] reds = new byte[16]; byte[] greens = new byte[16]; var pixels = block.AsSpan; for (int i = 0; i < 16; i++) { reds[i] = pixels[i].R; greens[i] = pixels[i].G; } int variations = 0; int errorThreshold = 0; switch (quality) { case EncodingQuality.Fast: variations = 3; errorThreshold = 5; break; case EncodingQuality.Balanced: variations = 5; errorThreshold = 1; break; case EncodingQuality.BestQuality: variations = 8; errorThreshold = 0; break; default: throw new ArgumentOutOfRangeException(nameof(quality), quality, null); } output = FindValues(output, reds, variations, errorThreshold, (block, i, idx) => { block.SetRedIndex(i, idx); return(block); }, (block, col) => { block.Red0 = col; return(block); }, (block, col) => { block.Red1 = col; return(block); }, (block) => { return(block.Red0); }, (block) => { return(block.Red1); } ); output = FindValues(output, greens, variations, errorThreshold, (block, i, idx) => { block.SetGreenIndex(i, idx); return(block); }, (block, col) => { block.Green0 = col; return(block); }, (block, col) => { block.Green1 = col; return(block); }, (block) => { return(block.Green0); }, (block) => { return(block.Green1); }); return(output); }