Ejemplo n.º 1
0
		public override void CheckSetup(Preset preset, Table table)
		{
			preset.CardCards[this] = new CardCollection();
			// Grab all of the Black Market Supply cards and stick them into the CardCards for Black Market
			foreach (Type cardType in table.SpecialPiles[TypeClass.BlackMarketSupply].CardTypes)
				preset.CardCards[this].Add(Card.CreateInstance(cardType));
		}
        /// <summary>
        /// Encodes a video and audio file.
        /// </summary>
        /// <param name="id">An ID used to track the item being encoded.</param>
        /// <param name="preset">The preset used to encode the given file.</param>
        /// <param name="file">The location of the file to encode.</param>
        /// <param name="command">The command used to tell Handbrake how to encode the video.</param>
        /// <param name="progress">The callback function fired when progress of a file's encoding is updated. The action is given the percentage complete.</param>
        /// <param name="complete">The callback function fired when encoding is complete. The action is given the location of the encoded file.</param>
        /// <returns>An ID used to track the item being encoded.</returns>
        public void Encode(Guid id, Preset preset, string file, string command, Action<EncodingMovieTask, double> progress, Action<EncodingMovieTask> complete)
        {
            if (string.IsNullOrEmpty(file))
                throw new ArgumentNullException("file");
            if (!System.IO.File.Exists(file))
                throw new FileNotFoundException(file);

            command = string.Format(command, "\"" + file + "\"", id.ToString("N") + ".mp4" + PresetIndicator.Get(preset));

            var task = new EncodingMovieTask {ID = id, File = file, PercentComplete = 0};

            Logger.Info("Beginning encoding: " + command);

            new Thread(() => {
                var process = new Process();
                process.StartInfo.FileName = @"c:\Code\showveoservice\ShowveoService.MVCApplication\Resources\HandbrakeCLI.exe";
                process.StartInfo.Arguments = command;
                process.StartInfo.RedirectStandardOutput = true;
                process.StartInfo.UseShellExecute = false;
                process.OutputDataReceived += (sender, args) => OnDataReceived(progress, task, args);
                process.ErrorDataReceived += (sender, args) => OnErrorReceived(args);
                process.Exited += (sender, args) => complete.Invoke(task);
                process.Start();

                process.BeginOutputReadLine();

                while (!process.HasExited) {}
            }).Start();
        }
Ejemplo n.º 3
0
	public LightPresets(LightConfiguration l)
	{
		lc = l;
		
		/*Preset p1 = new Preset();
		p1.p_name = "LightPresets.Inside";
		p1.l_intensity = 0.2f;
		p1.s_blur = 3f;
		p1.s_power = 0.9f;
		p1.r_id = 1;
		p1.r_rate = 0;
		p1.imgBackground_r = 128;
		p1.imgBackground_g = 128;
		p1.imgBackground_b = 128;
		p1.id = 0;*/
		
		Preset p2 = new Preset();
		p2.p_name = "LightPresets.LightingOutdoor";
		p2.l_intensity = 0.3f;
		p2.s_blur = 2.8f;
		p2.s_power = 0.4f;
		p2.r_id = 6;
		p2.r_rate = 0;
		p2.imgBackground_r = 128;
		p2.imgBackground_g = 128;
		p2.imgBackground_b = 128;
		p2.id = 1;
		
		Preset p3 = new Preset();
		p3.p_name = "LightPresets.CloudyOutdoor";
		p3.l_intensity = 0.2f;
		p3.s_blur = 6f;
		p3.s_power = 0.8f;
		p3.r_id = 6;
		p3.r_rate = 0;
		p3.imgBackground_r = 128;
		p3.imgBackground_g = 128;
		p3.imgBackground_b = 128;
		p3.id = 2;
		
		Preset p4 = new Preset();
		p4.p_name = "LightPresets.Night";
		p4.l_intensity = 0.05f;
		p4.s_blur = 6f;
		p4.s_power = 1.0f;
		p4.r_id = 6;
		p4.r_rate = 0;
		p4.imgBackground_r = 33;
		p4.imgBackground_g = 44;
		p4.imgBackground_b = 80;	
		p4.id = 3;
		
		//presetsList.Add(p1);
		presetsList.Add(p2);
		presetsList.Add(p3);
		presetsList.Add(p4);
		
	}
 public void DisablePreset(Preset preset)
 {
     foreach (var mod in preset)
     {
         modManager.DisableMod(mod);
     }
     preset.IsEnabled = false;
     UpdatePreset(preset);
 }
 public void EnablePreset(Preset preset)
 {
     foreach (var mod in preset)
     {
         modManager.EnableMod(mod);
     }
     preset.IsEnabled = true;
     UpdatePreset(preset);
 }
        /// <summary>Creates a new preset view model.</summary>
        public PresetViewModel(Preset preset, ModManager modManager, PresetManager presetManager)
        {
            this.modManager = modManager;
            this.presetManager = presetManager;

            Preset = preset;

            RenameCommand = new Command(Rename);
            DisbandCommand = new Command(Disband);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// The export preset.
        /// </summary>
        /// <param name="export">
        /// The export.
        /// </param>
        /// <param name="config">
        /// HandBrakes configuration options.
        /// </param>
        /// <returns>
        /// The <see cref="Preset"/>.
        /// </returns>
        public static PresetTransportContainer ExportPreset(Preset export, HBConfiguration config)
        {
            PresetTransportContainer container = new PresetTransportContainer();
            container.VersionMajor = "0";
            container.VersionMinor = "10";
            container.VersionMicro = "2";
            container.PresetList = new List<HBPreset> { CreateHbPreset(export, config) };

            return container;
        }
        /// <summary>
        /// Creates an encoder based on a preset.
        /// </summary>
        /// <param name="preset">The preset used to generate the appropriate encoder.</param>
        /// <returns>The created encoder.</returns>
        public IEncoder Create(Preset preset)
        {
            switch (preset)
            {
                case Preset.Phone: return new PhoneHandbrakeEncoder(_configuration);
                case Preset.TV: return new TVHandbrakeEncoder(_configuration);
                case Preset.Tablet: return new TabletHandbrakeEncoder(_configuration);
            }

            throw new ArgumentException("The preset " + preset + " has no implementation.");
        }
        public static string Get(Preset preset)
        {
            switch (preset)
            {
                case Preset.Phone: return ".phone";
                case Preset.Tablet: return ".tablet";
                case Preset.TV: return ".tv";
            }

            throw new InvalidOperationException("No indicator exists for preset \"" + preset + "\".");
        }
	// 
	void SetPresetSettings(Preset p)
	{
		HighlightingBase hb = FindObjectOfType<HighlightingBase>();

		if (hb == null) { return; }

		hb.downsampleFactor = p.downsampleFactor;
		hb.iterations = p.iterations;
		hb.blurMinSpread = p.blurMinSpread;
		hb.blurSpread = p.blurSpread;
		hb.blurIntensity = p.blurIntensity;
	}
Ejemplo n.º 11
0
	void ApplyPreset( Preset ps )
	{
		m_idTexture = ps.m_idTexture;
		m_idMask = ps.m_idMask;
		GetComponent<Renderer>().material.SetTexture("_MainTex", m_textureList[m_idTexture]);
		GetComponent<Renderer>().material.SetTexture("_MaskTex", m_maskList[m_idMask]);
		
		GetComponent<Renderer>().material.SetFloat( "_Emission", ps.m_Emission );
		GetComponent<Renderer>().material.SetFloat( "_Alpha", ps.m_Alpha );
		GetComponent<Renderer>().material.SetFloat( "_AlphaCutOffMask", ps.m_AlphaCutOffMask );
		GetComponent<Renderer>().material.SetFloat( "_AlphaCutOffSmooth", ps.m_AlphaCutOffSmooth );
		GetComponent<Renderer>().material.SetFloat( "_AlphaMask", ps.m_AlphaMask );
	}
 public void AddModToPreset(Mod mod, Preset preset)
 {
     if (!ModIsInAPreset(mod))
     {
         preset.Add(mod);
         if (mod.IsEnabled != preset.IsEnabled)
         {
             modManager.ToggleEnabled(mod);
         }
         SavePreset(preset);
         LoadModsBuffer();
     }
 }
Ejemplo n.º 13
0
    public void SetForce(float max, float min)
    {
        if (max == preset.maxForce && min == preset.minForce) return;

        Preset newP = new Preset();
        newP.in_curve = preset.in_curve;
        newP.out_curve = preset.out_curve;
        newP.in_time = preset.in_time;
        newP.out_time = preset.out_time;

        newP.maxForce = max;
        newP.minForce = min;
        ChangePreset(newP);
    }
Ejemplo n.º 14
0
    protected void btnSave_Click(object sender, EventArgs e)
    {
        var p = new Preset
        {
            ID = 0,
            Name = txtCropName.Text,
            IdealTemperature = Convert.ToInt32(txtIdealTemp.Text),
            TemperatureThreshold = Convert.ToInt32(txtTempRange.Text),
            IdealLightIntensity = Convert.ToInt32(txtLightRange.Text),
            LightIntensityThreshold = Convert.ToInt32(txtLightRange.Text),
            IdealHumidity = Convert.ToInt32(txtHumidity.Text),
            HumidityThreshold = Convert.ToInt32(txtHumidityRange.Text),
            IdealWaterLevel = Convert.ToInt32(txtWaterLevel.Text),
            WaterLevelThreshold = Convert.ToInt32(txtWaterThreshold.Text)

        };
        p.Save();
    }
Ejemplo n.º 15
0
 public void AssignChanges(Preset preset)
 {
     foreach (KeyValuePair<PawnData, Preset> pair in PresetDatabase.assignedPresets)
     {
         if (!pawns.Exists(pawn => pawn.ThingID == pair.Key.ID))
         {
             PresetDatabase.assignedPresets.Remove(pair.Key);
         }
         else if (pair.Value.Name == preset.Name)
         {
             foreach (WorkTypeDef job in VisibleWorkTypeDefsInPriorityOrder)
             {
                 pawns.Find(pawn => pawn.ThingID == pair.Key.ID);
                 if (!pawns.Find(pawn => pawn.ThingID == pair.Key.ID).story.WorkTypeIsDisabled(job))
                     pawns.Find(pawn => pawn.ThingID == pair.Key.ID).workSettings.SetPriority(job, preset.priorities[job]);
             }
         }
     }
 }
Ejemplo n.º 16
0
 private void btnAddPreset_Click(object sender, EventArgs e)
 {
     try
     {
         MouseClicker.InputBox iBox = new MouseClicker.InputBox("Define preset name", "My preset");
         if (iBox.ShowDialog() == System.Windows.Forms.DialogResult.OK)
         {
             Preset p = new Preset(iBox.Value, "", "", "");
             _presets.Add(p);
             DisplayPresets();
             cboPresets.SelectedItem = p;
             SavePresets();
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
     }
 }
Ejemplo n.º 17
0
		protected override void OnRenderImage(RenderTexture source, RenderTexture destination)
		{
			if (Palette != m_CurrentPreset)
			{
				m_CurrentPreset = Palette;

				if (Palette == Preset.None)
					LookupTexture = null;
				else
					LookupTexture = Resources.Load<Texture2D>("LoFiPalettes/" + Palette.ToString());
			}

			if (LookupTexture == null || Amount <= 0f)
			{
				Graphics.Blit(source, destination);
				return;
			}

			if (m_Use2DLut || ForceCompatibility)
				RenderLut2D(source, destination);
			else
				RenderLut3D(source, destination);
		}
Ejemplo n.º 18
0
		protected override void OnRenderImage(RenderTexture source, RenderTexture destination)
		{
			if (Palette != m_CurrentPreset)
			{
				m_CurrentPreset = Palette;

				if (Palette == Preset.None)
					LookupTexture = null;
				else
					LookupTexture = Resources.Load<Texture2D>("LoFiPalettes/" + Palette.ToString());
			}

			if (LookupTexture == null)
			{
				Graphics.Blit(source, destination);
				return;
			}

			if (LookupTexture.name != m_BaseTextureName)
				ConvertBaseTexture();

			if (m_Lut3D == null)
				SetIdentityLut();

			m_Lut3D.filterMode = FilterMode.Point;
			Material.SetTexture("_LookupTex", m_Lut3D);
			float lutSize = (float)m_Lut3D.width;
			Material.SetVector("_Params", new Vector4(
					(lutSize - 1f) / (1f * lutSize),
					1f / (2f * lutSize),
					Amount,
					PixelSize
				));

			int pass = (Pixelize ? 2 : 0) + (CLib.IsLinearColorSpace() ? 1 : 0);
			Graphics.Blit(source, destination, Material, pass);
		}
Ejemplo n.º 19
0
        /// <summary>
        /// The create preset.
        /// </summary>
        /// <param name="importedPreset">
        /// The preset.
        /// </param>
        /// <returns>
        /// The <see cref="Preset"/>.
        /// </returns>
        public static Preset ImportPreset(HBPreset importedPreset)
        {
            Preset preset = new Preset();
            preset.Name = importedPreset.PresetName;
            preset.Description = importedPreset.PresetDescription;
            preset.Task = new EncodeTask();
            preset.IsDefault = importedPreset.Default;
            preset.IsBuildIn = importedPreset.Type == 0;

            // Step 1, Create the EncodeTask Object that can be loaded into the UI.

            /* Output Settings */
            preset.Task.OptimizeMP4 = importedPreset.Mp4HttpOptimize;
            preset.Task.IPod5GSupport = importedPreset.Mp4iPodCompatible;
            preset.Task.OutputFormat = GetFileFormat(importedPreset.FileFormat.Replace("file", string.Empty).Trim()); // TOOD null check.

            /* Picture Settings */
            preset.PictureSettingsMode = (PresetPictureSettingsMode)importedPreset.UsesPictureSettings;
            preset.Task.MaxWidth = importedPreset.PictureWidth.HasValue && importedPreset.PictureWidth.Value > 0 ? importedPreset.PictureWidth.Value : (int?)null;
            preset.Task.MaxHeight = importedPreset.PictureHeight.HasValue && importedPreset.PictureHeight.Value > 0 ? importedPreset.PictureHeight.Value : (int?)null;
            preset.Task.Cropping = new Cropping(importedPreset.PictureTopCrop, importedPreset.PictureBottomCrop, importedPreset.PictureLeftCrop, importedPreset.PictureRightCrop);
            preset.Task.HasCropping = !importedPreset.PictureAutoCrop;
            preset.Task.Modulus = importedPreset.PictureModulus;
            preset.Task.KeepDisplayAspect = importedPreset.PictureKeepRatio;

            switch (importedPreset.PicturePAR)
            {
                case "custom":
                    preset.Task.Anamorphic = Anamorphic.Custom;
                    preset.Task.DisplayWidth = importedPreset.PictureDARWidth;
                    break;
                case "loose":
                    preset.Task.Anamorphic = Anamorphic.Loose;
                    break;
                case "strict":
                    preset.Task.Anamorphic = Anamorphic.Strict;
                    break;
                default:
                    preset.Task.Anamorphic = Anamorphic.None;
                    break;
            }

            /* Filter Settings */
            preset.Task.Grayscale = importedPreset.VideoGrayScale;
            preset.Task.Deblock = importedPreset.PictureDeblock;

            switch (importedPreset.PictureDeinterlaceFilter)
            {
                case "decomb":
                    preset.Task.Decomb = Decomb.Default;
                    preset.Task.Deinterlace = Deinterlace.Fast;
                    preset.Task.DeinterlaceFilter = DeinterlaceFilter.Decomb;
                    break;
                case "deinterlace":
                    preset.Task.Decomb = Decomb.Default;
                    preset.Task.Deinterlace = Deinterlace.Fast;
                    preset.Task.DeinterlaceFilter = DeinterlaceFilter.Deinterlace;
                    break;
                default:
                    preset.Task.Decomb = Decomb.Default;
                    preset.Task.Deinterlace = Deinterlace.Fast;
                    preset.Task.DeinterlaceFilter = DeinterlaceFilter.Off;
                    break;
            }

            if (preset.Task.DeinterlaceFilter == DeinterlaceFilter.Decomb)
            {
                switch (importedPreset.PictureDeinterlaceFilter)
                {
                    case "custom":
                        preset.Task.Decomb = Decomb.Custom;
                        break;
                    case "default":
                        preset.Task.Decomb = Decomb.Default;
                        break;
                    case "bob":
                        preset.Task.Decomb = Decomb.Bob;
                        break;
                    case "fast":
                        preset.Task.Decomb = Decomb.Fast;
                        break;
                    default:
                        preset.Task.Decomb = Decomb.Default;
                        break;
                }

                if (preset.Task.Decomb == Decomb.Custom)
                {
                    preset.Task.CustomDecomb = importedPreset.PictureDeinterlaceCustom;
                }
            }

            if (preset.Task.DeinterlaceFilter == DeinterlaceFilter.Deinterlace)
            {
                switch (importedPreset.PictureDeinterlaceFilter)
                {
                    case "custom":
                        preset.Task.Deinterlace = Deinterlace.Custom;
                        break;
                    case "bob":
                        preset.Task.Deinterlace = Deinterlace.Bob;
                        break;
                    case "fast":
                        preset.Task.Deinterlace = Deinterlace.Fast;
                        break;
                    case "slow":
                        preset.Task.Deinterlace = Deinterlace.Slow;
                        break;
                    case "slower":
                        preset.Task.Deinterlace = Deinterlace.Slower;
                        break;
                    default:
                        preset.Task.Deinterlace = Deinterlace.Fast;
                        break;
                }

                if (preset.Task.Deinterlace == Deinterlace.Custom)
                {
                    preset.Task.CustomDecomb = importedPreset.PictureDeinterlaceCustom;
                }
            }

            preset.Task.CustomDeinterlace = importedPreset.PictureDetelecineCustom;
            preset.Task.CustomDenoise = importedPreset.PictureDenoiseCustom;
            preset.Task.CustomDetelecine = importedPreset.PictureDetelecineCustom;

            switch (importedPreset.PictureDetelecine)
            {
                case "custom":
                    preset.Task.Detelecine = Detelecine.Custom;
                    break;
                case "default":
                    preset.Task.Detelecine = Detelecine.Default;
                    break;
                default:
                    preset.Task.Detelecine = Detelecine.Off;
                    break;
            }

            switch (importedPreset.PictureDenoiseFilter)
            {
                case "nlmeans":
                    preset.Task.Denoise = Denoise.NLMeans;
                    break;
                case "hqdn3d":
                    preset.Task.Denoise = Denoise.hqdn3d;
                    break;
                default:
                    preset.Task.Denoise = Denoise.Off;
                    break;
            }

            switch (importedPreset.PictureDenoisePreset)
            {
                case "custom":
                    preset.Task.DenoisePreset = DenoisePreset.Custom;
                    break;
                case "light":
                    preset.Task.DenoisePreset = DenoisePreset.Light;
                    break;
                case "medium":
                    preset.Task.DenoisePreset = DenoisePreset.Medium;
                    break;
                case "strong":
                    preset.Task.DenoisePreset = DenoisePreset.Strong;
                    break;
                case "ultralight":
                    preset.Task.DenoisePreset = DenoisePreset.Ultralight;
                    break;
                case "weak":
                    preset.Task.DenoisePreset = DenoisePreset.Weak;
                    break;
            }

            switch (importedPreset.PictureDenoiseTune)
            {
                case "animation":
                    preset.Task.DenoiseTune = DenoiseTune.Animation;
                    break;
                case "film":
                    preset.Task.DenoiseTune = DenoiseTune.Film;
                    break;
                case "grain":
                    preset.Task.DenoiseTune = DenoiseTune.Grain;
                    break;
                case "highnotion":
                    preset.Task.DenoiseTune = DenoiseTune.HighMotion;
                    break;

                default:
                    preset.Task.DenoiseTune = DenoiseTune.None;
                    break;
            }

            // Rotation and Flip
            if (!string.IsNullOrEmpty(importedPreset.PictureRotate))
            {
                string[] rotation = importedPreset.PictureRotate.Split(':');
                if (rotation.Length == 2)
                {
                    int rotate;
                    if (int.TryParse(rotation[0], out rotate))
                    {
                        preset.Task.Rotation = int.Parse(rotation[0]);
                        preset.Task.FlipVideo = rotation[1] == "1";
                    }
                }
            }

            /* Video Settings */
            preset.Task.VideoEncoder = EnumHelper<VideoEncoder>.GetValue(importedPreset.VideoEncoder);
            preset.Task.VideoBitrate = importedPreset.VideoAvgBitrate;
            preset.Task.TwoPass = importedPreset.VideoTwoPass;
            preset.Task.TurboFirstPass = importedPreset.VideoTurboTwoPass;
            preset.Task.ExtraAdvancedArguments = importedPreset.VideoOptionExtra;
            preset.Task.Quality = double.Parse(importedPreset.VideoQualitySlider.ToString(CultureInfo.InvariantCulture), CultureInfo.InvariantCulture);
            preset.Task.VideoEncodeRateType = (VideoEncodeRateType)importedPreset.VideoQualityType;
            preset.Task.VideoLevel = new VideoLevel(importedPreset.VideoLevel, importedPreset.VideoLevel);
            preset.Task.VideoPreset = new VideoPreset(importedPreset.VideoPreset, importedPreset.VideoPreset);
            preset.Task.VideoProfile = new VideoProfile(importedPreset.VideoProfile, importedPreset.VideoProfile);

            if (!string.IsNullOrEmpty(importedPreset.VideoTune))
            {
                string[] split = importedPreset.VideoTune.Split(',');
                foreach (var item in split)
                {
                    preset.Task.VideoTunes.Add(new VideoTune(item, item));
                }
            }
            preset.Task.Framerate = importedPreset.VideoFramerate == "auto" || string.IsNullOrEmpty(importedPreset.VideoFramerate)
                                 ? (double?)null
                                 : double.Parse(importedPreset.VideoFramerate, CultureInfo.InvariantCulture);
            string parsedValue = importedPreset.VideoFramerateMode;
            switch (parsedValue)
            {
                case "vfr":
                    preset.Task.FramerateMode = FramerateMode.VFR;
                    break;
                case "cfr":
                    preset.Task.FramerateMode = FramerateMode.CFR;
                    break;
                default:
                    preset.Task.FramerateMode = FramerateMode.PFR;
                    break;
            }

            /* Audio Settings */
            preset.AudioTrackBehaviours = new AudioBehaviours();
            preset.Task.AllowedPassthruOptions.AudioEncoderFallback = EnumHelper<AudioEncoder>.GetValue(importedPreset.AudioEncoderFallback);
            preset.AudioTrackBehaviours.SelectedBehaviour = importedPreset.AudioTrackSelectionBehavior == "all"
                                                                     ? AudioBehaviourModes.AllMatching
                                                                     : AudioBehaviourModes.FirstMatch;

            // TODO - The other GUI's don't support All Tracks yet. So for now we can only load / Save first track.
            if (importedPreset.AudioSecondaryEncoderMode)
            {
                preset.AudioTrackBehaviours.SelectedTrackDefaultBehaviour = AudioTrackDefaultsMode.FirstTrack;
            }
            else
            {
                preset.AudioTrackBehaviours.SelectedTrackDefaultBehaviour = AudioTrackDefaultsMode.None;
            }

            if (importedPreset.AudioCopyMask != null)
            {
                foreach (var item in importedPreset.AudioCopyMask)
                {
                    AudioEncoder encoder = EnumHelper<AudioEncoder>.GetValue(item.ToString());
                    switch (encoder)
                    {
                        case AudioEncoder.AacPassthru:
                            preset.Task.AllowedPassthruOptions.AudioAllowAACPass = true;
                            break;
                        case AudioEncoder.Ac3Passthrough:
                            preset.Task.AllowedPassthruOptions.AudioAllowAACPass = true;
                            break;
                        case AudioEncoder.EAc3Passthrough:
                            preset.Task.AllowedPassthruOptions.AudioAllowAACPass = true;
                            break;
                        case AudioEncoder.DtsHDPassthrough:
                            preset.Task.AllowedPassthruOptions.AudioAllowAACPass = true;
                            break;
                        case AudioEncoder.DtsPassthrough:
                            preset.Task.AllowedPassthruOptions.AudioAllowAACPass = true;
                            break;
                        case AudioEncoder.FlacPassthru:
                            preset.Task.AllowedPassthruOptions.AudioAllowAACPass = true;
                            break;
                        case AudioEncoder.Mp3Passthru:
                            preset.Task.AllowedPassthruOptions.AudioAllowAACPass = true;
                            break;
                    }
                }
            }

            if (importedPreset.AudioLanguageList != null)
            {
                IList<string> names = LanguageUtilities.GetLanguageNames(importedPreset.AudioLanguageList);
                foreach (var name in names)
                {
                    preset.AudioTrackBehaviours.SelectedLangauges.Add(name);
                }
            }

            preset.Task.AudioTracks = new ObservableCollection<AudioTrack>();

            if (importedPreset.AudioList != null)
            {
                foreach (var audioTrack in importedPreset.AudioList)
                {
                    AudioTrack track = new AudioTrack();
                    track.Bitrate = audioTrack.AudioBitrate;

                    // track.CompressionLevel = audioTrack.AudioCompressionLevel;
                    // track.AudioDitherMethod = audioTrack.AudioDitherMethod;
                    track.Encoder = EnumHelper<AudioEncoder>.GetValue(audioTrack.AudioEncoder);
                    track.MixDown = EnumHelper<Mixdown>.GetValue(audioTrack.AudioMixdown);

                    // track.AudioNormalizeMixLevel = audioTrack.AudioNormalizeMixLevel;
                    track.SampleRate = audioTrack.AudioSamplerate == "auto" ? 0 : double.Parse(audioTrack.AudioSamplerate);

                    track.EncoderRateType = audioTrack.AudioTrackQualityEnable ? AudioEncoderRateType.Quality : AudioEncoderRateType.Bitrate;
                    track.Quality = audioTrack.AudioTrackQuality;
                    track.Gain = (int)audioTrack.AudioTrackGainSlider;
                    track.DRC = audioTrack.AudioTrackDRCSlider;

                    preset.Task.AudioTracks.Add(track);
                }
            }

            /* Subtitle Settings */
            preset.SubtitleTrackBehaviours = new SubtitleBehaviours();
            preset.SubtitleTrackBehaviours.SelectedBehaviour = EnumHelper<SubtitleBehaviourModes>.GetValue(importedPreset.SubtitleTrackSelectionBehavior);
            preset.SubtitleTrackBehaviours.SelectedBurnInBehaviour = EnumHelper<SubtitleBurnInBehaviourModes>.GetValue(importedPreset.SubtitleBurnBehavior);

            preset.SubtitleTrackBehaviours.AddClosedCaptions = importedPreset.SubtitleAddCC;
            preset.SubtitleTrackBehaviours.AddForeignAudioScanTrack = importedPreset.SubtitleAddForeignAudioSearch;
            if (importedPreset.SubtitleLanguageList != null)
            {
                IList<string> names = LanguageUtilities.GetLanguageNames(importedPreset.SubtitleLanguageList);
                foreach (var name in names)
                {
                    preset.SubtitleTrackBehaviours.SelectedLangauges.Add(name);
                }
            }

            /* Chapter Marker Settings */
            preset.Task.IncludeChapterMarkers = importedPreset.ChapterMarkers;

            /* Advanced Settings */
            preset.Task.ShowAdvancedTab = importedPreset.x264UseAdvancedOptions;
            preset.Task.AdvancedEncoderOptions = importedPreset.x264Option;

            /* Not Supported Yet */
            // public int VideoColorMatrixCode { get; set; }
            // public bool VideoHWDecode { get; set; }
            // public string VideoScaler { get; set; }
            // public bool VideoQSVDecode { get; set; }
            // public int VideoQSVAsyncDepth { get; set; }
            // public bool SubtitleAddForeignAudioSubtitle { get; set; }
            // public bool SubtitleBurnBDSub { get; set; }
            // public bool SubtitleBurnDVDSub { get; set; }
            // public bool PictureItuPAR { get; set; }
            // public bool PictureLooseCrop { get; set; }
            // public int PicturePARWidth { get; set; }
            // public int PicturePARHeight { get; set; }
            // public int PictureForceHeight { get; set; }
            // public int PictureForceWidth { get; set; }
            // public List<object> ChildrenArray { get; set; }
            // public bool Folder { get; set; }
            // public bool FolderOpen { get; set; }
            // public int Type { get; set; }

            return preset;
        }
        private static Tuple<double, double>[] GetPreset(Preset preset, int count)
        {
            switch (preset)
            {
                case Preset.Simple_Up:
                    #region Simple_Up

                    return GetXs(count).
                        Select(o => Tuple.Create(o, o)).
                        ToArray();

                    #endregion
                case Preset.Simple_Down:
                    #region Simple_Down

                    return ReverseY(GetPreset(Preset.Simple_Up, count));

                    #endregion

                case Preset.Cube_Up:
                    #region Cube

                    return GetXs(count).
                        Select(o => Tuple.Create(o, o * o * o)).
                        ToArray();

                    #endregion
                case Preset.Cube_Down:
                    #region Cube_Down

                    return ReverseX(GetPreset(Preset.Cube_Up, count));

                    #endregion

                case Preset.CubeRoot_Up:
                    #region CubeRoot

                    return ReverseX(GetPreset(Preset.CubeRoot_Down, count));

                    #endregion
                case Preset.CubeRoot_Down:
                    #region CubeRoot_Down

                    return ReverseY(GetPreset(Preset.Cube_Up, count));

                    #endregion

                case Preset.S_Curve_Up:
                    #region S_Curve_Up

                    return GetXs(count).
                        Select(o => Tuple.Create(o, (-Math.Cos(o * Math.PI) * .5) + .5)).
                        ToArray();

                    #endregion
                case Preset.S_Curve_Down:
                    #region S_Curve_Down

                    return ReverseY(GetPreset(Preset.S_Curve_Up, count));

                    #endregion

                default:
                    throw new ApplicationException("Unknown Preset: " + preset.ToString());
            }
        }
Ejemplo n.º 21
0
 /// <summary>
 /// Setup this window for a new source
 /// </summary>
 /// <param name="source">
 /// The source.
 /// </param>
 /// <param name="title">
 /// The title.
 /// </param>
 /// <param name="preset">
 /// The preset.
 /// </param>
 /// <param name="task">
 /// The task.
 /// </param>
 public void SetSource(Source source, Title title, Preset preset, EncodeTask task)
 {
     this.Task = task;
     this.NotifyOfPropertyChange(() => this.AdvancedOptionsString);
 }
Ejemplo n.º 22
0
        /// <summary>
        /// Update a preset
        /// </summary>
        /// <param name="update">
        /// The updated preset
        /// </param>
        public void Update(Preset update)
        {
            // TODO - Change this to be a lookup
            foreach (Preset preset in this.presets)
            {
                if (preset.Name == update.Name)
                {
                    preset.Task = update.Task;
                    preset.PictureSettingsMode = update.PictureSettingsMode;
                    preset.Category = update.Category;
                    preset.Description = update.Description;
                    preset.AudioTrackBehaviours = update.AudioTrackBehaviours;
                    preset.SubtitleTrackBehaviours = update.SubtitleTrackBehaviours;

                    // Update the presets file
                    this.SavePresetFiles();
                    break;
                }
            }
        }
Ejemplo n.º 23
0
        /// <summary>
        /// Remove a preset with a given name from either the built in or user preset list.
        /// </summary>
        /// <param name="preset">
        /// The Preset to remove
        /// </param>
        public void Remove(Preset preset)
        {
            if (preset == null || preset.IsDefault)
            {
                return;
            }

            this.presets.Remove(preset);
            this.SavePresetFiles();
        }
        /// <summary>
        /// Setup this window for a new source
        /// </summary>
        /// <param name="source">
        /// The source.
        /// </param>
        /// <param name="title">
        /// The title.
        /// </param>
        /// <param name="preset">
        /// The preset.
        /// </param>
        /// <param name="task">
        /// The task.
        /// </param>
        public void SetSource(Source source, Title title, Preset preset, EncodeTask task)
        {
            this.currentTitle = title;
            this.Task         = task;

            this.scannedSource = source;

            if (title != null)
            {
                // Set cached info
                this.sourceParValues  = title.ParVal;
                this.sourceResolution = title.Resolution;

                // Update the cropping values, preffering those in the presets.
                if (!preset.Task.HasCropping)
                {
                    this.Task.Cropping.Top    = title.AutoCropDimensions.Top;
                    this.Task.Cropping.Bottom = title.AutoCropDimensions.Bottom;
                    this.Task.Cropping.Left   = title.AutoCropDimensions.Left;
                    this.Task.Cropping.Right  = title.AutoCropDimensions.Right;
                    this.IsCustomCrop         = false;
                }
                else
                {
                    this.Task.Cropping.Left   = preset.Task.Cropping.Left;
                    this.Task.Cropping.Right  = preset.Task.Cropping.Right;
                    this.Task.Cropping.Top    = preset.Task.Cropping.Top;
                    this.Task.Cropping.Bottom = preset.Task.Cropping.Bottom;
                    this.IsCustomCrop         = true;
                }

                if (preset.PictureSettingsMode == PresetPictureSettingsMode.None)
                {
                    // We have no instructions, so simply set it to the source.
                    this.Task.Width          = this.GetModulusValue(this.sourceResolution.Width - this.CropLeft - this.CropRight);
                    this.MaintainAspectRatio = true;
                }
                else
                {
                    // Set the Max Width / Height available to the user controls
                    if (this.sourceResolution.Width < this.MaxWidth)
                    {
                        this.MaxWidth = this.sourceResolution.Width;
                    }
                    else if (this.sourceResolution.Width > this.MaxWidth)
                    {
                        this.MaxWidth = preset.Task.MaxWidth ?? this.sourceResolution.Width;
                    }

                    if (this.sourceResolution.Height < this.MaxHeight)
                    {
                        this.MaxHeight = this.sourceResolution.Height;
                    }
                    else if (this.sourceResolution.Height > this.MaxHeight)
                    {
                        this.MaxHeight = preset.Task.MaxHeight ?? this.sourceResolution.Height;
                    }

                    // Set the Width, and Maintain Aspect ratio. That should calc the Height for us.
                    if (this.SelectedAnamorphicMode == Anamorphic.None)
                    {
                        this.Task.Width = preset.Task.Width ?? (this.MaxWidth - this.CropLeft - this.CropRight);
                        // Note: This will be auto-corrected in the property if it's too large.
                    }
                    else
                    {
                        this.Task.Width = preset.Task.Width ?? this.MaxWidth;

                        int cropHeight = this.Task.Cropping.Top + this.Task.Cropping.Bottom;
                        this.Task.Height = (preset.Task.Height ?? this.MaxHeight) - cropHeight;
                    }

                    // If our height is too large, let it downscale the width for us by setting the height to the lower value.
                    if (!this.MaintainAspectRatio && this.Height > this.MaxHeight)
                    {
                        this.Task.Height = this.MaxHeight;
                    }
                }

                // Set Screen Controls
                this.SourceInfo = string.Format(
                    "{0}x{1}, PAR: {2}/{3}",
                    title.Resolution.Width,
                    title.Resolution.Height,
                    title.ParVal.Width,
                    title.ParVal.Height);

                this.RecaulcatePictureSettingsProperties(ChangedPictureField.Width);
            }

            this.NotifyOfPropertyChange(() => this.Task);
        }
Ejemplo n.º 25
0
        /// <summary>
        /// The create preset.
        /// </summary>
        /// <param name="importedPreset">
        /// The preset.
        /// </param>
        /// <returns>
        /// The <see cref="Preset"/>.
        /// </returns>
        public static Preset ImportPreset(HBPreset importedPreset)
        {
            Preset preset = new Preset();

            preset.Name        = importedPreset.PresetName;
            preset.Description = importedPreset.PresetDescription;
            preset.Task        = new EncodeTask();
            preset.IsDefault   = importedPreset.Default;
            preset.IsBuildIn   = importedPreset.Type == 0;

            // Step 1, Create the EncodeTask Object that can be loaded into the UI.

            /* Output Settings */
            preset.Task.OptimizeMP4   = importedPreset.Mp4HttpOptimize;
            preset.Task.IPod5GSupport = importedPreset.Mp4iPodCompatible;
            preset.Task.OutputFormat  = GetFileFormat(importedPreset.FileFormat.Replace("file", string.Empty).Trim()); // TOOD null check.
            preset.Task.AlignAVStart  = importedPreset.AlignAVStart;

            /* Picture Settings */
            preset.PictureSettingsMode    = (PresetPictureSettingsMode)importedPreset.UsesPictureSettings;
            preset.Task.MaxWidth          = importedPreset.PictureWidth.HasValue && importedPreset.PictureWidth.Value > 0 ? importedPreset.PictureWidth.Value : (int?)null;
            preset.Task.MaxHeight         = importedPreset.PictureHeight.HasValue && importedPreset.PictureHeight.Value > 0 ? importedPreset.PictureHeight.Value : (int?)null;
            preset.Task.Cropping          = new Cropping(importedPreset.PictureTopCrop, importedPreset.PictureBottomCrop, importedPreset.PictureLeftCrop, importedPreset.PictureRightCrop);
            preset.Task.HasCropping       = !importedPreset.PictureAutoCrop;
            preset.Task.Modulus           = importedPreset.PictureModulus;
            preset.Task.KeepDisplayAspect = importedPreset.PictureKeepRatio;

            switch (importedPreset.PicturePAR)
            {
            case "custom":
                preset.Task.Anamorphic   = Anamorphic.Custom;
                preset.Task.DisplayWidth = importedPreset.PictureDARWidth;
                break;

            case "loose":
                preset.Task.Anamorphic = Anamorphic.Loose;
                break;

            case "auto":
                preset.Task.Anamorphic = Anamorphic.Automatic;
                break;

            default:
                preset.Task.Anamorphic = Anamorphic.None;
                break;
            }

            /* Filter Settings */
            preset.Task.Grayscale = importedPreset.VideoGrayScale;

            if (!string.IsNullOrEmpty(importedPreset.PictureDeblockPreset))
            {
                preset.Task.DeblockPreset = new FilterPreset(HandBrakeFilterHelpers.GetFilterPresets((int)hb_filter_ids.HB_FILTER_DEBLOCK).FirstOrDefault(s => s.ShortName == importedPreset.PictureDeblockPreset));
            }
            else
            {
                preset.Task.DeblockPreset = new FilterPreset("Off", "off");
            }

            if (!string.IsNullOrEmpty(importedPreset.PictureDeblockTune))
            {
                preset.Task.DeblockTune = new FilterTune(HandBrakeFilterHelpers.GetFilterTunes((int)hb_filter_ids.HB_FILTER_DEBLOCK).FirstOrDefault(s => s.ShortName == importedPreset.PictureDeblockTune));
            }
            else
            {
                preset.Task.DeblockTune = new FilterTune("Off", "off");
            }

            preset.Task.CustomDeblock = importedPreset.PictureDeblockCustom;

            if (importedPreset.PictureSharpenFilter != null)
            {
                preset.Task.Sharpen = EnumHelper <Sharpen> .GetValue(importedPreset.PictureSharpenFilter);

                hb_filter_ids filterId = hb_filter_ids.HB_FILTER_INVALID;
                switch (preset.Task.Sharpen)
                {
                case Sharpen.LapSharp:
                    filterId = hb_filter_ids.HB_FILTER_LAPSHARP;
                    break;

                case Sharpen.UnSharp:
                    filterId = hb_filter_ids.HB_FILTER_UNSHARP;
                    break;
                }

                if (filterId != hb_filter_ids.HB_FILTER_INVALID)
                {
                    preset.Task.SharpenPreset = new FilterPreset(HandBrakeFilterHelpers.GetFilterPresets((int)filterId).FirstOrDefault(s => s.ShortName == importedPreset.PictureSharpenPreset));
                    preset.Task.SharpenTune   = new FilterTune(HandBrakeFilterHelpers.GetFilterTunes((int)filterId).FirstOrDefault(s => s.ShortName == importedPreset.PictureSharpenTune));
                    preset.Task.SharpenCustom = importedPreset.PictureSharpenCustom;
                }
                else
                {
                    // Default Values.
                    preset.Task.SharpenPreset = new FilterPreset("Medium", "medium");
                    preset.Task.SharpenTune   = new FilterTune("None", "none");
                    preset.Task.SharpenCustom = string.Empty;
                }
            }

            switch (importedPreset.PictureDeinterlaceFilter)
            {
            case "decomb":
                preset.Task.DeinterlaceFilter = DeinterlaceFilter.Decomb;
                break;

            case "yadif":
                preset.Task.DeinterlaceFilter = DeinterlaceFilter.Yadif;
                break;

            default:
                preset.Task.DeinterlaceFilter = DeinterlaceFilter.Off;
                break;
            }

            if (preset.Task.DeinterlaceFilter == DeinterlaceFilter.Decomb)
            {
                List <HBPresetTune> filterPresets = HandBrakeFilterHelpers.GetFilterPresets((int)hb_filter_ids.HB_FILTER_DECOMB);
                HBPresetTune        presetTune    = filterPresets.FirstOrDefault(f => f.ShortName == importedPreset.PictureDeinterlacePreset);
                preset.Task.DeinterlacePreset         = presetTune ?? new HBPresetTune("Default", "default");
                preset.Task.CustomDeinterlaceSettings = importedPreset.PictureDeinterlaceCustom;
            }

            if (preset.Task.DeinterlaceFilter == DeinterlaceFilter.Yadif)
            {
                List <HBPresetTune> filterPresets = HandBrakeFilterHelpers.GetFilterPresets((int)hb_filter_ids.HB_FILTER_DEINTERLACE);
                HBPresetTune        presetTune    = filterPresets.FirstOrDefault(f => f.ShortName == importedPreset.PictureDeinterlacePreset);
                preset.Task.DeinterlacePreset         = presetTune ?? new HBPresetTune("Default", "default");
                preset.Task.CustomDeinterlaceSettings = importedPreset.PictureDeinterlaceCustom;
            }

            if (preset.Task.DeinterlaceFilter == DeinterlaceFilter.Yadif || preset.Task.DeinterlaceFilter == DeinterlaceFilter.Decomb)
            {
                switch (importedPreset.PictureCombDetectPreset)
                {
                case "off":
                    preset.Task.CombDetect = CombDetect.Off;
                    break;

                case "custom":
                    preset.Task.CombDetect = CombDetect.Custom;
                    break;

                case "default":
                    preset.Task.CombDetect = CombDetect.Default;
                    break;

                case "permissive":
                    preset.Task.CombDetect = CombDetect.LessSensitive;
                    break;

                case "fast":
                    preset.Task.CombDetect = CombDetect.Fast;
                    break;

                default:
                    preset.Task.CombDetect = CombDetect.Off;
                    break;
                }
            }

            preset.Task.CustomDenoise    = importedPreset.PictureDenoiseCustom;
            preset.Task.CustomDetelecine = importedPreset.PictureDetelecineCustom;
            preset.Task.CustomCombDetect = importedPreset.PictureCombDetectCustom;

            switch (importedPreset.PictureDetelecine)
            {
            case "custom":
                preset.Task.Detelecine = Detelecine.Custom;
                break;

            case "default":
                preset.Task.Detelecine = Detelecine.Default;
                break;

            default:
                preset.Task.Detelecine = Detelecine.Off;
                break;
            }

            switch (importedPreset.PictureDenoiseFilter)
            {
            case "nlmeans":
                preset.Task.Denoise = Denoise.NLMeans;
                break;

            case "hqdn3d":
                preset.Task.Denoise = Denoise.hqdn3d;
                break;

            default:
                preset.Task.Denoise = Denoise.Off;
                break;
            }

            switch (importedPreset.PictureDenoisePreset)
            {
            case "custom":
                preset.Task.DenoisePreset = DenoisePreset.Custom;
                break;

            case "light":
                preset.Task.DenoisePreset = DenoisePreset.Light;
                break;

            case "medium":
                preset.Task.DenoisePreset = DenoisePreset.Medium;
                break;

            case "strong":
                preset.Task.DenoisePreset = DenoisePreset.Strong;
                break;

            case "ultralight":
                preset.Task.DenoisePreset = DenoisePreset.Ultralight;
                break;

            case "weak":
                preset.Task.DenoisePreset = DenoisePreset.Weak;
                break;
            }

            switch (importedPreset.PictureDenoiseTune)
            {
            case "animation":
                preset.Task.DenoiseTune = DenoiseTune.Animation;
                break;

            case "film":
                preset.Task.DenoiseTune = DenoiseTune.Film;
                break;

            case "grain":
                preset.Task.DenoiseTune = DenoiseTune.Grain;
                break;

            case "highmotion":
                preset.Task.DenoiseTune = DenoiseTune.HighMotion;
                break;

            case "tape":
                preset.Task.DenoiseTune = DenoiseTune.Tape;
                break;

            case "sprite":
                preset.Task.DenoiseTune = DenoiseTune.Sprite;
                break;

            default:
                preset.Task.DenoiseTune = DenoiseTune.None;
                break;
            }

            // Rotation and Flip
            if (!string.IsNullOrEmpty(importedPreset.PictureRotate))
            {
                string[] rotation = importedPreset.PictureRotate.Split(':');
                if (rotation.Length == 2)
                {
                    int rotate;
                    if (int.TryParse(rotation[0], out rotate))
                    {
                        preset.Task.Rotation  = int.Parse(rotation[0]);
                        preset.Task.FlipVideo = rotation[1] == "1";
                    }
                }
            }

            /* Video Settings */
            preset.Task.VideoEncoder = EnumHelper <VideoEncoder> .GetValue(importedPreset.VideoEncoder);

            preset.Task.VideoBitrate           = importedPreset.VideoAvgBitrate;
            preset.Task.TwoPass                = importedPreset.VideoTwoPass;
            preset.Task.TurboFirstPass         = importedPreset.VideoTurboTwoPass;
            preset.Task.ExtraAdvancedArguments = importedPreset.VideoOptionExtra;
            preset.Task.Quality                = double.Parse(importedPreset.VideoQualitySlider.ToString(CultureInfo.InvariantCulture), CultureInfo.InvariantCulture);
            preset.Task.VideoEncodeRateType    = (VideoEncodeRateType)importedPreset.VideoQualityType;
            preset.Task.VideoLevel             = new VideoLevel(importedPreset.VideoLevel, importedPreset.VideoLevel);
            preset.Task.VideoPreset            = new VideoPreset(importedPreset.VideoPreset, importedPreset.VideoPreset);
            preset.Task.VideoProfile           = new VideoProfile(importedPreset.VideoProfile, importedPreset.VideoProfile);

            if (!string.IsNullOrEmpty(importedPreset.VideoTune))
            {
                string[] split = importedPreset.VideoTune.Split(',');
                foreach (var item in split)
                {
                    preset.Task.VideoTunes.Add(new VideoTune(item, item));
                }
            }

            if (importedPreset.VideoFramerate == "auto" || importedPreset.VideoFramerate == "Same as source" || string.IsNullOrEmpty(importedPreset.VideoFramerate))
            {
                preset.Task.Framerate = null;
            }
            else
            {
                double parsedFramerate;
                if (double.TryParse(importedPreset.VideoFramerate, NumberStyles.Any, CultureInfo.CurrentCulture, out parsedFramerate) || double.TryParse(importedPreset.VideoFramerate, NumberStyles.Any, CultureInfo.InvariantCulture, out parsedFramerate))
                {
                    preset.Task.Framerate = parsedFramerate;
                }
            }

            string parsedValue = importedPreset.VideoFramerateMode;

            switch (parsedValue)
            {
            case "vfr":
                preset.Task.FramerateMode = FramerateMode.VFR;
                break;

            case "cfr":
                preset.Task.FramerateMode = FramerateMode.CFR;
                break;

            default:
                preset.Task.FramerateMode = FramerateMode.PFR;
                break;
            }

            /* Audio Settings */
            preset.AudioTrackBehaviours = new AudioBehaviours();
            preset.Task.AllowedPassthruOptions.AudioEncoderFallback = EnumHelper <AudioEncoder> .GetValue(importedPreset.AudioEncoderFallback);

            preset.AudioTrackBehaviours.SelectedBehaviour = importedPreset.AudioTrackSelectionBehavior == "all"
                                                                     ? AudioBehaviourModes.AllMatching
                                                                     : AudioBehaviourModes.FirstMatch;

            preset.AudioTrackBehaviours.SelectedTrackDefaultBehaviour = importedPreset.AudioSecondaryEncoderMode ? AudioTrackDefaultsMode.FirstTrack : AudioTrackDefaultsMode.AllTracks;

            if (importedPreset.AudioCopyMask != null)
            {
                preset.Task.AllowedPassthruOptions.SetFalse();
                foreach (var item in importedPreset.AudioCopyMask)
                {
                    AudioEncoder encoder = EnumHelper <AudioEncoder> .GetValue(item);

                    switch (encoder)
                    {
                    case AudioEncoder.AacPassthru:
                        preset.Task.AllowedPassthruOptions.AudioAllowAACPass = true;
                        break;

                    case AudioEncoder.Ac3Passthrough:
                        preset.Task.AllowedPassthruOptions.AudioAllowAC3Pass = true;
                        break;

                    case AudioEncoder.EAc3Passthrough:
                        preset.Task.AllowedPassthruOptions.AudioAllowEAC3Pass = true;
                        break;

                    case AudioEncoder.DtsHDPassthrough:
                        preset.Task.AllowedPassthruOptions.AudioAllowDTSHDPass = true;
                        break;

                    case AudioEncoder.DtsPassthrough:
                        preset.Task.AllowedPassthruOptions.AudioAllowDTSPass = true;
                        break;

                    case AudioEncoder.FlacPassthru:
                        preset.Task.AllowedPassthruOptions.AudioAllowFlacPass = true;
                        break;

                    case AudioEncoder.Mp3Passthru:
                        preset.Task.AllowedPassthruOptions.AudioAllowMP3Pass = true;
                        break;

                    case AudioEncoder.TrueHDPassthrough:
                        preset.Task.AllowedPassthruOptions.AudioAllowTrueHDPass = true;
                        break;
                    }
                }
            }

            if (importedPreset.AudioLanguageList != null)
            {
                IList <string> names = LanguageUtilities.GetLanguageNames(importedPreset.AudioLanguageList);
                foreach (var name in names)
                {
                    preset.AudioTrackBehaviours.SelectedLangauges.Add(name);
                }
            }

            preset.Task.AudioTracks = new ObservableCollection <AudioTrack>();

            if (importedPreset.AudioList != null)
            {
                foreach (var audioTrack in importedPreset.AudioList)
                {
                    AudioBehaviourTrack track = new AudioBehaviourTrack();

                    // track.CompressionLevel = audioTrack.AudioCompressionLevel;
                    // track.AudioDitherMethod = audioTrack.AudioDitherMethod;
                    if (audioTrack.AudioEncoder == "ca_aac")
                    {
                        audioTrack.AudioEncoder = "av_aac"; // No Core Audio support on windows.
                    }

                    track.Encoder = EnumHelper <AudioEncoder> .GetValue(audioTrack.AudioEncoder);

                    track.MixDown = HandBrakeEncoderHelpers.GetMixdown(audioTrack.AudioMixdown);
                    track.Bitrate = audioTrack.AudioBitrate;

                    // track.AudioNormalizeMixLevel = audioTrack.AudioNormalizeMixLevel;

                    if ("auto".Equals(audioTrack.AudioSamplerate))
                    {
                        track.SampleRate = 0;
                    }
                    else if (!string.IsNullOrEmpty(audioTrack.AudioSamplerate))
                    {
                        double sampleRate = 0;
                        if (double.TryParse(audioTrack.AudioSamplerate, NumberStyles.Any, CultureInfo.InvariantCulture, out sampleRate))
                        {
                            track.SampleRate = sampleRate;
                        }
                    }

                    track.EncoderRateType = audioTrack.AudioTrackQualityEnable ? AudioEncoderRateType.Quality : AudioEncoderRateType.Bitrate;
                    track.Quality         = audioTrack.AudioTrackQuality;
                    track.Gain            = (int)audioTrack.AudioTrackGainSlider;
                    track.DRC             = audioTrack.AudioTrackDRCSlider;

                    preset.AudioTrackBehaviours.BehaviourTracks.Add(track);
                }
            }

            /* Subtitle Settings */
            preset.SubtitleTrackBehaviours = new SubtitleBehaviours();
            preset.SubtitleTrackBehaviours.SelectedBehaviour = EnumHelper <SubtitleBehaviourModes> .GetValue(importedPreset.SubtitleTrackSelectionBehavior);

            preset.SubtitleTrackBehaviours.SelectedBurnInBehaviour = EnumHelper <SubtitleBurnInBehaviourModes> .GetValue(importedPreset.SubtitleBurnBehavior);

            preset.SubtitleTrackBehaviours.AddClosedCaptions        = importedPreset.SubtitleAddCC;
            preset.SubtitleTrackBehaviours.AddForeignAudioScanTrack = importedPreset.SubtitleAddForeignAudioSearch;
            if (importedPreset.SubtitleLanguageList != null)
            {
                IList <string> names = LanguageUtilities.GetLanguageNames(importedPreset.SubtitleLanguageList);
                foreach (var name in names)
                {
                    preset.SubtitleTrackBehaviours.SelectedLangauges.Add(name);
                }
            }

            /* Chapter Marker Settings */
            preset.Task.IncludeChapterMarkers = importedPreset.ChapterMarkers;

            /* Not Supported Yet */
            // public int VideoColorMatrixCode { get; set; }
            // public string VideoScaler { get; set; }
            // public bool VideoQSVDecode { get; set; }
            // public int VideoQSVAsyncDepth { get; set; }
            // public bool SubtitleAddForeignAudioSubtitle { get; set; }
            // public bool SubtitleBurnBDSub { get; set; }
            // public bool SubtitleBurnDVDSub { get; set; }
            // public bool PictureItuPAR { get; set; }
            // public bool PictureLooseCrop { get; set; }
            // public int PicturePARWidth { get; set; }
            // public int PicturePARHeight { get; set; }
            // public int PictureForceHeight { get; set; }
            // public int PictureForceWidth { get; set; }
            // public List<object> ChildrenArray { get; set; }
            // public bool Folder { get; set; }
            // public bool FolderOpen { get; set; }
            // public int Type { get; set; }

            return(preset);
        }
Ejemplo n.º 26
0
 public ShaderAdapterBuilder SetProperties(Preset preset)
 {
     _preset = preset;
     return(this);
 }
 public void SetSource(Source source, Title title, Preset preset, EncodeTask task)
 {
     this.CurrentTask = task;
 }
 public EmulationSlot(uint slotNumber, XboxGamepad gamepad, Keyboard keyboard, Mouse mouse, Preset preset)
     : base(slotNumber, gamepad, keyboard, mouse, preset)
 {
     this.InitializeComponent();
     if (gamepad.Exsists)
     {
         this.InvalidateReason = SlotInvalidationReason.Controller_Already_Plugged_In;
     }
 }
Ejemplo n.º 29
0
    public IEnumerator Export(string path, Preset presetAsset, bool buildZip, bool exportPBRMaterials, bool exportAnimation = true, bool doConvertImages = false, bool halfSpotAngle = true, bool quadraticAttenuation = true)
    {
        writer = new GlTF_Writer();
        writer.Init();
        done = false;
        bool debugRightHandedScale = false;

        GlTF_Writer.exportedFiles.Clear();
        if (debugRightHandedScale)
        {
            GlTF_Writer.convertRightHanded = false;
        }

        writer.extraString.Add("exporterVersion", GlTF_Writer.exporterVersion);

        // Create rootNode
        GlTF_Node correctionNode = new GlTF_Node();

        correctionNode.id   = "root";
        correctionNode.uuid = GlTF_Node.GetIDFromObject(correctionNode);
        correctionNode.name = "root";
        GlTF_Writer.nodes.Add(correctionNode);
        GlTF_Writer.nodeIDs.Add(correctionNode.uuid);
        GlTF_Writer.rootNodes.Add(correctionNode);

        //path = toGlTFname(path);
        savedPath = Path.GetDirectoryName(path);

        // Temp list to keep track of skeletons
        Dictionary <string, GlTF_Skin> parsedSkins = new Dictionary <string, GlTF_Skin>();

        parsedSkins.Clear();

        // first, collect objects in the scene, add to lists
        Transform[]      transforms = Selection.GetTransforms(SelectionMode.Deep);
        List <Transform> trs        = new List <Transform>(transforms);
        // Prefilter selected nodes and look for skinning in order to list "bones" nodes
        //FIXME: improve this
        List <Transform> bones = new List <Transform>();

        foreach (Transform tr in trs)
        {
            if (!tr.gameObject.activeSelf)
            {
                continue;
            }

            SkinnedMeshRenderer skin = tr.GetComponent <SkinnedMeshRenderer>();
            if (skin)
            {
                foreach (Transform bone in skin.bones)
                {
                    bones.Add(bone);
                }
            }
        }

        nbSelectedObjects = trs.Count;
        int nbDisabledObjects = 0;

        foreach (Transform tr in trs)
        {
            if (tr.gameObject.activeInHierarchy == false)
            {
                nbDisabledObjects++;
                continue;
            }

            // Initialize the node
            GlTF_Node node = new GlTF_Node();
            node.id   = GlTF_Node.GetNameFromObject(tr);
            node.uuid = GlTF_Node.GetIDFromObject(tr);
            node.name = GlTF_Writer.cleanNonAlphanumeric(tr.name);

            if (tr.GetComponent <Camera>() != null)
            {
                GlTF_Camera cam = parseUnityCamera(tr);
                node.cameraIndex = GlTF_Writer.cameras.IndexOf(cam);
            }

            if (tr.GetComponent <Light>() != null)
            {
                GlTF_Light l = parseUnityLight(tr, halfSpotAngle, quadraticAttenuation);
                node.lightName  = GlTF_Writer.cleanNonAlphanumeric(tr.name);
                node.lightIndex = GlTF_Writer.lights.IndexOf(l);
            }

            Mesh m = GetMesh(tr);
            if (m != null)
            {
                GlTF_Mesh mesh = new GlTF_Mesh();
                mesh.name = GlTF_Writer.cleanNonAlphanumeric(GlTF_Mesh.GetNameFromObject(m) + tr.name);

                GlTF_Accessor positionAccessor = new GlTF_Accessor(GlTF_Accessor.GetNameFromObject(m, "position"), GlTF_Accessor.Type.VEC3, GlTF_Accessor.ComponentType.FLOAT);
                positionAccessor.bufferView = GlTF_Writer.vec3BufferView;
                GlTF_Writer.accessors.Add(positionAccessor);

                GlTF_Accessor normalAccessor = null;
                if (m.normals.Length > 0)
                {
                    normalAccessor            = new GlTF_Accessor(GlTF_Accessor.GetNameFromObject(m, "normal"), GlTF_Accessor.Type.VEC3, GlTF_Accessor.ComponentType.FLOAT);
                    normalAccessor.bufferView = GlTF_Writer.vec3BufferView;
                    GlTF_Writer.accessors.Add(normalAccessor);
                }

                GlTF_Accessor colorAccessor = null;
                if (m.colors.Length > 0)
                {
                    colorAccessor            = new GlTF_Accessor(GlTF_Accessor.GetNameFromObject(m, "color"), GlTF_Accessor.Type.VEC4, GlTF_Accessor.ComponentType.FLOAT);
                    colorAccessor.bufferView = GlTF_Writer.vec4BufferView;
                    GlTF_Writer.accessors.Add(colorAccessor);
                }

                GlTF_Accessor uv0Accessor = null;
                if (m.uv.Length > 0)
                {
                    uv0Accessor            = new GlTF_Accessor(GlTF_Accessor.GetNameFromObject(m, "uv0"), GlTF_Accessor.Type.VEC2, GlTF_Accessor.ComponentType.FLOAT);
                    uv0Accessor.bufferView = GlTF_Writer.vec2BufferView;
                    GlTF_Writer.accessors.Add(uv0Accessor);
                }

                GlTF_Accessor uv1Accessor = null;
                if (m.uv2.Length > 0)
                {
                    // check if object is affected by a lightmap
                    uv1Accessor            = new GlTF_Accessor(GlTF_Accessor.GetNameFromObject(m, "uv1"), GlTF_Accessor.Type.VEC2, GlTF_Accessor.ComponentType.FLOAT);
                    uv1Accessor.bufferView = GlTF_Writer.vec2BufferView;
                    GlTF_Writer.accessors.Add(uv1Accessor);
                }

                GlTF_Accessor uv2Accessor = null;
                if (m.uv3.Length > 0)
                {
                    uv2Accessor            = new GlTF_Accessor(GlTF_Accessor.GetNameFromObject(m, "uv2"), GlTF_Accessor.Type.VEC2, GlTF_Accessor.ComponentType.FLOAT);
                    uv2Accessor.bufferView = GlTF_Writer.vec2BufferView;
                    GlTF_Writer.accessors.Add(uv2Accessor);
                }

                GlTF_Accessor uv3Accessor = null;
                if (m.uv4.Length > 0)
                {
                    uv3Accessor            = new GlTF_Accessor(GlTF_Accessor.GetNameFromObject(m, "uv3"), GlTF_Accessor.Type.VEC2, GlTF_Accessor.ComponentType.FLOAT);
                    uv3Accessor.bufferView = GlTF_Writer.vec2BufferView;
                    GlTF_Writer.accessors.Add(uv3Accessor);
                }

                GlTF_Accessor jointAccessor = null;
                if (exportAnimation && m.boneWeights.Length > 0)
                {
                    jointAccessor            = new GlTF_Accessor(GlTF_Accessor.GetNameFromObject(m, "joints"), GlTF_Accessor.Type.VEC4, GlTF_Accessor.ComponentType.USHORT);
                    jointAccessor.bufferView = GlTF_Writer.vec4UshortBufferView;
                    GlTF_Writer.accessors.Add(jointAccessor);
                }

                GlTF_Accessor weightAccessor = null;
                if (exportAnimation && m.boneWeights.Length > 0)
                {
                    weightAccessor            = new GlTF_Accessor(GlTF_Accessor.GetNameFromObject(m, "weights"), GlTF_Accessor.Type.VEC4, GlTF_Accessor.ComponentType.FLOAT);
                    weightAccessor.bufferView = GlTF_Writer.vec4BufferView;
                    GlTF_Writer.accessors.Add(weightAccessor);
                }

                GlTF_Accessor tangentAccessor = null;
                if (m.tangents.Length > 0)
                {
                    tangentAccessor            = new GlTF_Accessor(GlTF_Accessor.GetNameFromObject(m, "tangents"), GlTF_Accessor.Type.VEC4, GlTF_Accessor.ComponentType.FLOAT);
                    tangentAccessor.bufferView = GlTF_Writer.vec4BufferView;
                    GlTF_Writer.accessors.Add(tangentAccessor);
                }

                var smCount = m.subMeshCount;
                for (var i = 0; i < smCount; ++i)
                {
                    GlTF_Primitive primitive = new GlTF_Primitive();
                    primitive.name  = GlTF_Primitive.GetNameFromObject(m, i);
                    primitive.index = i;
                    GlTF_Attributes attributes = new GlTF_Attributes();
                    attributes.positionAccessor  = positionAccessor;
                    attributes.normalAccessor    = normalAccessor;
                    attributes.colorAccessor     = colorAccessor;
                    attributes.texCoord0Accessor = uv0Accessor;
                    attributes.texCoord1Accessor = uv1Accessor;
                    attributes.texCoord2Accessor = uv2Accessor;
                    attributes.texCoord3Accessor = uv3Accessor;
                    attributes.jointAccessor     = jointAccessor;
                    attributes.weightAccessor    = weightAccessor;
                    attributes.tangentAccessor   = tangentAccessor;
                    primitive.attributes         = attributes;
                    GlTF_Accessor indexAccessor = new GlTF_Accessor(GlTF_Accessor.GetNameFromObject(m, "indices_" + i), GlTF_Accessor.Type.SCALAR, GlTF_Accessor.ComponentType.USHORT);
                    indexAccessor.bufferView = GlTF_Writer.ushortBufferView;
                    GlTF_Writer.accessors.Add(indexAccessor);
                    primitive.indices = indexAccessor;

                    var mr = GetRenderer(tr);
                    var sm = mr.sharedMaterials;
                    if (i < sm.Length)
                    {
                        var mat     = sm[i];
                        var matName = GlTF_Material.GetNameFromObject(mat);
                        if (GlTF_Writer.materialNames.Contains(matName))
                        {
                            primitive.materialIndex = GlTF_Writer.materialNames.IndexOf(matName); // THIS INDIRECTION CAN BE REMOVED!
                        }
                        else
                        {
                            GlTF_Material material = new GlTF_Material();
                            material.name           = GlTF_Writer.cleanNonAlphanumeric(mat.name);
                            primitive.materialIndex = GlTF_Writer.materials.Count;
                            GlTF_Writer.materialNames.Add(matName);
                            GlTF_Writer.materials.Add(material);

                            //technique
                            var s        = mat.shader;
                            var techName = GlTF_Technique.GetNameFromObject(s);
                            if (GlTF_Writer.techniqueNames.Contains(techName))
                            {
                                material.instanceTechniqueIndex = GlTF_Writer.techniqueNames.IndexOf(techName);// THIS INDIRECTION CAN BE REMOVED!
                            }
                            else
                            {
                                GlTF_Technique tech = new GlTF_Technique();
                                tech.name = techName;
                                GlTF_Technique.Parameter tParam = new GlTF_Technique.Parameter();
                                tParam.name     = "position";
                                tParam.type     = GlTF_Technique.Type.FLOAT_VEC3;
                                tParam.semantic = GlTF_Technique.Semantic.POSITION;
                                tech.parameters.Add(tParam);
                                GlTF_Technique.Attribute tAttr = new GlTF_Technique.Attribute();
                                tAttr.name  = "a_position";
                                tAttr.param = tParam.name;
                                tech.attributes.Add(tAttr);

                                if (normalAccessor != null)
                                {
                                    tParam          = new GlTF_Technique.Parameter();
                                    tParam.name     = "normal";
                                    tParam.type     = GlTF_Technique.Type.FLOAT_VEC3;
                                    tParam.semantic = GlTF_Technique.Semantic.NORMAL;
                                    tech.parameters.Add(tParam);
                                    tAttr       = new GlTF_Technique.Attribute();
                                    tAttr.name  = "a_normal";
                                    tAttr.param = tParam.name;
                                    tech.attributes.Add(tAttr);
                                }

                                if (uv0Accessor != null)
                                {
                                    tParam          = new GlTF_Technique.Parameter();
                                    tParam.name     = "texcoord0";
                                    tParam.type     = GlTF_Technique.Type.FLOAT_VEC2;
                                    tParam.semantic = GlTF_Technique.Semantic.TEXCOORD_0;
                                    tech.parameters.Add(tParam);
                                    tAttr       = new GlTF_Technique.Attribute();
                                    tAttr.name  = "a_texcoord0";
                                    tAttr.param = tParam.name;
                                    tech.attributes.Add(tAttr);
                                }

                                if (uv1Accessor != null)
                                {
                                    tParam          = new GlTF_Technique.Parameter();
                                    tParam.name     = "texcoord1";
                                    tParam.type     = GlTF_Technique.Type.FLOAT_VEC2;
                                    tParam.semantic = GlTF_Technique.Semantic.TEXCOORD_1;
                                    tech.parameters.Add(tParam);
                                    tAttr       = new GlTF_Technique.Attribute();
                                    tAttr.name  = "a_texcoord1";
                                    tAttr.param = tParam.name;
                                    tech.attributes.Add(tAttr);
                                }

                                if (uv2Accessor != null)
                                {
                                    tParam          = new GlTF_Technique.Parameter();
                                    tParam.name     = "texcoord2";
                                    tParam.type     = GlTF_Technique.Type.FLOAT_VEC2;
                                    tParam.semantic = GlTF_Technique.Semantic.TEXCOORD_2;
                                    tech.parameters.Add(tParam);
                                    tAttr       = new GlTF_Technique.Attribute();
                                    tAttr.name  = "a_texcoord2";
                                    tAttr.param = tParam.name;
                                    tech.attributes.Add(tAttr);
                                }

                                if (uv3Accessor != null)
                                {
                                    tParam          = new GlTF_Technique.Parameter();
                                    tParam.name     = "texcoord3";
                                    tParam.type     = GlTF_Technique.Type.FLOAT_VEC2;
                                    tParam.semantic = GlTF_Technique.Semantic.TEXCOORD_3;
                                    tech.parameters.Add(tParam);
                                    tAttr       = new GlTF_Technique.Attribute();
                                    tAttr.name  = "a_texcoord3";
                                    tAttr.param = tParam.name;
                                    tech.attributes.Add(tAttr);
                                }

                                tech.AddDefaultUniforms();

                                // Populate technique with shader data
                                GlTF_Writer.techniqueNames.Add(techName);
                                GlTF_Writer.techniques.Add(tech);

                                // create program
                                GlTF_Program program = new GlTF_Program();
                                program.name = GlTF_Program.GetNameFromObject(s);
                                tech.program = program.name;
                                foreach (var attr in tech.attributes)
                                {
                                    program.attributes.Add(attr.name);
                                }
                                GlTF_Writer.programs.Add(program);
                            }

                            unityToPBRMaterial(mat, ref material);
                        }
                    }
                    mesh.primitives.Add(primitive);
                }

                // If gameobject having SkinnedMeshRenderer component has been transformed,
                // the mesh would need to be baked here.
                mesh.Populate(m);
                GlTF_Writer.meshes.Add(mesh);
                node.meshIndex = GlTF_Writer.meshes.IndexOf(mesh);
            }

            // Parse animations
            if (exportAnimation)
            {
                Animator a = tr.GetComponent <Animator>();
                if (a != null)
                {
                    AnimationClip[] clips = AnimationUtility.GetAnimationClips(tr.gameObject);
                    for (int i = 0; i < clips.Length; i++)
                    {
                        //FIXME It seems not good to generate one animation per animator.
                        GlTF_Animation anim = new GlTF_Animation(GlTF_Writer.cleanNonAlphanumeric(clips[i].name));
                        anim.Populate(clips[i], tr, GlTF_Writer.bakeAnimation);
                        if (anim.channels.Count > 0)
                        {
                            GlTF_Writer.animations.Add(anim);
                        }
                    }
                }

                Animation animation = tr.GetComponent <Animation>();
                if (animation != null)
                {
                    AnimationClip clip = animation.clip;
                    //FIXME It seems not good to generate one animation per animator.
                    GlTF_Animation anim = new GlTF_Animation(GlTF_Writer.cleanNonAlphanumeric(animation.name));
                    anim.Populate(clip, tr, GlTF_Writer.bakeAnimation);
                    if (anim.channels.Count > 0)
                    {
                        GlTF_Writer.animations.Add(anim);
                    }
                }
            }

            // Parse transform
            if (tr.parent == null)
            {
                Matrix4x4 mat = Matrix4x4.identity;
                if (debugRightHandedScale)
                {
                    mat.m22 = -1;
                }
                mat         = mat * Matrix4x4.TRS(tr.localPosition, tr.localRotation, tr.localScale);
                node.matrix = new GlTF_Matrix(mat, true, tr.GetComponent <Light>() != null);
            }
            // Use good transform if parent object is not in selection
            else if (!trs.Contains(tr.parent))
            {
                node.hasParent = false;
                Matrix4x4 mat = Matrix4x4.identity;
                if (debugRightHandedScale)
                {
                    mat.m22 = -1;
                }
                mat         = mat * tr.localToWorldMatrix;
                node.matrix = new GlTF_Matrix(mat, true, tr.GetComponent <Light>() != null);
            }
            else
            {
                node.hasParent = true;
                if (tr.localPosition != Vector3.zero)
                {
                    node.translation = new GlTF_Translation(tr.localPosition);
                }
                if (tr.localScale != Vector3.one)
                {
                    node.scale = new GlTF_Scale(tr.localScale);
                }
                if (tr.localRotation != Quaternion.identity)
                {
                    node.rotation = new GlTF_Rotation(tr.localRotation);
                }
            }

            if (!node.hasParent)
            {
                correctionNode.childrenIDs.Add(node.uuid);
            }

            if (tr.GetComponent <Camera>() != null)
            {
                node.cameraName = GlTF_Writer.cleanNonAlphanumeric(tr.name);
            }

            // Parse node's skin data
            GlTF_Accessor       invBindMatrixAccessor = null;
            SkinnedMeshRenderer skinMesh = tr.GetComponent <SkinnedMeshRenderer>();
            if (exportAnimation && skinMesh != null && skinMesh.enabled && checkSkinValidity(skinMesh, trs) && skinMesh.rootBone != null)
            {
                GlTF_Skin skin = new GlTF_Skin();

                skin.name = GlTF_Writer.cleanNonAlphanumeric(skinMesh.rootBone.name) + "_skeleton_" + GlTF_Writer.cleanNonAlphanumeric(node.name) + tr.GetInstanceID();

                // Create invBindMatrices accessor
                invBindMatrixAccessor            = new GlTF_Accessor(skin.name + "invBindMatrices", GlTF_Accessor.Type.MAT4, GlTF_Accessor.ComponentType.FLOAT);
                invBindMatrixAccessor.bufferView = GlTF_Writer.mat4BufferView;
                GlTF_Writer.accessors.Add(invBindMatrixAccessor);

                // Generate skin data
                skin.Populate(tr, ref invBindMatrixAccessor, GlTF_Writer.accessors.Count - 1);
                GlTF_Writer.skins.Add(skin);
                node.skinIndex = GlTF_Writer.skins.IndexOf(skin);
            }

            foreach (Transform t in tr.transform)
            {
                if (t.gameObject.activeInHierarchy)
                {
                    node.childrenIDs.Add(GlTF_Node.GetIDFromObject(t));
                }
            }

            GlTF_Writer.nodeIDs.Add(node.uuid);
            GlTF_Writer.nodes.Add(node);
        }

        if (GlTF_Writer.meshes.Count == 0)
        {
            Debug.Log("No visible objects have been exported. Aboring export");
            yield return(false);
        }

        writer.OpenFiles(path);
        writer.Write();
        writer.CloseFiles();

        if (nbDisabledObjects > 0)
        {
            Debug.Log(nbDisabledObjects + " disabled object ignored during export");
        }

        Debug.Log("Scene has been exported to " + path);
        if (buildZip)
        {
            ZipFile zip = new ZipFile();
            Debug.Log(GlTF_Writer.exportedFiles.Count + " files generated");
            string zipName = Path.GetFileNameWithoutExtension(path) + ".zip";
            foreach (string originFilePath in GlTF_Writer.exportedFiles.Keys)
            {
                zip.AddFile(originFilePath, GlTF_Writer.exportedFiles[originFilePath]);
            }

            zip.Save(savedPath + "/" + zipName);

            // Remove all files
            foreach (string pa in GlTF_Writer.exportedFiles.Keys)
            {
                if (System.IO.File.Exists(pa))
                {
                    System.IO.File.Delete(pa);
                }
            }

            Debug.Log("Files have been cleaned");
        }
        done = true;

        yield return(true);
    }
Ejemplo n.º 30
0
 public void ExportCoroutine(string path, Preset presetAsset, bool buildZip, bool exportPBRMaterials, bool exportAnimation = true, bool doConvertImages = true, bool halfSpotAngle = true, bool quadraticAttenuation = true)
 {
     StartCoroutine(Export(path, presetAsset, buildZip, exportPBRMaterials, exportAnimation, doConvertImages, halfSpotAngle, quadraticAttenuation));
 }
Ejemplo n.º 31
0
 public PresetDataViewModel(Preset preset, PresetDataPersisterService presetDataPersisterService, DeveloperService developerService) : base(preset)
 {
     _developerService           = developerService;
     _presetDataPersisterService = presetDataPersisterService;
     OpenWithHexEditor           = new Command(OnOpenWithHexEditor);
 }
        private void AddToNewPreset()
        {
            if (Mod.IsInOriginalInstallation())
            {
                MessageBox.Show("This mod cannot be added to a preset, as it is part of the core of Cortex Command.", "Notice", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                return;
            }

            var addPresetWindow = new AddPresetWindow();
            addPresetWindow.Owner = Global.MainWindow;
            addPresetWindow.WindowStartupLocation = WindowStartupLocation.CenterOwner;

            var result = (bool)addPresetWindow.ShowDialog();

            if (result)
            {
                var presetName = addPresetWindow.PresetName;
                var preset = new Preset(presetName, Mod.IsEnabled);
                preset.Add(Mod);
                presetManager.SavePreset(preset);

                if (OnAddedToPreset != null)
                    OnAddedToPreset(preset);
            }
        }
Ejemplo n.º 33
0
 public void OverrideValues(Preset p)
 {
     p.bloom.intensity.value = intensity;
     p.bloom.scatter.value   = scatter;
     p.bloom.threshold.value = threshold;
 }
Ejemplo n.º 34
0
        public QueueTask(EncodeTask task, HBConfiguration configuration, string scannedSourcePath, Preset currentPreset, bool isPresetModified)
        {
            this.Task              = task;
            this.Configuration     = configuration;
            this.Status            = QueueItemStatus.Waiting;
            this.ScannedSourcePath = scannedSourcePath;
            if (currentPreset != null)
            {
                this.presetKey = currentPreset.Name;
                if (isPresetModified)
                {
                    this.presetKey = this.presetKey + " (Modified)";
                }
            }

            id      = id + 1;
            this.Id = string.Format("{0}.{1}", GeneralUtilities.ProcessId, id);

            this.Statistics = new QueueStats();
        }
Ejemplo n.º 35
0
 /// <summary>
 /// The export.
 /// </summary>
 /// <param name="filename">
 /// The filename.
 /// </param>
 /// <param name="preset">
 /// The preset.
 /// </param>
 /// <param name="configuration">
 /// The configuration.
 /// </param>
 public void Export(string filename, Preset preset, HBConfiguration configuration)
 {
     // TODO Add support for multiple export
     PresetTransportContainer container = JsonPresetFactory.ExportPreset(preset, configuration);
     HandBrakePresetService.ExportPreset(filename, container);
 }
Ejemplo n.º 36
0
        /// <summary>
        /// The create hb preset.
        /// </summary>
        /// <param name="export">
        /// The export.
        /// </param>
        /// <param name="config">HandBrakes current configuration</param>
        /// <returns>
        /// The <see cref="HBPreset"/>.
        /// </returns>
        public static HBPreset CreateHbPreset(Preset export, HBConfiguration config)
        {
            HBPreset preset = new HBPreset();

            // Preset
            preset.PresetDescription = export.Description;
            preset.PresetName        = export.Name;
            preset.Type = export.IsBuildIn ? 0 : 1;
            preset.UsesPictureSettings = (int)export.PictureSettingsMode;
            preset.Default             = export.IsDefault;

            // Audio
            preset.AudioCopyMask        = export.Task.AllowedPassthruOptions.AllowedPassthruOptions.Select(EnumHelper <AudioEncoder> .GetShortName).ToList();
            preset.AudioEncoderFallback = EnumHelper <AudioEncoder> .GetShortName(export.Task.AllowedPassthruOptions.AudioEncoderFallback);

            preset.AudioLanguageList           = LanguageUtilities.GetLanguageCodes(export.AudioTrackBehaviours.SelectedLangauges);
            preset.AudioTrackSelectionBehavior = EnumHelper <AudioBehaviourModes> .GetShortName(export.AudioTrackBehaviours.SelectedBehaviour);

            preset.AudioSecondaryEncoderMode = export.AudioTrackBehaviours.SelectedTrackDefaultBehaviour == AudioTrackDefaultsMode.FirstTrack; // 1 = First Track, 0 = All
            preset.AudioList = new List <AudioList>();
            foreach (var item in export.AudioTrackBehaviours.BehaviourTracks)
            {
                AudioList track = new AudioList
                {
                    AudioBitrate            = item.Bitrate,
                    AudioCompressionLevel   = 0,    // TODO
                    AudioDitherMethod       = null, // TODO
                    AudioEncoder            = EnumHelper <AudioEncoder> .GetShortName(item.Encoder),
                    AudioMixdown            = item.MixDown != null ? item.MixDown.ShortName : "dpl2",
                    AudioNormalizeMixLevel  = false,                                                                                  // TODO
                    AudioSamplerate         = item.SampleRate == 0 ? "auto" : item.SampleRate.ToString(CultureInfo.InvariantCulture), // TODO check formatting.
                    AudioTrackDRCSlider     = item.DRC,
                    AudioTrackGainSlider    = item.Gain,
                    AudioTrackQuality       = item.Quality ?? 0,
                    AudioTrackQualityEnable = item.Quality.HasValue && item.IsQualityVisible
                };

                preset.AudioList.Add(track);
            }

            // Subtitles
            preset.SubtitleAddCC = export.SubtitleTrackBehaviours.AddClosedCaptions;
            preset.SubtitleAddForeignAudioSearch = export.SubtitleTrackBehaviours.AddForeignAudioScanTrack;
            preset.SubtitleBurnBDSub             = false; // TODO not supported yet.
            preset.SubtitleBurnDVDSub            = false; // TODO not supported yet.
            preset.SubtitleBurnBehavior          = EnumHelper <SubtitleBurnInBehaviourModes> .GetShortName(export.SubtitleTrackBehaviours.SelectedBurnInBehaviour);

            preset.SubtitleLanguageList           = LanguageUtilities.GetLanguageCodes(export.SubtitleTrackBehaviours.SelectedLangauges);
            preset.SubtitleTrackSelectionBehavior = EnumHelper <SubtitleBehaviourModes> .GetShortName(export.SubtitleTrackBehaviours.SelectedBehaviour);

            // Chapters
            preset.ChapterMarkers = export.Task.IncludeChapterMarkers;

            // Output Settings
            preset.FileFormat = EnumHelper <OutputFormat> .GetShortName(export.Task.OutputFormat);

            preset.Mp4HttpOptimize   = export.Task.OptimizeMP4;
            preset.Mp4iPodCompatible = export.Task.IPod5GSupport;
            preset.AlignAVStart      = export.Task.AlignAVStart;

            // Picture Settings
            preset.PictureForceHeight = 0;                                                           // TODO
            preset.PictureForceWidth  = 0;                                                           // TODO
            preset.PictureHeight      = preset.UsesPictureSettings >= 1 ? export.Task.MaxHeight : 0; // TODO; // TODO
            preset.PictureItuPAR      = false;                                                       // TODO Not supported Yet
            preset.PictureKeepRatio   = export.Task.KeepDisplayAspect;
            preset.PictureLeftCrop    = export.Task.Cropping.Left;
            preset.PictureLooseCrop   = false; // TODO Not Supported Yet
            preset.PictureModulus     = export.Task.Modulus ?? 16;
            preset.PicturePAR         = EnumHelper <Anamorphic> .GetShortName(export.Task.Anamorphic);

            preset.PicturePARHeight = export.Task.PixelAspectY;
            preset.PicturePARWidth  = export.Task.PixelAspectX;
            preset.PictureRightCrop = export.Task.Cropping.Right;

            if (export.Task.Rotation != 0 || export.Task.FlipVideo)
            {
                preset.PictureRotate = string.Format("{0}:{1}", export.Task.Rotation, export.Task.FlipVideo ? "1" : "0");
            }

            preset.PictureTopCrop    = export.Task.Cropping.Top;
            preset.PictureWidth      = preset.UsesPictureSettings >= 1 ? export.Task.MaxWidth : 0; // TODO
            preset.PictureDARWidth   = export.Task.DisplayWidth.HasValue ? (int)export.Task.DisplayWidth.Value : 0;
            preset.PictureAutoCrop   = !export.Task.HasCropping;
            preset.PictureBottomCrop = export.Task.Cropping.Bottom;

            // Filters
            preset.UsesPictureFilters   = true;
            preset.PictureDeblockPreset = export.Task.DeblockPreset?.Key;
            preset.PictureDeblockTune   = export.Task.DeblockTune?.Key;
            preset.PictureDeblockCustom = export.Task.CustomDeblock;

            preset.PictureDeinterlaceFilter = export.Task.DeinterlaceFilter == DeinterlaceFilter.Decomb
                ? "decomb"
                : export.Task.DeinterlaceFilter == DeinterlaceFilter.Yadif ? "yadif" : "off";
            preset.PictureDeinterlacePreset = export.Task.DeinterlacePreset?.ShortName;
            preset.PictureDeinterlaceCustom = export.Task.CustomDeinterlaceSettings;

            preset.PictureCombDetectPreset = EnumHelper <CombDetect> .GetShortName(export.Task.CombDetect);

            preset.PictureCombDetectCustom = export.Task.CustomCombDetect;

            preset.PictureDenoiseCustom = export.Task.CustomDenoise;
            preset.PictureDenoiseFilter = EnumHelper <Denoise> .GetShortName(export.Task.Denoise);

            preset.PictureDenoisePreset = EnumHelper <DenoisePreset> .GetShortName(export.Task.DenoisePreset);

            preset.PictureDenoiseTune = EnumHelper <DenoiseTune> .GetShortName(export.Task.DenoiseTune);

            preset.PictureDetelecine = EnumHelper <Detelecine> .GetShortName(export.Task.Detelecine);

            preset.PictureDetelecineCustom = export.Task.CustomDetelecine;

            preset.PictureSharpenFilter = EnumHelper <Sharpen> .GetShortName(export.Task.Sharpen);

            preset.PictureSharpenPreset = export.Task.SharpenPreset != null ? export.Task.SharpenPreset.Key : string.Empty;
            preset.PictureSharpenTune   = export.Task.SharpenTune != null ? export.Task.SharpenTune.Key : string.Empty;
            preset.PictureSharpenCustom = export.Task.SharpenCustom;

            // Video
            preset.VideoEncoder = EnumHelper <VideoEncoder> .GetShortName(export.Task.VideoEncoder);

            preset.VideoFramerate     = export.Task.Framerate.HasValue ? export.Task.Framerate.ToString() : null;
            preset.VideoFramerateMode = EnumHelper <FramerateMode> .GetShortName(export.Task.FramerateMode);

            preset.VideoGrayScale     = export.Task.Grayscale;
            preset.VideoLevel         = export.Task.VideoLevel != null ? export.Task.VideoLevel.ShortName : null;
            preset.VideoOptionExtra   = export.Task.ExtraAdvancedArguments;
            preset.VideoPreset        = export.Task.VideoPreset != null ? export.Task.VideoPreset.ShortName : null;
            preset.VideoProfile       = export.Task.VideoProfile != null ? export.Task.VideoProfile.ShortName : null;
            preset.VideoQSVAsyncDepth = 4; // Defaulted to 4 for now.
            preset.VideoQSVDecode     = config.EnableQuickSyncDecoding;
            preset.VideoQualitySlider = export.Task.Quality.HasValue ? export.Task.Quality.Value : 0;
            preset.VideoQualityType   = (int)export.Task.VideoEncodeRateType;
            preset.VideoScaler        = EnumHelper <VideoScaler> .GetShortName(config.ScalingMode);

            preset.VideoTune            = export.Task.VideoTunes.Aggregate(string.Empty, (current, item) => !string.IsNullOrEmpty(current) ? string.Format("{0}, {1}", current, item.ShortName) : item.ShortName);
            preset.VideoAvgBitrate      = export.Task.VideoBitrate ?? 0;
            preset.VideoColorMatrixCode = 0; // TODO not supported.
            preset.VideoTurboTwoPass    = export.Task.TurboFirstPass;
            preset.VideoTwoPass         = export.Task.TwoPass;

            // Unknown
            preset.ChildrenArray = new List <object>(); // We don't support nested presets.
            preset.Folder        = false;               // TODO
            preset.FolderOpen    = false;               // TODO

            return(preset);
        }
Ejemplo n.º 37
0
        /// <summary>
        /// Set Default Preset
        /// </summary>
        /// <param name="name">
        /// The name.
        /// </param>
        public void SetDefault(Preset name)
        {
            foreach (Preset preset in this.presets)
            {
                preset.IsDefault = false;
            }

            name.IsDefault = true;
            this.SavePresetFiles();
        }
Ejemplo n.º 38
0
 public void Init(Preset preset, CameraStand cameraStand)
 {
     Init(preset, cameraStand, m_Preset.m_DebugColor);
 }
Ejemplo n.º 39
0
        /// <summary>
        /// Setup this tab for the specified preset.
        /// </summary>
        /// <param name="preset">
        /// The preset.
        /// </param>
        /// <param name="task">
        /// The task.
        /// </param>
        public void SetPreset(Preset preset, EncodeTask task)
        {
            this.Task.PropertyChanged -= this.Task_PropertyChanged;
            this.Task = task;
            this.Task.PropertyChanged += this.Task_PropertyChanged;
            this.AdvancedOptionsString = preset.Task.AdvancedEncoderOptions;

            if (task.ShowAdvancedTab && task.VideoEncoder == VideoEncoder.X264)
            {
                this.ShowX264AdvancedOptions = true;
                this.NotifyOfPropertyChange(() => ShowX264AdvancedOptions);
            }
        }
Ejemplo n.º 40
0
        //
        protected void CommonGUI()
        {
                        #if UNITY_IPHONE || UNITY_ANDROID || UNITY_WP8 || UNITY_BLACKBERRY
            if (!PlayerSettings.use32BitDisplayBuffer)
            {
                EditorGUILayout.HelpBox("Highlighting System requires 32-bit display buffer. Set the 'Use 32-bit Display Buffer' checkbox under the 'Resolution and Presentation' section of Player Settings.", MessageType.Error);
            }
                        #endif

            EditorGUILayout.HelpBox("Depth Offset properties should be used only when Dynamic Batching is enabled in Player Settings. Otherwise set them to 0's to avoid rendering artifacts.", MessageType.Info);
            EditorGUI.BeginChangeCheck();
            hb.offsetFactor = EditorGUILayout.Slider("Depth Offset Factor:", hb.offsetFactor, -1f, 0f);
            hb.offsetUnits  = EditorGUILayout.Slider("Depth Offset Units:", hb.offsetUnits, -100f, 0f);
            if (EditorGUI.EndChangeCheck())
            {
                EditorUtility.SetDirty(hb);
            }

            EditorGUILayout.Space();

            EditorGUILayout.LabelField("Preset:");

            int oldIndex = presetIndex;
            int newIndex = EditorGUILayout.Popup(presetIndex, presetNames);
            if (oldIndex != newIndex)
            {
                SetPresetSettings(newIndex);
                presetIndex = newIndex;
            }

            Preset currentPreset = new Preset();
            if (presetIndex >= 0)
            {
                currentPreset = presets[presetIndex];
            }

            EditorGUI.BeginChangeCheck();

            SetBoldDefaultFont(presetIndex < 0 || hb.downsampleFactor != currentPreset.downsampleFactor);
            hb.downsampleFactor = _downsampleSet[EditorGUILayout.Popup("Downsampling:", _downsampleGet[hb.downsampleFactor], downsampleOptions)];

            SetBoldDefaultFont(presetIndex < 0 || hb.iterations != currentPreset.iterations);
            hb.iterations = Mathf.Clamp(EditorGUILayout.IntField("Iterations:", hb.iterations), 0, 50);

            SetBoldDefaultFont(presetIndex < 0 || hb.blurMinSpread != currentPreset.blurMinSpread);
            hb.blurMinSpread = EditorGUILayout.Slider("Min Spread:", hb.blurMinSpread, 0f, 3f);

            SetBoldDefaultFont(presetIndex < 0 || hb.blurSpread != currentPreset.blurSpread);
            hb.blurSpread = EditorGUILayout.Slider("Spread:", hb.blurSpread, 0f, 3f);

            SetBoldDefaultFont(presetIndex < 0 || hb.blurIntensity != currentPreset.blurIntensity);
            hb.blurIntensity = EditorGUILayout.Slider("Intensity:", hb.blurIntensity, 0f, 1f);

            SetBoldDefaultFont(false);

            if (EditorGUI.EndChangeCheck())
            {
                // If settings have changed when default preset has been selected
                if (presetIndex < defaultPresets.Count)
                {
                    presetIndex = -1;
                }
                EditorUtility.SetDirty(hb);
            }

            int customPresetIndex = presetIndex - defaultPresets.Count;

            EditorGUILayout.BeginHorizontal();
            if (GUILayout.Button("Save Preset"))
            {
                string defaultName;
                if (customPresetIndex < 0)
                {
                    defaultName = "My Preset";
                }
                else
                {
                    defaultName = customPresets[customPresetIndex].name;
                }
                window = SavePresetWindow.Init(defaultName, SavePresetAs);
            }

            if (presetIndex < defaultPresets.Count)
            {
                GUI.enabled = false;
            }
            if (GUILayout.Button(GUI.enabled ? removeButtonContent : removeButtonContentDisabled))
            {
                bool delete = EditorUtility.DisplayDialog("Removing Preset", "Are you sure - you want to remove Preset '" + customPresets[customPresetIndex].name + "'?", "Yes", "No");
                if (delete)
                {
                    customPresets.RemoveAt(customPresetIndex);
                    SavePresets();
                    LoadPresets();
                    SetPresetSettings(0);
                    presetIndex = 0;
                }
            }
            GUI.enabled = true;
            EditorGUILayout.EndHorizontal();
        }
        /// <summary>
        /// Setup this tab for the specified preset.
        /// </summary>
        /// <param name="preset">
        /// The preset.
        /// </param>
        /// <param name="task">
        /// The task.
        /// </param>
        public void SetPreset(Preset preset, EncodeTask task)
        {
            this.Task = task;

            // Handle built-in presets.
            if (preset.IsBuildIn)
            {
                preset.PictureSettingsMode = PresetPictureSettingsMode.Custom;
            }

            // Setup the Picture Sizes
            switch (preset.PictureSettingsMode)
            {
            default:
            case PresetPictureSettingsMode.Custom:
            case PresetPictureSettingsMode.SourceMaximum:

                // Anamorphic Mode
                this.SelectedAnamorphicMode = preset.Task.Anamorphic;

                // Modulus
                if (preset.Task.Modulus.HasValue)
                {
                    this.SelectedModulus = preset.Task.Modulus;
                }

                // Set the Maintain Aspect ratio.
                this.MaintainAspectRatio = preset.Task.KeepDisplayAspect;

                // Set the Maximum so libhb can correctly manage the size.
                if (preset.PictureSettingsMode == PresetPictureSettingsMode.SourceMaximum)
                {
                    this.MaxWidth  = this.sourceResolution.Width;
                    this.MaxHeight = this.sourceResolution.Height;
                }
                else
                {
                    this.MaxWidth  = preset.Task.MaxWidth ?? this.sourceResolution.Width;
                    this.MaxHeight = preset.Task.MaxHeight ?? this.sourceResolution.Height;
                }

                // Set the width, then check the height doesn't breach the max height and correct if necessary.
                int width = this.GetModulusValue(this.GetRes((this.sourceResolution.Width - this.CropLeft - this.CropRight), preset.Task.MaxWidth));
                this.Width = width;

                // If we have a max height, make sure we havn't breached it.
                int height = this.GetModulusValue(this.GetRes((this.sourceResolution.Height - this.CropTop - this.CropBottom), preset.Task.MaxHeight));
                if (preset.Task.MaxHeight.HasValue && this.Height > preset.Task.MaxHeight.Value)
                {
                    this.Height = height;
                }
                break;

            case PresetPictureSettingsMode.None:
                // Do Nothing except reset the Max Width/Height
                this.MaxWidth  = this.sourceResolution.Width;
                this.MaxHeight = this.sourceResolution.Height;
                this.SelectedAnamorphicMode = preset.Task.Anamorphic;
                break;
            }

            // Custom Anamorphic
            if (preset.Task.Anamorphic == Anamorphic.Custom)
            {
                this.DisplayWidth = preset.Task.DisplayWidth != null?int.Parse(preset.Task.DisplayWidth.ToString()) : 0;

                this.ParWidth  = preset.Task.PixelAspectX;
                this.ParHeight = preset.Task.PixelAspectY;
            }

            // Cropping
            if (preset.Task.HasCropping)
            {
                this.IsCustomCrop = true;
                this.CropLeft     = preset.Task.Cropping.Left;
                this.CropRight    = preset.Task.Cropping.Right;
                this.CropTop      = preset.Task.Cropping.Top;
                this.CropBottom   = preset.Task.Cropping.Bottom;
            }
            else
            {
                this.IsCustomCrop = false;
            }

            this.NotifyOfPropertyChange(() => this.Task);

            this.UpdateVisibileControls();
        }
Ejemplo n.º 42
0
        //
        protected virtual PresetSaveResult SavePresetAs(string name, bool overwrite)
        {
            window = null;

            if (string.IsNullOrEmpty(name))
            {
                return(PresetSaveResult.Null);
            }

            int customPresetIndex = -1;

            for (int i = 0, imax = presets.Count; i < imax; i++)
            {
                if (presets[i].name == name)
                {
                    if (i < defaultPresets.Count)
                    {
                        // Overwriting default presets is not allowed
                        return(PresetSaveResult.Default);
                    }
                    else if (!overwrite)
                    {
                        // Preset with this name already exists
                        return(PresetSaveResult.Exists);
                    }
                    else
                    {
                        // Overwrite custom preset with this name
                        customPresetIndex = i - defaultPresets.Count;
                        break;
                    }
                }
            }

            Preset p = new Preset();

            p.name             = name;
            p.downsampleFactor = hb.downsampleFactor;
            p.iterations       = hb.iterations;
            p.blurMinSpread    = hb.blurMinSpread;
            p.blurSpread       = hb.blurSpread;
            p.blurIntensity    = hb.blurIntensity;

            int newIndex = -1;

            if (overwrite && customPresetIndex >= 0)
            {
                customPresets[customPresetIndex] = p;
                newIndex = customPresetIndex + defaultPresets.Count;
            }
            else
            {
                customPresets.Add(p);
                newIndex = customPresets.Count + defaultPresets.Count - 1;
            }

            SavePresets();
            LoadPresets();
            presetIndex = newIndex;
            EditorUtility.SetDirty(hb);

            return(PresetSaveResult.Success);
        }
Ejemplo n.º 43
0
        /// <summary>
        /// The export preset.
        /// </summary>
        /// <param name="export">
        /// The export.
        /// </param>
        /// <param name="config">
        /// HandBrakes configuration options.
        /// </param>
        /// <returns>
        /// The <see cref="Preset"/>.
        /// </returns>
        public static PresetTransportContainer ExportPreset(Preset export, HBConfiguration config)
        {
            PresetTransportContainer container = new PresetTransportContainer();
            container.VersionMajor = Constants.PresetVersionMajor;
            container.VersionMinor = Constants.PresetVersionMinor;
            container.VersionMicro = Constants.PresetVersionMicro;

            container.PresetList = new List<object> { CreateHbPreset(export, config) };

            return container;
        }
Ejemplo n.º 44
0
 abstract public void OnChangeSelectedPreset(Preset preset);
Ejemplo n.º 45
0
        /// <summary>
        /// The create hb preset.
        /// </summary>
        /// <param name="export">
        /// The export.
        /// </param>
        /// <param name="config">HandBrakes current configuration</param>
        /// <returns>
        /// The <see cref="HBPreset"/>.
        /// </returns>
        public static HBPreset CreateHbPreset(Preset export, HBConfiguration config)
        {
            HBPreset preset = new HBPreset();

            // Preset
            preset.PresetDescription = export.Description;
            preset.PresetName = export.Name;
            preset.Type = export.IsBuildIn ? 0 : 1;
            preset.UsesPictureSettings = (int)export.PictureSettingsMode;
            preset.Default = export.IsDefault;

            // Audio
            preset.AudioCopyMask = export.Task.AllowedPassthruOptions.AllowedPassthruOptions.Select(EnumHelper<AudioEncoder>.GetShortName).ToList();
            preset.AudioEncoderFallback = EnumHelper<AudioEncoder>.GetShortName(export.Task.AllowedPassthruOptions.AudioEncoderFallback);
            preset.AudioLanguageList = LanguageUtilities.GetLanguageCodes(export.AudioTrackBehaviours.SelectedLangauges);
            preset.AudioTrackSelectionBehavior = EnumHelper<AudioBehaviourModes>.GetShortName(export.AudioTrackBehaviours.SelectedBehaviour);
            preset.AudioSecondaryEncoderMode = export.AudioTrackBehaviours.SelectedTrackDefaultBehaviour == AudioTrackDefaultsMode.FirstTrack; // TODO -> We don't support AllTracks yet in other GUIs.
            preset.AudioList = new List<AudioList>();
            foreach (var item in export.Task.AudioTracks)
            {
                AudioList track = new AudioList
                {
                    AudioBitrate = item.Bitrate,
                    AudioCompressionLevel = 0, // TODO
                    AudioDitherMethod = null,  // TODO
                    AudioEncoder = EnumHelper<AudioEncoder>.GetShortName(item.Encoder),
                    AudioMixdown = EnumHelper<Mixdown>.GetShortName(item.MixDown),
                    AudioNormalizeMixLevel = false, // TODO
                    AudioSamplerate = item.SampleRate == 0 ? "auto" : item.SampleRate.ToString(),  // TODO check formatting.
                    AudioTrackDRCSlider = item.DRC,
                    AudioTrackGainSlider = item.Gain,
                    AudioTrackQuality = item.Quality ?? 0,
                    AudioTrackQualityEnable = item.Quality.HasValue && item.IsQualityVisible
                };

                preset.AudioList.Add(track);
            }

            // Subtitles
            preset.SubtitleAddCC = export.SubtitleTrackBehaviours.AddClosedCaptions;
            preset.SubtitleAddForeignAudioSearch = export.SubtitleTrackBehaviours.AddForeignAudioScanTrack;
            preset.SubtitleBurnBDSub = false; // TODO not supported yet.
            preset.SubtitleBurnDVDSub = false; // TODO not supported yet.
            preset.SubtitleBurnBehavior = EnumHelper<SubtitleBurnInBehaviourModes>.GetShortName(export.SubtitleTrackBehaviours.SelectedBurnInBehaviour);
            preset.SubtitleLanguageList = LanguageUtilities.GetLanguageCodes(export.SubtitleTrackBehaviours.SelectedLangauges);
            preset.SubtitleTrackSelectionBehavior = EnumHelper<SubtitleBehaviourModes>.GetShortName(export.SubtitleTrackBehaviours.SelectedBehaviour);

            // Chapters
            preset.ChapterMarkers = export.Task.IncludeChapterMarkers;

            // Output Settings
            preset.FileFormat = EnumHelper<OutputFormat>.GetShortName(export.Task.OutputFormat);
            preset.Mp4HttpOptimize = export.Task.OptimizeMP4;
            preset.Mp4iPodCompatible = export.Task.IPod5GSupport;

            // Picture Settings
            preset.PictureForceHeight = 0; // TODO
            preset.PictureForceWidth = 0; // TODO
            preset.PictureHeight = preset.UsesPictureSettings >= 1 ? export.Task.MaxHeight : 0; // TODO; // TODO
            preset.PictureItuPAR = false; // TODO Not supported Yet
            preset.PictureKeepRatio = export.Task.KeepDisplayAspect;
            preset.PictureLeftCrop = export.Task.Cropping.Left;
            preset.PictureLooseCrop = false; // TODO Not Supported Yet
            preset.PictureModulus = export.Task.Modulus ?? 16;
            preset.PicturePAR = EnumHelper<Anamorphic>.GetShortName(export.Task.Anamorphic);
            preset.PicturePARHeight = export.Task.PixelAspectY;
            preset.PicturePARWidth = export.Task.PixelAspectX;
            preset.PictureRightCrop = export.Task.Cropping.Right;
            preset.PictureRotate = string.Format("{0}:{1}", export.Task.Rotation, export.Task.FlipVideo ? "1" : "0");
            preset.PictureTopCrop = export.Task.Cropping.Top;
            preset.PictureWidth = preset.UsesPictureSettings >= 1 ? export.Task.MaxWidth : 0; // TODO
            preset.PictureDARWidth = export.Task.DisplayWidth.HasValue ? (int)export.Task.DisplayWidth.Value : 0;
            preset.PictureAutoCrop = !export.Task.HasCropping;
            preset.PictureBottomCrop = export.Task.Cropping.Bottom;

            // Filters
            preset.PictureDeblock = export.Task.Deblock;
            preset.PictureDeinterlaceFilter = export.Task.DeinterlaceFilter == DeinterlaceFilter.Decomb
                ? "decomb"
                : export.Task.DeinterlaceFilter == DeinterlaceFilter.Deinterlace ? "deinterlace" : "off";
            preset.PictureDeinterlacePreset = export.Task.DeinterlaceFilter == DeinterlaceFilter.Decomb
                ? EnumHelper<Decomb>.GetShortName(export.Task.Decomb)
                : export.Task.DeinterlaceFilter == DeinterlaceFilter.Deinterlace ? EnumHelper<Deinterlace>.GetShortName(export.Task.Deinterlace) : string.Empty;
            preset.PictureDeinterlaceCustom = export.Task.DeinterlaceFilter == DeinterlaceFilter.Decomb
                ? export.Task.CustomDecomb
                : export.Task.DeinterlaceFilter == DeinterlaceFilter.Deinterlace ? export.Task.CustomDeinterlace : string.Empty;
            preset.PictureDeinterlaceCustom = export.Task.CustomDeinterlace;
            preset.PictureDenoiseCustom = export.Task.CustomDenoise;
            preset.PictureDenoiseFilter = EnumHelper<Denoise>.GetShortName(export.Task.Denoise);
            preset.PictureDenoisePreset = EnumHelper<DenoisePreset>.GetShortName(export.Task.DenoisePreset);
            preset.PictureDenoiseTune = EnumHelper<DenoiseTune>.GetShortName(export.Task.DenoiseTune);
            preset.PictureDetelecine = EnumHelper<Detelecine>.GetShortName(export.Task.Detelecine);
            preset.PictureDetelecineCustom = export.Task.CustomDetelecine;

            // Video
            preset.VideoEncoder = EnumHelper<VideoEncoder>.GetShortName(export.Task.VideoEncoder);
            preset.VideoFramerate = export.Task.Framerate.ToString();
            preset.VideoFramerateMode = EnumHelper<FramerateMode>.GetShortName(export.Task.FramerateMode);
            preset.VideoGrayScale = export.Task.Grayscale;
            preset.VideoHWDecode = false;
            preset.VideoLevel = export.Task.VideoLevel.ShortName;
            preset.VideoOptionExtra = export.Task.ExtraAdvancedArguments;
            preset.VideoPreset = export.Task.VideoPreset.ShortName;
            preset.VideoProfile = export.Task.VideoProfile.ShortName;
            preset.VideoQSVAsyncDepth = 4; // Defaulted to 4 for now.
            preset.VideoQSVDecode = !config.DisableQuickSyncDecoding;
            preset.VideoQualitySlider = export.Task.Quality.HasValue ? export.Task.Quality.Value : 0;
            preset.VideoQualityType = (int)export.Task.VideoEncodeRateType;
            preset.VideoScaler = EnumHelper<VideoScaler>.GetShortName(config.ScalingMode);
            preset.VideoTune = export.Task.VideoTunes.Aggregate(string.Empty, (current, item) => !string.IsNullOrEmpty(current) ? string.Format("{0}, {1}", current, item.ShortName) : item.ShortName);
            preset.VideoAvgBitrate = export.Task.VideoBitrate ?? 0;
            preset.VideoColorMatrixCode = 0; // TODO not supported.
            preset.VideoTurboTwoPass = export.Task.TurboFirstPass;
            preset.VideoTwoPass = export.Task.TwoPass;

            // Advanced
            preset.x264Option = export.Task.AdvancedEncoderOptions;
            preset.x264UseAdvancedOptions = export.Task.ShowAdvancedTab;

            // Unknown
            preset.ChildrenArray = new List<object>(); // We don't support nested presets.
            preset.Folder = false; // TODO
            preset.FolderOpen = false; // TODO

            return preset;
        }
        /// <summary>
        /// If the specified transform exists, get that transform.
        /// If the it does not exist, creates a new transform with the specified output.
        /// In this case, the output is set to encode a video using one of the built-in encoding presets.
        /// </summary>
        /// <param name="client">The Media Services client.</param>
        /// <param name="resourceGroupName">The name of the resource group within the Azure subscription.</param>
        /// <param name="accountName"> The Media Services account name.</param>
        /// <param name="transformName">The name of the transform.</param>
        /// <returns></returns>
        private static Transform EnsureTransformExists(IAzureMediaServicesClient client, string resourceGroupName, string accountName, string transformName, Preset preset)
        {
            // Does a Transform already exist with the desired name? Assume that an existing Transform with the desired name
            // also uses the same recipe or Preset for processing content.
            Transform transform = client.Transforms.Get(resourceGroupName, accountName, transformName);

            if (transform == null)
            {
                // Start by defining the desired outputs.
                TransformOutput[] outputs = new TransformOutput[]
                {
                    new TransformOutput(preset),
                };

                // Create the Transform with the output defined above
                transform = client.Transforms.CreateOrUpdate(resourceGroupName, accountName, transformName, outputs);
            }

            return(transform);
        }
        private void AddToPreset(Preset preset)
        {
            if (Mod.IsInOriginalInstallation())
            {
                MessageBox.Show("This mod cannot be added to a preset, as it is part of the core of Cortex Command.", "Notice", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                return;
            }

            presetManager.AddModToPreset(Mod, preset);

            if (OnAddedToPreset != null)
                OnAddedToPreset(preset);
        }
Ejemplo n.º 48
0
        public static (string exefile, string args) Build(string param, string input, string output, Preset preset, bool useHdr, string originInput, string extra)
        {
            var exeFileName = TaskArgBuilder.GetBaseEncoderFile(preset);

            string ioargs = TaskArgBuilder.GetIOArgs(input, output, preset);
            string gargs  = TaskArgBuilder.GenericArgumentBuilder(preset, useHdr);

            var addArgs = new List <string>
            {
                preset.Decoder switch
                {
                    Presets.Decoder.AVSW => "--avsw",
                    Presets.Decoder.AVHW => "--avhw",
                }
            };

            if (preset.IsSetOutputRes)
            {
                addArgs.Add("--output-res");
                addArgs.Add($"{preset.OutputResWidth}x{preset.OUtputResHeight}");
            }

            if (preset.IsSetAvSync && preset.AudioEncode != AudioEncode.None)
            {
                addArgs.Add("--avsync");
                addArgs.Add(preset.AVSync switch
                {
                    AVSync.Cfr => "cfr",
                    AVSync.ForceCfr => "forcecfr",
                    AVSync.Vfr => "vfr",
                });