From 261db2cdb6572771fac4772f31480fe9a9969474 Mon Sep 17 00:00:00 2001
From: sr55 <sr55.hb@outlook.com>
Date: Sat, 28 Feb 2015 20:37:38 +0000
Subject: [PATCH] WinGui: Tabs -> Spaces.

git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@6952 b64f7644-9d1e-0410-96f1-a4d463321fa5
---
 .../EventArgs/EncodeCompletedEventArgs.cs     |   12 +-
 .../EventArgs/EncodeProgressEventArgs.cs      |   38 +-
 .../EventArgs/MessageLoggedEventArgs.cs       |   18 +-
 .../EventArgs/ScanProgressEventArgs.cs        |   54 +-
 .../Interop/HandBrakeEncoderHelpers.cs        | 1004 ++++++++---------
 .../Interop/HandBrakeLanguagesHelper.cs       |   58 +-
 .../Interop/HandBrakeUnitConversionHelpers.cs |  382 +++----
 .../Interop/HandBrakeUtils.cs                 |    2 +-
 .../Interop/HbLib/HBDelegates.cs              |    6 +-
 .../Interop/HbLib/HbFunctions.cs              |  454 ++++----
 .../Interop/HbLib/NativeConstants.cs          |   76 +-
 .../Interop/HbLib/hb_container_s.cs           |   26 +-
 .../Interop/HbLib/hb_encoder_s.cs             |   24 +-
 .../Interop/HbLib/hb_error_code.cs            |   14 +-
 .../Interop/HbLib/hb_filter_ids.cs            |   38 +-
 .../Interop/HbLib/hb_mixdown_s.cs             |   24 +-
 .../Interop/HbLib/hb_rate_s.cs                |   20 +-
 .../Interop/HbLib/hb_subtitle.cs              |   22 +-
 .../Interop/HbLib/iso639_lang_t.cs            |   28 +-
 .../Interop/Helpers/InteropUtilities.cs       |  524 ++++-----
 .../Interop/Helpers/NativeList.cs             |  188 +--
 .../Interop/Helpers/Utilities.cs              |   32 +-
 .../Interop/Model/BitrateLimits.cs            |   28 +-
 .../Interop/Model/Cropping.cs                 |   22 +-
 .../Interop/Model/EncodeJob.cs                |   78 +-
 .../Interop/Model/Encoding/Anamorphic.cs      |   22 +-
 .../Model/Encoding/AudioEncodeRateType.cs     |    8 +-
 .../Interop/Model/Encoding/AudioEncoding.cs   |  128 +--
 .../Interop/Model/Encoding/Container.cs       |   20 +-
 .../Interop/Model/Encoding/Decomb.cs          |   14 +-
 .../Interop/Model/Encoding/Deinterlace.cs     |   16 +-
 .../Interop/Model/Encoding/Denoise.cs         |    8 +-
 .../Interop/Model/Encoding/Detelecine.cs      |   10 +-
 .../Interop/Model/Encoding/HBRate.cs          |   28 +-
 .../Interop/Model/Encoding/HBVideoEncoder.cs  |   88 +-
 .../Interop/Model/Encoding/Mixdown.cs         |   38 +-
 .../Interop/Model/Encoding/OutputExtension.cs |    8 +-
 .../Interop/Model/Encoding/PictureRotation.cs |   20 +-
 .../Interop/Model/Encoding/ScaleMethod.cs     |   28 +-
 .../Model/Encoding/VideoEncodeRateType.cs     |   10 +-
 .../Interop/Model/Encoding/VideoEncoder.cs    |   24 +-
 .../Interop/Model/Language.cs                 |   64 +-
 .../Interop/Model/Scan/AudioTrack.cs          |  164 +--
 .../Interop/Model/Scan/Chapter.cs             |   42 +-
 .../Interop/Model/Scan/InputType.cs           |   16 +-
 .../Interop/Model/Scan/Subtitle.cs            |  144 +--
 .../Interop/Model/Scan/SubtitleSource.cs      |   20 +-
 .../Interop/Model/Scan/Title.cs               |  322 +++---
 .../Interop/Model/SrtSubtitle.cs              |   10 +-
 .../Interop/Model/VideoQualityLimits.cs       |   44 +-
 .../Interop/Model/VideoRangeType.cs           |   54 +-
 51 files changed, 2261 insertions(+), 2261 deletions(-)

diff --git a/win/CS/HandBrake.ApplicationServices/Interop/EventArgs/EncodeCompletedEventArgs.cs b/win/CS/HandBrake.ApplicationServices/Interop/EventArgs/EncodeCompletedEventArgs.cs
index 26d9b4f67..fa1ea14c3 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/EventArgs/EncodeCompletedEventArgs.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/EventArgs/EncodeCompletedEventArgs.cs
@@ -15,10 +15,10 @@ namespace HandBrake.ApplicationServices.Interop.EventArgs
     /// Encode Completed Event Args
     /// </summary>
     public class EncodeCompletedEventArgs : EventArgs
-	{
-	    /// <summary>
-	    /// Gets or sets a value indicating whether an error occurred during the encode.
-	    /// </summary>
-	    public bool Error { get; set; }
-	}
+    {
+        /// <summary>
+        /// Gets or sets a value indicating whether an error occurred during the encode.
+        /// </summary>
+        public bool Error { get; set; }
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/EventArgs/EncodeProgressEventArgs.cs b/win/CS/HandBrake.ApplicationServices/Interop/EventArgs/EncodeProgressEventArgs.cs
index 245132016..4e8d15b06 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/EventArgs/EncodeProgressEventArgs.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/EventArgs/EncodeProgressEventArgs.cs
@@ -15,30 +15,30 @@ namespace HandBrake.ApplicationServices.Interop.EventArgs
     /// Encode Progress Event Args
     /// </summary>
     public class EncodeProgressEventArgs : EventArgs
-	{
-	    /// <summary>
-	    /// Gets or sets FractionComplete.
-	    /// </summary>
+    {
+        /// <summary>
+        /// Gets or sets FractionComplete.
+        /// </summary>
         public double FractionComplete { get; set; }
 
-	    /// <summary>
-	    /// Gets or sets CurrentFrameRate.
-	    /// </summary>
+        /// <summary>
+        /// Gets or sets CurrentFrameRate.
+        /// </summary>
         public double CurrentFrameRate { get; set; }
 
-	    /// <summary>
-	    /// Gets or sets AverageFrameRate.
-	    /// </summary>
+        /// <summary>
+        /// Gets or sets AverageFrameRate.
+        /// </summary>
         public double AverageFrameRate { get; set; }
 
-	    /// <summary>
-	    /// Gets or sets EstimatedTimeLeft.
-	    /// </summary>
-	    public TimeSpan EstimatedTimeLeft { get; set; }
+        /// <summary>
+        /// Gets or sets EstimatedTimeLeft.
+        /// </summary>
+        public TimeSpan EstimatedTimeLeft { get; set; }
 
-		/// <summary>
-		/// Gets or sets the current encoding pass. (-1: subtitle scan, 1: first pass, 2: second pass)
-		/// </summary>
-		public int Pass { get; set; }
-	}
+        /// <summary>
+        /// Gets or sets the current encoding pass. (-1: subtitle scan, 1: first pass, 2: second pass)
+        /// </summary>
+        public int Pass { get; set; }
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/EventArgs/MessageLoggedEventArgs.cs b/win/CS/HandBrake.ApplicationServices/Interop/EventArgs/MessageLoggedEventArgs.cs
index 432b1da59..e547a2fe8 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/EventArgs/MessageLoggedEventArgs.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/EventArgs/MessageLoggedEventArgs.cs
@@ -12,13 +12,13 @@ namespace HandBrake.ApplicationServices.Interop.EventArgs
     using System;
 
     /// <summary>
-	/// The Message Logged Event Args
-	/// </summary>
-	public class MessageLoggedEventArgs : EventArgs
-	{
-		/// <summary>
-		/// Gets or sets Message.
-		/// </summary>
-		public string Message { get; set; }
-	}
+    /// The Message Logged Event Args
+    /// </summary>
+    public class MessageLoggedEventArgs : EventArgs
+    {
+        /// <summary>
+        /// Gets or sets Message.
+        /// </summary>
+        public string Message { get; set; }
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/EventArgs/ScanProgressEventArgs.cs b/win/CS/HandBrake.ApplicationServices/Interop/EventArgs/ScanProgressEventArgs.cs
index f58a04c0b..3928a53e6 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/EventArgs/ScanProgressEventArgs.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/EventArgs/ScanProgressEventArgs.cs
@@ -9,36 +9,36 @@
 
 namespace HandBrake.ApplicationServices.Interop.EventArgs
 {
-	using System;
+    using System;
 
-	/// <summary>
-	/// The Scan Progress Event Args
-	/// </summary>
-	public class ScanProgressEventArgs : EventArgs
-	{
-		/// <summary>
-		/// Gets or sets the total progress fraction for the scan.
-		/// </summary>
-		public double Progress { get; set; }
+    /// <summary>
+    /// The Scan Progress Event Args
+    /// </summary>
+    public class ScanProgressEventArgs : EventArgs
+    {
+        /// <summary>
+        /// Gets or sets the total progress fraction for the scan.
+        /// </summary>
+        public double Progress { get; set; }
 
-		/// <summary>
-		/// Gets or sets the current preview being processed on the scan.
-		/// </summary>
-		public int CurrentPreview { get; set; }
+        /// <summary>
+        /// Gets or sets the current preview being processed on the scan.
+        /// </summary>
+        public int CurrentPreview { get; set; }
 
-		/// <summary>
-		/// Gets or sets the total number of previews to process.
-		/// </summary>
-		public int Previews { get; set; }
+        /// <summary>
+        /// Gets or sets the total number of previews to process.
+        /// </summary>
+        public int Previews { get; set; }
 
-		/// <summary>
-		/// Gets or sets the current title being processed on the scan.
-		/// </summary>
-		public int CurrentTitle { get; set; }
+        /// <summary>
+        /// Gets or sets the current title being processed on the scan.
+        /// </summary>
+        public int CurrentTitle { get; set; }
 
-		/// <summary>
-		/// Gets or sets the total number of titles to process.
-		/// </summary>
-		public int Titles { get; set; }
-	}
+        /// <summary>
+        /// Gets or sets the total number of titles to process.
+        /// </summary>
+        public int Titles { get; set; }
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/HandBrakeEncoderHelpers.cs b/win/CS/HandBrake.ApplicationServices/Interop/HandBrakeEncoderHelpers.cs
index c0a4195f9..35d278a4a 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/HandBrakeEncoderHelpers.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/HandBrakeEncoderHelpers.cs
@@ -20,514 +20,514 @@ namespace HandBrake.ApplicationServices.Interop
     using HandBrake.ApplicationServices.Interop.Model.Scan;
 
     /// <summary>
-	/// The encoders.
-	/// </summary>
-	public static class HandBrakeEncoderHelpers
-	{
-		/// <summary>
-		/// The audio encoders.
-		/// </summary>
-		private static List<HBAudioEncoder> audioEncoders;
-
-		/// <summary>
-		/// The video encoders.
-		/// </summary>
-		private static List<HBVideoEncoder> videoEncoders;
-
-		/// <summary>
-		/// Video framerates in pts.
-		/// </summary>
-		private static List<HBRate> videoFramerates; 
-
-		/// <summary>
-		/// List of HandBrake mixdowns.
-		/// </summary>
-		private static List<HBMixdown> mixdowns;
-
-		/// <summary>
-		/// List of HandBrake containers.
-		/// </summary>
-		private static List<HBContainer> containers; 
-
-		/// <summary>
-		/// The audio bitrates.
-		/// </summary>
-		private static List<int> audioBitrates;
-
-		/// <summary>
-		/// Audio sample rates in Hz.
-		/// </summary>
-		private static List<HBRate> audioSampleRates; 
-
-		/// <summary>
+    /// The encoders.
+    /// </summary>
+    public static class HandBrakeEncoderHelpers
+    {
+        /// <summary>
+        /// The audio encoders.
+        /// </summary>
+        private static List<HBAudioEncoder> audioEncoders;
+
+        /// <summary>
+        /// The video encoders.
+        /// </summary>
+        private static List<HBVideoEncoder> videoEncoders;
+
+        /// <summary>
+        /// Video framerates in pts.
+        /// </summary>
+        private static List<HBRate> videoFramerates; 
+
+        /// <summary>
+        /// List of HandBrake mixdowns.
+        /// </summary>
+        private static List<HBMixdown> mixdowns;
+
+        /// <summary>
+        /// List of HandBrake containers.
+        /// </summary>
+        private static List<HBContainer> containers; 
+
+        /// <summary>
+        /// The audio bitrates.
+        /// </summary>
+        private static List<int> audioBitrates;
+
+        /// <summary>
+        /// Audio sample rates in Hz.
+        /// </summary>
+        private static List<HBRate> audioSampleRates; 
+
+        /// <summary>
         /// Initializes static members of the HandBrakeEncoderHelpers class.
-		/// </summary>
+        /// </summary>
         static HandBrakeEncoderHelpers()
-		{
-			HandBrakeUtils.EnsureGlobalInit();
-		}
-
-		/// <summary>
-		/// Gets a list of supported audio encoders.
-		/// </summary>
-		public static List<HBAudioEncoder> AudioEncoders
-		{
-			get
-			{
-				if (audioEncoders == null)
-				{
+        {
+            HandBrakeUtils.EnsureGlobalInit();
+        }
+
+        /// <summary>
+        /// Gets a list of supported audio encoders.
+        /// </summary>
+        public static List<HBAudioEncoder> AudioEncoders
+        {
+            get
+            {
+                if (audioEncoders == null)
+                {
                     audioEncoders = InteropUtilities.ToListFromIterator<hb_encoder_s, HBAudioEncoder>(HBFunctions.hb_audio_encoder_get_next, HandBrakeUnitConversionHelpers.NativeToAudioEncoder);
-				}
-
-				return audioEncoders;
-			}
-		}
-
-		/// <summary>
-		/// Gets a list of supported video encoders.
-		/// </summary>
-		public static List<HBVideoEncoder> VideoEncoders
-		{
-			get
-			{
-				if (videoEncoders == null)
-				{
+                }
+
+                return audioEncoders;
+            }
+        }
+
+        /// <summary>
+        /// Gets a list of supported video encoders.
+        /// </summary>
+        public static List<HBVideoEncoder> VideoEncoders
+        {
+            get
+            {
+                if (videoEncoders == null)
+                {
                     videoEncoders = InteropUtilities.ToListFromIterator<hb_encoder_s, HBVideoEncoder>(HBFunctions.hb_video_encoder_get_next, HandBrakeUnitConversionHelpers.NativeToVideoEncoder);
-				}
-
-				return videoEncoders;
-			}
-		}
-
-		/// <summary>
-		/// Gets a list of supported video framerates (in pts).
-		/// </summary>
-		public static List<HBRate> VideoFramerates
-		{
-			get
-			{
-				if (videoFramerates == null)
-				{
+                }
+
+                return videoEncoders;
+            }
+        }
+
+        /// <summary>
+        /// Gets a list of supported video framerates (in pts).
+        /// </summary>
+        public static List<HBRate> VideoFramerates
+        {
+            get
+            {
+                if (videoFramerates == null)
+                {
                     videoFramerates = InteropUtilities.ToListFromIterator<hb_rate_s, HBRate>(HBFunctions.hb_video_framerate_get_next, HandBrakeUnitConversionHelpers.NativeToRate);
-				}
-
-				return videoFramerates;
-			}
-		} 
-
-		/// <summary>
-		/// Gets a list of supported mixdowns.
-		/// </summary>
-		public static List<HBMixdown> Mixdowns
-		{
-			get
-			{
-				if (mixdowns == null)
-				{
+                }
+
+                return videoFramerates;
+            }
+        } 
+
+        /// <summary>
+        /// Gets a list of supported mixdowns.
+        /// </summary>
+        public static List<HBMixdown> Mixdowns
+        {
+            get
+            {
+                if (mixdowns == null)
+                {
                     mixdowns = InteropUtilities.ToListFromIterator<hb_mixdown_s, HBMixdown>(HBFunctions.hb_mixdown_get_next, HandBrakeUnitConversionHelpers.NativeToMixdown);
-				}
-
-				return mixdowns;
-			}
-		}
-
-		/// <summary>
-		/// Gets a list of supported audio bitrates.
-		/// </summary>
-		public static List<int> AudioBitrates
-		{
-			get
-			{
-				if (audioBitrates == null)
-				{
-					audioBitrates = InteropUtilities.ToListFromIterator<hb_rate_s, int>(HBFunctions.hb_audio_bitrate_get_next, b => b.rate);
-				}
-
-				return audioBitrates;
-			}
-		}
-
-		/// <summary>
-		/// Gets a list of supported audio sample rates (in Hz).
-		/// </summary>
-		public static List<HBRate> AudioSampleRates
-		{
-			get
-			{
-				if (audioSampleRates == null)
-				{
+                }
+
+                return mixdowns;
+            }
+        }
+
+        /// <summary>
+        /// Gets a list of supported audio bitrates.
+        /// </summary>
+        public static List<int> AudioBitrates
+        {
+            get
+            {
+                if (audioBitrates == null)
+                {
+                    audioBitrates = InteropUtilities.ToListFromIterator<hb_rate_s, int>(HBFunctions.hb_audio_bitrate_get_next, b => b.rate);
+                }
+
+                return audioBitrates;
+            }
+        }
+
+        /// <summary>
+        /// Gets a list of supported audio sample rates (in Hz).
+        /// </summary>
+        public static List<HBRate> AudioSampleRates
+        {
+            get
+            {
+                if (audioSampleRates == null)
+                {
                     audioSampleRates = InteropUtilities.ToListFromIterator<hb_rate_s, HBRate>(HBFunctions.hb_audio_samplerate_get_next, HandBrakeUnitConversionHelpers.NativeToRate);
-				}
-
-				return audioSampleRates;
-			}
-		}
-
-		/// <summary>
-		/// Gets a list of supported containers.
-		/// </summary>
-		public static List<HBContainer> Containers
-		{
-			get
-			{
-				if (containers == null)
-				{
+                }
+
+                return audioSampleRates;
+            }
+        }
+
+        /// <summary>
+        /// Gets a list of supported containers.
+        /// </summary>
+        public static List<HBContainer> Containers
+        {
+            get
+            {
+                if (containers == null)
+                {
                     containers = InteropUtilities.ToListFromIterator<hb_container_s, HBContainer>(HBFunctions.hb_container_get_next, HandBrakeUnitConversionHelpers.NativeToContainer);
-				}
-
-				return containers;
-			}
-		}
-
-		/// <summary>
-		/// Gets a value indicating whether SRT subtitles can be burnt in.
-		/// </summary>
-		public static bool CanBurnSrt
-		{
-			get
-			{
-				return HBFunctions.hb_subtitle_can_burn((int)hb_subtitle_s_subsource.SRTSUB) > 0;
-			}
-		}
-
-		/// <summary>
-		/// Gets the audio encoder with the specified short name.
-		/// </summary>
-		/// <param name="shortName">
-		/// The name of the audio encoder.
-		/// </param>
-		/// <returns>
-		/// The requested audio encoder.
-		/// </returns>
-		public static HBAudioEncoder GetAudioEncoder(string shortName)
-		{
-			return AudioEncoders.SingleOrDefault(e => e.ShortName == shortName);
-		}
-
-		/// <summary>
-		/// Gets the audio encoder with the specified codec ID.
-		/// </summary>
-		/// <param name="codecId">
-		/// The ID of the audio encoder.
-		/// </param>
-		/// <returns>
-		/// The requested audio encoder.
-		/// </returns>
-		public static HBAudioEncoder GetAudioEncoder(int codecId)
-		{
-			return AudioEncoders.SingleOrDefault(e => e.Id == codecId);
-		}
-
-		/// <summary>
-		/// Gets the video encoder with the specified short name.
-		/// </summary>
-		/// <param name="shortName">
-		/// The name of the video encoder.
-		/// </param>
-		/// <returns>
-		/// The requested video encoder.
-		/// </returns>
-		public static HBVideoEncoder GetVideoEncoder(string shortName)
-		{
-			return VideoEncoders.SingleOrDefault(e => e.ShortName == shortName);
-		}
-
-		/// <summary>
-		/// Gets the mixdown with the specified short name.
-		/// </summary>
-		/// <param name="shortName">
-		/// The name of the mixdown.
-		/// </param>
-		/// <returns>
-		/// The requested mixdown.
-		/// </returns>
-		public static HBMixdown GetMixdown(string shortName)
-		{
-			return Mixdowns.SingleOrDefault(m => m.ShortName == shortName);
-		}
-
-		/// <summary>
-		/// Gets the container with the specified short name.
-		/// </summary>
-		/// <param name="shortName">
-		/// The name of the container.
-		/// </param>
-		/// <returns>
-		/// The requested container.
-		/// </returns>
-		public static HBContainer GetContainer(string shortName)
-		{
-			return Containers.SingleOrDefault(c => c.ShortName == shortName);
-		}
-
-		/// <summary>
-		/// Determines if the given encoder is compatible with the given track.
-		/// </summary>
-		/// <param name="track">
-		/// The audio track to examine.
-		/// </param>
-		/// <param name="encoder">
-		/// The encoder to examine.
-		/// </param>
-		/// <returns>
-		/// True if the given encoder is comatible with the given audio track.
-		/// </returns>
-		/// <remarks>
-		/// Only works with passthrough encoders.
-		/// </remarks>
-		public static bool AudioEncoderIsCompatible(AudioTrack track, HBAudioEncoder encoder)
-		{
-			return (track.CodecId & encoder.Id) > 0;
-		}
-
-		/// <summary>
-		/// Determines if the given mixdown supports the given channel layout.
-		/// </summary>
-		/// <param name="mixdown">
-		/// The mixdown to evaluate.
-		/// </param>
-		/// <param name="layout">
-		/// The channel layout to evaluate.
-		/// </param>
-		/// <returns>
-		/// True if the mixdown supports the given channel layout.
-		/// </returns>
-		public static bool MixdownHasRemixSupport(HBMixdown mixdown, ulong layout)
-		{
-			return HBFunctions.hb_mixdown_has_remix_support(mixdown.Id, layout) > 0;
-		}
-
-		/// <summary>
-		/// Determines if the given encoder supports the given mixdown.
-		/// </summary>
-		/// <param name="mixdown">
-		/// The mixdown to evaluate.
-		/// </param>
-		/// <param name="encoder">
-		/// The encoder to evaluate.
-		/// </param>
-		/// <returns>
-		/// True if the encoder supports the mixdown.
-		/// </returns>
-		public static bool MixdownHasCodecSupport(HBMixdown mixdown, HBAudioEncoder encoder)
-		{
-			return HBFunctions.hb_mixdown_has_codec_support(mixdown.Id, (uint) encoder.Id) > 0;
-		}
-
-		/// <summary>
-		/// Determines if DRC can be applied to the given track with the given encoder.
-		/// </summary>
-		/// <param name="track">
-		/// The track to apply DRC to.
-		/// </param>
-		/// <param name="encoder">
-		/// The encoder to use for DRC.
-		/// </param>
-		/// <param name="title">
-		/// The title.
-		/// </param>
-		/// <returns>
-		/// True if DRC can be applied to the track with the given encoder.
-		/// </returns>
-		public static bool CanApplyDrc(AudioTrack track, HBAudioEncoder encoder, int title)
-		{
-		    return HBFunctions.hb_audio_can_apply_drc2(HandBrakeInstanceManager.LastScanHandle, title, track.TrackNumber, encoder.Id) > 0;
-		}
-
-		/// <summary>
-		/// Determines if the given input audio codec can be passed through.
-		/// </summary>
-		/// <param name="codecId">
-		/// The input codec to consider.
-		/// </param>
-		/// <returns>
-		/// True if the codec can be passed through.
-		/// </returns>
-		public static bool CanPassthroughAudio(int codecId)
-		{
-			return (codecId & NativeConstants.HB_ACODEC_PASS_MASK) > 0;
-		}
-
-		/// <summary>
-		/// Sanitizes a mixdown given the output codec and input channel layout.
-		/// </summary>
-		/// <param name="mixdown">
-		/// The desired mixdown.
-		/// </param>
-		/// <param name="encoder">
-		/// The output encoder to be used.
-		/// </param>
-		/// <param name="layout">
-		/// The input channel layout.
-		/// </param>
-		/// <returns>
-		/// A sanitized mixdown value.
-		/// </returns>
-		public static HBMixdown SanitizeMixdown(HBMixdown mixdown, HBAudioEncoder encoder, ulong layout)
-		{
-			int sanitizedMixdown = HBFunctions.hb_mixdown_get_best((uint)encoder.Id, layout, mixdown.Id);
-			return Mixdowns.Single(m => m.Id == sanitizedMixdown);
-		}
-
-		/// <summary>
-		/// Gets the default mixdown for the given audio encoder and channel layout.
-		/// </summary>
-		/// <param name="encoder">
-		/// The output codec to be used.
-		/// </param>
-		/// <param name="layout">
-		/// The input channel layout.
-		/// </param>
-		/// <returns>
-		/// The default mixdown for the given codec and channel layout.
-		/// </returns>
-		public static HBMixdown GetDefaultMixdown(HBAudioEncoder encoder, ulong layout)
-		{
-			int defaultMixdown = HBFunctions.hb_mixdown_get_default((uint)encoder.Id, layout);
-			return Mixdowns.Single(m => m.Id == defaultMixdown);
-		}
-
-		/// <summary>
-		/// Gets the bitrate limits for the given audio codec, sample rate and mixdown.
-		/// </summary>
-		/// <param name="encoder">
-		/// The audio encoder used.
-		/// </param>
-		/// <param name="sampleRate">
-		/// The sample rate used (Hz).
-		/// </param>
-		/// <param name="mixdown">
-		/// The mixdown used.
-		/// </param>
-		/// <returns>
-		/// Limits on the audio bitrate for the given settings.
-		/// </returns>
-		public static BitrateLimits GetBitrateLimits(HBAudioEncoder encoder, int sampleRate, HBMixdown mixdown)
-		{
-			int low = 0;
-			int high = 0;
-
-			HBFunctions.hb_audio_bitrate_get_limits((uint)encoder.Id, sampleRate, mixdown.Id, ref low, ref high);
-
-			return new BitrateLimits { Low = low, High = high };
-		}
-
-		/// <summary>
-		/// Gets the video quality limits for the given video codec.
-		/// </summary>
-		/// <param name="encoder">
-		/// The video encoder to check.
-		/// </param>
-		/// <returns>
-		/// Limits on the video quality for the encoder.
-		/// </returns>
-		public static VideoQualityLimits GetVideoQualityLimits(HBVideoEncoder encoder)
-		{
-			float low = 0;
-			float high = 0;
-			float granularity = 0;
-			int direction = 0;
-
-			HBFunctions.hb_video_quality_get_limits((uint)encoder.Id, ref low, ref high, ref granularity, ref direction);
-
-			return new VideoQualityLimits
-				{
-					Low = low, 
-					High = high, 
-					Granularity = granularity, 
-					Ascending = direction == 0
-				};
-		}
-
-		/// <summary>
-		/// Sanitizes an audio bitrate given the output codec, sample rate and mixdown.
-		/// </summary>
-		/// <param name="audioBitrate">
-		/// The desired audio bitrate.
-		/// </param>
-		/// <param name="encoder">
-		/// The output encoder to be used.
-		/// </param>
-		/// <param name="sampleRate">
-		/// The output sample rate to be used.
-		/// </param>
-		/// <param name="mixdown">
-		/// The mixdown to be used.
-		/// </param>
-		/// <returns>
-		/// A sanitized audio bitrate.
-		/// </returns>
-		public static int SanitizeAudioBitrate(int audioBitrate, HBAudioEncoder encoder, int sampleRate, HBMixdown mixdown)
-		{
-			return HBFunctions.hb_audio_bitrate_get_best((uint)encoder.Id, audioBitrate, sampleRate, mixdown.Id);
-		}
-
-		/// <summary>
-		/// Gets the default audio bitrate for the given parameters.
-		/// </summary>
-		/// <param name="encoder">
-		/// The encoder to use.
-		/// </param>
-		/// <param name="sampleRate">
-		/// The sample rate to use.
-		/// </param>
-		/// <param name="mixdown">
-		/// The mixdown to use.
-		/// </param>
-		/// <returns>
-		/// The default bitrate for these parameters.
-		/// </returns>
-		public static int GetDefaultBitrate(HBAudioEncoder encoder, int sampleRate, HBMixdown mixdown)
-		{
-			return HBFunctions.hb_audio_bitrate_get_default((uint) encoder.Id, sampleRate, mixdown.Id);
-		}
-
-		/// <summary>
-		/// Gets limits on audio quality for a given encoder.
-		/// </summary>
-		/// <param name="encoderId">
-		/// The audio encoder ID.
-		/// </param>
-		/// <returns>
-		/// Limits on the audio quality for the given encoder.
-		/// </returns>
-		internal static RangeLimits GetAudioQualityLimits(int encoderId)
-		{
-			float low = 0, high = 0, granularity = 0;
-			int direction = 0;
-			HBFunctions.hb_audio_quality_get_limits((uint)encoderId, ref low, ref high, ref granularity, ref direction);
-
-			return new RangeLimits
-			{
-				Low = low, 
-				High = high, 
-				Granularity = granularity, 
-				Ascending = direction == 0
-			};
-		}
-
-		/// <summary>
-		/// Gets limits on audio compression for a given encoder.
-		/// </summary>
-		/// <param name="encoderId">
-		/// The audio encoder ID.
-		/// </param>
-		/// <returns>
-		/// Limits on the audio compression for the given encoder.
-		/// </returns>
-		internal static RangeLimits GetAudioCompressionLimits(int encoderId)
-		{
-			float low = 0, high = 0, granularity = 0;
-			int direction = 0;
-			HBFunctions.hb_audio_compression_get_limits((uint)encoderId, ref low, ref high, ref granularity, ref direction);
-
-			return new RangeLimits
-			{
-				Low = low, 
-				High = high, 
-				Granularity = granularity, 
-				Ascending = direction == 0
-			};
-		}
-	}
+                }
+
+                return containers;
+            }
+        }
+
+        /// <summary>
+        /// Gets a value indicating whether SRT subtitles can be burnt in.
+        /// </summary>
+        public static bool CanBurnSrt
+        {
+            get
+            {
+                return HBFunctions.hb_subtitle_can_burn((int)hb_subtitle_s_subsource.SRTSUB) > 0;
+            }
+        }
+
+        /// <summary>
+        /// Gets the audio encoder with the specified short name.
+        /// </summary>
+        /// <param name="shortName">
+        /// The name of the audio encoder.
+        /// </param>
+        /// <returns>
+        /// The requested audio encoder.
+        /// </returns>
+        public static HBAudioEncoder GetAudioEncoder(string shortName)
+        {
+            return AudioEncoders.SingleOrDefault(e => e.ShortName == shortName);
+        }
+
+        /// <summary>
+        /// Gets the audio encoder with the specified codec ID.
+        /// </summary>
+        /// <param name="codecId">
+        /// The ID of the audio encoder.
+        /// </param>
+        /// <returns>
+        /// The requested audio encoder.
+        /// </returns>
+        public static HBAudioEncoder GetAudioEncoder(int codecId)
+        {
+            return AudioEncoders.SingleOrDefault(e => e.Id == codecId);
+        }
+
+        /// <summary>
+        /// Gets the video encoder with the specified short name.
+        /// </summary>
+        /// <param name="shortName">
+        /// The name of the video encoder.
+        /// </param>
+        /// <returns>
+        /// The requested video encoder.
+        /// </returns>
+        public static HBVideoEncoder GetVideoEncoder(string shortName)
+        {
+            return VideoEncoders.SingleOrDefault(e => e.ShortName == shortName);
+        }
+
+        /// <summary>
+        /// Gets the mixdown with the specified short name.
+        /// </summary>
+        /// <param name="shortName">
+        /// The name of the mixdown.
+        /// </param>
+        /// <returns>
+        /// The requested mixdown.
+        /// </returns>
+        public static HBMixdown GetMixdown(string shortName)
+        {
+            return Mixdowns.SingleOrDefault(m => m.ShortName == shortName);
+        }
+
+        /// <summary>
+        /// Gets the container with the specified short name.
+        /// </summary>
+        /// <param name="shortName">
+        /// The name of the container.
+        /// </param>
+        /// <returns>
+        /// The requested container.
+        /// </returns>
+        public static HBContainer GetContainer(string shortName)
+        {
+            return Containers.SingleOrDefault(c => c.ShortName == shortName);
+        }
+
+        /// <summary>
+        /// Determines if the given encoder is compatible with the given track.
+        /// </summary>
+        /// <param name="track">
+        /// The audio track to examine.
+        /// </param>
+        /// <param name="encoder">
+        /// The encoder to examine.
+        /// </param>
+        /// <returns>
+        /// True if the given encoder is comatible with the given audio track.
+        /// </returns>
+        /// <remarks>
+        /// Only works with passthrough encoders.
+        /// </remarks>
+        public static bool AudioEncoderIsCompatible(AudioTrack track, HBAudioEncoder encoder)
+        {
+            return (track.CodecId & encoder.Id) > 0;
+        }
+
+        /// <summary>
+        /// Determines if the given mixdown supports the given channel layout.
+        /// </summary>
+        /// <param name="mixdown">
+        /// The mixdown to evaluate.
+        /// </param>
+        /// <param name="layout">
+        /// The channel layout to evaluate.
+        /// </param>
+        /// <returns>
+        /// True if the mixdown supports the given channel layout.
+        /// </returns>
+        public static bool MixdownHasRemixSupport(HBMixdown mixdown, ulong layout)
+        {
+            return HBFunctions.hb_mixdown_has_remix_support(mixdown.Id, layout) > 0;
+        }
+
+        /// <summary>
+        /// Determines if the given encoder supports the given mixdown.
+        /// </summary>
+        /// <param name="mixdown">
+        /// The mixdown to evaluate.
+        /// </param>
+        /// <param name="encoder">
+        /// The encoder to evaluate.
+        /// </param>
+        /// <returns>
+        /// True if the encoder supports the mixdown.
+        /// </returns>
+        public static bool MixdownHasCodecSupport(HBMixdown mixdown, HBAudioEncoder encoder)
+        {
+            return HBFunctions.hb_mixdown_has_codec_support(mixdown.Id, (uint) encoder.Id) > 0;
+        }
+
+        /// <summary>
+        /// Determines if DRC can be applied to the given track with the given encoder.
+        /// </summary>
+        /// <param name="track">
+        /// The track to apply DRC to.
+        /// </param>
+        /// <param name="encoder">
+        /// The encoder to use for DRC.
+        /// </param>
+        /// <param name="title">
+        /// The title.
+        /// </param>
+        /// <returns>
+        /// True if DRC can be applied to the track with the given encoder.
+        /// </returns>
+        public static bool CanApplyDrc(AudioTrack track, HBAudioEncoder encoder, int title)
+        {
+            return HBFunctions.hb_audio_can_apply_drc2(HandBrakeInstanceManager.LastScanHandle, title, track.TrackNumber, encoder.Id) > 0;
+        }
+
+        /// <summary>
+        /// Determines if the given input audio codec can be passed through.
+        /// </summary>
+        /// <param name="codecId">
+        /// The input codec to consider.
+        /// </param>
+        /// <returns>
+        /// True if the codec can be passed through.
+        /// </returns>
+        public static bool CanPassthroughAudio(int codecId)
+        {
+            return (codecId & NativeConstants.HB_ACODEC_PASS_MASK) > 0;
+        }
+
+        /// <summary>
+        /// Sanitizes a mixdown given the output codec and input channel layout.
+        /// </summary>
+        /// <param name="mixdown">
+        /// The desired mixdown.
+        /// </param>
+        /// <param name="encoder">
+        /// The output encoder to be used.
+        /// </param>
+        /// <param name="layout">
+        /// The input channel layout.
+        /// </param>
+        /// <returns>
+        /// A sanitized mixdown value.
+        /// </returns>
+        public static HBMixdown SanitizeMixdown(HBMixdown mixdown, HBAudioEncoder encoder, ulong layout)
+        {
+            int sanitizedMixdown = HBFunctions.hb_mixdown_get_best((uint)encoder.Id, layout, mixdown.Id);
+            return Mixdowns.Single(m => m.Id == sanitizedMixdown);
+        }
+
+        /// <summary>
+        /// Gets the default mixdown for the given audio encoder and channel layout.
+        /// </summary>
+        /// <param name="encoder">
+        /// The output codec to be used.
+        /// </param>
+        /// <param name="layout">
+        /// The input channel layout.
+        /// </param>
+        /// <returns>
+        /// The default mixdown for the given codec and channel layout.
+        /// </returns>
+        public static HBMixdown GetDefaultMixdown(HBAudioEncoder encoder, ulong layout)
+        {
+            int defaultMixdown = HBFunctions.hb_mixdown_get_default((uint)encoder.Id, layout);
+            return Mixdowns.Single(m => m.Id == defaultMixdown);
+        }
+
+        /// <summary>
+        /// Gets the bitrate limits for the given audio codec, sample rate and mixdown.
+        /// </summary>
+        /// <param name="encoder">
+        /// The audio encoder used.
+        /// </param>
+        /// <param name="sampleRate">
+        /// The sample rate used (Hz).
+        /// </param>
+        /// <param name="mixdown">
+        /// The mixdown used.
+        /// </param>
+        /// <returns>
+        /// Limits on the audio bitrate for the given settings.
+        /// </returns>
+        public static BitrateLimits GetBitrateLimits(HBAudioEncoder encoder, int sampleRate, HBMixdown mixdown)
+        {
+            int low = 0;
+            int high = 0;
+
+            HBFunctions.hb_audio_bitrate_get_limits((uint)encoder.Id, sampleRate, mixdown.Id, ref low, ref high);
+
+            return new BitrateLimits { Low = low, High = high };
+        }
+
+        /// <summary>
+        /// Gets the video quality limits for the given video codec.
+        /// </summary>
+        /// <param name="encoder">
+        /// The video encoder to check.
+        /// </param>
+        /// <returns>
+        /// Limits on the video quality for the encoder.
+        /// </returns>
+        public static VideoQualityLimits GetVideoQualityLimits(HBVideoEncoder encoder)
+        {
+            float low = 0;
+            float high = 0;
+            float granularity = 0;
+            int direction = 0;
+
+            HBFunctions.hb_video_quality_get_limits((uint)encoder.Id, ref low, ref high, ref granularity, ref direction);
+
+            return new VideoQualityLimits
+                {
+                    Low = low, 
+                    High = high, 
+                    Granularity = granularity, 
+                    Ascending = direction == 0
+                };
+        }
+
+        /// <summary>
+        /// Sanitizes an audio bitrate given the output codec, sample rate and mixdown.
+        /// </summary>
+        /// <param name="audioBitrate">
+        /// The desired audio bitrate.
+        /// </param>
+        /// <param name="encoder">
+        /// The output encoder to be used.
+        /// </param>
+        /// <param name="sampleRate">
+        /// The output sample rate to be used.
+        /// </param>
+        /// <param name="mixdown">
+        /// The mixdown to be used.
+        /// </param>
+        /// <returns>
+        /// A sanitized audio bitrate.
+        /// </returns>
+        public static int SanitizeAudioBitrate(int audioBitrate, HBAudioEncoder encoder, int sampleRate, HBMixdown mixdown)
+        {
+            return HBFunctions.hb_audio_bitrate_get_best((uint)encoder.Id, audioBitrate, sampleRate, mixdown.Id);
+        }
+
+        /// <summary>
+        /// Gets the default audio bitrate for the given parameters.
+        /// </summary>
+        /// <param name="encoder">
+        /// The encoder to use.
+        /// </param>
+        /// <param name="sampleRate">
+        /// The sample rate to use.
+        /// </param>
+        /// <param name="mixdown">
+        /// The mixdown to use.
+        /// </param>
+        /// <returns>
+        /// The default bitrate for these parameters.
+        /// </returns>
+        public static int GetDefaultBitrate(HBAudioEncoder encoder, int sampleRate, HBMixdown mixdown)
+        {
+            return HBFunctions.hb_audio_bitrate_get_default((uint) encoder.Id, sampleRate, mixdown.Id);
+        }
+
+        /// <summary>
+        /// Gets limits on audio quality for a given encoder.
+        /// </summary>
+        /// <param name="encoderId">
+        /// The audio encoder ID.
+        /// </param>
+        /// <returns>
+        /// Limits on the audio quality for the given encoder.
+        /// </returns>
+        internal static RangeLimits GetAudioQualityLimits(int encoderId)
+        {
+            float low = 0, high = 0, granularity = 0;
+            int direction = 0;
+            HBFunctions.hb_audio_quality_get_limits((uint)encoderId, ref low, ref high, ref granularity, ref direction);
+
+            return new RangeLimits
+            {
+                Low = low, 
+                High = high, 
+                Granularity = granularity, 
+                Ascending = direction == 0
+            };
+        }
+
+        /// <summary>
+        /// Gets limits on audio compression for a given encoder.
+        /// </summary>
+        /// <param name="encoderId">
+        /// The audio encoder ID.
+        /// </param>
+        /// <returns>
+        /// Limits on the audio compression for the given encoder.
+        /// </returns>
+        internal static RangeLimits GetAudioCompressionLimits(int encoderId)
+        {
+            float low = 0, high = 0, granularity = 0;
+            int direction = 0;
+            HBFunctions.hb_audio_compression_get_limits((uint)encoderId, ref low, ref high, ref granularity, ref direction);
+
+            return new RangeLimits
+            {
+                Low = low, 
+                High = high, 
+                Granularity = granularity, 
+                Ascending = direction == 0
+            };
+        }
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/HandBrakeLanguagesHelper.cs b/win/CS/HandBrake.ApplicationServices/Interop/HandBrakeLanguagesHelper.cs
index 7d059f047..b77c2b9a6 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/HandBrakeLanguagesHelper.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/HandBrakeLanguagesHelper.cs
@@ -16,37 +16,37 @@ namespace HandBrake.ApplicationServices.Interop
     using HandBrake.ApplicationServices.Interop.Model;
 
     /// <summary>
-	/// Contains utilities for converting language codes.
-	/// </summary>
-	public static class Languages
-	{
-		/// <summary>
-		/// The list of all languages.
-		/// </summary>
-		private static IList<Language> allLanguages; 
+    /// Contains utilities for converting language codes.
+    /// </summary>
+    public static class Languages
+    {
+        /// <summary>
+        /// The list of all languages.
+        /// </summary>
+        private static IList<Language> allLanguages; 
 
-		/// <summary>
-		/// Gets a list of all languages.
-		/// </summary>
-		public static IList<Language> AllLanguages
-		{
-			get
-			{
-			    return allLanguages
-			           ?? (allLanguages =
+        /// <summary>
+        /// Gets a list of all languages.
+        /// </summary>
+        public static IList<Language> AllLanguages
+        {
+            get
+            {
+                return allLanguages
+                       ?? (allLanguages =
                            InteropUtilities.ToListFromIterator<iso639_lang_t, Language>(HBFunctions.lang_get_next, HandBrakeUnitConversionHelpers.NativeToLanguage));
-			}
-		}
+            }
+        }
 
-		/// <summary>
-		/// Gets the language object for the given code.
-		/// </summary>
-		/// <param name="code">The ISO-639-2 code for the language.</param>
-		/// <returns>Object that describes the language.</returns>
-		public static Language Get(string code)
-		{
-			iso639_lang_t language = InteropUtilities.ToStructureFromPtr<iso639_lang_t>(HBFunctions.lang_for_code2(code));
+        /// <summary>
+        /// Gets the language object for the given code.
+        /// </summary>
+        /// <param name="code">The ISO-639-2 code for the language.</param>
+        /// <returns>Object that describes the language.</returns>
+        public static Language Get(string code)
+        {
+            iso639_lang_t language = InteropUtilities.ToStructureFromPtr<iso639_lang_t>(HBFunctions.lang_for_code2(code));
             return HandBrakeUnitConversionHelpers.NativeToLanguage(language);
-		}
-	}
+        }
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/HandBrakeUnitConversionHelpers.cs b/win/CS/HandBrake.ApplicationServices/Interop/HandBrakeUnitConversionHelpers.cs
index ab66617fc..758cfd302 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/HandBrakeUnitConversionHelpers.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/HandBrakeUnitConversionHelpers.cs
@@ -19,202 +19,202 @@ namespace HandBrake.ApplicationServices.Interop
     using HandBrake.ApplicationServices.Interop.Model.Encoding;
 
     /// <summary>
-	/// Converters for various encoding values.
-	/// </summary>
+    /// Converters for various encoding values.
+    /// </summary>
     public static class HandBrakeUnitConversionHelpers
-	{
-		/// <summary>
-		/// Video Frame Rates
-		/// </summary>
-		private static readonly Dictionary<double, int> VideoRates;
+    {
+        /// <summary>
+        /// Video Frame Rates
+        /// </summary>
+        private static readonly Dictionary<double, int> VideoRates;
 
-		/// <summary>
+        /// <summary>
         /// Initializes static members of the HandBrakeUnitConversionHelpers class.
-		/// </summary>
+        /// </summary>
         static HandBrakeUnitConversionHelpers()
-		{
-			HandBrakeUtils.EnsureGlobalInit();
+        {
+            HandBrakeUtils.EnsureGlobalInit();
 
-			VideoRates = new Dictionary<double, int>();
+            VideoRates = new Dictionary<double, int>();
             foreach (var framerate in HandBrakeEncoderHelpers.VideoFramerates)
-			{
-				VideoRates.Add(double.Parse(framerate.Name, CultureInfo.InvariantCulture), framerate.Rate);
-			}
-		}
-
-		/// <summary>
-		/// Convert Framerate to Video Rates
-		/// </summary>
-		/// <param name="framerate">
-		/// The framerate.
-		/// </param>
-		/// <returns>
-		/// The vrate if a valid framerate is passed in.
-		/// </returns>
-		/// <exception cref="ArgumentException">
-		/// Thrown when framerate is invalid.
-		/// </exception>
-		public static int FramerateToVrate(double framerate)
-		{
-			if (!VideoRates.ContainsKey(framerate))
-			{
-				throw new ArgumentException("Framerate not recognized.", "framerate");
-			}
-
-			return VideoRates[framerate];
-		}
-
-		/// <summary>
-		/// Converts a native HB encoder structure to an Encoder model.
-		/// </summary>
-		/// <param name="encoder">
-		/// The structure to convert.
-		/// </param>
-		/// <returns>
-		/// The converted model.
-		/// </returns>
-		public static HBVideoEncoder NativeToVideoEncoder(hb_encoder_s encoder)
-		{
-			return new HBVideoEncoder
-			{
-				Id = encoder.codec, 
-				ShortName = encoder.short_name, 
-				DisplayName = encoder.name, 
-				CompatibleContainers = encoder.muxers
-			};
-		}
-
-		/// <summary>
-		/// Converts a native HB encoder structure to an Encoder model.
-		/// </summary>
-		/// <param name="encoder">
-		/// The structure to convert.
-		/// </param>
-		/// <returns>
-		/// The converted model.
-		/// </returns>
-		public static HBAudioEncoder NativeToAudioEncoder(hb_encoder_s encoder)
-		{
-			var result = new HBAudioEncoder
-			                 {
-			                     Id = encoder.codec, 
-			                     ShortName = encoder.short_name, 
-			                     DisplayName = encoder.name, 
-			                     CompatibleContainers = encoder.muxers,
+            {
+                VideoRates.Add(double.Parse(framerate.Name, CultureInfo.InvariantCulture), framerate.Rate);
+            }
+        }
+
+        /// <summary>
+        /// Convert Framerate to Video Rates
+        /// </summary>
+        /// <param name="framerate">
+        /// The framerate.
+        /// </param>
+        /// <returns>
+        /// The vrate if a valid framerate is passed in.
+        /// </returns>
+        /// <exception cref="ArgumentException">
+        /// Thrown when framerate is invalid.
+        /// </exception>
+        public static int FramerateToVrate(double framerate)
+        {
+            if (!VideoRates.ContainsKey(framerate))
+            {
+                throw new ArgumentException("Framerate not recognized.", "framerate");
+            }
+
+            return VideoRates[framerate];
+        }
+
+        /// <summary>
+        /// Converts a native HB encoder structure to an Encoder model.
+        /// </summary>
+        /// <param name="encoder">
+        /// The structure to convert.
+        /// </param>
+        /// <returns>
+        /// The converted model.
+        /// </returns>
+        public static HBVideoEncoder NativeToVideoEncoder(hb_encoder_s encoder)
+        {
+            return new HBVideoEncoder
+            {
+                Id = encoder.codec, 
+                ShortName = encoder.short_name, 
+                DisplayName = encoder.name, 
+                CompatibleContainers = encoder.muxers
+            };
+        }
+
+        /// <summary>
+        /// Converts a native HB encoder structure to an Encoder model.
+        /// </summary>
+        /// <param name="encoder">
+        /// The structure to convert.
+        /// </param>
+        /// <returns>
+        /// The converted model.
+        /// </returns>
+        public static HBAudioEncoder NativeToAudioEncoder(hb_encoder_s encoder)
+        {
+            var result = new HBAudioEncoder
+                             {
+                                 Id = encoder.codec, 
+                                 ShortName = encoder.short_name, 
+                                 DisplayName = encoder.name, 
+                                 CompatibleContainers = encoder.muxers,
                                  QualityLimits = HandBrakeEncoderHelpers.GetAudioQualityLimits(encoder.codec), 
-			                     DefaultQuality = HBFunctions.hb_audio_quality_get_default((uint)encoder.codec), 
-			                     CompressionLimits = HandBrakeEncoderHelpers.GetAudioCompressionLimits(encoder.codec), 
-			                     DefaultCompression =
-			                     HBFunctions.hb_audio_compression_get_default((uint)encoder.codec)
-			                 };
-
-		    return result;
-		}
-
-		/// <summary>
-		/// Converts a native HB rate structure to an HBRate object.
-		/// </summary>
-		/// <param name="rate">
-		/// The structure to convert.
-		/// </param>
-		/// <returns>
-		/// The converted rate object.
-		/// </returns>
-		public static HBRate NativeToRate(hb_rate_s rate)
-		{
-			return new HBRate
-				{
-					Name = rate.name, 
-					Rate = rate.rate
-				};
-		}
-
-		/// <summary>
-		/// Converts a native HB mixdown structure to a Mixdown model.
-		/// </summary>
-		/// <param name="mixdown">
-		/// The structure to convert.
-		/// </param>
-		/// <returns>
-		/// The converted model.
-		/// </returns>
-		public static HBMixdown NativeToMixdown(hb_mixdown_s mixdown)
-		{
-			return new HBMixdown
-				{
-					Id = mixdown.amixdown, 
-					ShortName = mixdown.short_name, 
-					DisplayName = mixdown.name
-				};
-		}
-
-		/// <summary>
-		/// Converts a native HB container structure into an HBContainer object.
-		/// </summary>
-		/// <param name="container">
-		/// The structure to convert.
-		/// </param>
-		/// <returns>
-		/// The converted structure.
-		/// </returns>
-		public static HBContainer NativeToContainer(hb_container_s container)
-		{
-			return new HBContainer
-				{
-					DisplayName = container.name, 
-					ShortName = container.short_name, 
-					DefaultExtension = container.default_extension, 
-					Id = container.format
-				};
-		}
-
-		/// <summary>
-		/// Converts a native language structure to a Language object.
-		/// </summary>
-		/// <param name="language">
-		/// The structure to convert.
-		/// </param>
-		/// <returns>
-		/// The converted structure.
-		/// </returns>
-		public static Language NativeToLanguage(iso639_lang_t language)
-		{
-			string englishName = InteropUtilities.ToStringFromUtf8Ptr(language.eng_name);
-			string nativeName = InteropUtilities.ToStringFromUtf8Ptr(language.native_name);
-			return new Language
-				{
-					Code = language.iso639_2, 
-					EnglishName = englishName, 
-					NativeName = nativeName
-				};
-		}
-
-		/// <summary>
-		/// Converts the PTS amount to a TimeSpan. There may be some accuracy loss here.
-		/// </summary>
-		/// <param name="pts">
-		/// The PTS to convert.
-		/// </param>
-		/// <returns>
-		/// The timespan for it.
-		/// </returns>
-		public static TimeSpan PtsToTimeSpan(ulong pts)
-		{
-			return TimeSpan.FromTicks((long)((pts * 10000000) / 90000));
-		}
-
-		/// <summary>
-		/// Converts the PTS amount to seconds.
-		/// </summary>
-		/// <param name="pts">
-		/// The PTS to convert.
-		/// </param>
-		/// <returns>
-		/// The corresponding number of seconds.
-		/// </returns>
-		public static double PtsToSeconds(ulong pts)
-		{
-			return (double)pts / 90000;
-		}
-	}
+                                 DefaultQuality = HBFunctions.hb_audio_quality_get_default((uint)encoder.codec), 
+                                 CompressionLimits = HandBrakeEncoderHelpers.GetAudioCompressionLimits(encoder.codec), 
+                                 DefaultCompression =
+                                 HBFunctions.hb_audio_compression_get_default((uint)encoder.codec)
+                             };
+
+            return result;
+        }
+
+        /// <summary>
+        /// Converts a native HB rate structure to an HBRate object.
+        /// </summary>
+        /// <param name="rate">
+        /// The structure to convert.
+        /// </param>
+        /// <returns>
+        /// The converted rate object.
+        /// </returns>
+        public static HBRate NativeToRate(hb_rate_s rate)
+        {
+            return new HBRate
+                {
+                    Name = rate.name, 
+                    Rate = rate.rate
+                };
+        }
+
+        /// <summary>
+        /// Converts a native HB mixdown structure to a Mixdown model.
+        /// </summary>
+        /// <param name="mixdown">
+        /// The structure to convert.
+        /// </param>
+        /// <returns>
+        /// The converted model.
+        /// </returns>
+        public static HBMixdown NativeToMixdown(hb_mixdown_s mixdown)
+        {
+            return new HBMixdown
+                {
+                    Id = mixdown.amixdown, 
+                    ShortName = mixdown.short_name, 
+                    DisplayName = mixdown.name
+                };
+        }
+
+        /// <summary>
+        /// Converts a native HB container structure into an HBContainer object.
+        /// </summary>
+        /// <param name="container">
+        /// The structure to convert.
+        /// </param>
+        /// <returns>
+        /// The converted structure.
+        /// </returns>
+        public static HBContainer NativeToContainer(hb_container_s container)
+        {
+            return new HBContainer
+                {
+                    DisplayName = container.name, 
+                    ShortName = container.short_name, 
+                    DefaultExtension = container.default_extension, 
+                    Id = container.format
+                };
+        }
+
+        /// <summary>
+        /// Converts a native language structure to a Language object.
+        /// </summary>
+        /// <param name="language">
+        /// The structure to convert.
+        /// </param>
+        /// <returns>
+        /// The converted structure.
+        /// </returns>
+        public static Language NativeToLanguage(iso639_lang_t language)
+        {
+            string englishName = InteropUtilities.ToStringFromUtf8Ptr(language.eng_name);
+            string nativeName = InteropUtilities.ToStringFromUtf8Ptr(language.native_name);
+            return new Language
+                {
+                    Code = language.iso639_2, 
+                    EnglishName = englishName, 
+                    NativeName = nativeName
+                };
+        }
+
+        /// <summary>
+        /// Converts the PTS amount to a TimeSpan. There may be some accuracy loss here.
+        /// </summary>
+        /// <param name="pts">
+        /// The PTS to convert.
+        /// </param>
+        /// <returns>
+        /// The timespan for it.
+        /// </returns>
+        public static TimeSpan PtsToTimeSpan(ulong pts)
+        {
+            return TimeSpan.FromTicks((long)((pts * 10000000) / 90000));
+        }
+
+        /// <summary>
+        /// Converts the PTS amount to seconds.
+        /// </summary>
+        /// <param name="pts">
+        /// The PTS to convert.
+        /// </param>
+        /// <returns>
+        /// The corresponding number of seconds.
+        /// </returns>
+        public static double PtsToSeconds(ulong pts)
+        {
+            return (double)pts / 90000;
+        }
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/HandBrakeUtils.cs b/win/CS/HandBrake.ApplicationServices/Interop/HandBrakeUtils.cs
index 2ad727a9e..138eed367 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/HandBrakeUtils.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/HandBrakeUtils.cs
@@ -168,7 +168,7 @@ namespace HandBrake.ApplicationServices.Interop
             if (!string.IsNullOrEmpty(message))
             {
                 // These errors happen in normal operations. Log them as messages.
-				if (message == "dvd: ifoOpen failed" || message.Contains("avformat_seek_file failed") || message.Contains("nav_get_title_list"))
+                if (message == "dvd: ifoOpen failed" || message.Contains("avformat_seek_file failed") || message.Contains("nav_get_title_list"))
                 {
                     SendMessageEvent(message);
                     return;
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/HbLib/HBDelegates.cs b/win/CS/HandBrake.ApplicationServices/Interop/HbLib/HBDelegates.cs
index 283beb88e..3dff02a9d 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/HbLib/HBDelegates.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/HbLib/HBDelegates.cs
@@ -10,8 +10,8 @@
 
 namespace HandBrake.ApplicationServices.Interop.HbLib
 {
-	using System.Runtime.InteropServices;
+    using System.Runtime.InteropServices;
 
-	[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
-	public delegate void LoggingCallback(string message);
+    [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+    public delegate void LoggingCallback(string message);
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/HbLib/HbFunctions.cs b/win/CS/HandBrake.ApplicationServices/Interop/HbLib/HbFunctions.cs
index 23f0df750..dab5d1bb3 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/HbLib/HbFunctions.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/HbLib/HbFunctions.cs
@@ -10,182 +10,182 @@
 
 namespace HandBrake.ApplicationServices.Interop.HbLib
 {
-	using System;
-	using System.Runtime.InteropServices;
+    using System;
+    using System.Runtime.InteropServices;
 
-	/// <summary>
-	/// Contains p-invoke function declarations to hblib.
-	/// </summary>
-	public static class HBFunctions
-	{
-		[DllImport("hb.dll", EntryPoint = "hb_register_logger", CallingConvention = CallingConvention.Cdecl)]
-		public static extern void hb_register_logger(LoggingCallback callback);
+    /// <summary>
+    /// Contains p-invoke function declarations to hblib.
+    /// </summary>
+    public static class HBFunctions
+    {
+        [DllImport("hb.dll", EntryPoint = "hb_register_logger", CallingConvention = CallingConvention.Cdecl)]
+        public static extern void hb_register_logger(LoggingCallback callback);
 
-		[DllImport("hb.dll", EntryPoint = "hb_register_error_handler", CallingConvention = CallingConvention.Cdecl)]
-		public static extern void hb_register_error_handler(LoggingCallback callback);
+        [DllImport("hb.dll", EntryPoint = "hb_register_error_handler", CallingConvention = CallingConvention.Cdecl)]
+        public static extern void hb_register_error_handler(LoggingCallback callback);
 
-		[DllImport("hb.dll", EntryPoint = "hb_global_init", CallingConvention = CallingConvention.Cdecl)]
-		public static extern int hb_global_init();
+        [DllImport("hb.dll", EntryPoint = "hb_global_init", CallingConvention = CallingConvention.Cdecl)]
+        public static extern int hb_global_init();
 
-		/// Return Type: hb_handle_t*
-		///verbose: int
-		///update_check: int
-		[DllImport("hb.dll", EntryPoint = "hb_init", CallingConvention = CallingConvention.Cdecl)]
-		public static extern IntPtr hb_init(int verbose, int update_check);
+        /// Return Type: hb_handle_t*
+        ///verbose: int
+        ///update_check: int
+        [DllImport("hb.dll", EntryPoint = "hb_init", CallingConvention = CallingConvention.Cdecl)]
+        public static extern IntPtr hb_init(int verbose, int update_check);
 
 
-		/// Return Type: hb_handle_t*
-		///verbose: int
-		///update_check: int
-		[DllImport("hb.dll", EntryPoint = "hb_init_dl", CallingConvention = CallingConvention.Cdecl)]
-		public static extern IntPtr hb_init_dl(int verbose, int update_check);
+        /// Return Type: hb_handle_t*
+        ///verbose: int
+        ///update_check: int
+        [DllImport("hb.dll", EntryPoint = "hb_init_dl", CallingConvention = CallingConvention.Cdecl)]
+        public static extern IntPtr hb_init_dl(int verbose, int update_check);
 
 
-		/// Return Type: char*
-		///param0: hb_handle_t*
-		[DllImport("hb.dll", EntryPoint = "hb_get_version", CallingConvention = CallingConvention.Cdecl)]
-		public static extern IntPtr hb_get_version(IntPtr hbHandle);
+        /// Return Type: char*
+        ///param0: hb_handle_t*
+        [DllImport("hb.dll", EntryPoint = "hb_get_version", CallingConvention = CallingConvention.Cdecl)]
+        public static extern IntPtr hb_get_version(IntPtr hbHandle);
 
 
-		/// Return Type: int
-		///param0: hb_handle_t*
-		[DllImport("hb.dll", EntryPoint = "hb_get_build", CallingConvention = CallingConvention.Cdecl)]
-		public static extern int hb_get_build(IntPtr hbHandle);
+        /// Return Type: int
+        ///param0: hb_handle_t*
+        [DllImport("hb.dll", EntryPoint = "hb_get_build", CallingConvention = CallingConvention.Cdecl)]
+        public static extern int hb_get_build(IntPtr hbHandle);
 
 
-		/// Return Type: int
-		///h: hb_handle_t*
-		///version: char**
-		[DllImport("hb.dll", EntryPoint = "hb_check_update", CallingConvention = CallingConvention.Cdecl)]
-		public static extern int hb_check_update(IntPtr handle, ref IntPtr version);
+        /// Return Type: int
+        ///h: hb_handle_t*
+        ///version: char**
+        [DllImport("hb.dll", EntryPoint = "hb_check_update", CallingConvention = CallingConvention.Cdecl)]
+        public static extern int hb_check_update(IntPtr handle, ref IntPtr version);
 
 
-		/// Return Type: char*
-		///path: char*
-		[DllImport("hb.dll", EntryPoint = "hb_dvd_name", CallingConvention = CallingConvention.Cdecl)]
-		public static extern IntPtr hb_dvd_name(IntPtr path);
+        /// Return Type: char*
+        ///path: char*
+        [DllImport("hb.dll", EntryPoint = "hb_dvd_name", CallingConvention = CallingConvention.Cdecl)]
+        public static extern IntPtr hb_dvd_name(IntPtr path);
 
 
-		/// Return Type: void
-		///enable: int
-		[DllImport("hb.dll", EntryPoint = "hb_dvd_set_dvdnav", CallingConvention = CallingConvention.Cdecl)]
-		public static extern void hb_dvd_set_dvdnav(int enable);
+        /// Return Type: void
+        ///enable: int
+        [DllImport("hb.dll", EntryPoint = "hb_dvd_set_dvdnav", CallingConvention = CallingConvention.Cdecl)]
+        public static extern void hb_dvd_set_dvdnav(int enable);
 
 
-		/// Return Type: void
-		///param0: hb_handle_t*
-		///path: char*
-		///title_index: int
-		///preview_count: int
-		///store_previews: int
-		[DllImport("hb.dll", EntryPoint = "hb_scan", CallingConvention = CallingConvention.Cdecl)]
-		public static extern void hb_scan(IntPtr hbHandle, IntPtr path, int title_index, int preview_count, int store_previews, ulong min_duration);
+        /// Return Type: void
+        ///param0: hb_handle_t*
+        ///path: char*
+        ///title_index: int
+        ///preview_count: int
+        ///store_previews: int
+        [DllImport("hb.dll", EntryPoint = "hb_scan", CallingConvention = CallingConvention.Cdecl)]
+        public static extern void hb_scan(IntPtr hbHandle, IntPtr path, int title_index, int preview_count, int store_previews, ulong min_duration);
 
-		[DllImport("hb.dll", EntryPoint = "hb_scan_stop", CallingConvention = CallingConvention.Cdecl)]
-		public static extern void hb_scan_stop(IntPtr hbHandle);
+        [DllImport("hb.dll", EntryPoint = "hb_scan_stop", CallingConvention = CallingConvention.Cdecl)]
+        public static extern void hb_scan_stop(IntPtr hbHandle);
 
-		/// Return Type: hb_list_t*
-		///param0: hb_handle_t*
-		[DllImport("hb.dll", EntryPoint = "hb_get_titles", CallingConvention = CallingConvention.Cdecl)]
-		public static extern IntPtr hb_get_titles(IntPtr hbHandle);
+        /// Return Type: hb_list_t*
+        ///param0: hb_handle_t*
+        [DllImport("hb.dll", EntryPoint = "hb_get_titles", CallingConvention = CallingConvention.Cdecl)]
+        public static extern IntPtr hb_get_titles(IntPtr hbHandle);
 
         [DllImport("hb.dll", EntryPoint = "hb_set_anamorphic_size2", CallingConvention = CallingConvention.Cdecl)]
         public static extern void hb_set_anamorphic_size2(ref hb_geometry_s sourceGeometry, ref hb_geometry_settings_s uiGeometry, ref hb_geometry_s result);
         
 
-		/// Return Type: int
-		///param0: hb_handle_t*
-		[DllImport("hb.dll", EntryPoint = "hb_count", CallingConvention = CallingConvention.Cdecl)]
-		public static extern int hb_count(IntPtr hbHandle);
+        /// Return Type: int
+        ///param0: hb_handle_t*
+        [DllImport("hb.dll", EntryPoint = "hb_count", CallingConvention = CallingConvention.Cdecl)]
+        public static extern int hb_count(IntPtr hbHandle);
 
 
-		/// Return Type: hb_job_t*
-		///param0: hb_handle_t*
-		///param1: int
-		[DllImport("hb.dll", EntryPoint = "hb_job", CallingConvention = CallingConvention.Cdecl)]
-		public static extern IntPtr hb_job(IntPtr hbHandle, int jobIndex);
+        /// Return Type: hb_job_t*
+        ///param0: hb_handle_t*
+        ///param1: int
+        [DllImport("hb.dll", EntryPoint = "hb_job", CallingConvention = CallingConvention.Cdecl)]
+        public static extern IntPtr hb_job(IntPtr hbHandle, int jobIndex);
 
-		/// Return Type: void
-		///param0: hb_handle_t*
-		///param1: hb_job_t*
-		[DllImport("hb.dll", EntryPoint = "hb_rem", CallingConvention = CallingConvention.Cdecl)]
-		public static extern void hb_rem(IntPtr hbHandle, IntPtr job);
+        /// Return Type: void
+        ///param0: hb_handle_t*
+        ///param1: hb_job_t*
+        [DllImport("hb.dll", EntryPoint = "hb_rem", CallingConvention = CallingConvention.Cdecl)]
+        public static extern void hb_rem(IntPtr hbHandle, IntPtr job);
 
 
-		/// Return Type: void
-		///param0: hb_handle_t*
-		[DllImport("hb.dll", EntryPoint = "hb_start", CallingConvention = CallingConvention.Cdecl)]
-		public static extern void hb_start(IntPtr hbHandle);
+        /// Return Type: void
+        ///param0: hb_handle_t*
+        [DllImport("hb.dll", EntryPoint = "hb_start", CallingConvention = CallingConvention.Cdecl)]
+        public static extern void hb_start(IntPtr hbHandle);
 
 
-		/// Return Type: void
-		///param0: hb_handle_t*
-		[DllImport("hb.dll", EntryPoint = "hb_pause", CallingConvention = CallingConvention.Cdecl)]
-		public static extern void hb_pause(IntPtr hbHandle);
+        /// Return Type: void
+        ///param0: hb_handle_t*
+        [DllImport("hb.dll", EntryPoint = "hb_pause", CallingConvention = CallingConvention.Cdecl)]
+        public static extern void hb_pause(IntPtr hbHandle);
 
 
-		/// Return Type: void
-		///param0: hb_handle_t*
-		[DllImport("hb.dll", EntryPoint = "hb_resume", CallingConvention = CallingConvention.Cdecl)]
-		public static extern void hb_resume(IntPtr hbHandle);
+        /// Return Type: void
+        ///param0: hb_handle_t*
+        [DllImport("hb.dll", EntryPoint = "hb_resume", CallingConvention = CallingConvention.Cdecl)]
+        public static extern void hb_resume(IntPtr hbHandle);
 
 
-		/// Return Type: void
-		///param0: hb_handle_t*
-		[DllImport("hb.dll", EntryPoint = "hb_stop", CallingConvention = CallingConvention.Cdecl)]
-		public static extern void hb_stop(IntPtr hbHandle);
+        /// Return Type: void
+        ///param0: hb_handle_t*
+        [DllImport("hb.dll", EntryPoint = "hb_stop", CallingConvention = CallingConvention.Cdecl)]
+        public static extern void hb_stop(IntPtr hbHandle);
 
 
-		/// Return Type: int
-		///param0: hb_handle_t*
-		[DllImport("hb.dll", EntryPoint = "hb_get_scancount", CallingConvention = CallingConvention.Cdecl)]
-		public static extern int hb_get_scancount(IntPtr hbHandle);
+        /// Return Type: int
+        ///param0: hb_handle_t*
+        [DllImport("hb.dll", EntryPoint = "hb_get_scancount", CallingConvention = CallingConvention.Cdecl)]
+        public static extern int hb_get_scancount(IntPtr hbHandle);
 
 
-		/// Return Type: void
-		///param0: hb_handle_t**
-		[DllImport("hb.dll", EntryPoint = "hb_close", CallingConvention = CallingConvention.Cdecl)]
-		public static extern void hb_close(IntPtr hbHandle);
+        /// Return Type: void
+        ///param0: hb_handle_t**
+        [DllImport("hb.dll", EntryPoint = "hb_close", CallingConvention = CallingConvention.Cdecl)]
+        public static extern void hb_close(IntPtr hbHandle);
 
-		[DllImport("hb.dll", EntryPoint = "hb_global_close", CallingConvention = CallingConvention.Cdecl)]
-		public static extern void hb_global_close();
+        [DllImport("hb.dll", EntryPoint = "hb_global_close", CallingConvention = CallingConvention.Cdecl)]
+        public static extern void hb_global_close();
 
-		//hb_list_t * hb_list_init();
-		[DllImport("hb.dll", EntryPoint = "hb_list_init", CallingConvention = CallingConvention.Cdecl)]
-		public static extern IntPtr hb_list_init();
+        //hb_list_t * hb_list_init();
+        [DllImport("hb.dll", EntryPoint = "hb_list_init", CallingConvention = CallingConvention.Cdecl)]
+        public static extern IntPtr hb_list_init();
 
-		//int         hb_list_count( const hb_list_t * );
-		[DllImport("hb.dll", EntryPoint = "hb_list_count", CallingConvention = CallingConvention.Cdecl)]
-		public static extern int hb_list_count(IntPtr listPtr);
+        //int         hb_list_count( const hb_list_t * );
+        [DllImport("hb.dll", EntryPoint = "hb_list_count", CallingConvention = CallingConvention.Cdecl)]
+        public static extern int hb_list_count(IntPtr listPtr);
 
-		//void        hb_list_add( hb_list_t *, void * );
-		[DllImport("hb.dll", EntryPoint = "hb_list_add", CallingConvention = CallingConvention.Cdecl)]
-		public static extern void hb_list_add(IntPtr listPtr, IntPtr item);
+        //void        hb_list_add( hb_list_t *, void * );
+        [DllImport("hb.dll", EntryPoint = "hb_list_add", CallingConvention = CallingConvention.Cdecl)]
+        public static extern void hb_list_add(IntPtr listPtr, IntPtr item);
 
-		//void        hb_list_insert( hb_list_t * l, int pos, void * p );
-		[DllImport("hb.dll", EntryPoint = "hb_list_insert", CallingConvention = CallingConvention.Cdecl)]
-		public static extern void hb_list_insert(IntPtr listPtr, int pos, IntPtr item);
+        //void        hb_list_insert( hb_list_t * l, int pos, void * p );
+        [DllImport("hb.dll", EntryPoint = "hb_list_insert", CallingConvention = CallingConvention.Cdecl)]
+        public static extern void hb_list_insert(IntPtr listPtr, int pos, IntPtr item);
 
-		//void        hb_list_rem( hb_list_t *, void * );
-		[DllImport("hb.dll", EntryPoint = "hb_list_rem", CallingConvention = CallingConvention.Cdecl)]
-		public static extern void hb_list_rem(IntPtr listPtr, IntPtr item);
+        //void        hb_list_rem( hb_list_t *, void * );
+        [DllImport("hb.dll", EntryPoint = "hb_list_rem", CallingConvention = CallingConvention.Cdecl)]
+        public static extern void hb_list_rem(IntPtr listPtr, IntPtr item);
 
-		//void      * hb_list_item( const hb_list_t *, int );
-		[DllImport("hb.dll", EntryPoint = "hb_list_item", CallingConvention = CallingConvention.Cdecl)]
-		public static extern IntPtr hb_list_item(IntPtr listPtr, int itemIndex);
+        //void      * hb_list_item( const hb_list_t *, int );
+        [DllImport("hb.dll", EntryPoint = "hb_list_item", CallingConvention = CallingConvention.Cdecl)]
+        public static extern IntPtr hb_list_item(IntPtr listPtr, int itemIndex);
 
-		//void        hb_list_close( hb_list_t ** );
-		[DllImport("hb.dll", EntryPoint = "hb_list_close", CallingConvention = CallingConvention.Cdecl)]
-		public static extern void hb_list_close(IntPtr listPtrPtr);
+        //void        hb_list_close( hb_list_t ** );
+        [DllImport("hb.dll", EntryPoint = "hb_list_close", CallingConvention = CallingConvention.Cdecl)]
+        public static extern void hb_list_close(IntPtr listPtrPtr);
 
-		[DllImport("hb.dll", EntryPoint = "hb_subtitle_can_force", CallingConvention = CallingConvention.Cdecl)]
-		public static extern int hb_subtitle_can_force(int source);
+        [DllImport("hb.dll", EntryPoint = "hb_subtitle_can_force", CallingConvention = CallingConvention.Cdecl)]
+        public static extern int hb_subtitle_can_force(int source);
 
-		[DllImport("hb.dll", EntryPoint = "hb_subtitle_can_burn", CallingConvention = CallingConvention.Cdecl)]
-		public static extern int hb_subtitle_can_burn(int source);
+        [DllImport("hb.dll", EntryPoint = "hb_subtitle_can_burn", CallingConvention = CallingConvention.Cdecl)]
+        public static extern int hb_subtitle_can_burn(int source);
 
-		[DllImport("hb.dll", EntryPoint = "hb_subtitle_can_pass", CallingConvention = CallingConvention.Cdecl)]
-		public static extern int hb_subtitle_can_pass(int source, int mux);
+        [DllImport("hb.dll", EntryPoint = "hb_subtitle_can_pass", CallingConvention = CallingConvention.Cdecl)]
+        public static extern int hb_subtitle_can_pass(int source, int mux);
 
 
         // int hb_video_framerate_get_from_name(const char *name)
@@ -195,54 +195,54 @@ namespace HandBrake.ApplicationServices.Interop.HbLib
 //const char*      hb_video_framerate_get_name(int framerate);
 //const char*      hb_video_framerate_sanitize_name(const char *name);
 
-		// returns hb_rate_s
-		[DllImport("hb.dll", EntryPoint = "hb_video_framerate_get_next", CallingConvention = CallingConvention.Cdecl)]
-		public static extern IntPtr hb_video_framerate_get_next(IntPtr last);
+        // returns hb_rate_s
+        [DllImport("hb.dll", EntryPoint = "hb_video_framerate_get_next", CallingConvention = CallingConvention.Cdecl)]
+        public static extern IntPtr hb_video_framerate_get_next(IntPtr last);
 
 
 //int              hb_audio_samplerate_get_best(uint32_t codec, int samplerate, int *sr_shift);
 //int              hb_audio_samplerate_get_from_name(const char *name);
 //const char*      hb_audio_samplerate_get_name(int samplerate);
 
-		// returns hb_rate_s
-		[DllImport("hb.dll", EntryPoint = "hb_audio_samplerate_get_next", CallingConvention = CallingConvention.Cdecl)]
-		public static extern IntPtr hb_audio_samplerate_get_next(IntPtr last);
+        // returns hb_rate_s
+        [DllImport("hb.dll", EntryPoint = "hb_audio_samplerate_get_next", CallingConvention = CallingConvention.Cdecl)]
+        public static extern IntPtr hb_audio_samplerate_get_next(IntPtr last);
 
 
-		[DllImport("hb.dll", EntryPoint = "hb_audio_bitrate_get_best", CallingConvention = CallingConvention.Cdecl)]
-		public static extern int hb_audio_bitrate_get_best(uint codec, int bitrate, int samplerate, int mixdown);
+        [DllImport("hb.dll", EntryPoint = "hb_audio_bitrate_get_best", CallingConvention = CallingConvention.Cdecl)]
+        public static extern int hb_audio_bitrate_get_best(uint codec, int bitrate, int samplerate, int mixdown);
 
-		[DllImport("hb.dll", EntryPoint = "hb_audio_bitrate_get_default", CallingConvention = CallingConvention.Cdecl)]
-		public static extern int hb_audio_bitrate_get_default(uint codec, int samplerate, int mixdown);
+        [DllImport("hb.dll", EntryPoint = "hb_audio_bitrate_get_default", CallingConvention = CallingConvention.Cdecl)]
+        public static extern int hb_audio_bitrate_get_default(uint codec, int samplerate, int mixdown);
 
-		[DllImport("hb.dll", EntryPoint = "hb_audio_bitrate_get_limits", CallingConvention = CallingConvention.Cdecl)]
-		public static extern int hb_audio_bitrate_get_limits(uint codec, int samplerate, int mixdown, ref int low, ref int high);
+        [DllImport("hb.dll", EntryPoint = "hb_audio_bitrate_get_limits", CallingConvention = CallingConvention.Cdecl)]
+        public static extern int hb_audio_bitrate_get_limits(uint codec, int samplerate, int mixdown, ref int low, ref int high);
 
-		[DllImport("hb.dll", EntryPoint = "hb_audio_bitrate_get_next", CallingConvention = CallingConvention.Cdecl)]
-		public static extern IntPtr hb_audio_bitrate_get_next(IntPtr last);
+        [DllImport("hb.dll", EntryPoint = "hb_audio_bitrate_get_next", CallingConvention = CallingConvention.Cdecl)]
+        public static extern IntPtr hb_audio_bitrate_get_next(IntPtr last);
 
-		[DllImport("hb.dll", EntryPoint = "hb_video_quality_get_limits", CallingConvention = CallingConvention.Cdecl)]
-		public static extern void hb_video_quality_get_limits(uint codec, ref float low, ref float high, ref float granularity, ref int direction);
+        [DllImport("hb.dll", EntryPoint = "hb_video_quality_get_limits", CallingConvention = CallingConvention.Cdecl)]
+        public static extern void hb_video_quality_get_limits(uint codec, ref float low, ref float high, ref float granularity, ref int direction);
 
-		[DllImport("hb.dll", EntryPoint = "hb_video_quality_get_name", CallingConvention = CallingConvention.Cdecl)]
-		public static extern IntPtr hb_video_quality_get_name(uint codec);
+        [DllImport("hb.dll", EntryPoint = "hb_video_quality_get_name", CallingConvention = CallingConvention.Cdecl)]
+        public static extern IntPtr hb_video_quality_get_name(uint codec);
 
-		[DllImport("hb.dll", EntryPoint = "hb_audio_quality_get_limits", CallingConvention = CallingConvention.Cdecl)]
-		public static extern void hb_audio_quality_get_limits(uint codec, ref float low, ref float high, ref float granularity, ref int direction);
+        [DllImport("hb.dll", EntryPoint = "hb_audio_quality_get_limits", CallingConvention = CallingConvention.Cdecl)]
+        public static extern void hb_audio_quality_get_limits(uint codec, ref float low, ref float high, ref float granularity, ref int direction);
 
 //float hb_audio_quality_get_best(uint32_t codec, float quality);
 
-		[DllImport("hb.dll", EntryPoint = "hb_audio_quality_get_default", CallingConvention = CallingConvention.Cdecl)]
-		public static extern float hb_audio_quality_get_default(uint codec);
+        [DllImport("hb.dll", EntryPoint = "hb_audio_quality_get_default", CallingConvention = CallingConvention.Cdecl)]
+        public static extern float hb_audio_quality_get_default(uint codec);
 
 
-		[DllImport("hb.dll", EntryPoint = "hb_audio_compression_get_limits", CallingConvention = CallingConvention.Cdecl)]
-		public static extern void hb_audio_compression_get_limits(uint codec, ref float low, ref float high, ref float granularity, ref int direction);
+        [DllImport("hb.dll", EntryPoint = "hb_audio_compression_get_limits", CallingConvention = CallingConvention.Cdecl)]
+        public static extern void hb_audio_compression_get_limits(uint codec, ref float low, ref float high, ref float granularity, ref int direction);
 
 //float hb_audio_compression_get_best(uint32_t codec, float compression);
 
-		[DllImport("hb.dll", EntryPoint = "hb_audio_compression_get_default", CallingConvention = CallingConvention.Cdecl)]
-		public static extern float hb_audio_compression_get_default(uint codec);
+        [DllImport("hb.dll", EntryPoint = "hb_audio_compression_get_default", CallingConvention = CallingConvention.Cdecl)]
+        public static extern float hb_audio_compression_get_default(uint codec);
 
 
 //int                hb_audio_dither_get_default();
@@ -256,31 +256,31 @@ namespace HandBrake.ApplicationServices.Interop.HbLib
         [DllImport("hb.dll", EntryPoint = "hb_audio_can_apply_drc2", CallingConvention = CallingConvention.Cdecl)]
         public static extern int hb_audio_can_apply_drc2(IntPtr handle, int title_index, int audio_index, int encoder);
 
-		[DllImport("hb.dll", EntryPoint = "hb_mixdown_is_supported", CallingConvention = CallingConvention.Cdecl)]
-		public static extern int hb_mixdown_is_supported(int mixdown, uint codec, ulong layout);
+        [DllImport("hb.dll", EntryPoint = "hb_mixdown_is_supported", CallingConvention = CallingConvention.Cdecl)]
+        public static extern int hb_mixdown_is_supported(int mixdown, uint codec, ulong layout);
 
-		[DllImport("hb.dll", EntryPoint = "hb_mixdown_has_codec_support", CallingConvention = CallingConvention.Cdecl)]
-		public static extern int hb_mixdown_has_codec_support(int mixdown, uint codec);
+        [DllImport("hb.dll", EntryPoint = "hb_mixdown_has_codec_support", CallingConvention = CallingConvention.Cdecl)]
+        public static extern int hb_mixdown_has_codec_support(int mixdown, uint codec);
 
-		[DllImport("hb.dll", EntryPoint = "hb_mixdown_has_remix_support", CallingConvention = CallingConvention.Cdecl)]
-		public static extern int hb_mixdown_has_remix_support(int mixdown, ulong layout);
+        [DllImport("hb.dll", EntryPoint = "hb_mixdown_has_remix_support", CallingConvention = CallingConvention.Cdecl)]
+        public static extern int hb_mixdown_has_remix_support(int mixdown, ulong layout);
 
 //int                 hb_mixdown_get_discrete_channel_count(int mixdown);
 //int                 hb_mixdown_get_low_freq_channel_count(int mixdown);
 
-		[DllImport("hb.dll", EntryPoint = "hb_mixdown_get_best", CallingConvention = CallingConvention.Cdecl)]
-		public static extern int hb_mixdown_get_best(uint codec, ulong layout, int mixdown);
+        [DllImport("hb.dll", EntryPoint = "hb_mixdown_get_best", CallingConvention = CallingConvention.Cdecl)]
+        public static extern int hb_mixdown_get_best(uint codec, ulong layout, int mixdown);
 
-		[DllImport("hb.dll", EntryPoint = "hb_mixdown_get_default", CallingConvention = CallingConvention.Cdecl)]
-		public static extern int hb_mixdown_get_default(uint codec, ulong layout);
+        [DllImport("hb.dll", EntryPoint = "hb_mixdown_get_default", CallingConvention = CallingConvention.Cdecl)]
+        public static extern int hb_mixdown_get_default(uint codec, ulong layout);
 
 //int                 hb_mixdown_get_from_name(const char *name);
 //const char*         hb_mixdown_get_name(int mixdown);
 //const char*         hb_mixdown_get_short_name(int mixdown);
 //const char*         hb_mixdown_sanitize_name(const char *name);
 
-		[DllImport("hb.dll", EntryPoint = "hb_mixdown_get_next", CallingConvention = CallingConvention.Cdecl)]
-		public static extern IntPtr hb_mixdown_get_next(IntPtr last);
+        [DllImport("hb.dll", EntryPoint = "hb_mixdown_get_next", CallingConvention = CallingConvention.Cdecl)]
+        public static extern IntPtr hb_mixdown_get_next(IntPtr last);
 
 //int                 hb_video_encoder_get_default(int muxer);
 //int                 hb_video_encoder_get_from_name(const char *name);
@@ -289,8 +289,8 @@ namespace HandBrake.ApplicationServices.Interop.HbLib
 //const char*         hb_video_encoder_get_long_name(int encoder);
 //const char*         hb_video_encoder_sanitize_name(const char *name);
 
-		[DllImport("hb.dll", EntryPoint = "hb_video_encoder_get_next", CallingConvention = CallingConvention.Cdecl)]
-		public static extern IntPtr hb_video_encoder_get_next(IntPtr last);
+        [DllImport("hb.dll", EntryPoint = "hb_video_encoder_get_next", CallingConvention = CallingConvention.Cdecl)]
+        public static extern IntPtr hb_video_encoder_get_next(IntPtr last);
 
 /*
  * hb_audio_encoder_get_fallback_for_passthru() will sanitize a passthru codec
@@ -307,8 +307,8 @@ namespace HandBrake.ApplicationServices.Interop.HbLib
 //const char*         hb_audio_encoder_get_long_name(int encoder);
 //const char*         hb_audio_encoder_sanitize_name(const char *name);
 
-		[DllImport("hb.dll", EntryPoint = "hb_audio_encoder_get_next", CallingConvention = CallingConvention.Cdecl)]
-		public static extern IntPtr hb_audio_encoder_get_next(IntPtr last);
+        [DllImport("hb.dll", EntryPoint = "hb_audio_encoder_get_next", CallingConvention = CallingConvention.Cdecl)]
+        public static extern IntPtr hb_audio_encoder_get_next(IntPtr last);
 
 //int                   hb_container_get_from_name(const char *name);
 //int                   hb_container_get_from_extension(const char *extension); // not really a container name
@@ -318,87 +318,87 @@ namespace HandBrake.ApplicationServices.Interop.HbLib
 //const char*           hb_container_get_default_extension(int format);
 //const char*           hb_container_sanitize_name(const char *name);
 
-		[DllImport("hb.dll", EntryPoint = "hb_container_get_from_name", CallingConvention = CallingConvention.Cdecl)]
-		public static extern int hb_container_get_from_name([In] [MarshalAs(UnmanagedType.LPStr)] string name);
+        [DllImport("hb.dll", EntryPoint = "hb_container_get_from_name", CallingConvention = CallingConvention.Cdecl)]
+        public static extern int hb_container_get_from_name([In] [MarshalAs(UnmanagedType.LPStr)] string name);
 
-		[DllImport("hb.dll", EntryPoint = "hb_container_get_next", CallingConvention = CallingConvention.Cdecl)]
-		public static extern IntPtr hb_container_get_next(IntPtr last);
+        [DllImport("hb.dll", EntryPoint = "hb_container_get_next", CallingConvention = CallingConvention.Cdecl)]
+        public static extern IntPtr hb_container_get_next(IntPtr last);
 
-		[DllImport("hb.dll", EntryPoint = "hb_video_encoder_get_presets", CallingConvention = CallingConvention.Cdecl)]
-		public static extern IntPtr hb_video_encoder_get_presets(int encoder);
+        [DllImport("hb.dll", EntryPoint = "hb_video_encoder_get_presets", CallingConvention = CallingConvention.Cdecl)]
+        public static extern IntPtr hb_video_encoder_get_presets(int encoder);
 
-		[DllImport("hb.dll", EntryPoint = "hb_video_encoder_get_tunes", CallingConvention = CallingConvention.Cdecl)]
-		public static extern IntPtr hb_video_encoder_get_tunes(int encoder);
+        [DllImport("hb.dll", EntryPoint = "hb_video_encoder_get_tunes", CallingConvention = CallingConvention.Cdecl)]
+        public static extern IntPtr hb_video_encoder_get_tunes(int encoder);
 
-		[DllImport("hb.dll", EntryPoint = "hb_video_encoder_get_profiles", CallingConvention = CallingConvention.Cdecl)]
-		public static extern IntPtr hb_video_encoder_get_profiles(int encoder);
+        [DllImport("hb.dll", EntryPoint = "hb_video_encoder_get_profiles", CallingConvention = CallingConvention.Cdecl)]
+        public static extern IntPtr hb_video_encoder_get_profiles(int encoder);
 
-		[DllImport("hb.dll", EntryPoint = "hb_video_encoder_get_levels", CallingConvention = CallingConvention.Cdecl)]
-		public static extern IntPtr hb_video_encoder_get_levels(int encoder);
+        [DllImport("hb.dll", EntryPoint = "hb_video_encoder_get_levels", CallingConvention = CallingConvention.Cdecl)]
+        public static extern IntPtr hb_video_encoder_get_levels(int encoder);
 
 
-		[DllImport("hb.dll", EntryPoint = "lang_get_next", CallingConvention = CallingConvention.Cdecl)]
-		public static extern IntPtr lang_get_next(IntPtr last);
+        [DllImport("hb.dll", EntryPoint = "lang_get_next", CallingConvention = CallingConvention.Cdecl)]
+        public static extern IntPtr lang_get_next(IntPtr last);
 
-		[DllImport("hb.dll", EntryPoint = "lang_for_code2", CallingConvention = CallingConvention.Cdecl)]
-		public static extern IntPtr lang_for_code2([In] [MarshalAs(UnmanagedType.LPStr)] string code2);
+        [DllImport("hb.dll", EntryPoint = "lang_for_code2", CallingConvention = CallingConvention.Cdecl)]
+        public static extern IntPtr lang_for_code2([In] [MarshalAs(UnmanagedType.LPStr)] string code2);
 
 
-		///hb_title_set_t  * hb_get_title_set( hb_handle_t * );
-		[DllImport("hb.dll", EntryPoint = "hb_get_title_set", CallingConvention = CallingConvention.Cdecl)]
-		public static extern IntPtr hb_get_title_set(IntPtr hbHandle);
+        ///hb_title_set_t  * hb_get_title_set( hb_handle_t * );
+        [DllImport("hb.dll", EntryPoint = "hb_get_title_set", CallingConvention = CallingConvention.Cdecl)]
+        public static extern IntPtr hb_get_title_set(IntPtr hbHandle);
 
-		///hb_job_t * hb_job_init_by_index( hb_handle_t *h, int title_index );
-		[DllImport("hb.dll", EntryPoint = "hb_job_init_by_index", CallingConvention = CallingConvention.Cdecl)]
-		public static extern IntPtr hb_job_init_by_index(IntPtr hbHandle, int title_index);
+        ///hb_job_t * hb_job_init_by_index( hb_handle_t *h, int title_index );
+        [DllImport("hb.dll", EntryPoint = "hb_job_init_by_index", CallingConvention = CallingConvention.Cdecl)]
+        public static extern IntPtr hb_job_init_by_index(IntPtr hbHandle, int title_index);
 
-		///void hb_job_close( hb_job_t ** job );
-		[DllImport("hb.dll", EntryPoint = "hb_job_close", CallingConvention = CallingConvention.Cdecl)]
-		public static extern void hb_job_close(IntPtr job);
+        ///void hb_job_close( hb_job_t ** job );
+        [DllImport("hb.dll", EntryPoint = "hb_job_close", CallingConvention = CallingConvention.Cdecl)]
+        public static extern void hb_job_close(IntPtr job);
 
-		///void hb_chapter_set_title(hb_chapter_t *chapter, const char *title);
-		[DllImport("hb.dll", EntryPoint = "hb_chapter_set_title", CallingConvention = CallingConvention.Cdecl)]
-		public static extern void hb_chapter_set_title(IntPtr chapter, [In] [MarshalAs(UnmanagedType.LPStr)] string title);
+        ///void hb_chapter_set_title(hb_chapter_t *chapter, const char *title);
+        [DllImport("hb.dll", EntryPoint = "hb_chapter_set_title", CallingConvention = CallingConvention.Cdecl)]
+        public static extern void hb_chapter_set_title(IntPtr chapter, [In] [MarshalAs(UnmanagedType.LPStr)] string title);
 
-		///void hb_chapter_set_title(hb_chapter_t *chapter, const char *title);
-		[DllImport("hb.dll", EntryPoint = "hb_chapter_set_title", CallingConvention = CallingConvention.Cdecl)]
-		public static extern void hb_chapter_set_title__ptr(IntPtr chapter, IntPtr title);
+        ///void hb_chapter_set_title(hb_chapter_t *chapter, const char *title);
+        [DllImport("hb.dll", EntryPoint = "hb_chapter_set_title", CallingConvention = CallingConvention.Cdecl)]
+        public static extern void hb_chapter_set_title__ptr(IntPtr chapter, IntPtr title);
 
-		/// hb_filter_object_t * hb_filter_init( int filter_id );
-		[DllImport("hb.dll", EntryPoint = "hb_filter_init", CallingConvention = CallingConvention.Cdecl)]
-		public static extern IntPtr hb_filter_init(int filter_id);
+        /// hb_filter_object_t * hb_filter_init( int filter_id );
+        [DllImport("hb.dll", EntryPoint = "hb_filter_init", CallingConvention = CallingConvention.Cdecl)]
+        public static extern IntPtr hb_filter_init(int filter_id);
 
-		[DllImport("hb.dll", EntryPoint = "hb_generate_filter_settings", CallingConvention = CallingConvention.Cdecl)]
-		public static extern IntPtr hb_generate_filter_settings(
-			int filter_id,
-			[In] [MarshalAs(UnmanagedType.LPStr)] string preset,
-			[In] [MarshalAs(UnmanagedType.LPStr)] string tune);
+        [DllImport("hb.dll", EntryPoint = "hb_generate_filter_settings", CallingConvention = CallingConvention.Cdecl)]
+        public static extern IntPtr hb_generate_filter_settings(
+            int filter_id,
+            [In] [MarshalAs(UnmanagedType.LPStr)] string preset,
+            [In] [MarshalAs(UnmanagedType.LPStr)] string tune);
 
-		[DllImport("hb.dll", EntryPoint = "hb_x264_encopt_name", CallingConvention = CallingConvention.Cdecl)]
-		public static extern IntPtr hb_x264_encopt_name(IntPtr name);
+        [DllImport("hb.dll", EntryPoint = "hb_x264_encopt_name", CallingConvention = CallingConvention.Cdecl)]
+        public static extern IntPtr hb_x264_encopt_name(IntPtr name);
 
-		[DllImport("hb.dll", EntryPoint = "hb_check_h264_level", CallingConvention = CallingConvention.Cdecl)]
-		public static extern int hb_check_h264_level([In] [MarshalAs(UnmanagedType.LPStr)] string level, int width, int height, int fps_num, int fps_den, int interlaced, int fake_interlaced);
+        [DllImport("hb.dll", EntryPoint = "hb_check_h264_level", CallingConvention = CallingConvention.Cdecl)]
+        public static extern int hb_check_h264_level([In] [MarshalAs(UnmanagedType.LPStr)] string level, int width, int height, int fps_num, int fps_den, int interlaced, int fake_interlaced);
 
-		[DllImport("hb.dll", EntryPoint = "hb_x264_param_unparse", CallingConvention = CallingConvention.Cdecl)]
-		public static extern IntPtr hb_x264_param_unparse(
-			[In] [MarshalAs(UnmanagedType.LPStr)] string x264_preset,
-			[In] [MarshalAs(UnmanagedType.LPStr)] string x264_tune,
-			[In] [MarshalAs(UnmanagedType.LPStr)] string x264_encopts,
-			[In] [MarshalAs(UnmanagedType.LPStr)] string x264_profile,
-			[In] [MarshalAs(UnmanagedType.LPStr)] string h264_level,
-			int width,
-			int height);
+        [DllImport("hb.dll", EntryPoint = "hb_x264_param_unparse", CallingConvention = CallingConvention.Cdecl)]
+        public static extern IntPtr hb_x264_param_unparse(
+            [In] [MarshalAs(UnmanagedType.LPStr)] string x264_preset,
+            [In] [MarshalAs(UnmanagedType.LPStr)] string x264_tune,
+            [In] [MarshalAs(UnmanagedType.LPStr)] string x264_encopts,
+            [In] [MarshalAs(UnmanagedType.LPStr)] string x264_profile,
+            [In] [MarshalAs(UnmanagedType.LPStr)] string h264_level,
+            int width,
+            int height);
 
 
-		[DllImport("hb.dll", EntryPoint = "hb_get_opencl_env", CallingConvention = CallingConvention.Cdecl)]
-		public static extern int hb_get_opencl_env();
+        [DllImport("hb.dll", EntryPoint = "hb_get_opencl_env", CallingConvention = CallingConvention.Cdecl)]
+        public static extern int hb_get_opencl_env();
 
-		[DllImport("hb.dll", EntryPoint = "hb_qsv_available", CallingConvention = CallingConvention.Cdecl)]
-		public static extern int hb_qsv_available();
-		
-		[DllImport("hb.dll", EntryPoint = "hb_qsv_info_init", CallingConvention = CallingConvention.Cdecl)]
-		public static extern int hb_qsv_info_init();
+        [DllImport("hb.dll", EntryPoint = "hb_qsv_available", CallingConvention = CallingConvention.Cdecl)]
+        public static extern int hb_qsv_available();
+        
+        [DllImport("hb.dll", EntryPoint = "hb_qsv_info_init", CallingConvention = CallingConvention.Cdecl)]
+        public static extern int hb_qsv_info_init();
 
         // hb_image_t* hb_get_preview2(hb_handle_t* h, int title_idx, int picture, hb_geometry_settings_t* geo, int deinterlace);
         [DllImport("hb.dll", EntryPoint = "hb_get_preview2", CallingConvention = CallingConvention.Cdecl)]
@@ -438,5 +438,5 @@ namespace HandBrake.ApplicationServices.Interop.HbLib
         // char* hb_get_preview_params_json(int title_idx, int preview_idx, int deinterlace, hb_geometry_settings_t *settings)
         [DllImport("hb.dll", EntryPoint = "hb_get_preview_params_json", CallingConvention = CallingConvention.Cdecl)]
         public static extern IntPtr hb_get_preview_params_json(int title_idx, int preview_idx, int deinterlace, ref hb_geometry_settings_s settings);
-	}
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/HbLib/NativeConstants.cs b/win/CS/HandBrake.ApplicationServices/Interop/HbLib/NativeConstants.cs
index e4500c864..6e4b3038a 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/HbLib/NativeConstants.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/HbLib/NativeConstants.cs
@@ -10,43 +10,43 @@
 
 namespace HandBrake.ApplicationServices.Interop.HbLib
 {
-	public class NativeConstants
-	{
-		// Audio encoders
-		public const uint HB_ACODEC_MASK = 0x00FFFF00;
-		public const uint HB_ACODEC_LAME = 0x00000200;
-		public const uint HB_ACODEC_VORBIS = 0x00000400;
-		public const uint HB_ACODEC_AC3 = 0x00000800;
-		public const uint HB_ACODEC_LPCM = 0x00001000;
-		public const uint HB_ACODEC_DCA = 0x00002000;
-		public const uint HB_ACODEC_CA_AAC = 0x00004000;
-		public const uint HB_ACODEC_CA_HAAC = 0x00008000;
-		public const uint HB_ACODEC_FFAAC = 0x00010000;
-		public const uint HB_ACODEC_FFMPEG = 0x00020000;
-		public const uint HB_ACODEC_DCA_HD = 0x00040000;
-		public const uint HB_ACODEC_MP3 = 0x00080000;
-		public const uint HB_ACODEC_FFFLAC = 0x00100000;
-		public const uint HB_ACODEC_FFFLAC24 = 0x00200000;
-		public const uint HB_ACODEC_FDK_AAC = 0x00400000;
-		public const uint HB_ACODEC_FDK_HAAC = 0x00800000;
-		public const uint HB_ACODEC_FF_MASK = 0x00FF2800;
-		public const uint HB_ACODEC_PASS_FLAG = 0x40000000;
-		public const uint HB_ACODEC_PASS_MASK = (HB_ACODEC_MP3 | HB_ACODEC_FFAAC | HB_ACODEC_DCA_HD | HB_ACODEC_AC3 | HB_ACODEC_DCA);
-		public const uint HB_ACODEC_AUTO_PASS = (HB_ACODEC_PASS_MASK | HB_ACODEC_PASS_FLAG);
-		public const uint HB_ACODEC_MP3_PASS = (HB_ACODEC_MP3 | HB_ACODEC_PASS_FLAG);
-		public const uint HB_ACODEC_AAC_PASS = (HB_ACODEC_FFAAC | HB_ACODEC_PASS_FLAG);
-		public const uint HB_ACODEC_AC3_PASS = (HB_ACODEC_AC3 | HB_ACODEC_PASS_FLAG);
-		public const uint HB_ACODEC_DCA_PASS = (HB_ACODEC_DCA | HB_ACODEC_PASS_FLAG);
-		public const uint HB_ACODEC_DCA_HD_PASS = (HB_ACODEC_DCA_HD | HB_ACODEC_PASS_FLAG);
-		public const uint HB_ACODEC_ANY = (HB_ACODEC_MASK | HB_ACODEC_PASS_FLAG);
+    public class NativeConstants
+    {
+        // Audio encoders
+        public const uint HB_ACODEC_MASK = 0x00FFFF00;
+        public const uint HB_ACODEC_LAME = 0x00000200;
+        public const uint HB_ACODEC_VORBIS = 0x00000400;
+        public const uint HB_ACODEC_AC3 = 0x00000800;
+        public const uint HB_ACODEC_LPCM = 0x00001000;
+        public const uint HB_ACODEC_DCA = 0x00002000;
+        public const uint HB_ACODEC_CA_AAC = 0x00004000;
+        public const uint HB_ACODEC_CA_HAAC = 0x00008000;
+        public const uint HB_ACODEC_FFAAC = 0x00010000;
+        public const uint HB_ACODEC_FFMPEG = 0x00020000;
+        public const uint HB_ACODEC_DCA_HD = 0x00040000;
+        public const uint HB_ACODEC_MP3 = 0x00080000;
+        public const uint HB_ACODEC_FFFLAC = 0x00100000;
+        public const uint HB_ACODEC_FFFLAC24 = 0x00200000;
+        public const uint HB_ACODEC_FDK_AAC = 0x00400000;
+        public const uint HB_ACODEC_FDK_HAAC = 0x00800000;
+        public const uint HB_ACODEC_FF_MASK = 0x00FF2800;
+        public const uint HB_ACODEC_PASS_FLAG = 0x40000000;
+        public const uint HB_ACODEC_PASS_MASK = (HB_ACODEC_MP3 | HB_ACODEC_FFAAC | HB_ACODEC_DCA_HD | HB_ACODEC_AC3 | HB_ACODEC_DCA);
+        public const uint HB_ACODEC_AUTO_PASS = (HB_ACODEC_PASS_MASK | HB_ACODEC_PASS_FLAG);
+        public const uint HB_ACODEC_MP3_PASS = (HB_ACODEC_MP3 | HB_ACODEC_PASS_FLAG);
+        public const uint HB_ACODEC_AAC_PASS = (HB_ACODEC_FFAAC | HB_ACODEC_PASS_FLAG);
+        public const uint HB_ACODEC_AC3_PASS = (HB_ACODEC_AC3 | HB_ACODEC_PASS_FLAG);
+        public const uint HB_ACODEC_DCA_PASS = (HB_ACODEC_DCA | HB_ACODEC_PASS_FLAG);
+        public const uint HB_ACODEC_DCA_HD_PASS = (HB_ACODEC_DCA_HD | HB_ACODEC_PASS_FLAG);
+        public const uint HB_ACODEC_ANY = (HB_ACODEC_MASK | HB_ACODEC_PASS_FLAG);
 
-		// Encode state
-		public const int HB_STATE_IDLE = 1;
-		public const int HB_STATE_SCANNING = 2;
-		public const int HB_STATE_SCANDONE = 4;
-		public const int HB_STATE_WORKING = 8;
-		public const int HB_STATE_PAUSED = 16;
-		public const int HB_STATE_WORKDONE = 32;
-		public const int HB_STATE_MUXING = 64;
-	}
+        // Encode state
+        public const int HB_STATE_IDLE = 1;
+        public const int HB_STATE_SCANNING = 2;
+        public const int HB_STATE_SCANDONE = 4;
+        public const int HB_STATE_WORKING = 8;
+        public const int HB_STATE_PAUSED = 16;
+        public const int HB_STATE_WORKDONE = 32;
+        public const int HB_STATE_MUXING = 64;
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/HbLib/hb_container_s.cs b/win/CS/HandBrake.ApplicationServices/Interop/HbLib/hb_container_s.cs
index b332f25eb..b9a8f3255 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/HbLib/hb_container_s.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/HbLib/hb_container_s.cs
@@ -7,23 +7,23 @@
 
 namespace HandBrake.ApplicationServices.Interop.HbLib
 {
-	using System.Runtime.InteropServices;
+    using System.Runtime.InteropServices;
 
-	[StructLayout(LayoutKind.Sequential)]
+    [StructLayout(LayoutKind.Sequential)]
     public struct hb_container_s
-	{
-		[MarshalAs(UnmanagedType.LPStr)]
-		public string name;
+    {
+        [MarshalAs(UnmanagedType.LPStr)]
+        public string name;
 
-		[MarshalAs(UnmanagedType.LPStr)]
-		public string short_name;
+        [MarshalAs(UnmanagedType.LPStr)]
+        public string short_name;
 
-		[MarshalAs(UnmanagedType.LPStr)]
-		public string long_name;
+        [MarshalAs(UnmanagedType.LPStr)]
+        public string long_name;
 
-		[MarshalAs(UnmanagedType.LPStr)]
-		public string default_extension;
+        [MarshalAs(UnmanagedType.LPStr)]
+        public string default_extension;
 
-		public int format;
-	}
+        public int format;
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/HbLib/hb_encoder_s.cs b/win/CS/HandBrake.ApplicationServices/Interop/HbLib/hb_encoder_s.cs
index a4ac0f8e9..9491cb160 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/HbLib/hb_encoder_s.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/HbLib/hb_encoder_s.cs
@@ -7,22 +7,22 @@
 
 namespace HandBrake.ApplicationServices.Interop.HbLib
 {
-	using System.Runtime.InteropServices;
+    using System.Runtime.InteropServices;
 
-	[StructLayout(LayoutKind.Sequential)]
+    [StructLayout(LayoutKind.Sequential)]
     public struct hb_encoder_s
-	{
-		[MarshalAs(UnmanagedType.LPStr)]
-		public string name;
+    {
+        [MarshalAs(UnmanagedType.LPStr)]
+        public string name;
 
-		[MarshalAs(UnmanagedType.LPStr)]
-		public string short_name;
+        [MarshalAs(UnmanagedType.LPStr)]
+        public string short_name;
 
-		[MarshalAs(UnmanagedType.LPStr)]
-		public string long_name;
+        [MarshalAs(UnmanagedType.LPStr)]
+        public string long_name;
 
-		public int codec;
+        public int codec;
 
-		public int muxers;
-	}
+        public int muxers;
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/HbLib/hb_error_code.cs b/win/CS/HandBrake.ApplicationServices/Interop/HbLib/hb_error_code.cs
index ac8a91592..e9f2b3524 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/HbLib/hb_error_code.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/HbLib/hb_error_code.cs
@@ -13,11 +13,11 @@ namespace HandBrake.ApplicationServices.Interop.HbLib
     /// The hb_error_code.
     /// </summary>
     internal enum hb_error_code
-	{
-		HB_ERROR_NONE = 0,
-		HB_ERROR_CANCELED,
-		HB_ERROR_WRONG_INPUT,
-		HB_ERROR_INIT,
-		HB_ERROR_UNKNOWN
-	}
+    {
+        HB_ERROR_NONE = 0,
+        HB_ERROR_CANCELED,
+        HB_ERROR_WRONG_INPUT,
+        HB_ERROR_INIT,
+        HB_ERROR_UNKNOWN
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/HbLib/hb_filter_ids.cs b/win/CS/HandBrake.ApplicationServices/Interop/HbLib/hb_filter_ids.cs
index 67803b5b2..4ae61ad65 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/HbLib/hb_filter_ids.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/HbLib/hb_filter_ids.cs
@@ -8,23 +8,23 @@
 namespace HandBrake.ApplicationServices.Interop.HbLib
 {
     internal enum hb_filter_ids
-	{
-		HB_FILTER_QSV_PRE = 1, // for QSV - important to have before other filters 
-		// First, filters that may change the framerate (drop or dup frames)
-		HB_FILTER_DETELECINE,
-		HB_FILTER_DECOMB,
-		HB_FILTER_DEINTERLACE,
-		HB_FILTER_VFR,
-		// Filters that must operate on the original source image are next
-		HB_FILTER_DEBLOCK,
-		HB_FILTER_HQDN3D,
-		HB_FILTER_NLMEANS,
-		HB_FILTER_RENDER_SUB,
-		HB_FILTER_CROP_SCALE,
-		// Finally filters that don't care what order they are in,
-		// except that they must be after the above filters
-		HB_FILTER_ROTATE,
-		HB_FILTER_QSV_POST, // for QSV - important to have as a last one 
-		HB_FILTER_QSV,  // default MSDK VPP filter 
-	}
+    {
+        HB_FILTER_QSV_PRE = 1, // for QSV - important to have before other filters 
+        // First, filters that may change the framerate (drop or dup frames)
+        HB_FILTER_DETELECINE,
+        HB_FILTER_DECOMB,
+        HB_FILTER_DEINTERLACE,
+        HB_FILTER_VFR,
+        // Filters that must operate on the original source image are next
+        HB_FILTER_DEBLOCK,
+        HB_FILTER_HQDN3D,
+        HB_FILTER_NLMEANS,
+        HB_FILTER_RENDER_SUB,
+        HB_FILTER_CROP_SCALE,
+        // Finally filters that don't care what order they are in,
+        // except that they must be after the above filters
+        HB_FILTER_ROTATE,
+        HB_FILTER_QSV_POST, // for QSV - important to have as a last one 
+        HB_FILTER_QSV,  // default MSDK VPP filter 
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/HbLib/hb_mixdown_s.cs b/win/CS/HandBrake.ApplicationServices/Interop/HbLib/hb_mixdown_s.cs
index 3d6654daf..768ec3189 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/HbLib/hb_mixdown_s.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/HbLib/hb_mixdown_s.cs
@@ -7,19 +7,19 @@
 
 namespace HandBrake.ApplicationServices.Interop.HbLib
 {
-	using System.Runtime.InteropServices;
+    using System.Runtime.InteropServices;
 
-	[StructLayout(LayoutKind.Sequential)]
-	public struct hb_mixdown_s
-	{
-		[MarshalAs(UnmanagedType.LPStr)]
-		public string name;
+    [StructLayout(LayoutKind.Sequential)]
+    public struct hb_mixdown_s
+    {
+        [MarshalAs(UnmanagedType.LPStr)]
+        public string name;
 
-		/// char*
-		[MarshalAs(UnmanagedType.LPStr)]
-		public string short_name;
+        /// char*
+        [MarshalAs(UnmanagedType.LPStr)]
+        public string short_name;
 
-		/// int
-		public int amixdown;
-	}
+        /// int
+        public int amixdown;
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/HbLib/hb_rate_s.cs b/win/CS/HandBrake.ApplicationServices/Interop/HbLib/hb_rate_s.cs
index 9c365eac9..bebeccb7f 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/HbLib/hb_rate_s.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/HbLib/hb_rate_s.cs
@@ -7,16 +7,16 @@
 
 namespace HandBrake.ApplicationServices.Interop.HbLib
 {
-	using System.Runtime.InteropServices;
+    using System.Runtime.InteropServices;
 
-	[StructLayout(LayoutKind.Sequential)]
-	public struct hb_rate_s
-	{
-		/// char*
-		[MarshalAs(UnmanagedType.LPStr)]
-		public string name;
+    [StructLayout(LayoutKind.Sequential)]
+    public struct hb_rate_s
+    {
+        /// char*
+        [MarshalAs(UnmanagedType.LPStr)]
+        public string name;
 
-		/// int
-		public int rate;
-	}
+        /// int
+        public int rate;
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/HbLib/hb_subtitle.cs b/win/CS/HandBrake.ApplicationServices/Interop/HbLib/hb_subtitle.cs
index ac2a7e80b..4d0351814 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/HbLib/hb_subtitle.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/HbLib/hb_subtitle.cs
@@ -7,22 +7,22 @@
 
 namespace HandBrake.ApplicationServices.Interop.HbLib
 {
-	public enum hb_subtitle_s_subsource
-	{
-		VOBSUB,
+    public enum hb_subtitle_s_subsource
+    {
+        VOBSUB,
 
-		SRTSUB,
+        SRTSUB,
 
-		CC608SUB,
+        CC608SUB,
 
-		CC708SUB,
+        CC708SUB,
 
-		UTF8SUB,
+        UTF8SUB,
 
-		TX3GSUB,
+        TX3GSUB,
 
-		SSASUB,
+        SSASUB,
 
-		PGSSUB
-	}
+        PGSSUB
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/HbLib/iso639_lang_t.cs b/win/CS/HandBrake.ApplicationServices/Interop/HbLib/iso639_lang_t.cs
index e99b79c9a..1a4780ab2 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/HbLib/iso639_lang_t.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/HbLib/iso639_lang_t.cs
@@ -7,23 +7,23 @@
 
 namespace HandBrake.ApplicationServices.Interop.HbLib
 {
-	using System;
-	using System.Runtime.InteropServices;
+    using System;
+    using System.Runtime.InteropServices;
 
-	[StructLayout(LayoutKind.Sequential)]
-	public struct iso639_lang_t
-	{
-		public IntPtr eng_name;
+    [StructLayout(LayoutKind.Sequential)]
+    public struct iso639_lang_t
+    {
+        public IntPtr eng_name;
 
-		public IntPtr native_name;
+        public IntPtr native_name;
 
-		[MarshalAs(UnmanagedType.LPStr)]
-		public string iso639_1;
+        [MarshalAs(UnmanagedType.LPStr)]
+        public string iso639_1;
 
-		[MarshalAs(UnmanagedType.LPStr)]
-		public string iso639_2;
+        [MarshalAs(UnmanagedType.LPStr)]
+        public string iso639_2;
 
-		[MarshalAs(UnmanagedType.LPStr)]
-		public string iso639_2b;
-	}
+        [MarshalAs(UnmanagedType.LPStr)]
+        public string iso639_2b;
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Helpers/InteropUtilities.cs b/win/CS/HandBrake.ApplicationServices/Interop/Helpers/InteropUtilities.cs
index ad8f35762..2b62de4d8 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/Helpers/InteropUtilities.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Helpers/InteropUtilities.cs
@@ -18,266 +18,266 @@ namespace HandBrake.ApplicationServices.Interop.Helpers
     using HandBrake.ApplicationServices.Interop.HbLib;
 
     /// <summary>
-	/// Helper utilities for native interop.
-	/// </summary>
-	internal static class InteropUtilities
-	{
-		/// <summary>
-		/// Reads the given native structure pointer.
-		/// </summary>
-		/// <typeparam name="T">The type to convert the structure to.</typeparam>
-		/// <param name="structPtr">The pointer to the native structure.</param>
-		/// <returns>The converted structure.</returns>
-		public static T ToStructureFromPtr<T>(IntPtr structPtr)
-		{
-			return (T)Marshal.PtrToStructure(structPtr, typeof(T));
-		}
-
-		/// <summary>
-		/// Reads the given native UTF-8 string.
-		/// </summary>
-		/// <param name="stringPtr">The pointer to the string.</param>
-		/// <returns>The resulting string.</returns>
-		public static string ToStringFromUtf8Ptr(IntPtr stringPtr)
-		{
-			var data = new List<byte>();
-			var ptr = stringPtr;
-			var offset = 0;
-			while (true)
-			{
-				byte ch = Marshal.ReadByte(ptr, offset++);
-				if (ch == 0)
-				{
-					break;
-				}
-
-				data.Add(ch);
-			}
-
-			return Encoding.UTF8.GetString(data.ToArray());
-		}
-
-		/// <summary>
-		/// Creates a pointer to a UTF-8 null-terminated string.
-		/// </summary>
-		/// <param name="str">
-		/// The string to encode.
-		/// </param>
-		/// <returns>
-		/// The <see cref="IntPtr"/>.
-		/// </returns>
-		public static IntPtr ToUtf8PtrFromString(string str)
-		{
-			byte[] bytes = Encoding.UTF8.GetBytes(str);
-			IntPtr stringPtr = Marshal.AllocHGlobal(bytes.Length + 1);
-			var offset = 0;
-			foreach (byte b in bytes)
-			{
-				Marshal.WriteByte(stringPtr, offset, b);
-				offset++;
-			}
-
-			Marshal.WriteByte(stringPtr, offset, 0);
-			return stringPtr;
-		}
-
-		/// <summary>
-		/// Converts the given native HandBrake list to a managed list.
-		/// </summary>
-		/// <typeparam name="T">The type of structure in the list.</typeparam>
-		/// <param name="listPtr">The pointer to the native list.</param>
-		/// <returns>The converted managed list.</returns>
-		public static List<T> ToListFromHandBrakeList<T>(this IntPtr listPtr)
-		{
-			List<T> returnList = new List<T>();
-			NativeList nativeList = new NativeList(listPtr);
-
-			for (int i = 0; i < nativeList.Count; i++)
-			{
-				IntPtr itemPtr = nativeList[i];
-				returnList.Add(ToStructureFromPtr<T>(itemPtr));
-			}
-
-			return returnList;
-		}
-
-		/// <summary>
-		/// Converts the HB list to a managed list of pointers.
-		/// </summary>
-		/// <param name="listPtr">The list to convert.</param>
-		/// <returns>The managed list of pointers.</returns>
-		public static List<IntPtr> ToIntPtrList(this IntPtr listPtr)
-		{
-			var returnList = new List<IntPtr>();
-			NativeList nativeList = new NativeList(listPtr);
-
-			for (int i = 0; i < nativeList.Count; i++)
-			{
-				IntPtr itemPtr = nativeList[i];
-				returnList.Add(itemPtr);
-			}
-
-			return returnList;
-		}
-
-		/// <summary>
-		/// Converts the given native array to a managed collection.
-		/// </summary>
-		/// <typeparam name="T">The type of item in the list.</typeparam>
-		/// <param name="arrayPtr">The pointer to the array.</param>
-		/// <param name="count">The number of items in the array.</param>
-		/// <returns>The converted collection.</returns>
-		public static List<T> ToListFromNativeArray<T>(IntPtr arrayPtr, int count)
-		{
-			IntPtr currentItem = arrayPtr;
-
-			var result = new List<T>();
-			for (int i = 0; i < count; i++)
-			{
-				T nativeEncoder = ToStructureFromPtr<T>(currentItem);
-				result.Add(nativeEncoder);
-
-				currentItem = IntPtr.Add(currentItem, Marshal.SizeOf(typeof(T)));
-			}
-
-			return result;
-		}
-
-		/// <summary>
-		/// Takes an array pointer and converts it into a list of strings.
-		/// </summary>
-		/// <param name="arrayPtr">A pointer to a raw list of strings.</param>
-		/// <returns>The list of strings.</returns>
-	    public static List<string> ToStringListFromArrayPtr(IntPtr arrayPtr)
-		{
-			if (arrayPtr == IntPtr.Zero)
-			{
-				return null;
-			}
-
-			return ToPtrListFromPtr(arrayPtr).Select(ptr => Marshal.PtrToStringAnsi(ptr)).ToList();
-		}
-
-	    /// <summary>
-		/// Finds all the pointers starting at the given location and puts them in a list. Stops when it finds zero for a pointer.
-		/// </summary>
-		/// <param name="arrayPtr">The address of the list of pointers.</param>
-		/// <returns>The list of pointers.</returns>
-	    public static List<IntPtr> ToPtrListFromPtr(IntPtr arrayPtr)
-	    {
-		    var result = new List<IntPtr>();
-		    int ptrSize = Marshal.SizeOf(typeof(IntPtr));
-		    IntPtr currentPtr = Marshal.ReadIntPtr(arrayPtr);
-			for (int i = 0; currentPtr != IntPtr.Zero; i++)
-			{
-				result.Add(currentPtr);
-			    currentPtr = Marshal.ReadIntPtr(arrayPtr, (i + 1) * ptrSize);
-		    }
-
-		    return result;
-	    }
-
-		/// <summary>
-		/// Creates a native HandBrake list from the given managed list of pointers.
-		/// </summary>
-		/// <param name="list">The managed list to convert.</param>
-		/// <returns>The converted native list.</returns>
-		public static NativeList ToHandBrakeListFromPtrList(List<IntPtr> list)
-		{
-			NativeList returnList = NativeList.CreateList();
-
-			foreach (IntPtr ptr in list)
-			{
-				returnList.Add(ptr);
-			}
-
-			return returnList;
-		}
-
-		/// <summary>
-		/// Creates a native HandBrake list from the given managed list of structures.
-		/// </summary>
-		/// <typeparam name="T">The type of structures in the list.</typeparam>
-		/// <param name="list">The managed list to convert.</param>
-		/// <returns>The converted native list.</returns>
-		public static NativeList ToHandBrakeListFromList<T>(List<T> list)
-		{
-			NativeList returnList = NativeList.CreateList();
-			foreach (T item in list)
-			{
-				IntPtr itemPtr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(T)));
-				returnList.AllocatedMemory.Add(itemPtr);
-				Marshal.StructureToPtr(item, itemPtr, false);
-
-				returnList.Add(itemPtr);
-			}
-
-			return returnList;
-		}
-
-		/// <summary>
-		/// Reads in a list of objects given an interator and a conversion function.
-		/// </summary>
-		/// <typeparam name="T1">The type of the struct given by the iterator.</typeparam>
-		/// <typeparam name="T2">The object type to convert to.</typeparam>
-		/// <param name="iterator">The iterator to use to build the list.</param>
-		/// <param name="converter">The converter to convert from the struct to the object.</param>
-		/// <returns>The list of objects.</returns>
-		public static List<T2> ToListFromIterator<T1, T2>(Func<IntPtr, IntPtr> iterator, Func<T1, T2> converter)
-		{
-			return ToListFromIterator<T1>(iterator).Select(converter).ToList();
-		} 
-
-		/// <summary>
-		/// Reads in a list of structs given an iterator.
-		/// </summary>
-		/// <typeparam name="T">The type of the struct.</typeparam>
-		/// <param name="iterator">The iterator to use to build the list.</param>
-		/// <returns>The list of structs.</returns>
-		public static List<T> ToListFromIterator<T>(Func<IntPtr, IntPtr> iterator)
-		{
-			var structureList = new List<T>();
-			IntPtr current = IntPtr.Zero;
-
-			current = iterator(current);
-			while (current != IntPtr.Zero)
-			{
-				T encoder = ToStructureFromPtr<T>(current);
-				structureList.Add(encoder);
-
-				current = iterator(current);
-			}
-
-			return structureList;
-		}
-
-		/// <summary>
-		/// Closes the given job.
-		/// </summary>
-		/// <param name="nativeJobPtr">The pointer to the job.</param>
-		public static void CloseJob(IntPtr nativeJobPtr)
-		{
-			// Create a point to the job pointer first.
-			IntPtr nativeJobPtrPtr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(IntPtr)));
-
-			// Assign the new pointer to the job pointer and tell HB to clean the job up.
-			Marshal.WriteIntPtr(nativeJobPtrPtr, nativeJobPtr);
-			HBFunctions.hb_job_close(nativeJobPtrPtr);
-
-			// Free the pointer we used.
-			Marshal.FreeHGlobal(nativeJobPtrPtr);
-		}
-
-		/// <summary>
-		/// Frees all the memory locations in the given list.
-		/// </summary>
-		/// <param name="memoryList">The list of memory locations to free.</param>
-		public static void FreeMemory(List<IntPtr> memoryList)
-		{
-			foreach (IntPtr memoryLocation in memoryList)
-			{
-				Marshal.FreeHGlobal(memoryLocation);
-			}
-		}
-	}
+    /// Helper utilities for native interop.
+    /// </summary>
+    internal static class InteropUtilities
+    {
+        /// <summary>
+        /// Reads the given native structure pointer.
+        /// </summary>
+        /// <typeparam name="T">The type to convert the structure to.</typeparam>
+        /// <param name="structPtr">The pointer to the native structure.</param>
+        /// <returns>The converted structure.</returns>
+        public static T ToStructureFromPtr<T>(IntPtr structPtr)
+        {
+            return (T)Marshal.PtrToStructure(structPtr, typeof(T));
+        }
+
+        /// <summary>
+        /// Reads the given native UTF-8 string.
+        /// </summary>
+        /// <param name="stringPtr">The pointer to the string.</param>
+        /// <returns>The resulting string.</returns>
+        public static string ToStringFromUtf8Ptr(IntPtr stringPtr)
+        {
+            var data = new List<byte>();
+            var ptr = stringPtr;
+            var offset = 0;
+            while (true)
+            {
+                byte ch = Marshal.ReadByte(ptr, offset++);
+                if (ch == 0)
+                {
+                    break;
+                }
+
+                data.Add(ch);
+            }
+
+            return Encoding.UTF8.GetString(data.ToArray());
+        }
+
+        /// <summary>
+        /// Creates a pointer to a UTF-8 null-terminated string.
+        /// </summary>
+        /// <param name="str">
+        /// The string to encode.
+        /// </param>
+        /// <returns>
+        /// The <see cref="IntPtr"/>.
+        /// </returns>
+        public static IntPtr ToUtf8PtrFromString(string str)
+        {
+            byte[] bytes = Encoding.UTF8.GetBytes(str);
+            IntPtr stringPtr = Marshal.AllocHGlobal(bytes.Length + 1);
+            var offset = 0;
+            foreach (byte b in bytes)
+            {
+                Marshal.WriteByte(stringPtr, offset, b);
+                offset++;
+            }
+
+            Marshal.WriteByte(stringPtr, offset, 0);
+            return stringPtr;
+        }
+
+        /// <summary>
+        /// Converts the given native HandBrake list to a managed list.
+        /// </summary>
+        /// <typeparam name="T">The type of structure in the list.</typeparam>
+        /// <param name="listPtr">The pointer to the native list.</param>
+        /// <returns>The converted managed list.</returns>
+        public static List<T> ToListFromHandBrakeList<T>(this IntPtr listPtr)
+        {
+            List<T> returnList = new List<T>();
+            NativeList nativeList = new NativeList(listPtr);
+
+            for (int i = 0; i < nativeList.Count; i++)
+            {
+                IntPtr itemPtr = nativeList[i];
+                returnList.Add(ToStructureFromPtr<T>(itemPtr));
+            }
+
+            return returnList;
+        }
+
+        /// <summary>
+        /// Converts the HB list to a managed list of pointers.
+        /// </summary>
+        /// <param name="listPtr">The list to convert.</param>
+        /// <returns>The managed list of pointers.</returns>
+        public static List<IntPtr> ToIntPtrList(this IntPtr listPtr)
+        {
+            var returnList = new List<IntPtr>();
+            NativeList nativeList = new NativeList(listPtr);
+
+            for (int i = 0; i < nativeList.Count; i++)
+            {
+                IntPtr itemPtr = nativeList[i];
+                returnList.Add(itemPtr);
+            }
+
+            return returnList;
+        }
+
+        /// <summary>
+        /// Converts the given native array to a managed collection.
+        /// </summary>
+        /// <typeparam name="T">The type of item in the list.</typeparam>
+        /// <param name="arrayPtr">The pointer to the array.</param>
+        /// <param name="count">The number of items in the array.</param>
+        /// <returns>The converted collection.</returns>
+        public static List<T> ToListFromNativeArray<T>(IntPtr arrayPtr, int count)
+        {
+            IntPtr currentItem = arrayPtr;
+
+            var result = new List<T>();
+            for (int i = 0; i < count; i++)
+            {
+                T nativeEncoder = ToStructureFromPtr<T>(currentItem);
+                result.Add(nativeEncoder);
+
+                currentItem = IntPtr.Add(currentItem, Marshal.SizeOf(typeof(T)));
+            }
+
+            return result;
+        }
+
+        /// <summary>
+        /// Takes an array pointer and converts it into a list of strings.
+        /// </summary>
+        /// <param name="arrayPtr">A pointer to a raw list of strings.</param>
+        /// <returns>The list of strings.</returns>
+        public static List<string> ToStringListFromArrayPtr(IntPtr arrayPtr)
+        {
+            if (arrayPtr == IntPtr.Zero)
+            {
+                return null;
+            }
+
+            return ToPtrListFromPtr(arrayPtr).Select(ptr => Marshal.PtrToStringAnsi(ptr)).ToList();
+        }
+
+        /// <summary>
+        /// Finds all the pointers starting at the given location and puts them in a list. Stops when it finds zero for a pointer.
+        /// </summary>
+        /// <param name="arrayPtr">The address of the list of pointers.</param>
+        /// <returns>The list of pointers.</returns>
+        public static List<IntPtr> ToPtrListFromPtr(IntPtr arrayPtr)
+        {
+            var result = new List<IntPtr>();
+            int ptrSize = Marshal.SizeOf(typeof(IntPtr));
+            IntPtr currentPtr = Marshal.ReadIntPtr(arrayPtr);
+            for (int i = 0; currentPtr != IntPtr.Zero; i++)
+            {
+                result.Add(currentPtr);
+                currentPtr = Marshal.ReadIntPtr(arrayPtr, (i + 1) * ptrSize);
+            }
+
+            return result;
+        }
+
+        /// <summary>
+        /// Creates a native HandBrake list from the given managed list of pointers.
+        /// </summary>
+        /// <param name="list">The managed list to convert.</param>
+        /// <returns>The converted native list.</returns>
+        public static NativeList ToHandBrakeListFromPtrList(List<IntPtr> list)
+        {
+            NativeList returnList = NativeList.CreateList();
+
+            foreach (IntPtr ptr in list)
+            {
+                returnList.Add(ptr);
+            }
+
+            return returnList;
+        }
+
+        /// <summary>
+        /// Creates a native HandBrake list from the given managed list of structures.
+        /// </summary>
+        /// <typeparam name="T">The type of structures in the list.</typeparam>
+        /// <param name="list">The managed list to convert.</param>
+        /// <returns>The converted native list.</returns>
+        public static NativeList ToHandBrakeListFromList<T>(List<T> list)
+        {
+            NativeList returnList = NativeList.CreateList();
+            foreach (T item in list)
+            {
+                IntPtr itemPtr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(T)));
+                returnList.AllocatedMemory.Add(itemPtr);
+                Marshal.StructureToPtr(item, itemPtr, false);
+
+                returnList.Add(itemPtr);
+            }
+
+            return returnList;
+        }
+
+        /// <summary>
+        /// Reads in a list of objects given an interator and a conversion function.
+        /// </summary>
+        /// <typeparam name="T1">The type of the struct given by the iterator.</typeparam>
+        /// <typeparam name="T2">The object type to convert to.</typeparam>
+        /// <param name="iterator">The iterator to use to build the list.</param>
+        /// <param name="converter">The converter to convert from the struct to the object.</param>
+        /// <returns>The list of objects.</returns>
+        public static List<T2> ToListFromIterator<T1, T2>(Func<IntPtr, IntPtr> iterator, Func<T1, T2> converter)
+        {
+            return ToListFromIterator<T1>(iterator).Select(converter).ToList();
+        } 
+
+        /// <summary>
+        /// Reads in a list of structs given an iterator.
+        /// </summary>
+        /// <typeparam name="T">The type of the struct.</typeparam>
+        /// <param name="iterator">The iterator to use to build the list.</param>
+        /// <returns>The list of structs.</returns>
+        public static List<T> ToListFromIterator<T>(Func<IntPtr, IntPtr> iterator)
+        {
+            var structureList = new List<T>();
+            IntPtr current = IntPtr.Zero;
+
+            current = iterator(current);
+            while (current != IntPtr.Zero)
+            {
+                T encoder = ToStructureFromPtr<T>(current);
+                structureList.Add(encoder);
+
+                current = iterator(current);
+            }
+
+            return structureList;
+        }
+
+        /// <summary>
+        /// Closes the given job.
+        /// </summary>
+        /// <param name="nativeJobPtr">The pointer to the job.</param>
+        public static void CloseJob(IntPtr nativeJobPtr)
+        {
+            // Create a point to the job pointer first.
+            IntPtr nativeJobPtrPtr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(IntPtr)));
+
+            // Assign the new pointer to the job pointer and tell HB to clean the job up.
+            Marshal.WriteIntPtr(nativeJobPtrPtr, nativeJobPtr);
+            HBFunctions.hb_job_close(nativeJobPtrPtr);
+
+            // Free the pointer we used.
+            Marshal.FreeHGlobal(nativeJobPtrPtr);
+        }
+
+        /// <summary>
+        /// Frees all the memory locations in the given list.
+        /// </summary>
+        /// <param name="memoryList">The list of memory locations to free.</param>
+        public static void FreeMemory(List<IntPtr> memoryList)
+        {
+            foreach (IntPtr memoryLocation in memoryList)
+            {
+                Marshal.FreeHGlobal(memoryLocation);
+            }
+        }
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Helpers/NativeList.cs b/win/CS/HandBrake.ApplicationServices/Interop/Helpers/NativeList.cs
index 0731bd331..a692b6c75 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/Helpers/NativeList.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Helpers/NativeList.cs
@@ -17,111 +17,111 @@ namespace HandBrake.ApplicationServices.Interop.Helpers
     using HandBrake.ApplicationServices.Interop.HbLib;
 
     /// <summary>
-	/// Represents a HandBrake style native list.
-	/// </summary>
-	internal class NativeList : IDisposable
-	{
-		/// <summary>
-		/// Initializes a new instance of the NativeList class.
-		/// </summary>
-		/// <param name="listPtr">The pointer to use for the list.</param>
-		public NativeList(IntPtr listPtr)
-		{
-			this.Ptr = listPtr;
-		}
+    /// Represents a HandBrake style native list.
+    /// </summary>
+    internal class NativeList : IDisposable
+    {
+        /// <summary>
+        /// Initializes a new instance of the NativeList class.
+        /// </summary>
+        /// <param name="listPtr">The pointer to use for the list.</param>
+        public NativeList(IntPtr listPtr)
+        {
+            this.Ptr = listPtr;
+        }
 
-		/// <summary>
-		/// The list of native memory locations allocated for this list.
-		/// </summary>
-		private readonly List<IntPtr> allocatedMemory = new List<IntPtr>();
+        /// <summary>
+        /// The list of native memory locations allocated for this list.
+        /// </summary>
+        private readonly List<IntPtr> allocatedMemory = new List<IntPtr>();
 
-		/// <summary>
-		/// Gets the pointer to the native list.
-		/// </summary>
-		public IntPtr Ptr { get; private set; }
+        /// <summary>
+        /// Gets the pointer to the native list.
+        /// </summary>
+        public IntPtr Ptr { get; private set; }
 
-		/// <summary>
-		/// Gets the number of items in the list.
-		/// </summary>
-		public int Count
-		{
-			get
+        /// <summary>
+        /// Gets the number of items in the list.
+        /// </summary>
+        public int Count
+        {
+            get
             {
                 Debug.WriteLine("Got a Zero Pointer in the NativeList");
                 return this.Ptr == IntPtr.Zero ? 0 : HBFunctions.hb_list_count(this.Ptr);
-			}
-		}
+            }
+        }
 
-		/// <summary>
-		/// Gets the list of native memory locations allocated for this list.
-		/// </summary>
-		public List<IntPtr> AllocatedMemory
-		{
-			get
-			{
-				return this.allocatedMemory;
-			}
-		}
+        /// <summary>
+        /// Gets the list of native memory locations allocated for this list.
+        /// </summary>
+        public List<IntPtr> AllocatedMemory
+        {
+            get
+            {
+                return this.allocatedMemory;
+            }
+        }
 
-		/// <summary>
-		/// Adds an item to the end of the list.
-		/// </summary>
-		/// <param name="item">The item to add.</param>
-		public void Add(IntPtr item)
-		{
-			HBFunctions.hb_list_add(this.Ptr, item);
-		}
+        /// <summary>
+        /// Adds an item to the end of the list.
+        /// </summary>
+        /// <param name="item">The item to add.</param>
+        public void Add(IntPtr item)
+        {
+            HBFunctions.hb_list_add(this.Ptr, item);
+        }
 
-		/// <summary>
-		/// Inserts an item into the list.
-		/// </summary>
-		/// <param name="position">The index to insert the item at.</param>
-		/// <param name="item">The item to insert.</param>
-		public void Insert(int position, IntPtr item)
-		{
-			HBFunctions.hb_list_insert(this.Ptr, position, item);
-		}
+        /// <summary>
+        /// Inserts an item into the list.
+        /// </summary>
+        /// <param name="position">The index to insert the item at.</param>
+        /// <param name="item">The item to insert.</param>
+        public void Insert(int position, IntPtr item)
+        {
+            HBFunctions.hb_list_insert(this.Ptr, position, item);
+        }
 
-		/// <summary>
-		/// Removes an item from the list.
-		/// </summary>
-		/// <param name="item">The item to remove.</param>
-		public void Remove(IntPtr item)
-		{
-			HBFunctions.hb_list_rem(this.Ptr, item);
-		}
+        /// <summary>
+        /// Removes an item from the list.
+        /// </summary>
+        /// <param name="item">The item to remove.</param>
+        public void Remove(IntPtr item)
+        {
+            HBFunctions.hb_list_rem(this.Ptr, item);
+        }
 
-		/// <summary>
-		/// Gets an item out of the list.
-		/// </summary>
-		/// <param name="i">Index in the list.</param>
-		/// <returns>The item at that index in the list.</returns>
-		public IntPtr this[int i]
-		{
-			get
-			{
-				return HBFunctions.hb_list_item(this.Ptr, i);
-			}
-		}
+        /// <summary>
+        /// Gets an item out of the list.
+        /// </summary>
+        /// <param name="i">Index in the list.</param>
+        /// <returns>The item at that index in the list.</returns>
+        public IntPtr this[int i]
+        {
+            get
+            {
+                return HBFunctions.hb_list_item(this.Ptr, i);
+            }
+        }
 
-		/// <summary>
-		/// Disposes resources associated with this object.
-		/// </summary>
-		public void Dispose()
-		{
-			IntPtr listPtrPtr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(IntPtr)));
-			Marshal.WriteIntPtr(listPtrPtr, this.Ptr);
-			HBFunctions.hb_list_close(listPtrPtr);
-			Marshal.FreeHGlobal(listPtrPtr);
-		}
+        /// <summary>
+        /// Disposes resources associated with this object.
+        /// </summary>
+        public void Dispose()
+        {
+            IntPtr listPtrPtr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(IntPtr)));
+            Marshal.WriteIntPtr(listPtrPtr, this.Ptr);
+            HBFunctions.hb_list_close(listPtrPtr);
+            Marshal.FreeHGlobal(listPtrPtr);
+        }
 
-		/// <summary>
-		/// Creates a new list in unmanaged memory.
-		/// </summary>
-		/// <returns>The created list.</returns>
-		public static NativeList CreateList()
-		{
-			return new NativeList(HBFunctions.hb_list_init());
-		}
-	}
+        /// <summary>
+        /// Creates a new list in unmanaged memory.
+        /// </summary>
+        /// <returns>The created list.</returns>
+        public static NativeList CreateList()
+        {
+            return new NativeList(HBFunctions.hb_list_init());
+        }
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Helpers/Utilities.cs b/win/CS/HandBrake.ApplicationServices/Interop/Helpers/Utilities.cs
index cd44e12d8..eba89bcaa 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/Helpers/Utilities.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Helpers/Utilities.cs
@@ -13,7 +13,7 @@ namespace HandBrake.ApplicationServices.Interop.Helpers
     /// The utilities.
     /// </summary>
     internal static class Utilities
-	{
+    {
         /// <summary>
         /// Get the Greatest Common Factor
         /// </summary>
@@ -27,23 +27,23 @@ namespace HandBrake.ApplicationServices.Interop.Helpers
         /// The greatest common factor
         /// </returns>
         public static int GreatestCommonFactor(int a, int b)
-		{
-			if (a == 0)
-			{
-				return b;
-			}
+        {
+            if (a == 0)
+            {
+                return b;
+            }
 
-			if (b == 0)
-			{
-				return a;
-			}
+            if (b == 0)
+            {
+                return a;
+            }
 
-			if (a > b)
-			{
-				return GreatestCommonFactor(a % b, b);
-			}
+            if (a > b)
+            {
+                return GreatestCommonFactor(a % b, b);
+            }
             
             return GreatestCommonFactor(a, b % a);
-		}
-	}
+        }
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Model/BitrateLimits.cs b/win/CS/HandBrake.ApplicationServices/Interop/Model/BitrateLimits.cs
index 0cc7257a0..a748fc99e 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/Model/BitrateLimits.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/BitrateLimits.cs
@@ -9,19 +9,19 @@
 
 namespace HandBrake.ApplicationServices.Interop.Model
 {
-	/// <summary>
-	/// Represents bitrate limits as a range.
-	/// </summary>
-	public class BitrateLimits
-	{
-		/// <summary>
-		/// The inclusive lower limit for the bitrate.
-		/// </summary>
-		public int Low { get; set; }
+    /// <summary>
+    /// Represents bitrate limits as a range.
+    /// </summary>
+    public class BitrateLimits
+    {
+        /// <summary>
+        /// The inclusive lower limit for the bitrate.
+        /// </summary>
+        public int Low { get; set; }
 
-		/// <summary>
-		/// The inclusive upper limit for the bitrate.
-		/// </summary>
-		public int High { get; set; }
-	}
+        /// <summary>
+        /// The inclusive upper limit for the bitrate.
+        /// </summary>
+        public int High { get; set; }
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Model/Cropping.cs b/win/CS/HandBrake.ApplicationServices/Interop/Model/Cropping.cs
index 0c3201155..52c9e64d5 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/Model/Cropping.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Cropping.cs
@@ -13,7 +13,7 @@ namespace HandBrake.ApplicationServices.Interop.Model
     /// The Cropping Model
     /// </summary>
     public class Cropping
-	{
+    {
         /// <summary>
         /// Initializes a new instance of the <see cref="Cropping"/> class. 
         /// </summary>
@@ -86,14 +86,14 @@ namespace HandBrake.ApplicationServices.Interop.Model
         /// A Cloned copy
         /// </returns>
         public Cropping Clone()
-		{
-			return new Cropping
-			{
-				Top = this.Top,
-				Bottom = this.Bottom,
-				Left = this.Left,
-				Right = this.Right
-			};
-		}
-	}
+        {
+            return new Cropping
+            {
+                Top = this.Top,
+                Bottom = this.Bottom,
+                Left = this.Left,
+                Right = this.Right
+            };
+        }
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Model/EncodeJob.cs b/win/CS/HandBrake.ApplicationServices/Interop/Model/EncodeJob.cs
index 73eb17ad4..9357e21a3 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/Model/EncodeJob.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/EncodeJob.cs
@@ -14,17 +14,17 @@ namespace HandBrake.ApplicationServices.Interop.Model
     using HandBrake.ApplicationServices.Interop.Model.Encoding;
 
     /// <summary>
-	/// The encode job.
-	/// </summary>
-	public class EncodeJob
-	{
-	    /// <summary>
-	    /// Initializes a new instance of the <see cref="EncodeJob"/> class.
-	    /// </summary>
-	    public EncodeJob()
-	    {
+    /// The encode job.
+    /// </summary>
+    public class EncodeJob
+    {
+        /// <summary>
+        /// Initializes a new instance of the <see cref="EncodeJob"/> class.
+        /// </summary>
+        public EncodeJob()
+        {
             this.Cropping = new Cropping();
-	    }
+        }
 
         #region Source
 
@@ -415,30 +415,30 @@ namespace HandBrake.ApplicationServices.Interop.Model
         #region Public Methods
 
         /// <summary>
-		/// The clone.
-		/// </summary>
-		/// <returns>
-		/// The <see cref="EncodeJob"/>.
-		/// </returns>
-		public EncodeJob Clone()
-		{
-			var clone = new EncodeJob
-							{
-								SourceType = this.SourceType, 
-								SourcePath = this.SourcePath, 
-								Title = this.Title, 
-								Angle = this.Angle, 
-								RangeType = this.RangeType, 
-								ChapterStart = this.ChapterStart, 
-								ChapterEnd = this.ChapterEnd, 
-								SecondsStart = this.SecondsStart, 
-								SecondsEnd = this.SecondsEnd, 
-								FramesStart = this.FramesStart, 
-								FramesEnd = this.FramesEnd, 
-								Subtitles = this.Subtitles, 
-								UseDefaultChapterNames = this.UseDefaultChapterNames, 
-								DxvaDecoding = this.DxvaDecoding, 
-								OutputPath = this.OutputPath, 
+        /// The clone.
+        /// </summary>
+        /// <returns>
+        /// The <see cref="EncodeJob"/>.
+        /// </returns>
+        public EncodeJob Clone()
+        {
+            var clone = new EncodeJob
+                            {
+                                SourceType = this.SourceType, 
+                                SourcePath = this.SourcePath, 
+                                Title = this.Title, 
+                                Angle = this.Angle, 
+                                RangeType = this.RangeType, 
+                                ChapterStart = this.ChapterStart, 
+                                ChapterEnd = this.ChapterEnd, 
+                                SecondsStart = this.SecondsStart, 
+                                SecondsEnd = this.SecondsEnd, 
+                                FramesStart = this.FramesStart, 
+                                FramesEnd = this.FramesEnd, 
+                                Subtitles = this.Subtitles, 
+                                UseDefaultChapterNames = this.UseDefaultChapterNames, 
+                                DxvaDecoding = this.DxvaDecoding, 
+                                OutputPath = this.OutputPath, 
 
                                 ContainerName = this.ContainerName, 
                                 PreferredExtension = this.PreferredExtension, 
@@ -495,11 +495,11 @@ namespace HandBrake.ApplicationServices.Interop.Model
 
                                 AudioEncodings = new List<AudioEncoding>(this.AudioEncodings), 
                                 AudioEncoderFallback = this.AudioEncoderFallback
-							};
+                            };
 
-			return clone;
-		}
+            return clone;
+        }
 
-		#endregion
-	}
+        #endregion
+    }
 }
\ No newline at end of file
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Anamorphic.cs b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Anamorphic.cs
index 1b77203f4..1fe67db0b 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Anamorphic.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Anamorphic.cs
@@ -9,20 +9,20 @@
 
 namespace HandBrake.ApplicationServices.Interop.Model.Encoding
 {
-	using System.ComponentModel.DataAnnotations;
+    using System.ComponentModel.DataAnnotations;
 
     /// <summary>
     /// The anamorphic.
     /// </summary>
     public enum Anamorphic
-	{
-		[Display(Name = "None")]
-		None = 0,
-		[Display(Name = "Strict")]
-		Strict = 1,
-		[Display(Name = "Loose")]
-		Loose = 2,
-		[Display(Name = "Custom")]
-		Custom = 3
-	}
+    {
+        [Display(Name = "None")]
+        None = 0,
+        [Display(Name = "Strict")]
+        Strict = 1,
+        [Display(Name = "Loose")]
+        Loose = 2,
+        [Display(Name = "Custom")]
+        Custom = 3
+    }
 }
\ No newline at end of file
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/AudioEncodeRateType.cs b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/AudioEncodeRateType.cs
index 031c89b11..4fe209ccb 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/AudioEncodeRateType.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/AudioEncodeRateType.cs
@@ -13,9 +13,9 @@ namespace HandBrake.ApplicationServices.Interop.Model.Encoding
     /// The audio encode rate type.
     /// </summary>
     public enum AudioEncodeRateType
-	{
-		Bitrate,
-		Quality,
+    {
+        Bitrate,
+        Quality,
         Compression
-	}
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/AudioEncoding.cs b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/AudioEncoding.cs
index 381e9d2c0..96adc79dd 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/AudioEncoding.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/AudioEncoding.cs
@@ -9,81 +9,81 @@
 
 namespace HandBrake.ApplicationServices.Interop.Model.Encoding
 {
-	using System;
+    using System;
 
-	/// <summary>
-	/// The Audio Encoding Model
-	/// </summary>
-	public class AudioEncoding
-	{
-		/// <summary>
-		/// Initializes a new instance of the AudioEncoding class.
-		/// </summary>
-		public AudioEncoding()
-		{
-			// Initialize to -1 to differentiate a compression of 0 from uninitialized.
-			this.Compression = -1;
-		}
+    /// <summary>
+    /// The Audio Encoding Model
+    /// </summary>
+    public class AudioEncoding
+    {
+        /// <summary>
+        /// Initializes a new instance of the AudioEncoding class.
+        /// </summary>
+        public AudioEncoding()
+        {
+            // Initialize to -1 to differentiate a compression of 0 from uninitialized.
+            this.Compression = -1;
+        }
 
-		/// <summary>
-		/// Gets or sets the chosen track to apply the encoding to.
-		/// </summary>
-		/// <remarks>1-based index. 0 means apply to all tracks.</remarks>
-		public int InputNumber { get; set; }
+        /// <summary>
+        /// Gets or sets the chosen track to apply the encoding to.
+        /// </summary>
+        /// <remarks>1-based index. 0 means apply to all tracks.</remarks>
+        public int InputNumber { get; set; }
 
-		/// <summary>
-		/// Gets or sets the encoder to use.
-		/// </summary>
-		public string Encoder { get; set; }
+        /// <summary>
+        /// Gets or sets the encoder to use.
+        /// </summary>
+        public string Encoder { get; set; }
 
-		/// <summary>
-		/// Gets or sets the encode rate type (bitrate or quality).
-		/// </summary>
-		public AudioEncodeRateType EncodeRateType { get; set; }
+        /// <summary>
+        /// Gets or sets the encode rate type (bitrate or quality).
+        /// </summary>
+        public AudioEncodeRateType EncodeRateType { get; set; }
 
-		/// <summary>
-		/// Gets or sets the bitrate (in kbps) of this track.
-		/// </summary>
-		public int Bitrate { get; set; }
+        /// <summary>
+        /// Gets or sets the bitrate (in kbps) of this track.
+        /// </summary>
+        public int Bitrate { get; set; }
 
-		/// <summary>
-		/// Gets or sets the target audio quality for this track.
-		/// </summary>
-		public float Quality { get; set; }
+        /// <summary>
+        /// Gets or sets the target audio quality for this track.
+        /// </summary>
+        public float Quality { get; set; }
 
-		/// <summary>
-		/// Gets or sets the target audio compression for this track.
-		/// </summary>
-		public float Compression { get; set; }
+        /// <summary>
+        /// Gets or sets the target audio compression for this track.
+        /// </summary>
+        public float Compression { get; set; }
 
-		/// <summary>
-		/// Gets or sets the mixdown.
-		/// </summary>
-		public string Mixdown { get; set; }
+        /// <summary>
+        /// Gets or sets the mixdown.
+        /// </summary>
+        public string Mixdown { get; set; }
 
-		/// <summary>
-		/// Gets or sets the sample rate in Hz.
-		/// </summary>
-		public int SampleRateRaw { get; set; }
+        /// <summary>
+        /// Gets or sets the sample rate in Hz.
+        /// </summary>
+        public int SampleRateRaw { get; set; }
 
-		/// <summary>
-		/// Gets or sets Gain.
-		/// </summary>
-		public int Gain { get; set; }
+        /// <summary>
+        /// Gets or sets Gain.
+        /// </summary>
+        public int Gain { get; set; }
 
-		/// <summary>
-		/// Gets or sets Drc.
-		/// </summary>
-		public double Drc { get; set; }
+        /// <summary>
+        /// Gets or sets Drc.
+        /// </summary>
+        public double Drc { get; set; }
 
-		/// <summary>
-		/// Gets or sets Name.
-		/// </summary>
-		public string Name { get; set; }
+        /// <summary>
+        /// Gets or sets Name.
+        /// </summary>
+        public string Name { get; set; }
 
-	    /// <summary>
-	    /// Gets or sets a value indicating whether is passthru.
-	    /// </summary>
-	    public bool IsPassthru { get; set; }
-	}
+        /// <summary>
+        /// Gets or sets a value indicating whether is passthru.
+        /// </summary>
+        public bool IsPassthru { get; set; }
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Container.cs b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Container.cs
index ec59a6dbf..0140c5678 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Container.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Container.cs
@@ -9,20 +9,20 @@
 
 namespace HandBrake.ApplicationServices.Interop.Model.Encoding
 {
-	using System;
-	using System.ComponentModel.DataAnnotations;
+    using System;
+    using System.ComponentModel.DataAnnotations;
 
     /// <summary>
     /// The container.
     /// </summary>
     [Flags]
-	public enum Container
-	{
-		None = 0x0,
+    public enum Container
+    {
+        None = 0x0,
 
-		[Display(Name = "MP4")]
-		MP4,
-		[Display(Name = "MKV")]
-		MKV
-	}
+        [Display(Name = "MP4")]
+        MP4,
+        [Display(Name = "MKV")]
+        MKV
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Decomb.cs b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Decomb.cs
index a63375143..f49ccffc7 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Decomb.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Decomb.cs
@@ -13,11 +13,11 @@ namespace HandBrake.ApplicationServices.Interop.Model.Encoding
     /// The decomb.
     /// </summary>
     public enum Decomb
-	{
-		Off = 0,
-		Default = 2,
-		Fast = 3,
-		Bob = 4,
-		Custom = 1
-	}
+    {
+        Off = 0,
+        Default = 2,
+        Fast = 3,
+        Bob = 4,
+        Custom = 1
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Deinterlace.cs b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Deinterlace.cs
index 1ed41419f..f5f76b71e 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Deinterlace.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Deinterlace.cs
@@ -13,12 +13,12 @@ namespace HandBrake.ApplicationServices.Interop.Model.Encoding
     /// The deinterlace.
     /// </summary>
     public enum Deinterlace
-	{
-		Off = 0,
-		Fast = 2,
-		Slow = 3,
-		Slower = 4,
-		Bob = 5,
-		Custom = 1
-	}
+    {
+        Off = 0,
+        Fast = 2,
+        Slow = 3,
+        Slower = 4,
+        Bob = 5,
+        Custom = 1
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Denoise.cs b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Denoise.cs
index 2f24251ef..1bb510c29 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Denoise.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Denoise.cs
@@ -13,9 +13,9 @@ namespace HandBrake.ApplicationServices.Interop.Model.Encoding
     /// The denoise.
     /// </summary>
     public enum Denoise
-	{
-		Off = 0,
+    {
+        Off = 0,
         hqdn3d = 1,
-		NLMeans = 2,
-	}
+        NLMeans = 2,
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Detelecine.cs b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Detelecine.cs
index d16075af4..ff26a394d 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Detelecine.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Detelecine.cs
@@ -13,9 +13,9 @@ namespace HandBrake.ApplicationServices.Interop.Model.Encoding
     /// The detelecine.
     /// </summary>
     public enum Detelecine
-	{
-		Off = 0,
-		Default = 2,
-		Custom = 1
-	}
+    {
+        Off = 0,
+        Default = 2,
+        Custom = 1
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/HBRate.cs b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/HBRate.cs
index edae8f29a..e3315878d 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/HBRate.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/HBRate.cs
@@ -9,19 +9,19 @@
 
 namespace HandBrake.ApplicationServices.Interop.Model.Encoding
 {
-	/// <summary>
-	/// Represents a rate in HandBrake: audio sample rate or video framerate.
-	/// </summary>
-	public class HBRate
-	{
-		/// <summary>
-		/// Gets or sets the name to use for this rate.
-		/// </summary>
-		public string Name { get; set; }
+    /// <summary>
+    /// Represents a rate in HandBrake: audio sample rate or video framerate.
+    /// </summary>
+    public class HBRate
+    {
+        /// <summary>
+        /// Gets or sets the name to use for this rate.
+        /// </summary>
+        public string Name { get; set; }
 
-		/// <summary>
-		/// Gets or sets the raw rate.
-		/// </summary>
-		public int Rate { get; set; }
-	}
+        /// <summary>
+        /// Gets or sets the raw rate.
+        /// </summary>
+        public int Rate { get; set; }
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/HBVideoEncoder.cs b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/HBVideoEncoder.cs
index dd09452a1..a764f76b3 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/HBVideoEncoder.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/HBVideoEncoder.cs
@@ -9,12 +9,12 @@
 
 namespace HandBrake.ApplicationServices.Interop.Model.Encoding
 {
-	using System.Collections.Generic;
+    using System.Collections.Generic;
 
-	using HandBrake.ApplicationServices.Interop.HbLib;
-	using HandBrake.ApplicationServices.Interop.Helpers;
+    using HandBrake.ApplicationServices.Interop.HbLib;
+    using HandBrake.ApplicationServices.Interop.Helpers;
 
-	/// <summary>
+    /// <summary>
     /// The hb video encoder.
     /// </summary>
     public class HBVideoEncoder
@@ -39,48 +39,48 @@ namespace HandBrake.ApplicationServices.Interop.Model.Encoding
         /// </summary>
         public string ShortName { get; set; }
 
-		/// <summary>
-		/// Gets the list of presets this encoder supports. (null if the encoder doesn't support presets)
-		/// </summary>
-		public List<string> Presets
-		{
-			get
-			{
-				return InteropUtilities.ToStringListFromArrayPtr(HBFunctions.hb_video_encoder_get_presets(this.Id));
-			}
-		}
+        /// <summary>
+        /// Gets the list of presets this encoder supports. (null if the encoder doesn't support presets)
+        /// </summary>
+        public List<string> Presets
+        {
+            get
+            {
+                return InteropUtilities.ToStringListFromArrayPtr(HBFunctions.hb_video_encoder_get_presets(this.Id));
+            }
+        }
 
-		/// <summary>
-		/// Gets the list of tunes this encoder supports. (null if the encoder doesn't support tunes)
-		/// </summary>
-		public List<string> Tunes
-		{
-			get
-			{
-				return InteropUtilities.ToStringListFromArrayPtr(HBFunctions.hb_video_encoder_get_tunes(this.Id));
-			}
-		}
+        /// <summary>
+        /// Gets the list of tunes this encoder supports. (null if the encoder doesn't support tunes)
+        /// </summary>
+        public List<string> Tunes
+        {
+            get
+            {
+                return InteropUtilities.ToStringListFromArrayPtr(HBFunctions.hb_video_encoder_get_tunes(this.Id));
+            }
+        }
 
-		/// <summary>
-		/// Gets the list of profiles this encoder supports. (null if the encoder doesn't support profiles)
-		/// </summary>
-		public List<string> Profiles
-		{
-			get
-			{
-				return InteropUtilities.ToStringListFromArrayPtr(HBFunctions.hb_video_encoder_get_profiles(this.Id));
-			}
-		}
+        /// <summary>
+        /// Gets the list of profiles this encoder supports. (null if the encoder doesn't support profiles)
+        /// </summary>
+        public List<string> Profiles
+        {
+            get
+            {
+                return InteropUtilities.ToStringListFromArrayPtr(HBFunctions.hb_video_encoder_get_profiles(this.Id));
+            }
+        }
 
-		/// <summary>
-		/// Gets the list of levels this encoder supports. (null if the encoder doesn't support levels)
-		/// </summary>
-		public List<string> Levels
-		{
-			get
-			{
-				return InteropUtilities.ToStringListFromArrayPtr(HBFunctions.hb_video_encoder_get_levels(this.Id));
-			}
-		} 
+        /// <summary>
+        /// Gets the list of levels this encoder supports. (null if the encoder doesn't support levels)
+        /// </summary>
+        public List<string> Levels
+        {
+            get
+            {
+                return InteropUtilities.ToStringListFromArrayPtr(HBFunctions.hb_video_encoder_get_levels(this.Id));
+            }
+        } 
     }
 }
\ No newline at end of file
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Mixdown.cs b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Mixdown.cs
index 4ca750adb..53e4f87e2 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Mixdown.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Mixdown.cs
@@ -9,24 +9,24 @@
 
 namespace HandBrake.ApplicationServices.Interop.Model.Encoding
 {
-	using System.ComponentModel.DataAnnotations;
+    using System.ComponentModel.DataAnnotations;
 
-	/// <summary>
-	/// The Audio Mixdown Enumeration
-	/// </summary>
-	public enum Mixdown
-	{
-		[Display(Name = "Dolby Pro Logic II")]
-		DolbyProLogicII = 0,
+    /// <summary>
+    /// The Audio Mixdown Enumeration
+    /// </summary>
+    public enum Mixdown
+    {
+        [Display(Name = "Dolby Pro Logic II")]
+        DolbyProLogicII = 0,
 
         [Display(Name = "None")]
         None,
 
-		[Display(Name = "Automatic")]
-		Auto,
+        [Display(Name = "Automatic")]
+        Auto,
 
-		[Display(Name = "Mono")]
-		Mono,
+        [Display(Name = "Mono")]
+        Mono,
 
         [Display(Name = "Mono (Left Only)")]
         LeftOnly,
@@ -34,14 +34,14 @@ namespace HandBrake.ApplicationServices.Interop.Model.Encoding
         [Display(Name = "Mono (Right Only)")]
         RightOnly,
 
-		[Display(Name = "Stereo")]
-		Stereo,
+        [Display(Name = "Stereo")]
+        Stereo,
 
-		[Display(Name = "Dolby Surround")]
-		DolbySurround,
+        [Display(Name = "Dolby Surround")]
+        DolbySurround,
 
-		[Display(Name = "5.1 Channels")]
-		FivePoint1Channels,
+        [Display(Name = "5.1 Channels")]
+        FivePoint1Channels,
 
         [Display(Name = "6.1 Channels")]
         SixPoint1Channels,
@@ -51,5 +51,5 @@ namespace HandBrake.ApplicationServices.Interop.Model.Encoding
 
         [Display(Name = "7.1 (5F/2R/LFE)")]
         Five_2_LFE,
-	}
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/OutputExtension.cs b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/OutputExtension.cs
index 08534fd19..5154eb58e 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/OutputExtension.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/OutputExtension.cs
@@ -13,8 +13,8 @@ namespace HandBrake.ApplicationServices.Interop.Model.Encoding
     /// The output extension.
     /// </summary>
     public enum OutputExtension
-	{
-		Mp4,
-		M4v
-	}
+    {
+        Mp4,
+        M4v
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/PictureRotation.cs b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/PictureRotation.cs
index 38fc68980..76dc2846b 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/PictureRotation.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/PictureRotation.cs
@@ -9,14 +9,14 @@
 
 namespace HandBrake.ApplicationServices.Interop.Model.Encoding
 {
-	/// <summary>
-	/// Possible picture rotations.
-	/// </summary>
-	public enum PictureRotation
-	{
-		None = 0,
-		Clockwise90,
-		Clockwise180,
-		Clockwise270
-	}
+    /// <summary>
+    /// Possible picture rotations.
+    /// </summary>
+    public enum PictureRotation
+    {
+        None = 0,
+        Clockwise90,
+        Clockwise180,
+        Clockwise270
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/ScaleMethod.cs b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/ScaleMethod.cs
index 203b5a583..5d49ec2ae 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/ScaleMethod.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/ScaleMethod.cs
@@ -9,19 +9,19 @@
 
 namespace HandBrake.ApplicationServices.Interop.Model.Encoding
 {
-	/// <summary>
-	/// Enumeration of rescaling algorithms.
-	/// </summary>
-	public enum ScaleMethod
-	{
-		/// <summary>
-		/// Standard software scaling. Highest quality.
-		/// </summary>
-		Lanczos = 0,
+    /// <summary>
+    /// Enumeration of rescaling algorithms.
+    /// </summary>
+    public enum ScaleMethod
+    {
+        /// <summary>
+        /// Standard software scaling. Highest quality.
+        /// </summary>
+        Lanczos = 0,
 
-		/// <summary>
-		/// OpenCL-assisted bicubic scaling.
-		/// </summary>
-		Bicubic = 1
-	}
+        /// <summary>
+        /// OpenCL-assisted bicubic scaling.
+        /// </summary>
+        Bicubic = 1
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/VideoEncodeRateType.cs b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/VideoEncodeRateType.cs
index 3fca0466a..beb5ca949 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/VideoEncodeRateType.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/VideoEncodeRateType.cs
@@ -13,9 +13,9 @@ namespace HandBrake.ApplicationServices.Interop.Model.Encoding
     /// The video encode rate type.
     /// </summary>
     public enum VideoEncodeRateType
-	{
-		TargetSize = 0,
-		AverageBitrate = 1,
-		ConstantQuality = 2
-	}
+    {
+        TargetSize = 0,
+        AverageBitrate = 1,
+        ConstantQuality = 2
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/VideoEncoder.cs b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/VideoEncoder.cs
index ce88223bb..0752b1277 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/VideoEncoder.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/VideoEncoder.cs
@@ -9,34 +9,34 @@
 
 namespace HandBrake.ApplicationServices.Interop.Model.Encoding
 {
-	using System.ComponentModel.DataAnnotations;
+    using System.ComponentModel.DataAnnotations;
 
-	using HandBrake.ApplicationServices.Interop.Attributes;
+    using HandBrake.ApplicationServices.Interop.Attributes;
 
     /// <summary>
     /// The video encoder.
     /// </summary>
     public enum VideoEncoder
-	{
-		[Display(Name = "H.264 (x264)")]
+    {
+        [Display(Name = "H.264 (x264)")]
         [ShortName("x264")]
-		X264 = 0,
+        X264 = 0,
 
         [Display(Name = "H.264 (Intel QSV)")]
         [ShortName("qsv_h264")]
         QuickSync,
 
-		[Display(Name = "MPEG-4")]
+        [Display(Name = "MPEG-4")]
         [ShortName("mpeg4")]
-		FFMpeg,
+        FFMpeg,
 
-		[Display(Name = "MPEG-2")]
+        [Display(Name = "MPEG-2")]
         [ShortName("mpeg2")]
-		FFMpeg2,
+        FFMpeg2,
 
-		[Display(Name = "Theora")]
+        [Display(Name = "Theora")]
         [ShortName("theora")]
-		Theora,
+        Theora,
 
         [Display(Name = "H.265 (x265)")]
         [ShortName("x265")]
@@ -45,5 +45,5 @@ namespace HandBrake.ApplicationServices.Interop.Model.Encoding
         [Display(Name = "VP8")]
         [ShortName("vp8")]
         VP8
-	}
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Model/Language.cs b/win/CS/HandBrake.ApplicationServices/Interop/Model/Language.cs
index b6a0d61b4..89e997ef8 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/Model/Language.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Language.cs
@@ -9,40 +9,40 @@
 
 namespace HandBrake.ApplicationServices.Interop.Model
 {
-	/// <summary>
-	/// Represents a language.
-	/// </summary>
-	public class Language
-	{
-		/// <summary>
-		/// Gets or sets the english name of the language.
-		/// </summary>
-		public string EnglishName { get; set; }
+    /// <summary>
+    /// Represents a language.
+    /// </summary>
+    public class Language
+    {
+        /// <summary>
+        /// Gets or sets the english name of the language.
+        /// </summary>
+        public string EnglishName { get; set; }
 
-		/// <summary>
-		/// Gets or sets the native name of the language.
-		/// </summary>
-		public string NativeName { get; set; }
+        /// <summary>
+        /// Gets or sets the native name of the language.
+        /// </summary>
+        public string NativeName { get; set; }
 
-		/// <summary>
-		/// Gets or sets the language code.
-		/// </summary>
-		public string Code { get; set; }
+        /// <summary>
+        /// Gets or sets the language code.
+        /// </summary>
+        public string Code { get; set; }
 
-		/// <summary>
-		/// Gets the display string for the language.
-		/// </summary>
-		public string Display
-		{
-			get
-			{
-				if (!string.IsNullOrEmpty(this.NativeName) && this.NativeName != this.EnglishName)
-				{
-					return this.EnglishName + " (" + this.NativeName + ")";
-				}
+        /// <summary>
+        /// Gets the display string for the language.
+        /// </summary>
+        public string Display
+        {
+            get
+            {
+                if (!string.IsNullOrEmpty(this.NativeName) && this.NativeName != this.EnglishName)
+                {
+                    return this.EnglishName + " (" + this.NativeName + ")";
+                }
 
-				return this.EnglishName;
-			}
-		}
-	}
+                return this.EnglishName;
+            }
+        }
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Model/Scan/AudioTrack.cs b/win/CS/HandBrake.ApplicationServices/Interop/Model/Scan/AudioTrack.cs
index 4a7fe21a4..527b3c4f6 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/Model/Scan/AudioTrack.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Scan/AudioTrack.cs
@@ -10,98 +10,98 @@
 namespace HandBrake.ApplicationServices.Interop.Model.Scan
 {
     /// <summary>
-	/// An object represending an AudioTrack associated with a Title, in a DVD
-	/// </summary>
-	public class AudioTrack
-	{
-		/// <summary>
-		/// Gets or sets the track number of this Audio Track
-		/// </summary>
-		public int TrackNumber { get; set; }
+    /// An object represending an AudioTrack associated with a Title, in a DVD
+    /// </summary>
+    public class AudioTrack
+    {
+        /// <summary>
+        /// Gets or sets the track number of this Audio Track
+        /// </summary>
+        public int TrackNumber { get; set; }
 
-		/// <summary>
-		/// Gets or sets the audio codec ID for this track.
-		/// </summary>
-		public uint CodecId { get; set; }
+        /// <summary>
+        /// Gets or sets the audio codec ID for this track.
+        /// </summary>
+        public uint CodecId { get; set; }
 
-		/// <summary>
-		/// Gets or sets the language (if detected) of this Audio Track
-		/// </summary>
-		public string Language { get; set; }
+        /// <summary>
+        /// Gets or sets the language (if detected) of this Audio Track
+        /// </summary>
+        public string Language { get; set; }
 
-		/// <summary>
-		/// Gets or sets the language code for this audio track.
-		/// </summary>
-		public string LanguageCode { get; set; }
+        /// <summary>
+        /// Gets or sets the language code for this audio track.
+        /// </summary>
+        public string LanguageCode { get; set; }
 
-		/// <summary>
-		/// Gets or sets the description for this audio track.
-		/// </summary>
-		public string Description { get; set; }
+        /// <summary>
+        /// Gets or sets the description for this audio track.
+        /// </summary>
+        public string Description { get; set; }
 
-		/// <summary>
-		/// Gets or sets the channel layout of this Audio Track.
-		/// </summary>
-		public ulong ChannelLayout { get; set; }
+        /// <summary>
+        /// Gets or sets the channel layout of this Audio Track.
+        /// </summary>
+        public ulong ChannelLayout { get; set; }
 
-		/// <summary>
-		/// Gets or sets the frequency (in Hz) of this Audio Track
-		/// </summary>
-		public int SampleRate { get; set; }
+        /// <summary>
+        /// Gets or sets the frequency (in Hz) of this Audio Track
+        /// </summary>
+        public int SampleRate { get; set; }
 
-		/// <summary>
-		/// Gets or sets the bitrate (in bits/sec) of this Audio Track.
-		/// </summary>
-		public int Bitrate { get; set; }
+        /// <summary>
+        /// Gets or sets the bitrate (in bits/sec) of this Audio Track.
+        /// </summary>
+        public int Bitrate { get; set; }
 
-		/// <summary>
-		/// Gets the display string for this audio track.
-		/// </summary>
-		public string Display
-		{
-			get
-			{
-				return this.GetDisplayString(true);
-			}
-		}
+        /// <summary>
+        /// Gets the display string for this audio track.
+        /// </summary>
+        public string Display
+        {
+            get
+            {
+                return this.GetDisplayString(true);
+            }
+        }
 
-		/// <summary>
-		/// Gets the display string for this audio track (not including track number)
-		/// </summary>
-		public string NoTrackDisplay
-		{
-			get
-			{
-				return this.GetDisplayString(false);
-			}
-		}
+        /// <summary>
+        /// Gets the display string for this audio track (not including track number)
+        /// </summary>
+        public string NoTrackDisplay
+        {
+            get
+            {
+                return this.GetDisplayString(false);
+            }
+        }
 
-		/// <summary>
-		/// Override of the ToString method to make this object easier to use in the UI
-		/// </summary>
-		/// <returns>A string formatted as: {track #} {language} ({format}) ({sub-format})</returns>
-		public override string ToString()
-		{
-			return this.GetDisplayString(true);
-		}
+        /// <summary>
+        /// Override of the ToString method to make this object easier to use in the UI
+        /// </summary>
+        /// <returns>A string formatted as: {track #} {language} ({format}) ({sub-format})</returns>
+        public override string ToString()
+        {
+            return this.GetDisplayString(true);
+        }
 
-	    /// <summary>
-	    /// The get display string.
-	    /// </summary>
-	    /// <param name="includeTrackNumber">
-	    /// The include track number.
-	    /// </param>
-	    /// <returns>
-	    /// The <see cref="string"/>.
-	    /// </returns>
-	    private string GetDisplayString(bool includeTrackNumber)
-	    {
-	        if (includeTrackNumber)
-			{
-				return this.TrackNumber + " " + this.Description;
-			}
-	        
+        /// <summary>
+        /// The get display string.
+        /// </summary>
+        /// <param name="includeTrackNumber">
+        /// The include track number.
+        /// </param>
+        /// <returns>
+        /// The <see cref="string"/>.
+        /// </returns>
+        private string GetDisplayString(bool includeTrackNumber)
+        {
+            if (includeTrackNumber)
+            {
+                return this.TrackNumber + " " + this.Description;
+            }
+            
             return this.Description;
-	    }
-	}
+        }
+    }
 }
\ No newline at end of file
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Model/Scan/Chapter.cs b/win/CS/HandBrake.ApplicationServices/Interop/Model/Scan/Chapter.cs
index f0e63ba3e..720906059 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/Model/Scan/Chapter.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Scan/Chapter.cs
@@ -13,32 +13,32 @@ namespace HandBrake.ApplicationServices.Interop.Model.Scan
     using System.Globalization;
 
     /// <summary>
-	/// An object representing a Chapter aosciated with a Title, in a DVD
-	/// </summary>
-	public class Chapter
-	{
+    /// An object representing a Chapter aosciated with a Title, in a DVD
+    /// </summary>
+    public class Chapter
+    {
         /// <summary>
         /// Gets or sets the name.
         /// </summary>
         public string Name { get; set; }
 
-		/// <summary>
-		/// Gets or sets the number of this Chapter, in regards to its parent Title
-		/// </summary>
-		public int ChapterNumber { get; set; }
+        /// <summary>
+        /// Gets or sets the number of this Chapter, in regards to its parent Title
+        /// </summary>
+        public int ChapterNumber { get; set; }
 
-		/// <summary>
-		/// Gets or sets the duration of this chapter.
-		/// </summary>
-		public TimeSpan Duration { get; set; }
+        /// <summary>
+        /// Gets or sets the duration of this chapter.
+        /// </summary>
+        public TimeSpan Duration { get; set; }
 
-		/// <summary>
-		/// Override of the ToString method to make this object easier to use in the UI
-		/// </summary>
-		/// <returns>A string formatted as: {chapter #}</returns>
-		public override string ToString()
-		{
-			return this.ChapterNumber.ToString(CultureInfo.InvariantCulture);
-		}
-	}
+        /// <summary>
+        /// Override of the ToString method to make this object easier to use in the UI
+        /// </summary>
+        /// <returns>A string formatted as: {chapter #}</returns>
+        public override string ToString()
+        {
+            return this.ChapterNumber.ToString(CultureInfo.InvariantCulture);
+        }
+    }
 }
\ No newline at end of file
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Model/Scan/InputType.cs b/win/CS/HandBrake.ApplicationServices/Interop/Model/Scan/InputType.cs
index 892d68116..4366d5a74 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/Model/Scan/InputType.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Scan/InputType.cs
@@ -15,17 +15,17 @@ namespace HandBrake.ApplicationServices.Interop.Model.Scan
     /// The input type.
     /// </summary>
     public enum InputType
-	{
-		[Display(Name = "File")]
-		Stream,
+    {
+        [Display(Name = "File")]
+        Stream,
 
-		[Display(Name = "DVD")]
-		Dvd,
+        [Display(Name = "DVD")]
+        Dvd,
 
-		[Display(Name = "Blu-ray")]
-		Bluray,
+        [Display(Name = "Blu-ray")]
+        Bluray,
 
         [Display(Name = "File")]
         FFStream
-	}
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Model/Scan/Subtitle.cs b/win/CS/HandBrake.ApplicationServices/Interop/Model/Scan/Subtitle.cs
index 7e09d21c5..6f8a5b027 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/Model/Scan/Subtitle.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Scan/Subtitle.cs
@@ -12,85 +12,85 @@ namespace HandBrake.ApplicationServices.Interop.Model.Scan
     using HandBrake.ApplicationServices.Interop.HbLib;
 
     /// <summary>
-	/// An object that represents a subtitle associated with a Title, in a DVD
-	/// </summary>
-	public class Subtitle
-	{
-		/// <summary>
-		/// Gets or sets the track number of this Subtitle
-		/// </summary>
-		public int TrackNumber { get; set; }
+    /// An object that represents a subtitle associated with a Title, in a DVD
+    /// </summary>
+    public class Subtitle
+    {
+        /// <summary>
+        /// Gets or sets the track number of this Subtitle
+        /// </summary>
+        public int TrackNumber { get; set; }
 
-		/// <summary>
-		/// Gets or sets the language (if detected) of this Subtitle
-		/// </summary>
-		public string Language { get; set; }
+        /// <summary>
+        /// Gets or sets the language (if detected) of this Subtitle
+        /// </summary>
+        public string Language { get; set; }
 
-		/// <summary>
-		/// Gets or sets the Langauage Code.
-		/// </summary>
-		public string LanguageCode { get; set; }
+        /// <summary>
+        /// Gets or sets the Langauage Code.
+        /// </summary>
+        public string LanguageCode { get; set; }
 
-		/// <summary>
-		/// Gets or sets the subtitle source.
-		/// </summary>
-		public SubtitleSource SubtitleSource { get; set; }
+        /// <summary>
+        /// Gets or sets the subtitle source.
+        /// </summary>
+        public SubtitleSource SubtitleSource { get; set; }
 
-		/// <summary>
-		/// Gets or sets the subtitle source raw integer.
-		/// </summary>
-		public int SubtitleSourceInt { get; set; }
+        /// <summary>
+        /// Gets or sets the subtitle source raw integer.
+        /// </summary>
+        public int SubtitleSourceInt { get; set; }
 
-		/// <summary>
-		/// Gets a value indicating whether the "forced only" flag can be set on this subtitle.
-		/// </summary>
-		public bool CanSetForcedOnly
-		{
-			get
-			{
-				return HBFunctions.hb_subtitle_can_force(this.SubtitleSourceInt) > 0;
-			}
-		}
+        /// <summary>
+        /// Gets a value indicating whether the "forced only" flag can be set on this subtitle.
+        /// </summary>
+        public bool CanSetForcedOnly
+        {
+            get
+            {
+                return HBFunctions.hb_subtitle_can_force(this.SubtitleSourceInt) > 0;
+            }
+        }
 
-		/// <summary>
-		/// Gets a value indicating whether this subtitle can be burned into the picture.
-		/// </summary>
-		public bool CanBurn
-		{
-			get
-			{
-				return HBFunctions.hb_subtitle_can_burn(this.SubtitleSourceInt) > 0;
-			}
-		}
+        /// <summary>
+        /// Gets a value indicating whether this subtitle can be burned into the picture.
+        /// </summary>
+        public bool CanBurn
+        {
+            get
+            {
+                return HBFunctions.hb_subtitle_can_burn(this.SubtitleSourceInt) > 0;
+            }
+        }
 
-		/// <summary>
-		/// Returns true if the subtitle can be passed through using the given muxer.
-		/// </summary>
-		/// <param name="muxer">The muxer ID.</param>
-		/// <returns>True if the subtitle can be passed through.</returns>
-		public bool CanPass(int muxer)
-		{
-			return HBFunctions.hb_subtitle_can_pass(this.SubtitleSourceInt, muxer) > 0;
-		}
+        /// <summary>
+        /// Returns true if the subtitle can be passed through using the given muxer.
+        /// </summary>
+        /// <param name="muxer">The muxer ID.</param>
+        /// <returns>True if the subtitle can be passed through.</returns>
+        public bool CanPass(int muxer)
+        {
+            return HBFunctions.hb_subtitle_can_pass(this.SubtitleSourceInt, muxer) > 0;
+        }
 
-		/// <summary>
-		/// Override of the ToString method to make this object easier to use in the UI
-		/// </summary>
-		/// <returns>A string formatted as: {track #} {language}</returns>
-		public override string ToString()
-		{
-			return string.Format("{0} {1} ({2})", this.TrackNumber, this.Language, this.SubtitleSource);
-		}
+        /// <summary>
+        /// Override of the ToString method to make this object easier to use in the UI
+        /// </summary>
+        /// <returns>A string formatted as: {track #} {language}</returns>
+        public override string ToString()
+        {
+            return string.Format("{0} {1} ({2})", this.TrackNumber, this.Language, this.SubtitleSource);
+        }
 
-		/// <summary>
-		/// Gets the display.
-		/// </summary>
-		public string Display
-		{
-			get
-			{
-				return this.ToString();
-			}
-		}
-	}
+        /// <summary>
+        /// Gets the display.
+        /// </summary>
+        public string Display
+        {
+            get
+            {
+                return this.ToString();
+            }
+        }
+    }
 }
\ No newline at end of file
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Model/Scan/SubtitleSource.cs b/win/CS/HandBrake.ApplicationServices/Interop/Model/Scan/SubtitleSource.cs
index e29a1a413..d51ff4ef6 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/Model/Scan/SubtitleSource.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Scan/SubtitleSource.cs
@@ -13,14 +13,14 @@ namespace HandBrake.ApplicationServices.Interop.Model.Scan
     /// The subtitle source.
     /// </summary>
     public enum SubtitleSource
-	{
-		VobSub,
-		SRT,
-		CC608,
-		CC708,
-		UTF8,
-		TX3G,
-		SSA,
-		PGS
-	}
+    {
+        VobSub,
+        SRT,
+        CC608,
+        CC708,
+        UTF8,
+        TX3G,
+        SSA,
+        PGS
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Model/Scan/Title.cs b/win/CS/HandBrake.ApplicationServices/Interop/Model/Scan/Title.cs
index fc8f6ea07..37013ac48 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/Model/Scan/Title.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Scan/Title.cs
@@ -15,170 +15,170 @@ namespace HandBrake.ApplicationServices.Interop.Model.Scan
     using HandBrake.ApplicationServices.Interop.Model;
 
     /// <summary>
-	/// An object that represents a single Title of a DVD
-	/// </summary>
-	public class Title
-	{
-	    /// <summary>
-	    /// The audio tracks.
-	    /// </summary>
-	    private readonly List<AudioTrack> audioTracks;
-
-	    /// <summary>
-	    /// The chapters.
-	    /// </summary>
-	    private readonly List<Chapter> chapters;
-
-	    /// <summary>
-	    /// The subtitles.
-	    /// </summary>
-	    private readonly List<Subtitle> subtitles;
-		
-		/// <summary>
-		/// Initializes a new instance of the Title class.
-		/// </summary>
-		public Title()
-		{
-			this.audioTracks = new List<AudioTrack>();
-			this.chapters = new List<Chapter>();
-			this.subtitles = new List<Subtitle>();
-		}
-
-		/// <summary>
-		/// Gets or sets the input type of this title.
-		/// </summary>
-		public InputType InputType { get; set; }
-
-		/// <summary>
-		/// Gets a collection of chapters in this Title
-		/// </summary>
-		public List<Chapter> Chapters
-		{
-			get { return this.chapters; }
-		}
-
-		/// <summary>
-		/// Gets a collection of audio tracks associated with this Title
-		/// </summary>
-		public List<AudioTrack> AudioTracks
-		{
-			get { return this.audioTracks; }
-		}
-
-		/// <summary>
-		/// Gets a collection of subtitles associated with this Title
-		/// </summary>
-		public List<Subtitle> Subtitles
-		{
-			get { return this.subtitles; }
-		}
-
-		/// <summary>
-		/// Gets or sets the track number of this Title (1-based).
-		/// </summary>
-		public int TitleNumber { get; set; }
-
-		/// <summary>
-		/// Gets or sets the playlist number this title came from.
-		/// </summary>
-		public int Playlist { get; set; }
-
-		/// <summary>
-		/// Gets or sets the duration of this title.
-		/// </summary>
-		public TimeSpan Duration { get; set; }
-
-		/// <summary>
-		/// Gets or sets the resolution (width/height) of this Title
-		/// </summary>
-		public Size Resolution { get; set; }
-
-		/// <summary>
-		/// Gets or sets the number of angles on the title.
-		/// </summary>
-		public int AngleCount { get; set; }
-
-		/// <summary>
-		/// Gets or sets the pixel aspect ratio.
-		/// </summary>
-		public Size ParVal { get; set; }
-
-		/// <summary>
-		/// Gets or sets the automatically detected crop region for this Title.
-		/// </summary>
-		public Cropping AutoCropDimensions { get; set; }
-
-		/// <summary>
-		/// Gets or sets the name of the video codec for this title.
-		/// </summary>
-		public string VideoCodecName { get; set; }
-
-		/// <summary>
-		/// Gets or sets the video frame rate for this title.
-		/// </summary>
-		public double Framerate { get; set; }
-
-		/// <summary>
-		/// Gets or sets the video frame rate numerator.
-		/// </summary>
-		public int FramerateNumerator { get; set; }
-
-		/// <summary>
-		/// Gets or sets the video frame rate denominator.
-		/// </summary>
-		public int FramerateDenominator { get; set; }
-
-		/// <summary>
-		/// Gets the total number of frames in this title.
-		/// </summary>
-		public int Frames
-		{
-			get
-			{
-				return (int)Math.Ceiling(this.Duration.TotalSeconds * this.Framerate);
-			}
-		}
-
-	    /// <summary>
-	    /// Gets or sets the path.
-	    /// </summary>
-	    public string Path { get; set; }
-
-		/// <summary>
-		/// Override of the ToString method to provide an easy way to use this object in the UI
-		/// </summary>
-		/// <returns>A string representing this track in the format: {title #}[ {playlist source}] (00:00:00)</returns>
-		public override string ToString()
-		{
-			string playlistPortion = string.Empty;
-			if (this.InputType == InputType.Bluray)
-			{
-				playlistPortion = string.Format(" {0:d5}.MPLS", this.Playlist);
-			}
-
-			return string.Format(
-				"{0}{1} ({2:00}:{3:00}:{4:00})", 
-				this.TitleNumber, 
-				playlistPortion,
-				this.Duration.Hours,
-				this.Duration.Minutes, 
-				this.Duration.Seconds);
-		}
-
-		/// <summary>
-		/// Gets the display string for this title.
-		/// </summary>
-		public string Display
-		{
-			get
-			{
-				return this.ToString();
-			}
-		}
+    /// An object that represents a single Title of a DVD
+    /// </summary>
+    public class Title
+    {
+        /// <summary>
+        /// The audio tracks.
+        /// </summary>
+        private readonly List<AudioTrack> audioTracks;
+
+        /// <summary>
+        /// The chapters.
+        /// </summary>
+        private readonly List<Chapter> chapters;
+
+        /// <summary>
+        /// The subtitles.
+        /// </summary>
+        private readonly List<Subtitle> subtitles;
+        
+        /// <summary>
+        /// Initializes a new instance of the Title class.
+        /// </summary>
+        public Title()
+        {
+            this.audioTracks = new List<AudioTrack>();
+            this.chapters = new List<Chapter>();
+            this.subtitles = new List<Subtitle>();
+        }
+
+        /// <summary>
+        /// Gets or sets the input type of this title.
+        /// </summary>
+        public InputType InputType { get; set; }
+
+        /// <summary>
+        /// Gets a collection of chapters in this Title
+        /// </summary>
+        public List<Chapter> Chapters
+        {
+            get { return this.chapters; }
+        }
+
+        /// <summary>
+        /// Gets a collection of audio tracks associated with this Title
+        /// </summary>
+        public List<AudioTrack> AudioTracks
+        {
+            get { return this.audioTracks; }
+        }
+
+        /// <summary>
+        /// Gets a collection of subtitles associated with this Title
+        /// </summary>
+        public List<Subtitle> Subtitles
+        {
+            get { return this.subtitles; }
+        }
+
+        /// <summary>
+        /// Gets or sets the track number of this Title (1-based).
+        /// </summary>
+        public int TitleNumber { get; set; }
+
+        /// <summary>
+        /// Gets or sets the playlist number this title came from.
+        /// </summary>
+        public int Playlist { get; set; }
+
+        /// <summary>
+        /// Gets or sets the duration of this title.
+        /// </summary>
+        public TimeSpan Duration { get; set; }
+
+        /// <summary>
+        /// Gets or sets the resolution (width/height) of this Title
+        /// </summary>
+        public Size Resolution { get; set; }
+
+        /// <summary>
+        /// Gets or sets the number of angles on the title.
+        /// </summary>
+        public int AngleCount { get; set; }
+
+        /// <summary>
+        /// Gets or sets the pixel aspect ratio.
+        /// </summary>
+        public Size ParVal { get; set; }
+
+        /// <summary>
+        /// Gets or sets the automatically detected crop region for this Title.
+        /// </summary>
+        public Cropping AutoCropDimensions { get; set; }
+
+        /// <summary>
+        /// Gets or sets the name of the video codec for this title.
+        /// </summary>
+        public string VideoCodecName { get; set; }
+
+        /// <summary>
+        /// Gets or sets the video frame rate for this title.
+        /// </summary>
+        public double Framerate { get; set; }
+
+        /// <summary>
+        /// Gets or sets the video frame rate numerator.
+        /// </summary>
+        public int FramerateNumerator { get; set; }
+
+        /// <summary>
+        /// Gets or sets the video frame rate denominator.
+        /// </summary>
+        public int FramerateDenominator { get; set; }
+
+        /// <summary>
+        /// Gets the total number of frames in this title.
+        /// </summary>
+        public int Frames
+        {
+            get
+            {
+                return (int)Math.Ceiling(this.Duration.TotalSeconds * this.Framerate);
+            }
+        }
+
+        /// <summary>
+        /// Gets or sets the path.
+        /// </summary>
+        public string Path { get; set; }
+
+        /// <summary>
+        /// Override of the ToString method to provide an easy way to use this object in the UI
+        /// </summary>
+        /// <returns>A string representing this track in the format: {title #}[ {playlist source}] (00:00:00)</returns>
+        public override string ToString()
+        {
+            string playlistPortion = string.Empty;
+            if (this.InputType == InputType.Bluray)
+            {
+                playlistPortion = string.Format(" {0:d5}.MPLS", this.Playlist);
+            }
+
+            return string.Format(
+                "{0}{1} ({2:00}:{3:00}:{4:00})", 
+                this.TitleNumber, 
+                playlistPortion,
+                this.Duration.Hours,
+                this.Duration.Minutes, 
+                this.Duration.Seconds);
+        }
+
+        /// <summary>
+        /// Gets the display string for this title.
+        /// </summary>
+        public string Display
+        {
+            get
+            {
+                return this.ToString();
+            }
+        }
 
         /// <summary>
         /// Gets or sets a value indicating whether is main feature.
         /// </summary>
         public bool IsMainFeature { get; set; }
-	}
+    }
 }
\ No newline at end of file
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Model/SrtSubtitle.cs b/win/CS/HandBrake.ApplicationServices/Interop/Model/SrtSubtitle.cs
index 98c9e8d08..c81c07ea5 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/Model/SrtSubtitle.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/SrtSubtitle.cs
@@ -24,10 +24,10 @@ namespace HandBrake.ApplicationServices.Interop.Model
         /// </summary>
         public bool Default { get; set; }
 
-		/// <summary>
-		/// Gets or sets a value indicating whether the subtitle track should be burned in.
-		/// </summary>
-		public bool BurnedIn { get; set; }
+        /// <summary>
+        /// Gets or sets a value indicating whether the subtitle track should be burned in.
+        /// </summary>
+        public bool BurnedIn { get; set; }
 
         /// <summary>
         /// Gets or sets the file name.
@@ -55,7 +55,7 @@ namespace HandBrake.ApplicationServices.Interop.Model
             return new SrtSubtitle
                        {
                            Default = this.Default,
-						   BurnedIn = this.BurnedIn,
+                           BurnedIn = this.BurnedIn,
                            FileName = this.FileName, 
                            LanguageCode = this.LanguageCode, 
                            CharacterCode = this.CharacterCode, 
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Model/VideoQualityLimits.cs b/win/CS/HandBrake.ApplicationServices/Interop/Model/VideoQualityLimits.cs
index 821d58e9a..bd9c1f5d4 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/Model/VideoQualityLimits.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/VideoQualityLimits.cs
@@ -9,29 +9,29 @@
 
 namespace HandBrake.ApplicationServices.Interop.Model
 {
-	/// <summary>
-	/// Represents limits on video quality for a particular encoder.
-	/// </summary>
-	public class VideoQualityLimits
-	{
-		/// <summary>
-		/// Gets or sets the inclusive lower limit for the quality.
-		/// </summary>
-		public float Low { get; set; }
+    /// <summary>
+    /// Represents limits on video quality for a particular encoder.
+    /// </summary>
+    public class VideoQualityLimits
+    {
+        /// <summary>
+        /// Gets or sets the inclusive lower limit for the quality.
+        /// </summary>
+        public float Low { get; set; }
 
-		/// <summary>
-		/// Gets or sets the inclusive upper limit for the quality.
-		/// </summary>
-		public float High { get; set; }
+        /// <summary>
+        /// Gets or sets the inclusive upper limit for the quality.
+        /// </summary>
+        public float High { get; set; }
 
-		/// <summary>
-		/// Gets or sets the granularity for the quality.
-		/// </summary>
-		public float Granularity { get; set; }
+        /// <summary>
+        /// Gets or sets the granularity for the quality.
+        /// </summary>
+        public float Granularity { get; set; }
 
-		/// <summary>
-		/// Gets or sets a value indicating whether the quality increases as the number increases.
-		/// </summary>
-		public bool Ascending { get; set; }
-	}
+        /// <summary>
+        /// Gets or sets a value indicating whether the quality increases as the number increases.
+        /// </summary>
+        public bool Ascending { get; set; }
+    }
 }
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Model/VideoRangeType.cs b/win/CS/HandBrake.ApplicationServices/Interop/Model/VideoRangeType.cs
index 89e0f3af4..3b38de793 100644
--- a/win/CS/HandBrake.ApplicationServices/Interop/Model/VideoRangeType.cs
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/VideoRangeType.cs
@@ -9,35 +9,35 @@
 
 namespace HandBrake.ApplicationServices.Interop.Model
 {
-	using System.ComponentModel.DataAnnotations;
+    using System.ComponentModel.DataAnnotations;
 
-	/// <summary>
-	/// The video range type.
-	/// </summary>
-	public enum VideoRangeType
-	{
-		/// <summary>
-		/// The entire title.
-		/// </summary>
-		[Display(Name = "Preview")]
-		Preview,
+    /// <summary>
+    /// The video range type.
+    /// </summary>
+    public enum VideoRangeType
+    {
+        /// <summary>
+        /// The entire title.
+        /// </summary>
+        [Display(Name = "Preview")]
+        Preview,
 
-		/// <summary>
-		/// A chapter range.
-		/// </summary>
-		[Display(Name = "Chapters")]
-		Chapters, 
+        /// <summary>
+        /// A chapter range.
+        /// </summary>
+        [Display(Name = "Chapters")]
+        Chapters, 
 
-		/// <summary>
-		/// A timespan range in seconds.
-		/// </summary>
-		[Display(Name = "Seconds")]
-		Seconds, 
+        /// <summary>
+        /// A timespan range in seconds.
+        /// </summary>
+        [Display(Name = "Seconds")]
+        Seconds, 
 
-		/// <summary>
-		/// A frame range.
-		/// </summary>
-		[Display(Name = "Frames")]
-		Frames
-	}
+        /// <summary>
+        /// A frame range.
+        /// </summary>
+        [Display(Name = "Frames")]
+        Frames
+    }
 }
\ No newline at end of file
-- 
2.40.0