summaryrefslogtreecommitdiffstats
path: root/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding
diff options
context:
space:
mode:
Diffstat (limited to 'win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding')
-rw-r--r--win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Anamorphic.cs28
-rw-r--r--win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/AudioEncodeRateType.cs21
-rw-r--r--win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/AudioEncoder.cs77
-rw-r--r--win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/AudioEncoding.cs89
-rw-r--r--win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Container.cs28
-rw-r--r--win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Decomb.cs23
-rw-r--r--win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Deinterlace.cs24
-rw-r--r--win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Denoise.cs21
-rw-r--r--win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Detelecine.cs21
-rw-r--r--win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/HBAudioEncoder.cs92
-rw-r--r--win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/HBContainer.cs37
-rw-r--r--win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/HBMixdown.cs36
-rw-r--r--win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/HBRate.cs27
-rw-r--r--win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/HBVideoEncoder.cs86
-rw-r--r--win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Mixdown.cs55
-rw-r--r--win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/OutputExtension.cs20
-rw-r--r--win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/PictureRotation.cs22
-rw-r--r--win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/ScaleMethod.cs27
-rw-r--r--win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/VideoEncodeRateType.cs21
-rw-r--r--win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/VideoEncoder.cs49
20 files changed, 804 insertions, 0 deletions
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Anamorphic.cs b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Anamorphic.cs
new file mode 100644
index 000000000..1b77203f4
--- /dev/null
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Anamorphic.cs
@@ -0,0 +1,28 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="Anamorphic.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// Defines the Anamorphic type.
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrake.ApplicationServices.Interop.Model.Encoding
+{
+ 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
+ }
+} \ 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
new file mode 100644
index 000000000..031c89b11
--- /dev/null
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/AudioEncodeRateType.cs
@@ -0,0 +1,21 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="AudioEncodeRateType.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// The audio encode rate type.
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrake.ApplicationServices.Interop.Model.Encoding
+{
+ /// <summary>
+ /// The audio encode rate type.
+ /// </summary>
+ public enum AudioEncodeRateType
+ {
+ Bitrate,
+ Quality,
+ Compression
+ }
+}
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/AudioEncoder.cs b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/AudioEncoder.cs
new file mode 100644
index 000000000..e8f0a484a
--- /dev/null
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/AudioEncoder.cs
@@ -0,0 +1,77 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="AudioEncoder.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// The audio encoder enumeration
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrake.ApplicationServices.Interop.Model.Encoding
+{
+ using System.ComponentModel.DataAnnotations;
+
+ using HandBrake.ApplicationServices.Interop.Attributes;
+
+ /// <summary>
+ /// The audio encoder.
+ /// </summary>
+ public enum AudioEncoder
+ {
+ [Display(Name = "AAC (avcodec)")]
+ [ShortName("av_aac")]
+ ffaac,
+
+ [Display(Name = "AAC (FDK)")]
+ [ShortName("fdk_aac")]
+ fdkaac,
+
+ [Display(Name = "HE-AAC (FDK)")]
+ [ShortName("fdk_haac")]
+ fdkheaac,
+
+ [Display(Name = "MP3")]
+ [ShortName("mp3")]
+ Lame,
+
+ [Display(Name = "AC3")]
+ [ShortName("ac3")]
+ Ac3,
+
+ [Display(Name = "Auto Passthru")]
+ [ShortName("copy")]
+ Passthrough,
+
+ [Display(Name = "AC3 Passthru")]
+ [ShortName("copy:ac3")]
+ Ac3Passthrough,
+
+ [Display(Name = "DTS Passthru")]
+ [ShortName("copy:dts")]
+ DtsPassthrough,
+
+ [Display(Name = "DTS-HD Passthru")]
+ [ShortName("copy:dtshd")]
+ DtsHDPassthrough,
+
+ [Display(Name = "AAC Passthru")]
+ [ShortName("copy:aac")]
+ AacPassthru,
+
+ [Display(Name = "MP3 Passthru")]
+ [ShortName("copy:mp3")]
+ Mp3Passthru,
+
+ [Display(Name = "Vorbis")]
+ [ShortName("vorbis")]
+ Vorbis,
+
+ [Display(Name = "FLAC 16-bit")]
+ [ShortName("flac16")]
+ ffflac,
+
+ [Display(Name = "FLAC 24-bit")]
+ [ShortName("flac24")]
+ ffflac24,
+ }
+}
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/AudioEncoding.cs b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/AudioEncoding.cs
new file mode 100644
index 000000000..381e9d2c0
--- /dev/null
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/AudioEncoding.cs
@@ -0,0 +1,89 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="AudioEncoding.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// Defines the AudioEncoding type.
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrake.ApplicationServices.Interop.Model.Encoding
+{
+ 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>
+ /// 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 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 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 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 Gain.
+ /// </summary>
+ public int Gain { 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 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
new file mode 100644
index 000000000..ec59a6dbf
--- /dev/null
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Container.cs
@@ -0,0 +1,28 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="Container.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// Defines the Container type.
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrake.ApplicationServices.Interop.Model.Encoding
+{
+ using System;
+ using System.ComponentModel.DataAnnotations;
+
+ /// <summary>
+ /// The container.
+ /// </summary>
+ [Flags]
+ public enum Container
+ {
+ None = 0x0,
+
+ [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
new file mode 100644
index 000000000..a63375143
--- /dev/null
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Decomb.cs
@@ -0,0 +1,23 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="Decomb.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// Defines the Decomb type.
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrake.ApplicationServices.Interop.Model.Encoding
+{
+ /// <summary>
+ /// The decomb.
+ /// </summary>
+ public enum Decomb
+ {
+ 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
new file mode 100644
index 000000000..1ed41419f
--- /dev/null
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Deinterlace.cs
@@ -0,0 +1,24 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="Deinterlace.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// Defines the Deinterlace type.
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrake.ApplicationServices.Interop.Model.Encoding
+{
+ /// <summary>
+ /// The deinterlace.
+ /// </summary>
+ public enum Deinterlace
+ {
+ 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
new file mode 100644
index 000000000..2f24251ef
--- /dev/null
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Denoise.cs
@@ -0,0 +1,21 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="Denoise.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// Defines the Denoise type.
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrake.ApplicationServices.Interop.Model.Encoding
+{
+ /// <summary>
+ /// The denoise.
+ /// </summary>
+ public enum Denoise
+ {
+ Off = 0,
+ hqdn3d = 1,
+ NLMeans = 2,
+ }
+}
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Detelecine.cs b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Detelecine.cs
new file mode 100644
index 000000000..d16075af4
--- /dev/null
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Detelecine.cs
@@ -0,0 +1,21 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="Detelecine.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// Defines the Detelecine type.
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrake.ApplicationServices.Interop.Model.Encoding
+{
+ /// <summary>
+ /// The detelecine.
+ /// </summary>
+ public enum Detelecine
+ {
+ Off = 0,
+ Default = 2,
+ Custom = 1
+ }
+}
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/HBAudioEncoder.cs b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/HBAudioEncoder.cs
new file mode 100644
index 000000000..5bef508f8
--- /dev/null
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/HBAudioEncoder.cs
@@ -0,0 +1,92 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="HBAudioEncoder.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// The hb audio encoder.
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrake.ApplicationServices.Interop.Model.Encoding
+{
+ using HandBrake.ApplicationServices.Interop.HbLib;
+
+ /// <summary>
+ /// The hb audio encoder.
+ /// </summary>
+ public class HBAudioEncoder
+ {
+ /// <summary>
+ /// Gets or sets the compatible containers.
+ /// </summary>
+ public int CompatibleContainers { get; set; }
+
+ /// <summary>
+ /// Gets or sets the compression limits.
+ /// </summary>
+ public RangeLimits CompressionLimits { get; set; }
+
+ /// <summary>
+ /// Gets or sets the default compression.
+ /// </summary>
+ public float DefaultCompression { get; set; }
+
+ /// <summary>
+ /// Gets or sets the default quality.
+ /// </summary>
+ public float DefaultQuality { get; set; }
+
+ /// <summary>
+ /// Gets or sets the display name.
+ /// </summary>
+ public string DisplayName { get; set; }
+
+ /// <summary>
+ /// Gets or sets the id.
+ /// </summary>
+ public int Id { get; set; }
+
+ /// <summary>
+ /// Gets a value indicating whether the encoder is passthrough.
+ /// </summary>
+ public bool IsPassthrough
+ {
+ get
+ {
+ return (this.Id & NativeConstants.HB_ACODEC_PASS_FLAG) > 0;
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets the quality limits.
+ /// </summary>
+ public RangeLimits QualityLimits { get; set; }
+
+ /// <summary>
+ /// Gets or sets the short name.
+ /// </summary>
+ public string ShortName { get; set; }
+
+ /// <summary>
+ /// Gets a value indicating whether the encoder supports compression.
+ /// </summary>
+ public bool SupportsCompression
+ {
+ get
+ {
+ return this.CompressionLimits.High >= 0;
+ }
+ }
+
+ /// <summary>
+ /// Gets a value indicating whether the encoder supports quality.
+ /// </summary>
+ public bool SupportsQuality
+ {
+ get
+ {
+ return this.QualityLimits.High >= 0;
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/HBContainer.cs b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/HBContainer.cs
new file mode 100644
index 000000000..2a91c4e70
--- /dev/null
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/HBContainer.cs
@@ -0,0 +1,37 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="HBContainer.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// The hb container.
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrake.ApplicationServices.Interop.Model.Encoding
+{
+ /// <summary>
+ /// The hb container.
+ /// </summary>
+ public class HBContainer
+ {
+ /// <summary>
+ /// Gets or sets the default extension.
+ /// </summary>
+ public string DefaultExtension { get; set; }
+
+ /// <summary>
+ /// Gets or sets the display name.
+ /// </summary>
+ public string DisplayName { get; set; }
+
+ /// <summary>
+ /// Gets or sets the id.
+ /// </summary>
+ public int Id { get; set; }
+
+ /// <summary>
+ /// Gets or sets the short name.
+ /// </summary>
+ public string ShortName { get; set; }
+ }
+} \ No newline at end of file
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/HBMixdown.cs b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/HBMixdown.cs
new file mode 100644
index 000000000..18e7288e7
--- /dev/null
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/HBMixdown.cs
@@ -0,0 +1,36 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="HBMixdown.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// The hb mixdown.
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrake.ApplicationServices.Interop.Model.Encoding
+{
+ /// <summary>
+ /// The hb mixdown.
+ /// </summary>
+ public class HBMixdown
+ {
+ #region Public Properties
+
+ /// <summary>
+ /// Gets or sets the display name.
+ /// </summary>
+ public string DisplayName { get; set; }
+
+ /// <summary>
+ /// Gets or sets the id.
+ /// </summary>
+ public int Id { get; set; }
+
+ /// <summary>
+ /// Gets or sets the short name.
+ /// </summary>
+ public string ShortName { get; set; }
+
+ #endregion
+ }
+} \ No newline at end of file
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/HBRate.cs b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/HBRate.cs
new file mode 100644
index 000000000..edae8f29a
--- /dev/null
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/HBRate.cs
@@ -0,0 +1,27 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="HBRate.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// Represents a rate in HandBrake: audio sample rate or video framerate.
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+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>
+ /// 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
new file mode 100644
index 000000000..dd09452a1
--- /dev/null
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/HBVideoEncoder.cs
@@ -0,0 +1,86 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="HBVideoEncoder.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// The hb video encoder.
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrake.ApplicationServices.Interop.Model.Encoding
+{
+ using System.Collections.Generic;
+
+ using HandBrake.ApplicationServices.Interop.HbLib;
+ using HandBrake.ApplicationServices.Interop.Helpers;
+
+ /// <summary>
+ /// The hb video encoder.
+ /// </summary>
+ public class HBVideoEncoder
+ {
+ /// <summary>
+ /// Gets or sets the compatible containers.
+ /// </summary>
+ public int CompatibleContainers { get; set; }
+
+ /// <summary>
+ /// Gets or sets the display name.
+ /// </summary>
+ public string DisplayName { get; set; }
+
+ /// <summary>
+ /// Gets or sets the id.
+ /// </summary>
+ public int Id { get; set; }
+
+ /// <summary>
+ /// Gets or sets the short name.
+ /// </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 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 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
new file mode 100644
index 000000000..4ca750adb
--- /dev/null
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/Mixdown.cs
@@ -0,0 +1,55 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="Mixdown.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// Defines the Mixdown type.
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrake.ApplicationServices.Interop.Model.Encoding
+{
+ using System.ComponentModel.DataAnnotations;
+
+ /// <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 = "Mono")]
+ Mono,
+
+ [Display(Name = "Mono (Left Only)")]
+ LeftOnly,
+
+ [Display(Name = "Mono (Right Only)")]
+ RightOnly,
+
+ [Display(Name = "Stereo")]
+ Stereo,
+
+ [Display(Name = "Dolby Surround")]
+ DolbySurround,
+
+ [Display(Name = "5.1 Channels")]
+ FivePoint1Channels,
+
+ [Display(Name = "6.1 Channels")]
+ SixPoint1Channels,
+
+ [Display(Name = "7.1 Channels")]
+ SevenPoint1Channels,
+
+ [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
new file mode 100644
index 000000000..08534fd19
--- /dev/null
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/OutputExtension.cs
@@ -0,0 +1,20 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="OutputExtension.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// Defines the OutputExtension type.
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrake.ApplicationServices.Interop.Model.Encoding
+{
+ /// <summary>
+ /// The output extension.
+ /// </summary>
+ public enum OutputExtension
+ {
+ Mp4,
+ M4v
+ }
+}
diff --git a/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/PictureRotation.cs b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/PictureRotation.cs
new file mode 100644
index 000000000..38fc68980
--- /dev/null
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/PictureRotation.cs
@@ -0,0 +1,22 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="PictureRotation.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// Possible picture rotations.
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrake.ApplicationServices.Interop.Model.Encoding
+{
+ /// <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
new file mode 100644
index 000000000..203b5a583
--- /dev/null
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/ScaleMethod.cs
@@ -0,0 +1,27 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="ScaleMethod.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// Scaling Method
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+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>
+ /// 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
new file mode 100644
index 000000000..3fca0466a
--- /dev/null
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/VideoEncodeRateType.cs
@@ -0,0 +1,21 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="VideoEncodeRateType.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// Defines the VideoEncodeRateType type.
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrake.ApplicationServices.Interop.Model.Encoding
+{
+ /// <summary>
+ /// The video encode rate type.
+ /// </summary>
+ public enum VideoEncodeRateType
+ {
+ 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
new file mode 100644
index 000000000..ce88223bb
--- /dev/null
+++ b/win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/VideoEncoder.cs
@@ -0,0 +1,49 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="VideoEncoder.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// The video encoder.
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrake.ApplicationServices.Interop.Model.Encoding
+{
+ using System.ComponentModel.DataAnnotations;
+
+ using HandBrake.ApplicationServices.Interop.Attributes;
+
+ /// <summary>
+ /// The video encoder.
+ /// </summary>
+ public enum VideoEncoder
+ {
+ [Display(Name = "H.264 (x264)")]
+ [ShortName("x264")]
+ X264 = 0,
+
+ [Display(Name = "H.264 (Intel QSV)")]
+ [ShortName("qsv_h264")]
+ QuickSync,
+
+ [Display(Name = "MPEG-4")]
+ [ShortName("mpeg4")]
+ FFMpeg,
+
+ [Display(Name = "MPEG-2")]
+ [ShortName("mpeg2")]
+ FFMpeg2,
+
+ [Display(Name = "Theora")]
+ [ShortName("theora")]
+ Theora,
+
+ [Display(Name = "H.265 (x265)")]
+ [ShortName("x265")]
+ X265,
+
+ [Display(Name = "VP8")]
+ [ShortName("vp8")]
+ VP8
+ }
+}