+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="ShortName.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// A Short Name for an enum value\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Attributes\r
-{\r
- using System;\r
-\r
- /// <summary>\r
- /// A Short Name for an enum value\r
- /// </summary>\r
- public class ShortName : Attribute\r
- {\r
- /// <summary>\r
- /// Initializes a new instance of the <see cref="ShortName"/> class.\r
- /// </summary>\r
- /// <param name="shortName">\r
- /// The short name.\r
- /// </param>\r
- public ShortName(string shortName)\r
- {\r
- this.Name = shortName;\r
- }\r
-\r
- /// <summary>\r
- /// Gets or sets the short name.\r
- /// </summary>\r
- public string Name { get; set; }\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="EncodeCompletedEventArgs.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Defines the EncodeCompletedEventArgs type.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.EventArgs\r
-{\r
- using System;\r
-\r
- /// <summary>\r
- /// Encode Completed Event Args\r
- /// </summary>\r
- public class EncodeCompletedEventArgs : EventArgs\r
- {\r
- /// <summary>\r
- /// Gets or sets a value indicating whether an error occurred during the encode.\r
- /// </summary>\r
- public bool Error { get; set; }\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="EncodeProgressEventArgs.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Defines the EncodeProgressEventArgs type.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.EventArgs\r
-{\r
- using System;\r
-\r
- /// <summary>s\r
- /// Encode Progress Event Args\r
- /// </summary>\r
- public class EncodeProgressEventArgs : EventArgs\r
- {\r
- /// <summary>\r
- /// Gets or sets FractionComplete.\r
- /// </summary>\r
- public double FractionComplete { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets CurrentFrameRate.\r
- /// </summary>\r
- public double CurrentFrameRate { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets AverageFrameRate.\r
- /// </summary>\r
- public double AverageFrameRate { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets EstimatedTimeLeft.\r
- /// </summary>\r
- public TimeSpan EstimatedTimeLeft { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the current encoding pass. (-1: subtitle scan, 1: first pass, 2: second pass)\r
- /// </summary>\r
- public int Pass { get; set; }\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="MessageLoggedEventArgs.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Defines the MessageLoggedEventArgs type.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.EventArgs\r
-{\r
- using System;\r
-\r
- /// <summary>\r
- /// The Message Logged Event Args\r
- /// </summary>\r
- public class MessageLoggedEventArgs : EventArgs\r
- {\r
- /// <summary>\r
- /// Gets or sets Message.\r
- /// </summary>\r
- public string Message { get; set; }\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="ScanProgressEventArgs.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Defines the ScanProgressEventArgs type.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.EventArgs\r
-{\r
- using System;\r
-\r
- /// <summary>\r
- /// The Scan Progress Event Args\r
- /// </summary>\r
- public class ScanProgressEventArgs : EventArgs\r
- {\r
- /// <summary>\r
- /// Gets or sets the total progress fraction for the scan.\r
- /// </summary>\r
- public double Progress { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the current preview being processed on the scan.\r
- /// </summary>\r
- public int CurrentPreview { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the total number of previews to process.\r
- /// </summary>\r
- public int Previews { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the current title being processed on the scan.\r
- /// </summary>\r
- public int CurrentTitle { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the total number of titles to process.\r
- /// </summary>\r
- public int Titles { get; set; }\r
- }\r
-}\r
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
- <PropertyGroup>\r
- <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
- <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
- <ProductVersion>9.0.30729</ProductVersion>\r
- <SchemaVersion>2.0</SchemaVersion>\r
- <ProjectGuid>{F0A61F62-2C3B-4A87-AFF4-0C4256253DA1}</ProjectGuid>\r
- <OutputType>Library</OutputType>\r
- <AppDesignerFolder>Properties</AppDesignerFolder>\r
- <RootNamespace>HandBrake.Interop</RootNamespace>\r
- <AssemblyName>HandBrakeInterop</AssemblyName>\r
- <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>\r
- <FileAlignment>512</FileAlignment>\r
- <FileUpgradeFlags>\r
- </FileUpgradeFlags>\r
- <UpgradeBackupLocation>\r
- </UpgradeBackupLocation>\r
- <OldToolsVersion>3.5</OldToolsVersion>\r
- <TargetFrameworkProfile>Client</TargetFrameworkProfile>\r
- <PublishUrl>publish\</PublishUrl>\r
- <Install>true</Install>\r
- <InstallFrom>Disk</InstallFrom>\r
- <UpdateEnabled>false</UpdateEnabled>\r
- <UpdateMode>Foreground</UpdateMode>\r
- <UpdateInterval>7</UpdateInterval>\r
- <UpdateIntervalUnits>Days</UpdateIntervalUnits>\r
- <UpdatePeriodically>false</UpdatePeriodically>\r
- <UpdateRequired>false</UpdateRequired>\r
- <MapFileExtensions>true</MapFileExtensions>\r
- <ApplicationRevision>0</ApplicationRevision>\r
- <ApplicationVersion>1.0.0.%2a</ApplicationVersion>\r
- <IsWebBootstrapper>false</IsWebBootstrapper>\r
- <UseApplicationTrust>false</UseApplicationTrust>\r
- <BootstrapperEnabled>true</BootstrapperEnabled>\r
- </PropertyGroup>\r
- <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">\r
- <DebugSymbols>true</DebugSymbols>\r
- <OutputPath>bin\x64\Debug\</OutputPath>\r
- <DefineConstants>TRACE;DEBUG;X64</DefineConstants>\r
- <DebugType>full</DebugType>\r
- <PlatformTarget>x64</PlatformTarget>\r
- <CodeAnalysisLogFile>bin\Debug\HandBrakeInterop.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile>\r
- <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>\r
- <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>\r
- <ErrorReport>prompt</ErrorReport>\r
- <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>\r
- <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>\r
- <CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>\r
- <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>\r
- <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>\r
- <CodeAnalysisFailOnMissingRules>false</CodeAnalysisFailOnMissingRules>\r
- <UseVSHostingProcess>true</UseVSHostingProcess>\r
- </PropertyGroup>\r
- <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">\r
- <OutputPath>bin\x64\Release\</OutputPath>\r
- <DefineConstants>TRACE;X64</DefineConstants>\r
- <Optimize>true</Optimize>\r
- <DebugType>pdbonly</DebugType>\r
- <PlatformTarget>x64</PlatformTarget>\r
- <CodeAnalysisLogFile>bin\Release\HandBrakeInterop.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile>\r
- <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>\r
- <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>\r
- <ErrorReport>prompt</ErrorReport>\r
- <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>\r
- <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>\r
- <CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>\r
- <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>\r
- <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>\r
- </PropertyGroup>\r
- <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">\r
- <DebugSymbols>true</DebugSymbols>\r
- <OutputPath>bin\x86\Debug\</OutputPath>\r
- <DefineConstants>DEBUG;TRACE</DefineConstants>\r
- <DebugType>full</DebugType>\r
- <PlatformTarget>x86</PlatformTarget>\r
- <CodeAnalysisLogFile>bin\Debug\HandBrakeInterop.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile>\r
- <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>\r
- <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>\r
- <ErrorReport>prompt</ErrorReport>\r
- <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>\r
- <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>\r
- <CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>\r
- <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>\r
- <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>\r
- </PropertyGroup>\r
- <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">\r
- <OutputPath>bin\x86\Release\</OutputPath>\r
- <DefineConstants>DEBUG;TRACE</DefineConstants>\r
- <Optimize>true</Optimize>\r
- <DebugType>pdbonly</DebugType>\r
- <PlatformTarget>x86</PlatformTarget>\r
- <CodeAnalysisLogFile>bin\Release\HandBrakeInterop.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile>\r
- <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>\r
- <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>\r
- <ErrorReport>prompt</ErrorReport>\r
- <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>\r
- <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>\r
- <CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>\r
- <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>\r
- <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>\r
- <CodeAnalysisFailOnMissingRules>false</CodeAnalysisFailOnMissingRules>\r
- </PropertyGroup>\r
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug32|x64' ">\r
- <DebugSymbols>true</DebugSymbols>\r
- <OutputPath>bin\x64\Debug31\</OutputPath>\r
- <DefineConstants>TRACE;DEBUG;X64</DefineConstants>\r
- <DebugType>full</DebugType>\r
- <PlatformTarget>x64</PlatformTarget>\r
- <ErrorReport>prompt</ErrorReport>\r
- <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>\r
- <CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>\r
- <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>\r
- </PropertyGroup>\r
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug32|x86' ">\r
- <DebugSymbols>true</DebugSymbols>\r
- <OutputPath>bin\x86\Debug31\</OutputPath>\r
- <DefineConstants>DEBUG;TRACE</DefineConstants>\r
- <DebugType>full</DebugType>\r
- <PlatformTarget>x86</PlatformTarget>\r
- <ErrorReport>prompt</ErrorReport>\r
- <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>\r
- <CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>\r
- <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>\r
- </PropertyGroup>\r
- <ItemGroup>\r
- <Reference Include="Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">\r
- <SpecificVersion>False</SpecificVersion>\r
- <HintPath>..\..\libraries\json\Net40\Newtonsoft.Json.dll</HintPath>\r
- </Reference>\r
- <Reference Include="PresentationCore">\r
- <RequiredTargetFramework>3.0</RequiredTargetFramework>\r
- </Reference>\r
- <Reference Include="System" />\r
- <Reference Include="System.ComponentModel.DataAnnotations" />\r
- <Reference Include="System.Core">\r
- <RequiredTargetFramework>3.5</RequiredTargetFramework>\r
- </Reference>\r
- <Reference Include="System.Drawing" />\r
- <Reference Include="System.Xaml" />\r
- <Reference Include="System.Xml.Linq">\r
- <RequiredTargetFramework>3.5</RequiredTargetFramework>\r
- </Reference>\r
- <Reference Include="System.Data.DataSetExtensions">\r
- <RequiredTargetFramework>3.5</RequiredTargetFramework>\r
- </Reference>\r
- <Reference Include="System.Data" />\r
- <Reference Include="System.Xml" />\r
- <Reference Include="WindowsBase">\r
- <RequiredTargetFramework>3.0</RequiredTargetFramework>\r
- </Reference>\r
- </ItemGroup>\r
- <ItemGroup>\r
- <Compile Include="Attributes\ShortName.cs" />\r
- <Compile Include="HandBrakeInstanceManager.cs" />\r
- <Compile Include="HandBrakeUnitConversionHelpers.cs" />\r
- <Compile Include="EventArgs\EncodeCompletedEventArgs.cs" />\r
- <Compile Include="EventArgs\EncodeProgressEventArgs.cs" />\r
- <Compile Include="HandBrakeUtils.cs" />\r
- <Compile Include="HandBrakeInstance.cs" />\r
- <Compile Include="HbLib\HBDelegates.cs" />\r
- <Compile Include="HbLib\HBFunctions.cs" />\r
- <Compile Include="HbLib\hb_container_s.cs" />\r
- <Compile Include="HbLib\hb_encoder_s.cs" />\r
- <Compile Include="HbLib\hb_error_code.cs" />\r
- <Compile Include="HbLib\hb_filter_ids.cs" />\r
- <Compile Include="HbLib\hb_geometry.cs" />\r
- <Compile Include="HbLib\hb_image_s.cs" />\r
- <Compile Include="HbLib\hb_anamorphic_mode_t.cs" />\r
- <Compile Include="HbLib\hb_mixdown_s.cs" />\r
- <Compile Include="HbLib\hb_rate_s.cs" />\r
- <Compile Include="HbLib\hb_subtitle.cs" />\r
- <Compile Include="HbLib\iso639_lang_t.cs" />\r
- <Compile Include="HbLib\NativeConstants.cs" />\r
- <Compile Include="Helpers\Validate.cs" />\r
- <Compile Include="Interfaces\IHandBrakeInstance.cs" />\r
- <Compile Include="Helpers\InteropUtilities.cs" />\r
- <Compile Include="Json\Anamorphic\AnamorphicGeometry.cs" />\r
- <Compile Include="Json\Anamorphic\AnamorphicResult.cs" />\r
- <Compile Include="Json\Anamorphic\DestSettings.cs" />\r
- <Compile Include="Json\Anamorphic\Geometry.cs" />\r
- <Compile Include="Json\Anamorphic\PAR.cs" />\r
- <Compile Include="Json\Anamorphic\SourceGeometry.cs" />\r
- <Compile Include="Json\Encode\Audio.cs" />\r
- <Compile Include="Json\Encode\AudioList.cs" />\r
- <Compile Include="Json\Encode\ChapterList.cs" />\r
- <Compile Include="Json\Encode\Destination.cs" />\r
- <Compile Include="Json\Encode\Filter.cs" />\r
- <Compile Include="Json\Encode\FilterList.cs" />\r
- <Compile Include="Json\Encode\JsonEncodeObject.cs" />\r
- <Compile Include="Json\Encode\MetaData.cs" />\r
- <Compile Include="Json\Encode\Mp4Options.cs" />\r
- <Compile Include="Json\Encode\Range.cs" />\r
- <Compile Include="Json\Encode\Search.cs" />\r
- <Compile Include="Json\Encode\Source.cs" />\r
- <Compile Include="Json\Encode\SRT.cs" />\r
- <Compile Include="Json\Encode\Subtitle.cs" />\r
- <Compile Include="Json\Encode\SubtitleList.cs" />\r
- <Compile Include="Json\Encode\Video.cs" />\r
- <Compile Include="Json\Factories\AnamorphicFactory.cs" />\r
- <Compile Include="Json\Factories\EncodeFactory.cs" />\r
- <Compile Include="Json\Factories\ScanFactory.cs" />\r
- <Compile Include="Json\Scan\AudioList.cs" />\r
- <Compile Include="Json\Scan\ChapterList.cs" />\r
- <Compile Include="Json\Scan\Color.cs" />\r
- <Compile Include="Json\Scan\Duration.cs" />\r
- <Compile Include="Json\Scan\Duration2.cs" />\r
- <Compile Include="Json\Scan\FrameRate.cs" />\r
- <Compile Include="Json\Scan\Geometry.cs" />\r
- <Compile Include="Json\Scan\JsonScanObject.cs" />\r
- <Compile Include="Json\Scan\MetaData.cs" />\r
- <Compile Include="Json\Scan\PAR.cs" />\r
- <Compile Include="Json\Scan\SubtitleList.cs" />\r
- <Compile Include="Json\Scan\TitleList.cs" />\r
- <Compile Include="Json\State\JsonState.cs" />\r
- <Compile Include="Json\State\Scanning.cs" />\r
- <Compile Include="Json\State\WorkDone.cs" />\r
- <Compile Include="Json\State\Working.cs" />\r
- <Compile Include="Model\Encoding\PictureRotation.cs" />\r
- <Compile Include="Model\Language.cs" />\r
- <Compile Include="HandBrakeLanguagesHelper.cs" />\r
- <Compile Include="EventArgs\MessageLoggedEventArgs.cs" />\r
- <Compile Include="Model\Cropping.cs" />\r
- <Compile Include="Model\EncodeJob.cs" />\r
- <Compile Include="HandBrakeEncoderHelpers.cs" />\r
- <Compile Include="Model\Encoding\Anamorphic.cs" />\r
- <Compile Include="Model\Encoding\AudioEncodeRateType.cs" />\r
- <Compile Include="Model\Encoding\HBAudioEncoder.cs" />\r
- <Compile Include="Model\Encoding\AudioEncoder.cs" />\r
- <Compile Include="Model\Encoding\AudioEncoding.cs" />\r
- <Compile Include="Model\Encoding\Decomb.cs" />\r
- <Compile Include="Model\Encoding\Deinterlace.cs" />\r
- <Compile Include="Model\Encoding\Denoise.cs" />\r
- <Compile Include="Model\Encoding\Detelecine.cs" />\r
- <Compile Include="Model\Encoding\HBContainer.cs" />\r
- <Compile Include="Model\Encoding\HBMixdown.cs" />\r
- <Compile Include="Model\Encoding\HBRate.cs" />\r
- <Compile Include="Model\Encoding\HBVideoEncoder.cs" />\r
- <Compile Include="Model\Encoding\Mixdown.cs" />\r
- <Compile Include="Model\Encoding\OutputExtension.cs" />\r
- <Compile Include="Model\Encoding\Container.cs" />\r
- <Compile Include="Model\Encoding\ScaleMethod.cs" />\r
- <Compile Include="Model\Encoding\VideoEncoder.cs" />\r
- <Compile Include="Model\Encoding\VideoEncodeRateType.cs" />\r
- <Compile Include="Model\BitrateLimits.cs" />\r
- <Compile Include="Model\RangeLimits.cs" />\r
- <Compile Include="Model\Size.cs" />\r
- <Compile Include="Model\SourceSubtitle.cs" />\r
- <Compile Include="Model\SourceType.cs" />\r
- <Compile Include="Model\SrtSubtitle.cs" />\r
- <Compile Include="Model\Subtitles.cs" />\r
- <Compile Include="Model\VideoQualityLimits.cs" />\r
- <Compile Include="Model\VideoRangeType.cs" />\r
- <Compile Include="Helpers\NativeList.cs" />\r
- <Compile Include="Properties\AssemblyInfo.cs" />\r
- <Compile Include="EventArgs\ScanProgressEventArgs.cs" />\r
- <Compile Include="Model\Scan\AudioTrack.cs" />\r
- <Compile Include="Model\Scan\Chapter.cs" />\r
- <Compile Include="Model\Scan\InputType.cs" />\r
- <Compile Include="Model\Scan\Subtitle.cs" />\r
- <Compile Include="Model\Scan\SubtitleSource.cs" />\r
- <Compile Include="Model\Scan\Title.cs" />\r
- <Compile Include="Helpers\Utilities.cs" />\r
- </ItemGroup>\r
- <ItemGroup>\r
- <BootstrapperPackage Include="Microsoft.Net.Client.3.5">\r
- <Visible>False</Visible>\r
- <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>\r
- <Install>false</Install>\r
- </BootstrapperPackage>\r
- <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">\r
- <Visible>False</Visible>\r
- <ProductName>.NET Framework 3.5 SP1</ProductName>\r
- <Install>true</Install>\r
- </BootstrapperPackage>\r
- <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">\r
- <Visible>False</Visible>\r
- <ProductName>Windows Installer 3.1</ProductName>\r
- <Install>true</Install>\r
- </BootstrapperPackage>\r
- </ItemGroup>\r
- <ItemGroup />\r
- <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
- <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
- Other similar extension points exist, see Microsoft.Common.targets.\r
- <Target Name="BeforeBuild">\r
- </Target>-->\r
- <!--<Target Name="AfterBuild">\r
- <Copy SourceFiles="..\..\Lib\$(Platform)\hb.dll" DestinationFolder="$(OutDir)" />\r
- </Target>-->\r
-</Project>
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="Encoders.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The encoders.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop\r
-{\r
- using System;\r
- using System.Collections.Generic;\r
- using System.Linq;\r
-\r
- using HandBrake.Interop.HbLib;\r
- using HandBrake.Interop.Helpers;\r
- using HandBrake.Interop.Model;\r
- using HandBrake.Interop.Model.Encoding;\r
- using HandBrake.Interop.Model.Scan;\r
-\r
- /// <summary>\r
- /// The encoders.\r
- /// </summary>\r
- public static class HandBrakeEncoderHelpers\r
- {\r
- /// <summary>\r
- /// The audio encoders.\r
- /// </summary>\r
- private static List<HBAudioEncoder> audioEncoders;\r
-\r
- /// <summary>\r
- /// The video encoders.\r
- /// </summary>\r
- private static List<HBVideoEncoder> videoEncoders;\r
-\r
- /// <summary>\r
- /// Video framerates in pts.\r
- /// </summary>\r
- private static List<HBRate> videoFramerates; \r
-\r
- /// <summary>\r
- /// List of HandBrake mixdowns.\r
- /// </summary>\r
- private static List<HBMixdown> mixdowns;\r
-\r
- /// <summary>\r
- /// List of HandBrake containers.\r
- /// </summary>\r
- private static List<HBContainer> containers; \r
-\r
- /// <summary>\r
- /// The audio bitrates.\r
- /// </summary>\r
- private static List<int> audioBitrates;\r
-\r
- /// <summary>\r
- /// Audio sample rates in Hz.\r
- /// </summary>\r
- private static List<HBRate> audioSampleRates; \r
-\r
- /// <summary>\r
- /// Initializes static members of the HandBrakeEncoderHelpers class.\r
- /// </summary>\r
- static HandBrakeEncoderHelpers()\r
- {\r
- HandBrakeUtils.EnsureGlobalInit();\r
- }\r
-\r
- /// <summary>\r
- /// Gets a list of supported audio encoders.\r
- /// </summary>\r
- public static List<HBAudioEncoder> AudioEncoders\r
- {\r
- get\r
- {\r
- if (audioEncoders == null)\r
- {\r
- audioEncoders = InteropUtilities.ToListFromIterator<hb_encoder_s, HBAudioEncoder>(HBFunctions.hb_audio_encoder_get_next, HandBrakeUnitConversionHelpers.NativeToAudioEncoder);\r
- }\r
-\r
- return audioEncoders;\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Gets a list of supported video encoders.\r
- /// </summary>\r
- public static List<HBVideoEncoder> VideoEncoders\r
- {\r
- get\r
- {\r
- if (videoEncoders == null)\r
- {\r
- videoEncoders = InteropUtilities.ToListFromIterator<hb_encoder_s, HBVideoEncoder>(HBFunctions.hb_video_encoder_get_next, HandBrakeUnitConversionHelpers.NativeToVideoEncoder);\r
- }\r
-\r
- return videoEncoders;\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Gets a list of supported video framerates (in pts).\r
- /// </summary>\r
- public static List<HBRate> VideoFramerates\r
- {\r
- get\r
- {\r
- if (videoFramerates == null)\r
- {\r
- videoFramerates = InteropUtilities.ToListFromIterator<hb_rate_s, HBRate>(HBFunctions.hb_video_framerate_get_next, HandBrakeUnitConversionHelpers.NativeToRate);\r
- }\r
-\r
- return videoFramerates;\r
- }\r
- } \r
-\r
- /// <summary>\r
- /// Gets a list of supported mixdowns.\r
- /// </summary>\r
- public static List<HBMixdown> Mixdowns\r
- {\r
- get\r
- {\r
- if (mixdowns == null)\r
- {\r
- mixdowns = InteropUtilities.ToListFromIterator<hb_mixdown_s, HBMixdown>(HBFunctions.hb_mixdown_get_next, HandBrakeUnitConversionHelpers.NativeToMixdown);\r
- }\r
-\r
- return mixdowns;\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Gets a list of supported audio bitrates.\r
- /// </summary>\r
- public static List<int> AudioBitrates\r
- {\r
- get\r
- {\r
- if (audioBitrates == null)\r
- {\r
- audioBitrates = InteropUtilities.ToListFromIterator<hb_rate_s, int>(HBFunctions.hb_audio_bitrate_get_next, b => b.rate);\r
- }\r
-\r
- return audioBitrates;\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Gets a list of supported audio sample rates (in Hz).\r
- /// </summary>\r
- public static List<HBRate> AudioSampleRates\r
- {\r
- get\r
- {\r
- if (audioSampleRates == null)\r
- {\r
- audioSampleRates = InteropUtilities.ToListFromIterator<hb_rate_s, HBRate>(HBFunctions.hb_audio_samplerate_get_next, HandBrakeUnitConversionHelpers.NativeToRate);\r
- }\r
-\r
- return audioSampleRates;\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Gets a list of supported containers.\r
- /// </summary>\r
- public static List<HBContainer> Containers\r
- {\r
- get\r
- {\r
- if (containers == null)\r
- {\r
- containers = InteropUtilities.ToListFromIterator<hb_container_s, HBContainer>(HBFunctions.hb_container_get_next, HandBrakeUnitConversionHelpers.NativeToContainer);\r
- }\r
-\r
- return containers;\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Gets a value indicating whether SRT subtitles can be burnt in.\r
- /// </summary>\r
- public static bool CanBurnSrt\r
- {\r
- get\r
- {\r
- return HBFunctions.hb_subtitle_can_burn((int)hb_subtitle_s_subsource.SRTSUB) > 0;\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Gets the audio encoder with the specified short name.\r
- /// </summary>\r
- /// <param name="shortName">\r
- /// The name of the audio encoder.\r
- /// </param>\r
- /// <returns>\r
- /// The requested audio encoder.\r
- /// </returns>\r
- public static HBAudioEncoder GetAudioEncoder(string shortName)\r
- {\r
- return AudioEncoders.SingleOrDefault(e => e.ShortName == shortName);\r
- }\r
-\r
- /// <summary>\r
- /// Gets the audio encoder with the specified codec ID.\r
- /// </summary>\r
- /// <param name="codecId">\r
- /// The ID of the audio encoder.\r
- /// </param>\r
- /// <returns>\r
- /// The requested audio encoder.\r
- /// </returns>\r
- public static HBAudioEncoder GetAudioEncoder(int codecId)\r
- {\r
- return AudioEncoders.SingleOrDefault(e => e.Id == codecId);\r
- }\r
-\r
- /// <summary>\r
- /// Gets the video encoder with the specified short name.\r
- /// </summary>\r
- /// <param name="shortName">\r
- /// The name of the video encoder.\r
- /// </param>\r
- /// <returns>\r
- /// The requested video encoder.\r
- /// </returns>\r
- public static HBVideoEncoder GetVideoEncoder(string shortName)\r
- {\r
- return VideoEncoders.SingleOrDefault(e => e.ShortName == shortName);\r
- }\r
-\r
- /// <summary>\r
- /// Gets the mixdown with the specified short name.\r
- /// </summary>\r
- /// <param name="shortName">\r
- /// The name of the mixdown.\r
- /// </param>\r
- /// <returns>\r
- /// The requested mixdown.\r
- /// </returns>\r
- public static HBMixdown GetMixdown(string shortName)\r
- {\r
- return Mixdowns.SingleOrDefault(m => m.ShortName == shortName);\r
- }\r
-\r
- /// <summary>\r
- /// Gets the container with the specified short name.\r
- /// </summary>\r
- /// <param name="shortName">\r
- /// The name of the container.\r
- /// </param>\r
- /// <returns>\r
- /// The requested container.\r
- /// </returns>\r
- public static HBContainer GetContainer(string shortName)\r
- {\r
- return Containers.SingleOrDefault(c => c.ShortName == shortName);\r
- }\r
-\r
- /// <summary>\r
- /// Determines if the given encoder is compatible with the given track.\r
- /// </summary>\r
- /// <param name="track">\r
- /// The audio track to examine.\r
- /// </param>\r
- /// <param name="encoder">\r
- /// The encoder to examine.\r
- /// </param>\r
- /// <returns>\r
- /// True if the given encoder is comatible with the given audio track.\r
- /// </returns>\r
- /// <remarks>\r
- /// Only works with passthrough encoders.\r
- /// </remarks>\r
- public static bool AudioEncoderIsCompatible(AudioTrack track, HBAudioEncoder encoder)\r
- {\r
- return (track.CodecId & encoder.Id) > 0;\r
- }\r
-\r
- /// <summary>\r
- /// Determines if the given mixdown supports the given channel layout.\r
- /// </summary>\r
- /// <param name="mixdown">\r
- /// The mixdown to evaluate.\r
- /// </param>\r
- /// <param name="layout">\r
- /// The channel layout to evaluate.\r
- /// </param>\r
- /// <returns>\r
- /// True if the mixdown supports the given channel layout.\r
- /// </returns>\r
- public static bool MixdownHasRemixSupport(HBMixdown mixdown, ulong layout)\r
- {\r
- return HBFunctions.hb_mixdown_has_remix_support(mixdown.Id, layout) > 0;\r
- }\r
-\r
- /// <summary>\r
- /// Determines if the given encoder supports the given mixdown.\r
- /// </summary>\r
- /// <param name="mixdown">\r
- /// The mixdown to evaluate.\r
- /// </param>\r
- /// <param name="encoder">\r
- /// The encoder to evaluate.\r
- /// </param>\r
- /// <returns>\r
- /// True if the encoder supports the mixdown.\r
- /// </returns>\r
- public static bool MixdownHasCodecSupport(HBMixdown mixdown, HBAudioEncoder encoder)\r
- {\r
- return HBFunctions.hb_mixdown_has_codec_support(mixdown.Id, (uint) encoder.Id) > 0;\r
- }\r
-\r
- /// <summary>\r
- /// Determines if DRC can be applied to the given track with the given encoder.\r
- /// </summary>\r
- /// <param name="track">\r
- /// The track to apply DRC to.\r
- /// </param>\r
- /// <param name="encoder">\r
- /// The encoder to use for DRC.\r
- /// </param>\r
- /// <param name="title">\r
- /// The title.\r
- /// </param>\r
- /// <returns>\r
- /// True if DRC can be applied to the track with the given encoder.\r
- /// </returns>\r
- public static bool CanApplyDrc(AudioTrack track, HBAudioEncoder encoder, int title)\r
- {\r
- return HBFunctions.hb_audio_can_apply_drc2(HandBrakeInstanceManager.LastScanHandle, title, track.TrackNumber, encoder.Id) > 0;\r
- }\r
-\r
- /// <summary>\r
- /// Determines if the given input audio codec can be passed through.\r
- /// </summary>\r
- /// <param name="codecId">\r
- /// The input codec to consider.\r
- /// </param>\r
- /// <returns>\r
- /// True if the codec can be passed through.\r
- /// </returns>\r
- public static bool CanPassthroughAudio(int codecId)\r
- {\r
- return (codecId & NativeConstants.HB_ACODEC_PASS_MASK) > 0;\r
- }\r
-\r
- /// <summary>\r
- /// Sanitizes a mixdown given the output codec and input channel layout.\r
- /// </summary>\r
- /// <param name="mixdown">\r
- /// The desired mixdown.\r
- /// </param>\r
- /// <param name="encoder">\r
- /// The output encoder to be used.\r
- /// </param>\r
- /// <param name="layout">\r
- /// The input channel layout.\r
- /// </param>\r
- /// <returns>\r
- /// A sanitized mixdown value.\r
- /// </returns>\r
- public static HBMixdown SanitizeMixdown(HBMixdown mixdown, HBAudioEncoder encoder, ulong layout)\r
- {\r
- int sanitizedMixdown = HBFunctions.hb_mixdown_get_best((uint)encoder.Id, layout, mixdown.Id);\r
- return Mixdowns.Single(m => m.Id == sanitizedMixdown);\r
- }\r
-\r
- /// <summary>\r
- /// Gets the default mixdown for the given audio encoder and channel layout.\r
- /// </summary>\r
- /// <param name="encoder">\r
- /// The output codec to be used.\r
- /// </param>\r
- /// <param name="layout">\r
- /// The input channel layout.\r
- /// </param>\r
- /// <returns>\r
- /// The default mixdown for the given codec and channel layout.\r
- /// </returns>\r
- public static HBMixdown GetDefaultMixdown(HBAudioEncoder encoder, ulong layout)\r
- {\r
- int defaultMixdown = HBFunctions.hb_mixdown_get_default((uint)encoder.Id, layout);\r
- return Mixdowns.Single(m => m.Id == defaultMixdown);\r
- }\r
-\r
- /// <summary>\r
- /// Gets the bitrate limits for the given audio codec, sample rate and mixdown.\r
- /// </summary>\r
- /// <param name="encoder">\r
- /// The audio encoder used.\r
- /// </param>\r
- /// <param name="sampleRate">\r
- /// The sample rate used (Hz).\r
- /// </param>\r
- /// <param name="mixdown">\r
- /// The mixdown used.\r
- /// </param>\r
- /// <returns>\r
- /// Limits on the audio bitrate for the given settings.\r
- /// </returns>\r
- public static BitrateLimits GetBitrateLimits(HBAudioEncoder encoder, int sampleRate, HBMixdown mixdown)\r
- {\r
- int low = 0;\r
- int high = 0;\r
-\r
- HBFunctions.hb_audio_bitrate_get_limits((uint)encoder.Id, sampleRate, mixdown.Id, ref low, ref high);\r
-\r
- return new BitrateLimits { Low = low, High = high };\r
- }\r
-\r
- /// <summary>\r
- /// Gets the video quality limits for the given video codec.\r
- /// </summary>\r
- /// <param name="encoder">\r
- /// The video encoder to check.\r
- /// </param>\r
- /// <returns>\r
- /// Limits on the video quality for the encoder.\r
- /// </returns>\r
- public static VideoQualityLimits GetVideoQualityLimits(HBVideoEncoder encoder)\r
- {\r
- float low = 0;\r
- float high = 0;\r
- float granularity = 0;\r
- int direction = 0;\r
-\r
- HBFunctions.hb_video_quality_get_limits((uint)encoder.Id, ref low, ref high, ref granularity, ref direction);\r
-\r
- return new VideoQualityLimits\r
- {\r
- Low = low, \r
- High = high, \r
- Granularity = granularity, \r
- Ascending = direction == 0\r
- };\r
- }\r
-\r
- /// <summary>\r
- /// Sanitizes an audio bitrate given the output codec, sample rate and mixdown.\r
- /// </summary>\r
- /// <param name="audioBitrate">\r
- /// The desired audio bitrate.\r
- /// </param>\r
- /// <param name="encoder">\r
- /// The output encoder to be used.\r
- /// </param>\r
- /// <param name="sampleRate">\r
- /// The output sample rate to be used.\r
- /// </param>\r
- /// <param name="mixdown">\r
- /// The mixdown to be used.\r
- /// </param>\r
- /// <returns>\r
- /// A sanitized audio bitrate.\r
- /// </returns>\r
- public static int SanitizeAudioBitrate(int audioBitrate, HBAudioEncoder encoder, int sampleRate, HBMixdown mixdown)\r
- {\r
- return HBFunctions.hb_audio_bitrate_get_best((uint)encoder.Id, audioBitrate, sampleRate, mixdown.Id);\r
- }\r
-\r
- /// <summary>\r
- /// Gets the default audio bitrate for the given parameters.\r
- /// </summary>\r
- /// <param name="encoder">\r
- /// The encoder to use.\r
- /// </param>\r
- /// <param name="sampleRate">\r
- /// The sample rate to use.\r
- /// </param>\r
- /// <param name="mixdown">\r
- /// The mixdown to use.\r
- /// </param>\r
- /// <returns>\r
- /// The default bitrate for these parameters.\r
- /// </returns>\r
- public static int GetDefaultBitrate(HBAudioEncoder encoder, int sampleRate, HBMixdown mixdown)\r
- {\r
- return HBFunctions.hb_audio_bitrate_get_default((uint) encoder.Id, sampleRate, mixdown.Id);\r
- }\r
-\r
- /// <summary>\r
- /// Gets limits on audio quality for a given encoder.\r
- /// </summary>\r
- /// <param name="encoderId">\r
- /// The audio encoder ID.\r
- /// </param>\r
- /// <returns>\r
- /// Limits on the audio quality for the given encoder.\r
- /// </returns>\r
- internal static RangeLimits GetAudioQualityLimits(int encoderId)\r
- {\r
- float low = 0, high = 0, granularity = 0;\r
- int direction = 0;\r
- HBFunctions.hb_audio_quality_get_limits((uint)encoderId, ref low, ref high, ref granularity, ref direction);\r
-\r
- return new RangeLimits\r
- {\r
- Low = low, \r
- High = high, \r
- Granularity = granularity, \r
- Ascending = direction == 0\r
- };\r
- }\r
-\r
- /// <summary>\r
- /// Gets limits on audio compression for a given encoder.\r
- /// </summary>\r
- /// <param name="encoderId">\r
- /// The audio encoder ID.\r
- /// </param>\r
- /// <returns>\r
- /// Limits on the audio compression for the given encoder.\r
- /// </returns>\r
- internal static RangeLimits GetAudioCompressionLimits(int encoderId)\r
- {\r
- float low = 0, high = 0, granularity = 0;\r
- int direction = 0;\r
- HBFunctions.hb_audio_compression_get_limits((uint)encoderId, ref low, ref high, ref granularity, ref direction);\r
-\r
- return new RangeLimits\r
- {\r
- Low = low, \r
- High = high, \r
- Granularity = granularity, \r
- Ascending = direction == 0\r
- };\r
- }\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="HandBrakeInstance.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// A wrapper for a HandBrake instance.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop\r
-{\r
- using System;\r
- using System.Collections.Generic;\r
- using System.Diagnostics;\r
- using System.Drawing;\r
- using System.Drawing.Imaging;\r
- using System.IO;\r
- using System.Linq;\r
- using System.Runtime.ExceptionServices;\r
- using System.Runtime.InteropServices;\r
- using System.Timers;\r
- using System.Windows.Media.Imaging;\r
-\r
- using HandBrake.Interop.EventArgs;\r
- using HandBrake.Interop.HbLib;\r
- using HandBrake.Interop.Helpers;\r
- using HandBrake.Interop.Interfaces;\r
- using HandBrake.Interop.Json.Encode;\r
- using HandBrake.Interop.Json.Factories;\r
- using HandBrake.Interop.Json.Scan;\r
- using HandBrake.Interop.Json.State;\r
- using HandBrake.Interop.Model;\r
- using HandBrake.Interop.Model.Encoding;\r
- using HandBrake.Interop.Model.Scan;\r
-\r
- using Newtonsoft.Json;\r
-\r
- using Geometry = HandBrake.Interop.Json.Anamorphic.Geometry;\r
-\r
- /// <summary>\r
- /// A wrapper for a HandBrake instance.\r
- /// </summary>\r
- public class HandBrakeInstance : IHandBrakeInstance, IDisposable\r
- {\r
- /// <summary>\r
- /// The number of MS between status polls when scanning.\r
- /// </summary>\r
- private const double ScanPollIntervalMs = 200;\r
-\r
- /// <summary>\r
- /// The number of MS between status polls when encoding.\r
- /// </summary>\r
- private const double EncodePollIntervalMs = 200;\r
-\r
- /// <summary>\r
- /// The native handle to the HandBrake instance.\r
- /// </summary>\r
- private IntPtr hbHandle;\r
-\r
- /// <summary>\r
- /// The timer to poll for scan status.\r
- /// </summary>\r
- private Timer scanPollTimer;\r
-\r
- /// <summary>\r
- /// The timer to poll for encode status.\r
- /// </summary>\r
- private Timer encodePollTimer;\r
-\r
- /// <summary>\r
- /// The list of titles on this instance.\r
- /// </summary>\r
- private List<Title> titles;\r
-\r
- /// <summary>\r
- /// The index of the default title.\r
- /// </summary>\r
- private int featureTitle;\r
-\r
- /// <summary>\r
- /// A value indicating whether this object has been disposed or not.\r
- /// </summary>\r
- private bool disposed;\r
-\r
- /// <summary>\r
- /// Finalizes an instance of the HandBrakeInstance class.\r
- /// </summary>\r
- ~HandBrakeInstance()\r
- {\r
- this.Dispose(false);\r
- }\r
-\r
- /// <summary>\r
- /// Fires for progress updates when scanning.\r
- /// </summary>\r
- public event EventHandler<ScanProgressEventArgs> ScanProgress;\r
-\r
- /// <summary>\r
- /// Fires when a scan has completed.\r
- /// </summary>\r
- public event EventHandler<System.EventArgs> ScanCompleted;\r
-\r
- /// <summary>\r
- /// Fires for progress updates when encoding.\r
- /// </summary>\r
- public event EventHandler<EncodeProgressEventArgs> EncodeProgress;\r
-\r
- /// <summary>\r
- /// Fires when an encode has completed.\r
- /// </summary>\r
- public event EventHandler<EncodeCompletedEventArgs> EncodeCompleted;\r
-\r
- /// <summary>\r
- /// Gets the handle.\r
- /// </summary>\r
- internal IntPtr Handle\r
- {\r
- get\r
- {\r
- return this.Handle;\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Gets the list of titles on this instance.\r
- /// </summary>\r
- public List<Title> Titles\r
- {\r
- get\r
- {\r
- return this.titles;\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Gets the index of the default title.\r
- /// </summary>\r
- public int FeatureTitle\r
- {\r
- get\r
- {\r
- return this.featureTitle;\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Gets the HandBrake version string.\r
- /// </summary>\r
- public string Version\r
- {\r
- get\r
- {\r
- var versionPtr = HBFunctions.hb_get_version(this.hbHandle);\r
- return Marshal.PtrToStringAnsi(versionPtr);\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Gets the HandBrake build number.\r
- /// </summary>\r
- public int Build\r
- {\r
- get\r
- {\r
- return HBFunctions.hb_get_build(this.hbHandle);\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Initializes this instance.\r
- /// </summary>\r
- /// <param name="verbosity">\r
- /// The code for the logging verbosity to use.\r
- /// </param>\r
- public void Initialize(int verbosity)\r
- {\r
- HandBrakeUtils.EnsureGlobalInit();\r
-\r
- HandBrakeUtils.RegisterLogger();\r
- this.hbHandle = HBFunctions.hb_init(verbosity, update_check: 0);\r
- }\r
-\r
- /// <summary>\r
- /// Starts a scan of the given path.\r
- /// </summary>\r
- /// <param name="path">\r
- /// The path of the video to scan.\r
- /// </param>\r
- /// <param name="previewCount">\r
- /// The number of previews to make on each title.\r
- /// </param>\r
- /// <param name="minDuration">\r
- /// The minimum duration of a title to show up on the scan.\r
- /// </param>\r
- /// <param name="titleIndex">\r
- /// The title index to scan (1-based, 0 for all titles).\r
- /// </param>\r
- public void StartScan(string path, int previewCount, TimeSpan minDuration, int titleIndex)\r
- {\r
- IntPtr pathPtr = InteropUtilities.ToUtf8PtrFromString(path);\r
- HBFunctions.hb_scan(this.hbHandle, pathPtr, titleIndex, previewCount, 1, (ulong)(minDuration.TotalSeconds * 90000));\r
- Marshal.FreeHGlobal(pathPtr);\r
-\r
- this.scanPollTimer = new Timer();\r
- this.scanPollTimer.Interval = ScanPollIntervalMs;\r
-\r
- // Lambda notation used to make sure we can view any JIT exceptions the method throws\r
- this.scanPollTimer.Elapsed += (o, e) =>\r
- {\r
- try\r
- {\r
- this.PollScanProgress();\r
- }\r
- catch (Exception exc)\r
- {\r
- Debug.WriteLine(exc);\r
- }\r
- };\r
- this.scanPollTimer.Start();\r
- }\r
-\r
- /// <summary>\r
- /// Stops an ongoing scan.\r
- /// </summary>\r
- [HandleProcessCorruptedStateExceptions] \r
- public void StopScan()\r
- {\r
- HBFunctions.hb_scan_stop(this.hbHandle);\r
- }\r
-\r
- /// <summary>\r
- /// Gets an image for the given job and preview\r
- /// </summary>\r
- /// <remarks>\r
- /// Only incorporates sizing and aspect ratio into preview image.\r
- /// </remarks>\r
- /// <param name="job">\r
- /// The encode job to preview.\r
- /// </param>\r
- /// <param name="previewNumber">\r
- /// The index of the preview to get (0-based).\r
- /// </param>\r
- /// <returns>\r
- /// An image with the requested preview.\r
- /// </returns>\r
- [HandleProcessCorruptedStateExceptions] \r
- public BitmapImage GetPreview(EncodeJob job, int previewNumber)\r
- {\r
- Title title = this.Titles.FirstOrDefault(t => t.TitleNumber == job.Title);\r
- Validate.NotNull(title, "GetPreview: Title should not have been null. This is probably a bug.");\r
-\r
- // Creat the Expected Output Geometry details for libhb.\r
- hb_geometry_settings_s uiGeometry = new hb_geometry_settings_s\r
- {\r
- crop = new[] { job.Cropping.Top, job.Cropping.Bottom, job.Cropping.Left, job.Cropping.Right }, \r
- itu_par = 0, \r
- keep = (int)AnamorphicFactory.KeepSetting.HB_KEEP_WIDTH + (job.KeepDisplayAspect ? 0x04 : 0), // TODO Keep Width?\r
- maxWidth = job.MaxWidth, \r
- maxHeight = job.MaxHeight, \r
- mode = (int)(hb_anamorphic_mode_t)job.Anamorphic, \r
- modulus = job.Modulus, \r
- geometry = new hb_geometry_s\r
- {\r
- height = job.Height, \r
- width = job.Width, \r
- par = job.Anamorphic != Anamorphic.Custom\r
- ? new hb_rational_t { den = title.ParVal.Height, num = title.ParVal.Width }\r
- : new hb_rational_t { den = job.PixelAspectY, num = job.PixelAspectX }\r
- }\r
- };\r
-\r
- // Sanatise the input.\r
- Geometry resultGeometry = AnamorphicFactory.CreateGeometry(job, title, AnamorphicFactory.KeepSetting.HB_KEEP_WIDTH); // TODO this keep isn't right.\r
- int width = resultGeometry.Width * resultGeometry.PAR.Num / resultGeometry.PAR.Den;\r
- int height = resultGeometry.Height;\r
- uiGeometry.geometry.height = resultGeometry.Height; // Prased the height now.\r
- int outputWidth = width;\r
- int outputHeight = height;\r
- \r
- // Fetch the image data from LibHb\r
- IntPtr resultingImageStuct = HBFunctions.hb_get_preview2(this.hbHandle, job.Title, previewNumber, ref uiGeometry, 0);\r
- hb_image_s image = InteropUtilities.ToStructureFromPtr<hb_image_s>(resultingImageStuct);\r
-\r
- // Copy the filled image buffer to a managed array.\r
- int stride_width = image.plane[0].stride;\r
- int stride_height = image.plane[0].height_stride;\r
- int imageBufferSize = stride_width * stride_height; // int imageBufferSize = outputWidth * outputHeight * 4;\r
-\r
- byte[] managedBuffer = new byte[imageBufferSize];\r
- Marshal.Copy(image.plane[0].data, managedBuffer, 0, imageBufferSize);\r
-\r
- var bitmap = new Bitmap(outputWidth, outputHeight);\r
- BitmapData bitmapData = bitmap.LockBits(new Rectangle(0, 0, outputWidth, outputHeight), ImageLockMode.WriteOnly, PixelFormat.Format32bppRgb);\r
-\r
- IntPtr ptr = bitmapData.Scan0; // Pointer to the first pixel.\r
- for (int i = 0; i < image.height; i++)\r
- {\r
- try\r
- {\r
- Marshal.Copy(managedBuffer, i * stride_width, ptr, stride_width);\r
- ptr = IntPtr.Add(ptr, outputWidth * 4);\r
- }\r
- catch (Exception exc)\r
- {\r
- Debug.WriteLine(exc); // In theory, this will allow a partial image display if this happens. TODO add better logging of this.\r
- }\r
- }\r
-\r
- bitmap.UnlockBits(bitmapData);\r
-\r
- // Close the image so we don't leak memory.\r
- IntPtr nativeJobPtrPtr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(IntPtr)));\r
- Marshal.WriteIntPtr(nativeJobPtrPtr, resultingImageStuct);\r
- HBFunctions.hb_image_close(nativeJobPtrPtr);\r
- Marshal.FreeHGlobal(nativeJobPtrPtr); \r
-\r
- // Create a Bitmap Image for display.\r
- using (var memoryStream = new MemoryStream())\r
- {\r
- try\r
- {\r
- bitmap.Save(memoryStream, ImageFormat.Bmp);\r
- }\r
- finally\r
- {\r
- bitmap.Dispose();\r
- }\r
-\r
- var wpfBitmap = new BitmapImage();\r
- wpfBitmap.BeginInit();\r
- wpfBitmap.CacheOption = BitmapCacheOption.OnLoad;\r
- wpfBitmap.StreamSource = memoryStream;\r
- wpfBitmap.EndInit();\r
- wpfBitmap.Freeze();\r
-\r
- return wpfBitmap;\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Starts an encode with the given job.\r
- /// </summary>\r
- /// <param name="job">\r
- /// The job to start.\r
- /// </param>\r
- /// <param name="title">\r
- /// The title.\r
- /// </param>\r
- [HandleProcessCorruptedStateExceptions]\r
- public void StartEncode(EncodeJob job, Title title)\r
- {\r
- JsonEncodeObject encodeObject = EncodeFactory.Create(job, title);\r
-\r
- JsonSerializerSettings settings = new JsonSerializerSettings\r
- {\r
- NullValueHandling = NullValueHandling.Ignore,\r
- };\r
-\r
- string encode = JsonConvert.SerializeObject(encodeObject, Formatting.Indented, settings);\r
- HBFunctions.hb_add_json(this.hbHandle, InteropUtilities.ToUtf8PtrFromString(encode));\r
- HBFunctions.hb_start(this.hbHandle);\r
-\r
- this.encodePollTimer = new Timer();\r
- this.encodePollTimer.Interval = EncodePollIntervalMs;\r
-\r
- this.encodePollTimer.Elapsed += (o, e) =>\r
- {\r
- try\r
- {\r
- this.PollEncodeProgress();\r
- }\r
- catch (Exception exc)\r
- {\r
- Debug.WriteLine(exc);\r
- }\r
- };\r
- this.encodePollTimer.Start();\r
- }\r
-\r
- /// <summary>\r
- /// Pauses the current encode.\r
- /// </summary>\r
- [HandleProcessCorruptedStateExceptions] \r
- public void PauseEncode()\r
- {\r
- HBFunctions.hb_pause(this.hbHandle);\r
- }\r
-\r
- /// <summary>\r
- /// Resumes a paused encode.\r
- /// </summary>\r
- [HandleProcessCorruptedStateExceptions] \r
- public void ResumeEncode()\r
- {\r
- HBFunctions.hb_resume(this.hbHandle);\r
- }\r
-\r
- /// <summary>\r
- /// Stops the current encode.\r
- /// </summary>\r
- [HandleProcessCorruptedStateExceptions] \r
- public void StopEncode()\r
- {\r
- HBFunctions.hb_stop(this.hbHandle);\r
-\r
- // Also remove all jobs from the queue (in case we stopped a 2-pass encode)\r
- var currentJobs = new List<IntPtr>();\r
-\r
- int jobs = HBFunctions.hb_count(this.hbHandle);\r
- for (int i = 0; i < jobs; i++)\r
- {\r
- currentJobs.Add(HBFunctions.hb_job(this.hbHandle, 0));\r
- }\r
-\r
- foreach (IntPtr job in currentJobs)\r
- {\r
- HBFunctions.hb_rem(this.hbHandle, job);\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Frees any resources associated with this object.\r
- /// </summary>\r
- public void Dispose()\r
- {\r
- if (this.disposed)\r
- {\r
- return;\r
- }\r
-\r
- this.Dispose(true);\r
- GC.SuppressFinalize(this);\r
- }\r
-\r
- /// <summary>\r
- /// Frees any resources associated with this object.\r
- /// </summary>\r
- /// <param name="disposing">\r
- /// True if managed objects as well as unmanaged should be disposed.\r
- /// </param>\r
- protected virtual void Dispose(bool disposing)\r
- {\r
- if (disposing)\r
- {\r
- // Free other state (managed objects).\r
- }\r
-\r
- // Free unmanaged objects.\r
- IntPtr handlePtr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(IntPtr)));\r
- Marshal.WriteIntPtr(handlePtr, this.hbHandle);\r
- HBFunctions.hb_close(handlePtr);\r
- Marshal.FreeHGlobal(handlePtr);\r
-\r
- this.disposed = true;\r
- }\r
-\r
- /// <summary>\r
- /// Checks the status of the ongoing scan.\r
- /// </summary>\r
- [HandleProcessCorruptedStateExceptions]\r
- private void PollScanProgress()\r
- {\r
- IntPtr json = HBFunctions.hb_get_state_json(this.hbHandle);\r
- string statusJson = Marshal.PtrToStringAnsi(json);\r
- JsonState state = JsonConvert.DeserializeObject<JsonState>(statusJson);\r
-\r
- if (state != null && state.State == NativeConstants.HB_STATE_SCANNING)\r
- {\r
- if (this.ScanProgress != null)\r
- {\r
- this.ScanProgress(this, new ScanProgressEventArgs\r
- {\r
- Progress = state.Scanning.Progress, \r
- CurrentPreview = state.Scanning.Preview, \r
- Previews = state.Scanning.PreviewCount, \r
- CurrentTitle = state.Scanning.Title, \r
- Titles = state.Scanning.TitleCount\r
- });\r
- }\r
- }\r
- else if (state != null && state.State == NativeConstants.HB_STATE_SCANDONE)\r
- {\r
- this.titles = new List<Title>();\r
-\r
- var jsonMsg = HBFunctions.hb_get_title_set_json(this.hbHandle);\r
-\r
- string scanJson = InteropUtilities.ToStringFromUtf8Ptr(jsonMsg);\r
-\r
- JsonScanObject scanObject = JsonConvert.DeserializeObject<JsonScanObject>(scanJson);\r
-\r
- foreach (Title title in ScanFactory.CreateTitleSet(scanObject))\r
- { \r
- // Set the Main Title.\r
- this.featureTitle = title.IsMainFeature ? title.TitleNumber : 0;\r
-\r
- this.titles.Add(title);\r
- }\r
-\r
- this.scanPollTimer.Stop();\r
-\r
- if (this.ScanCompleted != null)\r
- {\r
- this.ScanCompleted(this, new System.EventArgs());\r
- }\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Checks the status of the ongoing encode.\r
- /// </summary>\r
- /// <summary>\r
- /// Checks the status of the ongoing encode.\r
- /// </summary>\r
- [HandleProcessCorruptedStateExceptions]\r
- private void PollEncodeProgress()\r
- {\r
- IntPtr json = HBFunctions.hb_get_state_json(this.hbHandle);\r
- string statusJson = Marshal.PtrToStringAnsi(json);\r
- JsonState state = JsonConvert.DeserializeObject<JsonState>(statusJson);\r
-\r
- if (state != null && state.State == NativeConstants.HB_STATE_WORKING)\r
- {\r
- if (this.EncodeProgress != null)\r
- {\r
- var progressEventArgs = new EncodeProgressEventArgs\r
- {\r
- FractionComplete = state.Working.Progress, \r
- CurrentFrameRate = state.Working.Rate, \r
- AverageFrameRate = state.Working.RateAvg, \r
- EstimatedTimeLeft = new TimeSpan(state.Working.Hours, state.Working.Minutes, state.Working.Seconds), \r
- Pass = 1, // TODO\r
- };\r
-\r
- this.EncodeProgress(this, progressEventArgs);\r
- }\r
- }\r
- else if (state != null && state.State == NativeConstants.HB_STATE_WORKDONE)\r
- {\r
- this.encodePollTimer.Stop();\r
-\r
- if (this.EncodeCompleted != null)\r
- {\r
- this.EncodeCompleted(this, new EncodeCompletedEventArgs\r
- {\r
- Error = state.WorkDone.Error != (int)hb_error_code.HB_ERROR_NONE\r
- });\r
- }\r
- }\r
- }\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="HandBrakeInstanceManager.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The hand brake instance manager.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop\r
-{\r
- using System;\r
-\r
- using HandBrake.Interop.Interfaces;\r
-\r
- /// <summary>\r
- /// The HandBrake Instance manager.\r
- /// Only supports scanning right now.\r
- /// </summary>\r
- public static class HandBrakeInstanceManager\r
- {\r
- private static HandBrakeInstance scanInstance;\r
- private static HandBrakeInstance encodeInstance;\r
-\r
- /// <summary>\r
- /// Gets the scanInstance.\r
- /// </summary>\r
- /// <param name="verbosity">\r
- /// The verbosity.\r
- /// </param>\r
- /// <returns>\r
- /// The <see cref="IHandBrakeInstance"/>.\r
- /// </returns>\r
- public static IHandBrakeInstance GetScanInstance(int verbosity)\r
- {\r
- if (scanInstance != null)\r
- {\r
- scanInstance.Dispose();\r
- scanInstance = null;\r
- }\r
-\r
- HandBrakeInstance newInstance = new HandBrakeInstance();\r
- newInstance.Initialize(verbosity);\r
- scanInstance = newInstance;\r
-\r
- return scanInstance;\r
- }\r
-\r
- /// <summary>\r
- /// The get encode instance.\r
- /// </summary>\r
- /// <param name="verbosity">\r
- /// The verbosity.\r
- /// </param>\r
- /// <returns>\r
- /// The <see cref="IHandBrakeInstance"/>.\r
- /// </returns>\r
- public static IHandBrakeInstance GetEncodeInstance(int verbosity)\r
- {\r
- if (encodeInstance != null)\r
- {\r
- encodeInstance.Dispose();\r
- encodeInstance = null;\r
- }\r
-\r
- HandBrakeInstance newInstance = new HandBrakeInstance();\r
- newInstance.Initialize(verbosity);\r
- encodeInstance = newInstance;\r
-\r
- return encodeInstance;\r
- }\r
-\r
- /// <summary>\r
- /// Gets the last scan scan instance.\r
- /// </summary>\r
- public static IHandBrakeInstance LastScanScanInstance\r
- {\r
- get\r
- {\r
- return scanInstance;\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Gets the handle.\r
- /// </summary>\r
- internal static IntPtr LastScanHandle \r
- {\r
- get\r
- {\r
- return scanInstance.Handle;\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Gets the last encode scan instance.\r
- /// </summary>\r
- public static IHandBrakeInstance LastEncodeScanInstance\r
- {\r
- get\r
- {\r
- return encodeInstance;\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Gets the encode handle.\r
- /// </summary>\r
- internal static IntPtr LastEncodeHandle\r
- {\r
- get\r
- {\r
- return encodeInstance.Handle;\r
- }\r
- }\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="HandBrakeLanguagesHelper.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Contains utilities for converting language codes.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop\r
-{\r
- using System.Collections.Generic;\r
-\r
- using HandBrake.Interop.HbLib;\r
- using HandBrake.Interop.Helpers;\r
- using HandBrake.Interop.Model;\r
-\r
- /// <summary>\r
- /// Contains utilities for converting language codes.\r
- /// </summary>\r
- public static class Languages\r
- {\r
- /// <summary>\r
- /// The list of all languages.\r
- /// </summary>\r
- private static IList<Language> allLanguages; \r
-\r
- /// <summary>\r
- /// Gets a list of all languages.\r
- /// </summary>\r
- public static IList<Language> AllLanguages\r
- {\r
- get\r
- {\r
- return allLanguages\r
- ?? (allLanguages =\r
- InteropUtilities.ToListFromIterator<iso639_lang_t, Language>(HBFunctions.lang_get_next, HandBrakeUnitConversionHelpers.NativeToLanguage));\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Gets the language object for the given code.\r
- /// </summary>\r
- /// <param name="code">The ISO-639-2 code for the language.</param>\r
- /// <returns>Object that describes the language.</returns>\r
- public static Language Get(string code)\r
- {\r
- iso639_lang_t language = InteropUtilities.ToStructureFromPtr<iso639_lang_t>(HBFunctions.lang_for_code2(code));\r
- return HandBrakeUnitConversionHelpers.NativeToLanguage(language);\r
- }\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="HandBrakeUnitConversionHelpers.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Defines the HandrakeUnitConversionHelpers type.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop\r
-{\r
- using System;\r
- using System.Collections.Generic;\r
- using System.Globalization;\r
-\r
- using HandBrake.Interop.HbLib;\r
- using HandBrake.Interop.Helpers;\r
- using HandBrake.Interop.Model;\r
- using HandBrake.Interop.Model.Encoding;\r
-\r
- /// <summary>\r
- /// Converters for various encoding values.\r
- /// </summary>\r
- public static class HandBrakeUnitConversionHelpers\r
- {\r
- /// <summary>\r
- /// Video Frame Rates\r
- /// </summary>\r
- private static readonly Dictionary<double, int> VideoRates;\r
-\r
- /// <summary>\r
- /// Initializes static members of the HandBrakeUnitConversionHelpers class.\r
- /// </summary>\r
- static HandBrakeUnitConversionHelpers()\r
- {\r
- HandBrakeUtils.EnsureGlobalInit();\r
-\r
- VideoRates = new Dictionary<double, int>();\r
- foreach (var framerate in HandBrakeEncoderHelpers.VideoFramerates)\r
- {\r
- VideoRates.Add(double.Parse(framerate.Name, CultureInfo.InvariantCulture), framerate.Rate);\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Convert Framerate to Video Rates\r
- /// </summary>\r
- /// <param name="framerate">\r
- /// The framerate.\r
- /// </param>\r
- /// <returns>\r
- /// The vrate if a valid framerate is passed in.\r
- /// </returns>\r
- /// <exception cref="ArgumentException">\r
- /// Thrown when framerate is invalid.\r
- /// </exception>\r
- public static int FramerateToVrate(double framerate)\r
- {\r
- if (!VideoRates.ContainsKey(framerate))\r
- {\r
- throw new ArgumentException("Framerate not recognized.", "framerate");\r
- }\r
-\r
- return VideoRates[framerate];\r
- }\r
-\r
- /// <summary>\r
- /// Converts a native HB encoder structure to an Encoder model.\r
- /// </summary>\r
- /// <param name="encoder">\r
- /// The structure to convert.\r
- /// </param>\r
- /// <returns>\r
- /// The converted model.\r
- /// </returns>\r
- public static HBVideoEncoder NativeToVideoEncoder(hb_encoder_s encoder)\r
- {\r
- return new HBVideoEncoder\r
- {\r
- Id = encoder.codec, \r
- ShortName = encoder.short_name, \r
- DisplayName = encoder.name, \r
- CompatibleContainers = encoder.muxers\r
- };\r
- }\r
-\r
- /// <summary>\r
- /// Converts a native HB encoder structure to an Encoder model.\r
- /// </summary>\r
- /// <param name="encoder">\r
- /// The structure to convert.\r
- /// </param>\r
- /// <returns>\r
- /// The converted model.\r
- /// </returns>\r
- public static HBAudioEncoder NativeToAudioEncoder(hb_encoder_s encoder)\r
- {\r
- var result = new HBAudioEncoder\r
- {\r
- Id = encoder.codec, \r
- ShortName = encoder.short_name, \r
- DisplayName = encoder.name, \r
- CompatibleContainers = encoder.muxers,\r
- QualityLimits = HandBrakeEncoderHelpers.GetAudioQualityLimits(encoder.codec), \r
- DefaultQuality = HBFunctions.hb_audio_quality_get_default((uint)encoder.codec), \r
- CompressionLimits = HandBrakeEncoderHelpers.GetAudioCompressionLimits(encoder.codec), \r
- DefaultCompression =\r
- HBFunctions.hb_audio_compression_get_default((uint)encoder.codec)\r
- };\r
-\r
- return result;\r
- }\r
-\r
- /// <summary>\r
- /// Converts a native HB rate structure to an HBRate object.\r
- /// </summary>\r
- /// <param name="rate">\r
- /// The structure to convert.\r
- /// </param>\r
- /// <returns>\r
- /// The converted rate object.\r
- /// </returns>\r
- public static HBRate NativeToRate(hb_rate_s rate)\r
- {\r
- return new HBRate\r
- {\r
- Name = rate.name, \r
- Rate = rate.rate\r
- };\r
- }\r
-\r
- /// <summary>\r
- /// Converts a native HB mixdown structure to a Mixdown model.\r
- /// </summary>\r
- /// <param name="mixdown">\r
- /// The structure to convert.\r
- /// </param>\r
- /// <returns>\r
- /// The converted model.\r
- /// </returns>\r
- public static HBMixdown NativeToMixdown(hb_mixdown_s mixdown)\r
- {\r
- return new HBMixdown\r
- {\r
- Id = mixdown.amixdown, \r
- ShortName = mixdown.short_name, \r
- DisplayName = mixdown.name\r
- };\r
- }\r
-\r
- /// <summary>\r
- /// Converts a native HB container structure into an HBContainer object.\r
- /// </summary>\r
- /// <param name="container">\r
- /// The structure to convert.\r
- /// </param>\r
- /// <returns>\r
- /// The converted structure.\r
- /// </returns>\r
- public static HBContainer NativeToContainer(hb_container_s container)\r
- {\r
- return new HBContainer\r
- {\r
- DisplayName = container.name, \r
- ShortName = container.short_name, \r
- DefaultExtension = container.default_extension, \r
- Id = container.format\r
- };\r
- }\r
-\r
- /// <summary>\r
- /// Converts a native language structure to a Language object.\r
- /// </summary>\r
- /// <param name="language">\r
- /// The structure to convert.\r
- /// </param>\r
- /// <returns>\r
- /// The converted structure.\r
- /// </returns>\r
- public static Language NativeToLanguage(iso639_lang_t language)\r
- {\r
- string englishName = InteropUtilities.ToStringFromUtf8Ptr(language.eng_name);\r
- string nativeName = InteropUtilities.ToStringFromUtf8Ptr(language.native_name);\r
- return new Language\r
- {\r
- Code = language.iso639_2, \r
- EnglishName = englishName, \r
- NativeName = nativeName\r
- };\r
- }\r
-\r
- /// <summary>\r
- /// Converts the PTS amount to a TimeSpan. There may be some accuracy loss here.\r
- /// </summary>\r
- /// <param name="pts">\r
- /// The PTS to convert.\r
- /// </param>\r
- /// <returns>\r
- /// The timespan for it.\r
- /// </returns>\r
- public static TimeSpan PtsToTimeSpan(ulong pts)\r
- {\r
- return TimeSpan.FromTicks((long)((pts * 10000000) / 90000));\r
- }\r
-\r
- /// <summary>\r
- /// Converts the PTS amount to seconds.\r
- /// </summary>\r
- /// <param name="pts">\r
- /// The PTS to convert.\r
- /// </param>\r
- /// <returns>\r
- /// The corresponding number of seconds.\r
- /// </returns>\r
- public static double PtsToSeconds(ulong pts)\r
- {\r
- return (double)pts / 90000;\r
- }\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="HandBrakeUtils.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Defines the HandBrakeUtils type.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop\r
-{\r
- using System;\r
- using System.Collections.Generic;\r
- using System.Diagnostics;\r
- using System.Runtime.InteropServices;\r
-\r
- using HandBrake.Interop.EventArgs;\r
- using HandBrake.Interop.HbLib;\r
- using HandBrake.Interop.Model;\r
- using HandBrake.Interop.Model.Encoding;\r
- using HandBrake.Interop.Model.Scan;\r
-\r
- /// <summary>\r
- /// HandBrake Interop Utilities\r
- /// </summary>\r
- public static class HandBrakeUtils\r
- {\r
- /// <summary>\r
- /// Estimated overhead in bytes for each frame in output container.\r
- /// </summary>\r
- internal const int ContainerOverheadPerFrame = 6;\r
-\r
- /// <summary>\r
- /// The callback for log messages from HandBrake.\r
- /// </summary>\r
- private static LoggingCallback loggingCallback;\r
-\r
- /// <summary>\r
- /// The callback for error messages from HandBrake.\r
- /// </summary>\r
- private static LoggingCallback errorCallback;\r
-\r
- /// <summary>\r
- /// True if the global initialize function has been called.\r
- /// </summary>\r
- private static bool globalInitialized;\r
-\r
- /// <summary>\r
- /// Fires when HandBrake has logged a message.\r
- /// </summary>\r
- public static event EventHandler<MessageLoggedEventArgs> MessageLogged;\r
-\r
- /// <summary>\r
- /// Fires when HandBrake has logged an error.\r
- /// </summary>\r
- public static event EventHandler<MessageLoggedEventArgs> ErrorLogged;\r
-\r
- /// <summary>\r
- /// Initializes static members of the HandBrakeUtils class.\r
- /// </summary>\r
- static HandBrakeUtils()\r
- {\r
- if (!globalInitialized)\r
- {\r
- if (HBFunctions.hb_global_init() == -1)\r
- {\r
- throw new InvalidOperationException("HB global init failed.");\r
- }\r
-\r
- globalInitialized = true;\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Gets the HandBrake version string.\r
- /// </summary>\r
- public static string Version\r
- {\r
- get\r
- {\r
- var versionPtr = HBFunctions.hb_get_version(IntPtr.Zero); // Pointer isn't actually used.\r
- return Marshal.PtrToStringAnsi(versionPtr);\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Gets the HandBrake build number.\r
- /// </summary>\r
- public static int Build\r
- {\r
- get\r
- {\r
- return HBFunctions.hb_get_build(IntPtr.Zero);\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Ensures the HB global initialize method has been called.\r
- /// </summary>\r
- public static void EnsureGlobalInit()\r
- {\r
- // Does nothing, but invokes static ctor.\r
- }\r
-\r
- /// <summary>\r
- /// Enables or disables LibDVDNav. If disabled libdvdread will be used instead.\r
- /// </summary>\r
- /// <param name="enableDvdNav">\r
- /// True to enable LibDVDNav.\r
- /// </param>\r
- public static void SetDvdNav(bool enableDvdNav)\r
- {\r
- HBFunctions.hb_dvd_set_dvdnav(enableDvdNav ? 1 : 0);\r
- }\r
-\r
- /// <summary>\r
- /// Call before app shutdown. Performs global cleanup.\r
- /// </summary>\r
- public static void DisposeGlobal()\r
- {\r
- HBFunctions.hb_global_close();\r
- }\r
-\r
- /// <summary>\r
- /// Register the logger.\r
- /// </summary>\r
- public static void RegisterLogger()\r
- {\r
- // Register the logger if we have not already\r
- if (loggingCallback == null)\r
- {\r
- // Keep the callback as a member to prevent it from being garbage collected.\r
- loggingCallback = LoggingHandler;\r
- errorCallback = ErrorHandler;\r
- HBFunctions.hb_register_logger(loggingCallback);\r
- HBFunctions.hb_register_error_handler(errorCallback);\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Handles log messages from HandBrake.\r
- /// </summary>\r
- /// <param name="message">\r
- /// The log message (including newline).\r
- /// </param>\r
- public static void LoggingHandler(string message)\r
- {\r
- if (!string.IsNullOrEmpty(message))\r
- {\r
- string[] messageParts = message.Split(new[] { "\n" }, StringSplitOptions.RemoveEmptyEntries);\r
-\r
- if (messageParts.Length > 0)\r
- {\r
- message = messageParts[0];\r
- SendMessageEvent(message);\r
- }\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Handles errors from HandBrake.\r
- /// </summary>\r
- /// <param name="message">\r
- /// The error message.\r
- /// </param>\r
- public static void ErrorHandler(string message)\r
- {\r
- if (!string.IsNullOrEmpty(message))\r
- {\r
- // These errors happen in normal operations. Log them as messages.\r
- if (message == "dvd: ifoOpen failed" || message.Contains("avformat_seek_file failed") || message.Contains("nav_get_title_list"))\r
- {\r
- SendMessageEvent(message);\r
- return;\r
- }\r
-\r
- SendErrorEvent(message);\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Gets the standard x264 option name given the starting point.\r
- /// </summary>\r
- /// <param name="name">\r
- /// The name.\r
- /// </param>\r
- /// <returns>\r
- /// The standard x264 option name.\r
- /// </returns>\r
- public static string SanitizeX264OptName(string name)\r
- {\r
- IntPtr namePtr = Marshal.StringToHGlobalAnsi(name);\r
- string sanitizedName = Marshal.PtrToStringAnsi(HBFunctions.hb_x264_encopt_name(namePtr));\r
- Marshal.FreeHGlobal(namePtr);\r
- return sanitizedName;\r
- }\r
-\r
- /// <summary>\r
- /// Checks to see if the given H.264 level is valid given the inputs.\r
- /// </summary>\r
- /// <param name="level">\r
- /// The level to check.\r
- /// </param>\r
- /// <param name="width">\r
- /// The output picture width.\r
- /// </param>\r
- /// <param name="height">\r
- /// The output picture height.\r
- /// </param>\r
- /// <param name="fpsNumerator">\r
- /// The rate numerator.\r
- /// </param>\r
- /// <param name="fpsDenominator">\r
- /// The rate denominator.\r
- /// </param>\r
- /// <param name="interlaced">\r
- /// True if x264 interlaced output is enabled.\r
- /// </param>\r
- /// <param name="fakeInterlaced">\r
- /// True if x264 fake interlacing is enabled.\r
- /// </param>\r
- /// <returns>\r
- /// True if the level is valid.\r
- /// </returns>\r
- public static bool IsH264LevelValid(string level, int width, int height, int fpsNumerator, int fpsDenominator, bool interlaced, bool fakeInterlaced)\r
- {\r
- return HBFunctions.hb_check_h264_level(\r
- level, \r
- width, \r
- height, \r
- fpsNumerator, \r
- fpsDenominator, \r
- interlaced ? 1 : 0, \r
- fakeInterlaced ? 1 : 0) == 0;\r
- }\r
-\r
- /// <summary>\r
- /// Creates an X264 options string from the given settings.\r
- /// </summary>\r
- /// <param name="preset">\r
- /// The x264 preset.\r
- /// </param>\r
- /// <param name="tunes">\r
- /// The x264 tunes being used.\r
- /// </param>\r
- /// <param name="extraOptions">\r
- /// The extra options string.\r
- /// </param>\r
- /// <param name="profile">\r
- /// The H.264 profile.\r
- /// </param>\r
- /// <param name="level">\r
- /// The H.264 level.\r
- /// </param>\r
- /// <param name="width">\r
- /// The width of the final picture.\r
- /// </param>\r
- /// <param name="height">\r
- /// The height of the final picture.\r
- /// </param>\r
- /// <returns>\r
- /// The full x264 options string from the given inputs.\r
- /// </returns>\r
- public static string CreateX264OptionsString(\r
- string preset, \r
- IList<string> tunes, \r
- string extraOptions, \r
- string profile, \r
- string level, \r
- int width, \r
- int height)\r
- {\r
- if (width <= 0)\r
- {\r
- throw new ArgumentException("width must be positive.");\r
- }\r
-\r
- if (height <= 0)\r
- {\r
- throw new ArgumentException("height must be positive.");\r
- }\r
-\r
- IntPtr ptr = HBFunctions.hb_x264_param_unparse(\r
- preset, \r
- string.Join(",", tunes), \r
- extraOptions, \r
- profile, \r
- level, \r
- width, \r
- height);\r
-\r
- string x264Settings = Marshal.PtrToStringAnsi(ptr);\r
-\r
- return x264Settings;\r
- }\r
-\r
- /// <summary>\r
- /// Sends the message logged event to any registered listeners.\r
- /// </summary>\r
- /// <param name="message">\r
- /// The message to send.\r
- /// </param>\r
- private static void SendMessageEvent(string message)\r
- {\r
- if (MessageLogged != null)\r
- {\r
- MessageLogged(null, new MessageLoggedEventArgs { Message = message });\r
- }\r
-\r
- Debug.WriteLine(message);\r
- }\r
-\r
- /// <summary>\r
- /// Sends the error logged event to any registered listeners.\r
- /// </summary>\r
- /// <param name="message">\r
- /// The message to send\r
- /// </param>\r
- private static void SendErrorEvent(string message)\r
- {\r
- if (ErrorLogged != null)\r
- {\r
- ErrorLogged(null, new MessageLoggedEventArgs { Message = message });\r
- }\r
-\r
- Debug.WriteLine("ERROR: " + message);\r
- }\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="HBDelegates.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Contains delegates for HandBrake interop.\r
-// </summary>\r
-// <auto-generated> Disable Stylecop Warnings for this file </auto-generated>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.HbLib\r
-{\r
- using System.Runtime.InteropServices;\r
-\r
- [UnmanagedFunctionPointer(CallingConvention.Cdecl)]\r
- public delegate void LoggingCallback(string message);\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="HBFunctions.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Defines the HBFunctions type.\r
-// </summary>\r
-// <auto-generated> Disable Stylecop Warnings for this file </auto-generated>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.HbLib\r
-{\r
- using System;\r
- using System.Runtime.InteropServices;\r
-\r
- /// <summary>\r
- /// Contains p-invoke function declarations to hblib.\r
- /// </summary>\r
- public static class HBFunctions\r
- {\r
- [DllImport("hb.dll", EntryPoint = "hb_register_logger", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern void hb_register_logger(LoggingCallback callback);\r
-\r
- [DllImport("hb.dll", EntryPoint = "hb_register_error_handler", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern void hb_register_error_handler(LoggingCallback callback);\r
-\r
- [DllImport("hb.dll", EntryPoint = "hb_global_init", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern int hb_global_init();\r
-\r
- /// Return Type: hb_handle_t*\r
- ///verbose: int\r
- ///update_check: int\r
- [DllImport("hb.dll", EntryPoint = "hb_init", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern IntPtr hb_init(int verbose, int update_check);\r
-\r
-\r
- /// Return Type: hb_handle_t*\r
- ///verbose: int\r
- ///update_check: int\r
- [DllImport("hb.dll", EntryPoint = "hb_init_dl", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern IntPtr hb_init_dl(int verbose, int update_check);\r
-\r
-\r
- /// Return Type: char*\r
- ///param0: hb_handle_t*\r
- [DllImport("hb.dll", EntryPoint = "hb_get_version", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern IntPtr hb_get_version(IntPtr hbHandle);\r
-\r
-\r
- /// Return Type: int\r
- ///param0: hb_handle_t*\r
- [DllImport("hb.dll", EntryPoint = "hb_get_build", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern int hb_get_build(IntPtr hbHandle);\r
-\r
-\r
- /// Return Type: int\r
- ///h: hb_handle_t*\r
- ///version: char**\r
- [DllImport("hb.dll", EntryPoint = "hb_check_update", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern int hb_check_update(IntPtr handle, ref IntPtr version);\r
-\r
-\r
- /// Return Type: char*\r
- ///path: char*\r
- [DllImport("hb.dll", EntryPoint = "hb_dvd_name", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern IntPtr hb_dvd_name(IntPtr path);\r
-\r
-\r
- /// Return Type: void\r
- ///enable: int\r
- [DllImport("hb.dll", EntryPoint = "hb_dvd_set_dvdnav", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern void hb_dvd_set_dvdnav(int enable);\r
-\r
-\r
- /// Return Type: void\r
- ///param0: hb_handle_t*\r
- ///path: char*\r
- ///title_index: int\r
- ///preview_count: int\r
- ///store_previews: int\r
- [DllImport("hb.dll", EntryPoint = "hb_scan", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern void hb_scan(IntPtr hbHandle, IntPtr path, int title_index, int preview_count, int store_previews, ulong min_duration);\r
-\r
- [DllImport("hb.dll", EntryPoint = "hb_scan_stop", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern void hb_scan_stop(IntPtr hbHandle);\r
-\r
- /// Return Type: hb_list_t*\r
- ///param0: hb_handle_t*\r
- [DllImport("hb.dll", EntryPoint = "hb_get_titles", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern IntPtr hb_get_titles(IntPtr hbHandle);\r
-\r
- [DllImport("hb.dll", EntryPoint = "hb_set_anamorphic_size2", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern void hb_set_anamorphic_size2(ref hb_geometry_s sourceGeometry, ref hb_geometry_settings_s uiGeometry, ref hb_geometry_s result);\r
- \r
-\r
- /// Return Type: int\r
- ///param0: hb_handle_t*\r
- [DllImport("hb.dll", EntryPoint = "hb_count", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern int hb_count(IntPtr hbHandle);\r
-\r
-\r
- /// Return Type: hb_job_t*\r
- ///param0: hb_handle_t*\r
- ///param1: int\r
- [DllImport("hb.dll", EntryPoint = "hb_job", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern IntPtr hb_job(IntPtr hbHandle, int jobIndex);\r
-\r
- /// Return Type: void\r
- ///param0: hb_handle_t*\r
- ///param1: hb_job_t*\r
- [DllImport("hb.dll", EntryPoint = "hb_rem", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern void hb_rem(IntPtr hbHandle, IntPtr job);\r
-\r
-\r
- /// Return Type: void\r
- ///param0: hb_handle_t*\r
- [DllImport("hb.dll", EntryPoint = "hb_start", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern void hb_start(IntPtr hbHandle);\r
-\r
-\r
- /// Return Type: void\r
- ///param0: hb_handle_t*\r
- [DllImport("hb.dll", EntryPoint = "hb_pause", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern void hb_pause(IntPtr hbHandle);\r
-\r
-\r
- /// Return Type: void\r
- ///param0: hb_handle_t*\r
- [DllImport("hb.dll", EntryPoint = "hb_resume", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern void hb_resume(IntPtr hbHandle);\r
-\r
-\r
- /// Return Type: void\r
- ///param0: hb_handle_t*\r
- [DllImport("hb.dll", EntryPoint = "hb_stop", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern void hb_stop(IntPtr hbHandle);\r
-\r
-\r
- /// Return Type: int\r
- ///param0: hb_handle_t*\r
- [DllImport("hb.dll", EntryPoint = "hb_get_scancount", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern int hb_get_scancount(IntPtr hbHandle);\r
-\r
-\r
- /// Return Type: void\r
- ///param0: hb_handle_t**\r
- [DllImport("hb.dll", EntryPoint = "hb_close", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern void hb_close(IntPtr hbHandle);\r
-\r
- [DllImport("hb.dll", EntryPoint = "hb_global_close", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern void hb_global_close();\r
-\r
- //hb_list_t * hb_list_init();\r
- [DllImport("hb.dll", EntryPoint = "hb_list_init", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern IntPtr hb_list_init();\r
-\r
- //int hb_list_count( const hb_list_t * );\r
- [DllImport("hb.dll", EntryPoint = "hb_list_count", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern int hb_list_count(IntPtr listPtr);\r
-\r
- //void hb_list_add( hb_list_t *, void * );\r
- [DllImport("hb.dll", EntryPoint = "hb_list_add", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern void hb_list_add(IntPtr listPtr, IntPtr item);\r
-\r
- //void hb_list_insert( hb_list_t * l, int pos, void * p );\r
- [DllImport("hb.dll", EntryPoint = "hb_list_insert", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern void hb_list_insert(IntPtr listPtr, int pos, IntPtr item);\r
-\r
- //void hb_list_rem( hb_list_t *, void * );\r
- [DllImport("hb.dll", EntryPoint = "hb_list_rem", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern void hb_list_rem(IntPtr listPtr, IntPtr item);\r
-\r
- //void * hb_list_item( const hb_list_t *, int );\r
- [DllImport("hb.dll", EntryPoint = "hb_list_item", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern IntPtr hb_list_item(IntPtr listPtr, int itemIndex);\r
-\r
- //void hb_list_close( hb_list_t ** );\r
- [DllImport("hb.dll", EntryPoint = "hb_list_close", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern void hb_list_close(IntPtr listPtrPtr);\r
-\r
- [DllImport("hb.dll", EntryPoint = "hb_subtitle_can_force", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern int hb_subtitle_can_force(int source);\r
-\r
- [DllImport("hb.dll", EntryPoint = "hb_subtitle_can_burn", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern int hb_subtitle_can_burn(int source);\r
-\r
- [DllImport("hb.dll", EntryPoint = "hb_subtitle_can_pass", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern int hb_subtitle_can_pass(int source, int mux);\r
-\r
-\r
- // int hb_video_framerate_get_from_name(const char *name)\r
- [DllImport("hb.dll", EntryPoint = "hb_video_framerate_get_from_name", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern int hb_video_framerate_get_from_name(IntPtr name);\r
-\r
-//const char* hb_video_framerate_get_name(int framerate);\r
-//const char* hb_video_framerate_sanitize_name(const char *name);\r
-\r
- // returns hb_rate_s\r
- [DllImport("hb.dll", EntryPoint = "hb_video_framerate_get_next", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern IntPtr hb_video_framerate_get_next(IntPtr last);\r
-\r
-\r
-//int hb_audio_samplerate_get_best(uint32_t codec, int samplerate, int *sr_shift);\r
-//int hb_audio_samplerate_get_from_name(const char *name);\r
-//const char* hb_audio_samplerate_get_name(int samplerate);\r
-\r
- // returns hb_rate_s\r
- [DllImport("hb.dll", EntryPoint = "hb_audio_samplerate_get_next", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern IntPtr hb_audio_samplerate_get_next(IntPtr last);\r
-\r
-\r
- [DllImport("hb.dll", EntryPoint = "hb_audio_bitrate_get_best", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern int hb_audio_bitrate_get_best(uint codec, int bitrate, int samplerate, int mixdown);\r
-\r
- [DllImport("hb.dll", EntryPoint = "hb_audio_bitrate_get_default", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern int hb_audio_bitrate_get_default(uint codec, int samplerate, int mixdown);\r
-\r
- [DllImport("hb.dll", EntryPoint = "hb_audio_bitrate_get_limits", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern int hb_audio_bitrate_get_limits(uint codec, int samplerate, int mixdown, ref int low, ref int high);\r
-\r
- [DllImport("hb.dll", EntryPoint = "hb_audio_bitrate_get_next", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern IntPtr hb_audio_bitrate_get_next(IntPtr last);\r
-\r
- [DllImport("hb.dll", EntryPoint = "hb_video_quality_get_limits", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern void hb_video_quality_get_limits(uint codec, ref float low, ref float high, ref float granularity, ref int direction);\r
-\r
- [DllImport("hb.dll", EntryPoint = "hb_video_quality_get_name", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern IntPtr hb_video_quality_get_name(uint codec);\r
-\r
- [DllImport("hb.dll", EntryPoint = "hb_audio_quality_get_limits", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern void hb_audio_quality_get_limits(uint codec, ref float low, ref float high, ref float granularity, ref int direction);\r
-\r
-//float hb_audio_quality_get_best(uint32_t codec, float quality);\r
-\r
- [DllImport("hb.dll", EntryPoint = "hb_audio_quality_get_default", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern float hb_audio_quality_get_default(uint codec);\r
-\r
-\r
- [DllImport("hb.dll", EntryPoint = "hb_audio_compression_get_limits", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern void hb_audio_compression_get_limits(uint codec, ref float low, ref float high, ref float granularity, ref int direction);\r
-\r
-//float hb_audio_compression_get_best(uint32_t codec, float compression);\r
-\r
- [DllImport("hb.dll", EntryPoint = "hb_audio_compression_get_default", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern float hb_audio_compression_get_default(uint codec);\r
-\r
-\r
-//int hb_audio_dither_get_default();\r
-//int hb_audio_dither_get_default_method(); // default method, if enabled && supported\r
-//int hb_audio_dither_is_supported(uint32_t codec);\r
-//int hb_audio_dither_get_from_name(const char *name);\r
-//const char* hb_audio_dither_get_description(int method);\r
-//const hb_dither_t* hb_audio_dither_get_next(const hb_dither_t *last);\r
-\r
- // hb_audio_can_apply_drc2(hb_handle_t *h, int title_idx, int audio_idx, int encoder)\r
- [DllImport("hb.dll", EntryPoint = "hb_audio_can_apply_drc2", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern int hb_audio_can_apply_drc2(IntPtr handle, int title_index, int audio_index, int encoder);\r
-\r
- [DllImport("hb.dll", EntryPoint = "hb_mixdown_is_supported", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern int hb_mixdown_is_supported(int mixdown, uint codec, ulong layout);\r
-\r
- [DllImport("hb.dll", EntryPoint = "hb_mixdown_has_codec_support", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern int hb_mixdown_has_codec_support(int mixdown, uint codec);\r
-\r
- [DllImport("hb.dll", EntryPoint = "hb_mixdown_has_remix_support", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern int hb_mixdown_has_remix_support(int mixdown, ulong layout);\r
-\r
-//int hb_mixdown_get_discrete_channel_count(int mixdown);\r
-//int hb_mixdown_get_low_freq_channel_count(int mixdown);\r
-\r
- [DllImport("hb.dll", EntryPoint = "hb_mixdown_get_best", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern int hb_mixdown_get_best(uint codec, ulong layout, int mixdown);\r
-\r
- [DllImport("hb.dll", EntryPoint = "hb_mixdown_get_default", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern int hb_mixdown_get_default(uint codec, ulong layout);\r
-\r
-//int hb_mixdown_get_from_name(const char *name);\r
-//const char* hb_mixdown_get_name(int mixdown);\r
-//const char* hb_mixdown_get_short_name(int mixdown);\r
-//const char* hb_mixdown_sanitize_name(const char *name);\r
-\r
- [DllImport("hb.dll", EntryPoint = "hb_mixdown_get_next", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern IntPtr hb_mixdown_get_next(IntPtr last);\r
-\r
-//int hb_video_encoder_get_default(int muxer);\r
-//int hb_video_encoder_get_from_name(const char *name);\r
-//const char* hb_video_encoder_get_name(int encoder);\r
-//const char* hb_video_encoder_get_short_name(int encoder);\r
-//const char* hb_video_encoder_get_long_name(int encoder);\r
-//const char* hb_video_encoder_sanitize_name(const char *name);\r
-\r
- [DllImport("hb.dll", EntryPoint = "hb_video_encoder_get_next", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern IntPtr hb_video_encoder_get_next(IntPtr last);\r
-\r
-/*\r
- * hb_audio_encoder_get_fallback_for_passthru() will sanitize a passthru codec\r
- * to the matching audio encoder (if any is available).\r
- *\r
- * hb_audio_encoder_get_from_name(), hb_audio_encoder_sanitize_name() will\r
- * sanitize legacy encoder names, but won't convert passthru to an encoder.\r
- */\r
-//int hb_audio_encoder_get_fallback_for_passthru(int passthru);\r
-//int hb_audio_encoder_get_default(int muxer);\r
-//int hb_audio_encoder_get_from_name(const char *name);\r
-//const char* hb_audio_encoder_get_name(int encoder);\r
-//const char* hb_audio_encoder_get_short_name(int encoder);\r
-//const char* hb_audio_encoder_get_long_name(int encoder);\r
-//const char* hb_audio_encoder_sanitize_name(const char *name);\r
-\r
- [DllImport("hb.dll", EntryPoint = "hb_audio_encoder_get_next", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern IntPtr hb_audio_encoder_get_next(IntPtr last);\r
-\r
-//int hb_container_get_from_name(const char *name);\r
-//int hb_container_get_from_extension(const char *extension); // not really a container name\r
-//const char* hb_container_get_name(int format);\r
-//const char* hb_container_get_short_name(int format);\r
-//const char* hb_container_get_long_name(int format);\r
-//const char* hb_container_get_default_extension(int format);\r
-//const char* hb_container_sanitize_name(const char *name);\r
-\r
- [DllImport("hb.dll", EntryPoint = "hb_container_get_from_name", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern int hb_container_get_from_name([In] [MarshalAs(UnmanagedType.LPStr)] string name);\r
-\r
- [DllImport("hb.dll", EntryPoint = "hb_container_get_next", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern IntPtr hb_container_get_next(IntPtr last);\r
-\r
- [DllImport("hb.dll", EntryPoint = "hb_video_encoder_get_presets", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern IntPtr hb_video_encoder_get_presets(int encoder);\r
-\r
- [DllImport("hb.dll", EntryPoint = "hb_video_encoder_get_tunes", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern IntPtr hb_video_encoder_get_tunes(int encoder);\r
-\r
- [DllImport("hb.dll", EntryPoint = "hb_video_encoder_get_profiles", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern IntPtr hb_video_encoder_get_profiles(int encoder);\r
-\r
- [DllImport("hb.dll", EntryPoint = "hb_video_encoder_get_levels", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern IntPtr hb_video_encoder_get_levels(int encoder);\r
-\r
-\r
- [DllImport("hb.dll", EntryPoint = "lang_get_next", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern IntPtr lang_get_next(IntPtr last);\r
-\r
- [DllImport("hb.dll", EntryPoint = "lang_for_code2", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern IntPtr lang_for_code2([In] [MarshalAs(UnmanagedType.LPStr)] string code2);\r
-\r
-\r
- ///hb_title_set_t * hb_get_title_set( hb_handle_t * );\r
- [DllImport("hb.dll", EntryPoint = "hb_get_title_set", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern IntPtr hb_get_title_set(IntPtr hbHandle);\r
-\r
- ///hb_job_t * hb_job_init_by_index( hb_handle_t *h, int title_index );\r
- [DllImport("hb.dll", EntryPoint = "hb_job_init_by_index", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern IntPtr hb_job_init_by_index(IntPtr hbHandle, int title_index);\r
-\r
- ///void hb_job_close( hb_job_t ** job );\r
- [DllImport("hb.dll", EntryPoint = "hb_job_close", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern void hb_job_close(IntPtr job);\r
-\r
- ///void hb_chapter_set_title(hb_chapter_t *chapter, const char *title);\r
- [DllImport("hb.dll", EntryPoint = "hb_chapter_set_title", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern void hb_chapter_set_title(IntPtr chapter, [In] [MarshalAs(UnmanagedType.LPStr)] string title);\r
-\r
- ///void hb_chapter_set_title(hb_chapter_t *chapter, const char *title);\r
- [DllImport("hb.dll", EntryPoint = "hb_chapter_set_title", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern void hb_chapter_set_title__ptr(IntPtr chapter, IntPtr title);\r
-\r
- /// hb_filter_object_t * hb_filter_init( int filter_id );\r
- [DllImport("hb.dll", EntryPoint = "hb_filter_init", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern IntPtr hb_filter_init(int filter_id);\r
-\r
- [DllImport("hb.dll", EntryPoint = "hb_generate_filter_settings", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern IntPtr hb_generate_filter_settings(\r
- int filter_id,\r
- [In] [MarshalAs(UnmanagedType.LPStr)] string preset,\r
- [In] [MarshalAs(UnmanagedType.LPStr)] string tune);\r
-\r
- [DllImport("hb.dll", EntryPoint = "hb_x264_encopt_name", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern IntPtr hb_x264_encopt_name(IntPtr name);\r
-\r
- [DllImport("hb.dll", EntryPoint = "hb_check_h264_level", CallingConvention = CallingConvention.Cdecl)]\r
- 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);\r
-\r
- [DllImport("hb.dll", EntryPoint = "hb_x264_param_unparse", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern IntPtr hb_x264_param_unparse(\r
- [In] [MarshalAs(UnmanagedType.LPStr)] string x264_preset,\r
- [In] [MarshalAs(UnmanagedType.LPStr)] string x264_tune,\r
- [In] [MarshalAs(UnmanagedType.LPStr)] string x264_encopts,\r
- [In] [MarshalAs(UnmanagedType.LPStr)] string x264_profile,\r
- [In] [MarshalAs(UnmanagedType.LPStr)] string h264_level,\r
- int width,\r
- int height);\r
-\r
-\r
- [DllImport("hb.dll", EntryPoint = "hb_get_opencl_env", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern int hb_get_opencl_env();\r
-\r
- [DllImport("hb.dll", EntryPoint = "hb_qsv_available", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern int hb_qsv_available();\r
- \r
- [DllImport("hb.dll", EntryPoint = "hb_qsv_info_init", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern int hb_qsv_info_init();\r
-\r
- // hb_image_t* hb_get_preview2(hb_handle_t* h, int title_idx, int picture, hb_geometry_settings_t* geo, int deinterlace);\r
- [DllImport("hb.dll", EntryPoint = "hb_get_preview2", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern IntPtr hb_get_preview2(IntPtr hbHandle, int title_idx, int preview_idx, ref hb_geometry_settings_s geo, int deinterlace);\r
-\r
- // void hb_image_close(hb_image_t **_image);\r
- [DllImport("hb.dll", EntryPoint = "hb_image_close", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern IntPtr hb_image_close(IntPtr image);\r
-\r
-\r
- /* JSON API */\r
-\r
- // char * hb_get_title_set_json(hb_handle_t * h);\r
- [DllImport("hb.dll", EntryPoint = "hb_get_title_set_json", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern IntPtr hb_get_title_set_json(IntPtr hbHandle);\r
-\r
- // char * hb_job_init_json(hb_handle_t *h, int title_index);\r
- [DllImport("hb.dll", EntryPoint = "hb_job_init_json", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern IntPtr hb_job_init_json(IntPtr hbHandle, int title_index);\r
-\r
- // hb_job_t * hb_json_to_job(hb_handle_t * h, const char * json_job);\r
- [DllImport("hb.dll", EntryPoint = "hb_json_to_job", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern IntPtr hb_json_to_job(IntPtr hbHandle, IntPtr json_job);\r
-\r
- // int hb_add_json( hb_handle_t *, const char * ) \r
- [DllImport("hb.dll", EntryPoint = "hb_add_json", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern int hb_add_json(IntPtr hbHandle, IntPtr json_job);\r
-\r
- //char * hb_set_anamorphic_size_json(const char * json_param);\r
- [DllImport("hb.dll", EntryPoint = "hb_set_anamorphic_size_json", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern IntPtr hb_set_anamorphic_size_json(IntPtr json_param);\r
-\r
- // char * hb_get_state_json(hb_handle_t * h);\r
- [DllImport("hb.dll", EntryPoint = "hb_get_state_json", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern IntPtr hb_get_state_json(IntPtr hbHandle);\r
-\r
- // char* hb_get_preview_params_json(int title_idx, int preview_idx, int deinterlace, hb_geometry_settings_t *settings)\r
- [DllImport("hb.dll", EntryPoint = "hb_get_preview_params_json", CallingConvention = CallingConvention.Cdecl)]\r
- public static extern IntPtr hb_get_preview_params_json(int title_idx, int preview_idx, int deinterlace, ref hb_geometry_settings_s settings);\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="NativeConstants.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Defines the NativeConstants type.\r
-// </summary>\r
-// <auto-generated> Disable Stylecop Warnings for this file </auto-generated>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.HbLib\r
-{\r
- public class NativeConstants\r
- {\r
- // Audio encoders\r
- public const uint HB_ACODEC_MASK = 0x00FFFF00;\r
- public const uint HB_ACODEC_LAME = 0x00000200;\r
- public const uint HB_ACODEC_VORBIS = 0x00000400;\r
- public const uint HB_ACODEC_AC3 = 0x00000800;\r
- public const uint HB_ACODEC_LPCM = 0x00001000;\r
- public const uint HB_ACODEC_DCA = 0x00002000;\r
- public const uint HB_ACODEC_CA_AAC = 0x00004000;\r
- public const uint HB_ACODEC_CA_HAAC = 0x00008000;\r
- public const uint HB_ACODEC_FFAAC = 0x00010000;\r
- public const uint HB_ACODEC_FFMPEG = 0x00020000;\r
- public const uint HB_ACODEC_DCA_HD = 0x00040000;\r
- public const uint HB_ACODEC_MP3 = 0x00080000;\r
- public const uint HB_ACODEC_FFFLAC = 0x00100000;\r
- public const uint HB_ACODEC_FFFLAC24 = 0x00200000;\r
- public const uint HB_ACODEC_FDK_AAC = 0x00400000;\r
- public const uint HB_ACODEC_FDK_HAAC = 0x00800000;\r
- public const uint HB_ACODEC_FF_MASK = 0x00FF2800;\r
- public const uint HB_ACODEC_PASS_FLAG = 0x40000000;\r
- public const uint HB_ACODEC_PASS_MASK = (HB_ACODEC_MP3 | HB_ACODEC_FFAAC | HB_ACODEC_DCA_HD | HB_ACODEC_AC3 | HB_ACODEC_DCA);\r
- public const uint HB_ACODEC_AUTO_PASS = (HB_ACODEC_PASS_MASK | HB_ACODEC_PASS_FLAG);\r
- public const uint HB_ACODEC_MP3_PASS = (HB_ACODEC_MP3 | HB_ACODEC_PASS_FLAG);\r
- public const uint HB_ACODEC_AAC_PASS = (HB_ACODEC_FFAAC | HB_ACODEC_PASS_FLAG);\r
- public const uint HB_ACODEC_AC3_PASS = (HB_ACODEC_AC3 | HB_ACODEC_PASS_FLAG);\r
- public const uint HB_ACODEC_DCA_PASS = (HB_ACODEC_DCA | HB_ACODEC_PASS_FLAG);\r
- public const uint HB_ACODEC_DCA_HD_PASS = (HB_ACODEC_DCA_HD | HB_ACODEC_PASS_FLAG);\r
- public const uint HB_ACODEC_ANY = (HB_ACODEC_MASK | HB_ACODEC_PASS_FLAG);\r
-\r
- // Encode state\r
- public const int HB_STATE_IDLE = 1;\r
- public const int HB_STATE_SCANNING = 2;\r
- public const int HB_STATE_SCANDONE = 4;\r
- public const int HB_STATE_WORKING = 8;\r
- public const int HB_STATE_PAUSED = 16;\r
- public const int HB_STATE_WORKDONE = 32;\r
- public const int HB_STATE_MUXING = 64;\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="hb_job_s.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Defines the hb_job_s type.\r
-// </summary>\r
-// <auto-generated> Disable Stylecop Warnings for this file </auto-generated>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.HbLib\r
-{\r
- public enum hb_anamorphic_mode_t\r
- {\r
- HB_ANAMORPHIC_NONE,\r
- HB_ANAMORPHIC_STRICT,\r
- HB_ANAMORPHIC_LOOSE,\r
- HB_ANAMORPHIC_CUSTOM\r
- } ;\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="hb_container_s.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <auto-generated>Disable Stylecop Warnings for this file</auto-generated>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.HbLib\r
-{\r
- using System.Runtime.InteropServices;\r
-\r
- [StructLayout(LayoutKind.Sequential)]\r
- public struct hb_container_s\r
- {\r
- [MarshalAs(UnmanagedType.LPStr)]\r
- public string name;\r
-\r
- [MarshalAs(UnmanagedType.LPStr)]\r
- public string short_name;\r
-\r
- [MarshalAs(UnmanagedType.LPStr)]\r
- public string long_name;\r
-\r
- [MarshalAs(UnmanagedType.LPStr)]\r
- public string default_extension;\r
-\r
- public int format;\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="hb_encoder_s.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <auto-generated>Disable Stylecop Warnings for this file</auto-generated>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.HbLib\r
-{\r
- using System.Runtime.InteropServices;\r
-\r
- [StructLayout(LayoutKind.Sequential)]\r
- public struct hb_encoder_s\r
- {\r
- [MarshalAs(UnmanagedType.LPStr)]\r
- public string name;\r
-\r
- [MarshalAs(UnmanagedType.LPStr)]\r
- public string short_name;\r
-\r
- [MarshalAs(UnmanagedType.LPStr)]\r
- public string long_name;\r
-\r
- public int codec;\r
-\r
- public int muxers;\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="hb_error_code.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Defines the hb_error_code type.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.HbLib\r
-{\r
- /// <summary>\r
- /// The hb_error_code.\r
- /// </summary>\r
- internal enum hb_error_code\r
- {\r
- HB_ERROR_NONE = 0,\r
- HB_ERROR_CANCELED,\r
- HB_ERROR_WRONG_INPUT,\r
- HB_ERROR_INIT,\r
- HB_ERROR_UNKNOWN\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="hb_filter_ids.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <auto-generated> Disable Stylecop Warnings for this file </auto-generated>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.HbLib\r
-{\r
- internal enum hb_filter_ids\r
- {\r
- HB_FILTER_QSV_PRE = 1, // for QSV - important to have before other filters \r
- // First, filters that may change the framerate (drop or dup frames)\r
- HB_FILTER_DETELECINE,\r
- HB_FILTER_DECOMB,\r
- HB_FILTER_DEINTERLACE,\r
- HB_FILTER_VFR,\r
- // Filters that must operate on the original source image are next\r
- HB_FILTER_DEBLOCK,\r
- HB_FILTER_HQDN3D,\r
- HB_FILTER_NLMEANS,\r
- HB_FILTER_RENDER_SUB,\r
- HB_FILTER_CROP_SCALE,\r
- // Finally filters that don't care what order they are in,\r
- // except that they must be after the above filters\r
- HB_FILTER_ROTATE,\r
- HB_FILTER_QSV_POST, // for QSV - important to have as a last one \r
- HB_FILTER_QSV, // default MSDK VPP filter \r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="hb_geometry.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Defines the hb_geometry type.\r
-// </summary>\r
-// <auto-generated>Disable Stylecop Warnings for this file</auto-generated>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.HbLib\r
-{\r
- using System.Runtime.InteropServices;\r
-\r
- /// <summary>\r
- /// The hb_geometry_s.\r
- /// </summary>\r
- [StructLayout(LayoutKind.Sequential)]\r
- public struct hb_geometry_s\r
- {\r
- /// <summary>\r
- /// The width.\r
- /// </summary>\r
- public int width;\r
-\r
- /// <summary>\r
- /// The height.\r
- /// </summary>\r
- public int height;\r
-\r
- /// <summary>\r
- /// The par.\r
- /// </summary>\r
- public hb_rational_t par;\r
- }\r
-\r
- /// <summary>\r
- /// The hb_ui_geometry_s.\r
- /// </summary>\r
- [StructLayout(LayoutKind.Sequential)]\r
- public struct hb_geometry_settings_s\r
- {\r
- /// <summary>\r
- /// Anamorphic mode, see job struct anamorphic\r
- /// </summary>\r
- public int mode;\r
-\r
- /// <summary>\r
- /// Specifies settings that shouldn't be changed\r
- /// </summary>\r
- public int keep; \r
-\r
- /// <summary>\r
- /// use dvd dimensions to determine PAR\r
- /// </summary>\r
- public int itu_par; \r
-\r
- /// <summary>\r
- /// pixel alignment for loose anamorphic\r
- /// </summary>\r
- public int modulus; \r
-\r
- /// <summary>\r
- /// Cropping\r
- /// </summary>\r
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I4)]\r
- public int[] crop;\r
-\r
- /// <summary>\r
- /// max destination storage width\r
- /// </summary>\r
- public int maxWidth; \r
-\r
- /// <summary>\r
- /// max destination storage height\r
- /// </summary>\r
- public int maxHeight;\r
-\r
- /// <summary>\r
- /// Pixel aspect used in custom anamorphic\r
- /// </summary>\r
- public hb_geometry_s geometry; \r
- }\r
-\r
- /// <summary>\r
- /// The hb_rational_t.\r
- /// </summary>\r
- [StructLayout(LayoutKind.Sequential)]\r
- public struct hb_rational_t\r
- {\r
- /// <summary>\r
- /// The num. W\r
- /// </summary>\r
- public int num;\r
-\r
- /// <summary>\r
- /// The den. H\r
- /// </summary>\r
- public int den;\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="hb_image_s.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Defines the hb_image_s type.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.HbLib\r
-{\r
- using System;\r
- using System.Runtime.InteropServices;\r
-\r
- /// <summary>\r
- /// The hb_image_s.\r
- /// </summary>\r
- internal struct hb_image_s\r
- {\r
- public int format;\r
- public int width;\r
- public int height;\r
- public IntPtr data;\r
-\r
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I4)]\r
- public image_plane[] plane;\r
- }\r
-\r
- /// <summary>\r
- /// The image_plane.\r
- /// </summary>\r
- internal struct image_plane\r
- {\r
- public IntPtr data;\r
- public int width;\r
- public int height;\r
- public int stride;\r
- public int height_stride;\r
- public int size;\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="hb_mixdown_s.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <auto-generated>Disable Stylecop Warnings for this file</auto-generated>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.HbLib\r
-{\r
- using System.Runtime.InteropServices;\r
-\r
- [StructLayout(LayoutKind.Sequential)]\r
- public struct hb_mixdown_s\r
- {\r
- [MarshalAs(UnmanagedType.LPStr)]\r
- public string name;\r
-\r
- /// char*\r
- [MarshalAs(UnmanagedType.LPStr)]\r
- public string short_name;\r
-\r
- /// int\r
- public int amixdown;\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="hb_rate_s.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <auto-generated>Disable Stylecop Warnings for this file</auto-generated>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.HbLib\r
-{\r
- using System.Runtime.InteropServices;\r
-\r
- [StructLayout(LayoutKind.Sequential)]\r
- public struct hb_rate_s\r
- {\r
- /// char*\r
- [MarshalAs(UnmanagedType.LPStr)]\r
- public string name;\r
-\r
- /// int\r
- public int rate;\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="hb_subtitle.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <auto-generated> Disable Stylecop Warnings for this file </auto-generated>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.HbLib\r
-{\r
- public enum hb_subtitle_s_subsource\r
- {\r
- VOBSUB,\r
-\r
- SRTSUB,\r
-\r
- CC608SUB,\r
-\r
- CC708SUB,\r
-\r
- UTF8SUB,\r
-\r
- TX3GSUB,\r
-\r
- SSASUB,\r
-\r
- PGSSUB\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="iso639_lang_t.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <auto-generated>Disable Stylecop Warnings for this file</auto-generated>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.HbLib\r
-{\r
- using System;\r
- using System.Runtime.InteropServices;\r
-\r
- [StructLayout(LayoutKind.Sequential)]\r
- public struct iso639_lang_t\r
- {\r
- public IntPtr eng_name;\r
-\r
- public IntPtr native_name;\r
-\r
- [MarshalAs(UnmanagedType.LPStr)]\r
- public string iso639_1;\r
-\r
- [MarshalAs(UnmanagedType.LPStr)]\r
- public string iso639_2;\r
-\r
- [MarshalAs(UnmanagedType.LPStr)]\r
- public string iso639_2b;\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="InteropUtilities.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Helper utilities for native interop.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Helpers\r
-{\r
- using System;\r
- using System.Collections.Generic;\r
- using System.Linq;\r
- using System.Runtime.InteropServices;\r
- using System.Text;\r
-\r
- using HandBrake.Interop.HbLib;\r
-\r
- /// <summary>\r
- /// Helper utilities for native interop.\r
- /// </summary>\r
- internal static class InteropUtilities\r
- {\r
- /// <summary>\r
- /// Reads the given native structure pointer.\r
- /// </summary>\r
- /// <typeparam name="T">The type to convert the structure to.</typeparam>\r
- /// <param name="structPtr">The pointer to the native structure.</param>\r
- /// <returns>The converted structure.</returns>\r
- public static T ToStructureFromPtr<T>(IntPtr structPtr)\r
- {\r
- return (T)Marshal.PtrToStructure(structPtr, typeof(T));\r
- }\r
-\r
- /// <summary>\r
- /// Reads the given native UTF-8 string.\r
- /// </summary>\r
- /// <param name="stringPtr">The pointer to the string.</param>\r
- /// <returns>The resulting string.</returns>\r
- public static string ToStringFromUtf8Ptr(IntPtr stringPtr)\r
- {\r
- var data = new List<byte>();\r
- var ptr = stringPtr;\r
- var offset = 0;\r
- while (true)\r
- {\r
- byte ch = Marshal.ReadByte(ptr, offset++);\r
- if (ch == 0)\r
- {\r
- break;\r
- }\r
-\r
- data.Add(ch);\r
- }\r
-\r
- return Encoding.UTF8.GetString(data.ToArray());\r
- }\r
-\r
- /// <summary>\r
- /// Creates a pointer to a UTF-8 null-terminated string.\r
- /// </summary>\r
- /// <param name="str">\r
- /// The string to encode.\r
- /// </param>\r
- /// <returns>\r
- /// The <see cref="IntPtr"/>.\r
- /// </returns>\r
- public static IntPtr ToUtf8PtrFromString(string str)\r
- {\r
- byte[] bytes = Encoding.UTF8.GetBytes(str);\r
- IntPtr stringPtr = Marshal.AllocHGlobal(bytes.Length + 1);\r
- var offset = 0;\r
- foreach (byte b in bytes)\r
- {\r
- Marshal.WriteByte(stringPtr, offset, b);\r
- offset++;\r
- }\r
-\r
- Marshal.WriteByte(stringPtr, offset, 0);\r
- return stringPtr;\r
- }\r
-\r
- /// <summary>\r
- /// Converts the given native HandBrake list to a managed list.\r
- /// </summary>\r
- /// <typeparam name="T">The type of structure in the list.</typeparam>\r
- /// <param name="listPtr">The pointer to the native list.</param>\r
- /// <returns>The converted managed list.</returns>\r
- public static List<T> ToListFromHandBrakeList<T>(this IntPtr listPtr)\r
- {\r
- List<T> returnList = new List<T>();\r
- NativeList nativeList = new NativeList(listPtr);\r
-\r
- for (int i = 0; i < nativeList.Count; i++)\r
- {\r
- IntPtr itemPtr = nativeList[i];\r
- returnList.Add(ToStructureFromPtr<T>(itemPtr));\r
- }\r
-\r
- return returnList;\r
- }\r
-\r
- /// <summary>\r
- /// Converts the HB list to a managed list of pointers.\r
- /// </summary>\r
- /// <param name="listPtr">The list to convert.</param>\r
- /// <returns>The managed list of pointers.</returns>\r
- public static List<IntPtr> ToIntPtrList(this IntPtr listPtr)\r
- {\r
- var returnList = new List<IntPtr>();\r
- NativeList nativeList = new NativeList(listPtr);\r
-\r
- for (int i = 0; i < nativeList.Count; i++)\r
- {\r
- IntPtr itemPtr = nativeList[i];\r
- returnList.Add(itemPtr);\r
- }\r
-\r
- return returnList;\r
- }\r
-\r
- /// <summary>\r
- /// Converts the given native array to a managed collection.\r
- /// </summary>\r
- /// <typeparam name="T">The type of item in the list.</typeparam>\r
- /// <param name="arrayPtr">The pointer to the array.</param>\r
- /// <param name="count">The number of items in the array.</param>\r
- /// <returns>The converted collection.</returns>\r
- public static List<T> ToListFromNativeArray<T>(IntPtr arrayPtr, int count)\r
- {\r
- IntPtr currentItem = arrayPtr;\r
-\r
- var result = new List<T>();\r
- for (int i = 0; i < count; i++)\r
- {\r
- T nativeEncoder = ToStructureFromPtr<T>(currentItem);\r
- result.Add(nativeEncoder);\r
-\r
- currentItem = IntPtr.Add(currentItem, Marshal.SizeOf(typeof(T)));\r
- }\r
-\r
- return result;\r
- }\r
-\r
- /// <summary>\r
- /// Takes an array pointer and converts it into a list of strings.\r
- /// </summary>\r
- /// <param name="arrayPtr">A pointer to a raw list of strings.</param>\r
- /// <returns>The list of strings.</returns>\r
- public static List<string> ToStringListFromArrayPtr(IntPtr arrayPtr)\r
- {\r
- if (arrayPtr == IntPtr.Zero)\r
- {\r
- return null;\r
- }\r
-\r
- return ToPtrListFromPtr(arrayPtr).Select(ptr => Marshal.PtrToStringAnsi(ptr)).ToList();\r
- }\r
-\r
- /// <summary>\r
- /// Finds all the pointers starting at the given location and puts them in a list. Stops when it finds zero for a pointer.\r
- /// </summary>\r
- /// <param name="arrayPtr">The address of the list of pointers.</param>\r
- /// <returns>The list of pointers.</returns>\r
- public static List<IntPtr> ToPtrListFromPtr(IntPtr arrayPtr)\r
- {\r
- var result = new List<IntPtr>();\r
- int ptrSize = Marshal.SizeOf(typeof(IntPtr));\r
- IntPtr currentPtr = Marshal.ReadIntPtr(arrayPtr);\r
- for (int i = 0; currentPtr != IntPtr.Zero; i++)\r
- {\r
- result.Add(currentPtr);\r
- currentPtr = Marshal.ReadIntPtr(arrayPtr, (i + 1) * ptrSize);\r
- }\r
-\r
- return result;\r
- }\r
-\r
- /// <summary>\r
- /// Creates a native HandBrake list from the given managed list of pointers.\r
- /// </summary>\r
- /// <param name="list">The managed list to convert.</param>\r
- /// <returns>The converted native list.</returns>\r
- public static NativeList ToHandBrakeListFromPtrList(List<IntPtr> list)\r
- {\r
- NativeList returnList = NativeList.CreateList();\r
-\r
- foreach (IntPtr ptr in list)\r
- {\r
- returnList.Add(ptr);\r
- }\r
-\r
- return returnList;\r
- }\r
-\r
- /// <summary>\r
- /// Creates a native HandBrake list from the given managed list of structures.\r
- /// </summary>\r
- /// <typeparam name="T">The type of structures in the list.</typeparam>\r
- /// <param name="list">The managed list to convert.</param>\r
- /// <returns>The converted native list.</returns>\r
- public static NativeList ToHandBrakeListFromList<T>(List<T> list)\r
- {\r
- NativeList returnList = NativeList.CreateList();\r
- foreach (T item in list)\r
- {\r
- IntPtr itemPtr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(T)));\r
- returnList.AllocatedMemory.Add(itemPtr);\r
- Marshal.StructureToPtr(item, itemPtr, false);\r
-\r
- returnList.Add(itemPtr);\r
- }\r
-\r
- return returnList;\r
- }\r
-\r
- /// <summary>\r
- /// Reads in a list of objects given an interator and a conversion function.\r
- /// </summary>\r
- /// <typeparam name="T1">The type of the struct given by the iterator.</typeparam>\r
- /// <typeparam name="T2">The object type to convert to.</typeparam>\r
- /// <param name="iterator">The iterator to use to build the list.</param>\r
- /// <param name="converter">The converter to convert from the struct to the object.</param>\r
- /// <returns>The list of objects.</returns>\r
- public static List<T2> ToListFromIterator<T1, T2>(Func<IntPtr, IntPtr> iterator, Func<T1, T2> converter)\r
- {\r
- return ToListFromIterator<T1>(iterator).Select(converter).ToList();\r
- } \r
-\r
- /// <summary>\r
- /// Reads in a list of structs given an iterator.\r
- /// </summary>\r
- /// <typeparam name="T">The type of the struct.</typeparam>\r
- /// <param name="iterator">The iterator to use to build the list.</param>\r
- /// <returns>The list of structs.</returns>\r
- public static List<T> ToListFromIterator<T>(Func<IntPtr, IntPtr> iterator)\r
- {\r
- var structureList = new List<T>();\r
- IntPtr current = IntPtr.Zero;\r
-\r
- current = iterator(current);\r
- while (current != IntPtr.Zero)\r
- {\r
- T encoder = ToStructureFromPtr<T>(current);\r
- structureList.Add(encoder);\r
-\r
- current = iterator(current);\r
- }\r
-\r
- return structureList;\r
- }\r
-\r
- /// <summary>\r
- /// Closes the given job.\r
- /// </summary>\r
- /// <param name="nativeJobPtr">The pointer to the job.</param>\r
- public static void CloseJob(IntPtr nativeJobPtr)\r
- {\r
- // Create a point to the job pointer first.\r
- IntPtr nativeJobPtrPtr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(IntPtr)));\r
-\r
- // Assign the new pointer to the job pointer and tell HB to clean the job up.\r
- Marshal.WriteIntPtr(nativeJobPtrPtr, nativeJobPtr);\r
- HBFunctions.hb_job_close(nativeJobPtrPtr);\r
-\r
- // Free the pointer we used.\r
- Marshal.FreeHGlobal(nativeJobPtrPtr);\r
- }\r
-\r
- /// <summary>\r
- /// Frees all the memory locations in the given list.\r
- /// </summary>\r
- /// <param name="memoryList">The list of memory locations to free.</param>\r
- public static void FreeMemory(List<IntPtr> memoryList)\r
- {\r
- foreach (IntPtr memoryLocation in memoryList)\r
- {\r
- Marshal.FreeHGlobal(memoryLocation);\r
- }\r
- }\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="NativeList.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Represents a HandBrake style native list.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Helpers\r
-{\r
- using System;\r
- using System.Collections.Generic;\r
- using System.Diagnostics;\r
- using System.Runtime.InteropServices;\r
-\r
- using HandBrake.Interop.HbLib;\r
-\r
- /// <summary>\r
- /// Represents a HandBrake style native list.\r
- /// </summary>\r
- internal class NativeList : IDisposable\r
- {\r
- /// <summary>\r
- /// Initializes a new instance of the NativeList class.\r
- /// </summary>\r
- /// <param name="listPtr">The pointer to use for the list.</param>\r
- public NativeList(IntPtr listPtr)\r
- {\r
- this.Ptr = listPtr;\r
- }\r
-\r
- /// <summary>\r
- /// The list of native memory locations allocated for this list.\r
- /// </summary>\r
- private readonly List<IntPtr> allocatedMemory = new List<IntPtr>();\r
-\r
- /// <summary>\r
- /// Gets the pointer to the native list.\r
- /// </summary>\r
- public IntPtr Ptr { get; private set; }\r
-\r
- /// <summary>\r
- /// Gets the number of items in the list.\r
- /// </summary>\r
- public int Count\r
- {\r
- get\r
- {\r
- Debug.WriteLine("Got a Zero Pointer in the NativeList");\r
- return this.Ptr == IntPtr.Zero ? 0 : HBFunctions.hb_list_count(this.Ptr);\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Gets the list of native memory locations allocated for this list.\r
- /// </summary>\r
- public List<IntPtr> AllocatedMemory\r
- {\r
- get\r
- {\r
- return this.allocatedMemory;\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Adds an item to the end of the list.\r
- /// </summary>\r
- /// <param name="item">The item to add.</param>\r
- public void Add(IntPtr item)\r
- {\r
- HBFunctions.hb_list_add(this.Ptr, item);\r
- }\r
-\r
- /// <summary>\r
- /// Inserts an item into the list.\r
- /// </summary>\r
- /// <param name="position">The index to insert the item at.</param>\r
- /// <param name="item">The item to insert.</param>\r
- public void Insert(int position, IntPtr item)\r
- {\r
- HBFunctions.hb_list_insert(this.Ptr, position, item);\r
- }\r
-\r
- /// <summary>\r
- /// Removes an item from the list.\r
- /// </summary>\r
- /// <param name="item">The item to remove.</param>\r
- public void Remove(IntPtr item)\r
- {\r
- HBFunctions.hb_list_rem(this.Ptr, item);\r
- }\r
-\r
- /// <summary>\r
- /// Gets an item out of the list.\r
- /// </summary>\r
- /// <param name="i">Index in the list.</param>\r
- /// <returns>The item at that index in the list.</returns>\r
- public IntPtr this[int i]\r
- {\r
- get\r
- {\r
- return HBFunctions.hb_list_item(this.Ptr, i);\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Disposes resources associated with this object.\r
- /// </summary>\r
- public void Dispose()\r
- {\r
- IntPtr listPtrPtr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(IntPtr)));\r
- Marshal.WriteIntPtr(listPtrPtr, this.Ptr);\r
- HBFunctions.hb_list_close(listPtrPtr);\r
- Marshal.FreeHGlobal(listPtrPtr);\r
- }\r
-\r
- /// <summary>\r
- /// Creates a new list in unmanaged memory.\r
- /// </summary>\r
- /// <returns>The created list.</returns>\r
- public static NativeList CreateList()\r
- {\r
- return new NativeList(HBFunctions.hb_list_init());\r
- }\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="Utilities.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Defines the Utilities type.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Helpers\r
-{\r
- /// <summary>\r
- /// The utilities.\r
- /// </summary>\r
- internal static class Utilities\r
- {\r
- /// <summary>\r
- /// Get the Greatest Common Factor\r
- /// </summary>\r
- /// <param name="a">\r
- /// The a.\r
- /// </param>\r
- /// <param name="b">\r
- /// The b.\r
- /// </param>\r
- /// <returns>\r
- /// The greatest common factor\r
- /// </returns>\r
- public static int GreatestCommonFactor(int a, int b)\r
- {\r
- if (a == 0)\r
- {\r
- return b;\r
- }\r
-\r
- if (b == 0)\r
- {\r
- return a;\r
- }\r
-\r
- if (a > b)\r
- {\r
- return GreatestCommonFactor(a % b, b);\r
- }\r
- \r
- return GreatestCommonFactor(a, b % a);\r
- }\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="Validate.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The validate.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Helpers\r
-{\r
- using System;\r
-\r
- /// <summary>\r
- /// The validate.\r
- /// </summary>\r
- internal class Validate\r
- {\r
- /// <summary>\r
- /// The not null.\r
- /// </summary>\r
- /// <param name="item">\r
- /// The item.\r
- /// </param>\r
- /// <param name="message">\r
- /// The message.\r
- /// </param>\r
- /// <exception cref="ArgumentException">\r
- /// Thrown when the input object is null\r
- /// </exception>\r
- public static void NotNull(object item, string message)\r
- {\r
- if (item == null)\r
- {\r
- throw new ArgumentException(message);\r
- }\r
- }\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="IHandBrakeInstance.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The Interface for HandBrakeInstance\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Interfaces\r
-{\r
- using System;\r
- using System.Collections.Generic;\r
- using System.Windows.Media.Imaging;\r
-\r
- using HandBrake.Interop.EventArgs;\r
- using HandBrake.Interop.Model;\r
- using HandBrake.Interop.Model.Scan;\r
-\r
- /// <summary>\r
- /// The Interface for HandBrakeInstance\r
- /// </summary>\r
- public interface IHandBrakeInstance\r
- {\r
- #region Events\r
-\r
- /// <summary>\r
- /// Fires when an encode has completed.\r
- /// </summary>\r
- event EventHandler<EncodeCompletedEventArgs> EncodeCompleted;\r
-\r
- /// <summary>\r
- /// Fires for progress updates when encoding.\r
- /// </summary>\r
- event EventHandler<EncodeProgressEventArgs> EncodeProgress;\r
-\r
- /// <summary>\r
- /// Fires when a scan has completed.\r
- /// </summary>\r
- event EventHandler<EventArgs> ScanCompleted;\r
-\r
- /// <summary>\r
- /// Fires for progress updates when scanning.\r
- /// </summary>\r
- event EventHandler<ScanProgressEventArgs> ScanProgress;\r
-\r
- #endregion\r
-\r
- #region Properties\r
-\r
- /// <summary>\r
- /// Gets the index of the default title.\r
- /// </summary>\r
- int FeatureTitle { get; }\r
-\r
- /// <summary>\r
- /// Gets the list of titles on this instance.\r
- /// </summary>\r
- List<Title> Titles { get; }\r
-\r
- #endregion\r
-\r
- #region Public Methods\r
-\r
- /// <summary>\r
- /// Initializes this instance.\r
- /// </summary>\r
- /// <param name="verbosity">The code for the logging verbosity to use.</param>\r
- void Initialize(int verbosity);\r
-\r
- /// <summary>\r
- /// Frees any resources associated with this object.\r
- /// </summary>\r
- void Dispose();\r
-\r
- /// <summary>\r
- /// Gets an image for the given job and preview\r
- /// </summary>\r
- /// <remarks>\r
- /// Only incorporates sizing and aspect ratio into preview image.\r
- /// </remarks>\r
- /// <param name="job">\r
- /// The encode job to preview.\r
- /// </param>\r
- /// <param name="previewNumber">\r
- /// The index of the preview to get (0-based).\r
- /// </param>\r
- /// <returns>\r
- /// An image with the requested preview.\r
- /// </returns>\r
- BitmapImage GetPreview(EncodeJob job, int previewNumber);\r
-\r
- /// <summary>\r
- /// Pauses the current encode.\r
- /// </summary>\r
- void PauseEncode();\r
-\r
- /// <summary>\r
- /// Resumes a paused encode.\r
- /// </summary>\r
- void ResumeEncode();\r
-\r
- /// <summary>\r
- /// Starts an encode with the given job.\r
- /// </summary>\r
- /// <param name="jobToStart">\r
- /// The job to start.\r
- /// </param>\r
- /// <param name="title">\r
- /// The title.\r
- /// </param>\r
- void StartEncode(EncodeJob jobToStart, Title title);\r
-\r
- /// <summary>\r
- /// Starts a scan of the given path.\r
- /// </summary>\r
- /// <param name="path">\r
- /// The path of the video to scan.\r
- /// </param>\r
- /// <param name="previewCount">\r
- /// The number of previews to make on each title.\r
- /// </param>\r
- /// <param name="minDuration">\r
- /// The min Duration.\r
- /// </param>\r
- /// <param name="titleIndex">\r
- /// The title index to scan (1-based, 0 for all titles).\r
- /// </param>\r
- void StartScan(string path, int previewCount, TimeSpan minDuration, int titleIndex);\r
-\r
- /// <summary>\r
- /// Stops the current encode.\r
- /// </summary>\r
- void StopEncode();\r
-\r
- /// <summary>\r
- /// Stop any running scans\r
- /// </summary>\r
- void StopScan();\r
-\r
- #endregion\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="AnamorphicGeometry.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The geometry.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.Anamorphic\r
-{\r
- /// <summary>\r
- /// The geometry.\r
- /// </summary>\r
- internal class AnamorphicGeometry\r
- {\r
- /// <summary>\r
- /// Gets or sets the dest geometry.\r
- /// </summary>\r
- public DestSettings DestSettings { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the source geometry.\r
- /// </summary>\r
- public SourceGeometry SourceGeometry { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="AnamorphicResult.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The anamorphic result.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.Anamorphic\r
-{\r
- /// <summary>\r
- /// The anamorphic result.\r
- /// </summary>\r
- internal class AnamorphicResult\r
- {\r
- /// <summary>\r
- /// Gets or sets the height.\r
- /// </summary>\r
- public int Height { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the par.\r
- /// </summary>\r
- public PAR PAR { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the width.\r
- /// </summary>\r
- public int Width { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="DestGeometry.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The dest geometry.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.Anamorphic\r
-{\r
- using System.Collections.Generic;\r
-\r
- /// <summary>\r
- /// The dest geometry.\r
- /// </summary>\r
- internal class DestSettings\r
- {\r
- public DestSettings()\r
- {\r
- this.Geometry = new Geometry();\r
- }\r
-\r
- /// <summary>\r
- /// Gets or sets the anamorphic mode.\r
- /// </summary>\r
- public int AnamorphicMode { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the crop.\r
- /// </summary>\r
- public List<int> Crop { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the Geometry\r
- /// </summary>\r
- public Geometry Geometry { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether itu par.\r
- /// </summary>\r
- public bool ItuPAR { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether keep display aspect.\r
- /// </summary>\r
- public int Keep { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the max height.\r
- /// </summary>\r
- public int MaxHeight { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the max width.\r
- /// </summary>\r
- public int MaxWidth { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the modulus.\r
- /// </summary>\r
- public int Modulus { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="Geometry.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The geometry.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.Anamorphic\r
-{\r
-\r
- /// <summary>\r
- /// The geometry.\r
- /// </summary>\r
- public class Geometry\r
- {\r
- /// <summary>\r
- /// Gets or sets the height.\r
- /// </summary>\r
- public int Height { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the par.\r
- /// </summary>\r
- public PAR PAR { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the width.\r
- /// </summary>\r
- public int Width { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="PAR.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The par.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.Anamorphic\r
-{\r
- /// <summary>\r
- /// The par.\r
- /// </summary>\r
- public class PAR\r
- {\r
- /// <summary>\r
- /// Gets or sets the Number.\r
- /// </summary>\r
- public int Num { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the Denominator.\r
- /// </summary>\r
- public int Den { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="SourceGeometry.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The source geometry.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.Anamorphic\r
-{\r
- /// <summary>\r
- /// The source geometry.\r
- /// </summary>\r
- internal class SourceGeometry\r
- {\r
- public SourceGeometry()\r
- {\r
- this.PAR = new PAR();\r
- }\r
-\r
- /// <summary>\r
- /// Gets or sets the height.\r
- /// </summary>\r
- public int Height { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the par.\r
- /// </summary>\r
- public PAR PAR { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the width.\r
- /// </summary>\r
- public int Width { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="Audio.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The audio.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.Encode\r
-{\r
- using System.Collections.Generic;\r
-\r
- /// <summary>\r
- /// The audio.\r
- /// </summary>\r
- public class Audio\r
- {\r
- /// <summary>\r
- /// Gets or sets the audio list.\r
- /// </summary>\r
- public List<AudioList> AudioList { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the copy mask.\r
- /// </summary>\r
- public int CopyMask { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the fallback encoder.\r
- /// </summary>\r
- public int FallbackEncoder { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="AudioList.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The audio list.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.Encode\r
-{\r
- /// <summary>\r
- /// The audio list.\r
- /// </summary>\r
- public class AudioList\r
- {\r
- /// <summary>\r
- /// Gets or sets the bitrate.\r
- /// </summary>\r
- public int? Bitrate { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the compression level.\r
- /// </summary>\r
- public double? CompressionLevel { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the drc.\r
- /// </summary>\r
- public double DRC { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the encoder.\r
- /// </summary>\r
- public int Encoder { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the gain.\r
- /// </summary>\r
- public double Gain { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the mixdown.\r
- /// </summary>\r
- public int Mixdown { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether normalize mix level.\r
- /// </summary>\r
- public bool NormalizeMixLevel { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the quality.\r
- /// </summary>\r
- public double? Quality { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the samplerate.\r
- /// </summary>\r
- public int Samplerate { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the Name of the audio track.\r
- /// </summary>\r
- public string Name { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the track.\r
- /// </summary>\r
- public int Track { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="ChapterList.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The chapter list.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.Encode\r
-{\r
- /// <summary>\r
- /// The chapter list.\r
- /// </summary>\r
- public class ChapterList\r
- {\r
- /// <summary>\r
- /// Gets or sets the name.\r
- /// </summary>\r
- public string Name { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="Destination.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The destination.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.Encode\r
-{\r
- using System.Collections.Generic;\r
-\r
- /// <summary>\r
- /// The destination.\r
- /// </summary>\r
- public class Destination\r
- {\r
- /// <summary>\r
- /// Gets or sets the chapter list.\r
- /// </summary>\r
- public List<ChapterList> ChapterList { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether chapter markers.\r
- /// </summary>\r
- public bool ChapterMarkers { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the file.\r
- /// </summary>\r
- public string File { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the mp 4 options.\r
- /// </summary>\r
- public Mp4Options Mp4Options { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the mux.\r
- /// </summary>\r
- public int Mux { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="Filter.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The filter.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.Encode\r
-{\r
- using System.Collections.Generic;\r
-\r
- /// <summary>\r
- /// The filter.\r
- /// </summary>\r
- public class Filter\r
- {\r
- /// <summary>\r
- /// Gets or sets the filter list.\r
- /// </summary>\r
- public List<FilterList> FilterList { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether grayscale.\r
- /// </summary>\r
- public bool Grayscale { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="FilterList.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The filter list.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.Encode\r
-{\r
- /// <summary>\r
- /// The filter list.\r
- /// </summary>\r
- public class FilterList\r
- {\r
- /// <summary>\r
- /// Gets or sets the id.\r
- /// </summary>\r
- public int ID { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the settings.\r
- /// </summary>\r
- public string Settings { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="JsonEncodeObject.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The root object.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.Encode\r
-{\r
- using HandBrake.Interop.Json.Anamorphic;\r
-\r
- /// <summary>\r
- /// The root object.\r
- /// </summary>\r
- internal class JsonEncodeObject\r
- {\r
- /// <summary>\r
- /// Gets or sets the audio.\r
- /// </summary>\r
- public Audio Audio { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the destination.\r
- /// </summary>\r
- public Destination Destination { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the filter.\r
- /// </summary>\r
- public Filter Filter { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the PAR\r
- /// </summary>\r
- public PAR PAR { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the meta data.\r
- /// </summary>\r
- public MetaData MetaData { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the sequence id.\r
- /// </summary>\r
- public int SequenceID { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the source.\r
- /// </summary>\r
- public Source Source { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the subtitle.\r
- /// </summary>\r
- public Subtitle Subtitle { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the video.\r
- /// </summary>\r
- public Video Video { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="MetaData.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The meta data.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.Encode\r
-{\r
- /// <summary>\r
- /// The meta data.\r
- /// </summary>\r
- public class MetaData\r
- {\r
- /// <summary>\r
- /// Gets or sets the album artist.\r
- /// </summary>\r
- public string AlbumArtist { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the artist.\r
- /// </summary>\r
- public string Artist { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the comment.\r
- /// </summary>\r
- public string Comment { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the composer.\r
- /// </summary>\r
- public string Composer { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the description.\r
- /// </summary>\r
- public string Description { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the genre.\r
- /// </summary>\r
- public string Genre { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the long description.\r
- /// </summary>\r
- public string LongDescription { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the name.\r
- /// </summary>\r
- public string Name { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the release date.\r
- /// </summary>\r
- public string ReleaseDate { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="Mp4Options.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The mp 4 options.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.Encode\r
-{\r
- /// <summary>\r
- /// The mp 4 options.\r
- /// </summary>\r
- public class Mp4Options\r
- {\r
- /// <summary>\r
- /// Gets or sets a value indicating whether ipod atom.\r
- /// </summary>\r
- public bool IpodAtom { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether mp 4 optimize.\r
- /// </summary>\r
- public bool Mp4Optimize { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="Range.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The range.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.Encode\r
-{\r
- /// <summary>\r
- /// The range.\r
- /// </summary>\r
- public class Range\r
- {\r
- /// <summary>\r
- /// Gets or sets the chapter end.\r
- /// </summary>\r
- public int? ChapterEnd { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the chapter start.\r
- /// </summary>\r
- public int? ChapterStart { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the frame to start.\r
- /// </summary>\r
- public int? FrameToStart { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the frame to stop.\r
- /// </summary>\r
- public int? FrameToStop { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the pts to start.\r
- /// </summary>\r
- public int? PtsToStart { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the pts to stop.\r
- /// </summary>\r
- public int? PtsToStop { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the start at preview.\r
- /// </summary>\r
- public int? StartAtPreview { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the seek points.\r
- /// </summary>\r
- public int? SeekPoints { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="SRT.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The srt.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.Encode\r
-{\r
- /// <summary>\r
- /// The srt.\r
- /// </summary>\r
- public class SRT\r
- {\r
- /// <summary>\r
- /// Gets or sets the codeset.\r
- /// </summary>\r
- public string Codeset { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the filename.\r
- /// </summary>\r
- public string Filename { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the language.\r
- /// </summary>\r
- public string Language { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="Search.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The search.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.Encode\r
-{\r
- /// <summary>\r
- /// The search.\r
- /// </summary>\r
- public class Search\r
- {\r
- /// <summary>\r
- /// Gets or sets a value indicating whether burn.\r
- /// </summary>\r
- public bool Burn { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether default.\r
- /// </summary>\r
- public bool Default { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether enable.\r
- /// </summary>\r
- public bool Enable { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether forced.\r
- /// </summary>\r
- public bool Forced { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="Source.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The source.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.Encode\r
-{\r
- /// <summary>\r
- /// The source.\r
- /// </summary>\r
- public class Source\r
- {\r
- /// <summary>\r
- /// Gets or sets the angle.\r
- /// </summary>\r
- public int Angle { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the range.\r
- /// </summary>\r
- public Range Range { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the title.\r
- /// </summary>\r
- public int Title { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="Subtitle.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The subtitle.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.Encode\r
-{\r
- using System.Collections.Generic;\r
-\r
- /// <summary>\r
- /// The subtitle.\r
- /// </summary>\r
- public class Subtitle\r
- {\r
- /// <summary>\r
- /// Gets or sets the search.\r
- /// </summary>\r
- public Search Search { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the subtitle list.\r
- /// </summary>\r
- public List<SubtitleList> SubtitleList { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="SubtitleList.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The subtitle list.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.Encode\r
-{\r
- /// <summary>\r
- /// The subtitle list.\r
- /// </summary>\r
- public class SubtitleList\r
- {\r
- /// <summary>\r
- /// Gets or sets a value indicating whether burn.\r
- /// </summary>\r
- public bool Burn { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether default.\r
- /// </summary>\r
- public bool Default { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether force.\r
- /// </summary>\r
- public bool Force { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the id.\r
- /// </summary>\r
- public int ID { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the offset.\r
- /// </summary>\r
- public int Offset { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the track.\r
- /// </summary>\r
- public int Track { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the srt.\r
- /// </summary>\r
- public SRT SRT { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="Video.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The video.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.Encode\r
-{\r
- using System;\r
-\r
- /// <summary>\r
- /// The video.\r
- /// </summary>\r
- public class Video\r
- {\r
- /// <summary>\r
- /// Gets or sets the codec.\r
- /// </summary>\r
- public int Codec { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the level.\r
- /// </summary>\r
- public string Level { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the bitrate for the encode.\r
- /// </summary>\r
- public int? Bitrate { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether two pass.\r
- /// </summary>\r
- public bool TwoPass { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether Turbo First Pass. For x264/5\r
- /// </summary>\r
- public bool Turbo { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the Colour Matrix Code\r
- /// </summary>\r
- public int ColorMatrixCode { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the options.\r
- /// </summary>\r
- public string Options { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the preset.\r
- /// </summary>\r
- public string Preset { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the profile.\r
- /// </summary>\r
- public string Profile { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the quality.\r
- /// </summary>\r
- public double? Quality { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the tune.\r
- /// </summary>\r
- public string Tune { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="AnamorphicFactory.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The Anamorphic factory.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.Factories\r
-{\r
- using System;\r
- using System.Collections.Generic;\r
- using System.Runtime.InteropServices;\r
-\r
- using HandBrake.Interop.HbLib;\r
- using HandBrake.Interop.Json.Anamorphic;\r
- using HandBrake.Interop.Model;\r
- using HandBrake.Interop.Model.Encoding;\r
- using HandBrake.Interop.Model.Scan;\r
-\r
- using Newtonsoft.Json;\r
-\r
- /// <summary>\r
- /// The anamorphic factory.\r
- /// </summary>\r
- public class AnamorphicFactory\r
- {\r
- /// <summary>\r
- /// The keep setting.\r
- /// </summary>\r
- public enum KeepSetting\r
- {\r
- HB_KEEP_WIDTH = 0x01,\r
- HB_KEEP_HEIGHT = 0x02,\r
- HB_KEEP_DISPLAY_ASPECT = 0x04\r
- }\r
-\r
- /// <summary>\r
- /// The create geometry.\r
- /// </summary>\r
- /// <param name="job">\r
- /// The job.\r
- /// </param>\r
- /// <param name="title">\r
- /// The current title.\r
- /// </param>\r
- /// <param name="keepWidthOrHeight">\r
- /// Keep Width or Height. (Not Display Aspect)\r
- /// </param>\r
- /// <returns>\r
- /// The <see cref="Scan.Geometry"/>.\r
- /// </returns>\r
- public static Geometry CreateGeometry(EncodeJob job, Title title, KeepSetting keepWidthOrHeight) // Todo remove the need for these objects. Should use simpler objects.\r
- {\r
- int settingMode = (int)keepWidthOrHeight + (job.KeepDisplayAspect ? 0x04 : 0);\r
-\r
- // Sanatise the Geometry First.\r
- AnamorphicGeometry anamorphicGeometry = new AnamorphicGeometry\r
- {\r
- SourceGeometry = new SourceGeometry\r
- {\r
- Width = title.Resolution.Width,\r
- Height = title.Resolution.Height,\r
- PAR = new PAR { Num = title.ParVal.Width, Den = title.ParVal.Height }\r
- },\r
- DestSettings = new DestSettings\r
- {\r
- AnamorphicMode = (int)job.Anamorphic,\r
- Geometry = { \r
- Width = job.Width, Height = job.Height,\r
- PAR = new PAR\r
- {\r
- Num = job.Anamorphic != Anamorphic.Custom ? title.ParVal.Width : job.PixelAspectX,\r
- Den = job.Anamorphic != Anamorphic.Custom ? title.ParVal.Height : job.PixelAspectY,\r
- } \r
- },\r
- Keep = settingMode,\r
- Crop = new List<int> { job.Cropping.Top, job.Cropping.Bottom, job.Cropping.Left, job.Cropping.Right },\r
- Modulus = job.Modulus,\r
- MaxWidth = job.MaxWidth,\r
- MaxHeight = job.MaxHeight,\r
- ItuPAR = false\r
- }\r
- };\r
-\r
- if (job.Anamorphic == Anamorphic.Custom)\r
- {\r
- anamorphicGeometry.DestSettings.Geometry.PAR = new PAR { Num = job.PixelAspectX, Den = job.PixelAspectY };\r
- }\r
- else\r
- {\r
- anamorphicGeometry.DestSettings.Geometry.PAR = new PAR { Num = title.ParVal.Width, Den = title.ParVal.Height };\r
- }\r
-\r
- string encode = JsonConvert.SerializeObject(anamorphicGeometry, Formatting.Indented, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });\r
- IntPtr json = HBFunctions.hb_set_anamorphic_size_json(Marshal.StringToHGlobalAnsi(encode));\r
- string result = Marshal.PtrToStringAnsi(json);\r
- AnamorphicResult resultGeometry = JsonConvert.DeserializeObject<AnamorphicResult>(result);\r
-\r
- // Setup the Destination Gemotry.\r
- Geometry geometry = new Geometry\r
- {\r
- Width = resultGeometry.Width,\r
- Height = resultGeometry.Height,\r
- PAR = resultGeometry.PAR\r
- };\r
- return geometry;\r
- }\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="EncodeFactory.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The encode factory.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.Factories\r
-{\r
- using System;\r
- using System.Collections.Generic;\r
- using System.Globalization;\r
- using System.Linq;\r
- using System.Runtime.InteropServices;\r
- using System.Windows.Media.Animation;\r
-\r
- using HandBrake.Interop.HbLib;\r
- using HandBrake.Interop.Helpers;\r
- using HandBrake.Interop.Json.Anamorphic;\r
- using HandBrake.Interop.Json.Encode;\r
- using HandBrake.Interop.Model;\r
- using HandBrake.Interop.Model.Encoding;\r
- using HandBrake.Interop.Model.Scan;\r
-\r
- using Subtitle = HandBrake.Interop.Json.Encode.Subtitle;\r
-\r
- /// <summary>\r
- /// This factory takes the internal EncodeJob object and turns it into a set of JSON models\r
- /// that can be deserialized by libhb.\r
- /// </summary>\r
- internal class EncodeFactory\r
- {\r
- /*\r
- * TODO:\r
- * 1. OpenCL and HWD Support \r
- * 2. Rotate Support\r
- */\r
-\r
- /// <summary>\r
- /// The create.\r
- /// </summary>\r
- /// <param name="job">\r
- /// The encode job.\r
- /// </param>\r
- /// <param name="title">\r
- /// The title.\r
- /// </param>\r
- /// <returns>\r
- /// The <see cref="JsonEncodeObject"/>.\r
- /// </returns>\r
- internal static JsonEncodeObject Create(EncodeJob job, Title title)\r
- {\r
- JsonEncodeObject encode = new JsonEncodeObject\r
- {\r
- SequenceID = 0, \r
- Audio = CreateAudio(job), \r
- Destination = CreateDestination(job), \r
- Filter = CreateFilter(job, title), \r
- PAR = CreatePAR(job, title), \r
- MetaData = CreateMetaData(job), \r
- Source = CreateSource(job), \r
- Subtitle = CreateSubtitle(job), \r
- Video = CreateVideo(job)\r
- };\r
-\r
- return encode;\r
- }\r
-\r
- /// <summary>\r
- /// The create source.\r
- /// </summary>\r
- /// <param name="job">\r
- /// The job.\r
- /// </param>\r
- /// <returns>\r
- /// The <see cref="Source"/>.\r
- /// </returns>\r
- private static Source CreateSource(EncodeJob job)\r
- {\r
- Range range = new Range();\r
- switch (job.RangeType)\r
- {\r
- case VideoRangeType.Chapters:\r
- range.ChapterEnd = job.ChapterEnd;\r
- range.ChapterStart = job.ChapterStart;\r
- break;\r
- case VideoRangeType.Seconds:\r
- range.PtsToStart = (int)(job.SecondsStart * 90000);\r
- range.PtsToStop = (int)((job.SecondsEnd - job.SecondsStart) * 90000); \r
- break;\r
- case VideoRangeType.Frames:\r
- range.FrameToStart = job.FramesStart;\r
- range.FrameToStop = job.FramesEnd; \r
- break;\r
- case VideoRangeType.Preview:\r
- range.StartAtPreview = job.StartAtPreview;\r
- range.SeekPoints = job.SeekPoints;\r
- range.PtsToStop = job.SecondsEnd * 90000; \r
- break;\r
- }\r
-\r
- Source source = new Source\r
- {\r
- Title = job.Title, \r
- Range = range,\r
- Angle = job.Angle\r
- };\r
- return source;\r
- }\r
-\r
- /// <summary>\r
- /// The create destination.\r
- /// </summary>\r
- /// <param name="job">\r
- /// The job.\r
- /// </param>\r
- /// <returns>\r
- /// The <see cref="Destination"/>.\r
- /// </returns>\r
- private static Destination CreateDestination(EncodeJob job)\r
- {\r
- Destination destination = new Destination\r
- {\r
- File = job.OutputPath, \r
- Mp4Options = new Mp4Options\r
- {\r
- IpodAtom = job.IPod5GSupport, \r
- Mp4Optimize = job.Optimize\r
- }, \r
- ChapterMarkers = job.IncludeChapterMarkers, \r
- Mux = HBFunctions.hb_container_get_from_name(job.ContainerName), \r
- ChapterList = new List<ChapterList>()\r
- };\r
-\r
- if (job.UseDefaultChapterNames)\r
- {\r
- foreach (string item in job.CustomChapterNames)\r
- {\r
- ChapterList chapter = new ChapterList { Name = item };\r
- destination.ChapterList.Add(chapter);\r
- }\r
- }\r
-\r
- return destination;\r
- }\r
-\r
- /// <summary>\r
- /// Create the PAR object\r
- /// </summary>\r
- /// <param name="job">\r
- /// The Job\r
- /// </param>\r
- /// <param name="title">\r
- /// The title.\r
- /// </param>\r
- /// <returns>\r
- /// The produced PAR object.\r
- /// </returns>\r
- private static PAR CreatePAR(EncodeJob job, Title title)\r
- {\r
- Geometry resultGeometry = AnamorphicFactory.CreateGeometry(job, title, AnamorphicFactory.KeepSetting.HB_KEEP_WIDTH);\r
- return new PAR { Num = resultGeometry.PAR.Num, Den = resultGeometry.PAR.Den };\r
- }\r
-\r
- /// <summary>\r
- /// The create subtitle.\r
- /// </summary>\r
- /// <param name="job">\r
- /// The job.\r
- /// </param>\r
- /// <returns>\r
- /// The <see cref="Encode.Subtitle"/>.\r
- /// </returns>\r
- private static Subtitle CreateSubtitle(EncodeJob job)\r
- {\r
- Subtitle subtitle = new Subtitle\r
- {\r
- Search =\r
- new Search\r
- {\r
- Enable = false, \r
- Default = false, \r
- Burn = false, \r
- Forced = false\r
- }, \r
- SubtitleList = new List<SubtitleList>()\r
- };\r
-\r
- foreach (SourceSubtitle item in job.Subtitles.SourceSubtitles)\r
- {\r
- // Handle Foreign Audio Search\r
- if (item.TrackNumber == 0)\r
- {\r
- subtitle.Search.Enable = true;\r
- subtitle.Search.Burn = item.BurnedIn;\r
- subtitle.Search.Default = item.Default;\r
- subtitle.Search.Forced = item.Forced;\r
- }\r
- else\r
- {\r
- SubtitleList track = new SubtitleList { Burn = item.BurnedIn, Default = item.Default, Force = item.Forced, ID = item.TrackNumber, Track = (item.TrackNumber - 1) };\r
- subtitle.SubtitleList.Add(track);\r
- }\r
- }\r
-\r
- foreach (SrtSubtitle item in job.Subtitles.SrtSubtitles)\r
- {\r
- SubtitleList track = new SubtitleList\r
- {\r
- Track = -1, // Indicates SRT\r
- Default = item.Default, \r
- Offset = item.Offset, \r
- Burn = item.BurnedIn,\r
- SRT =\r
- new SRT\r
- {\r
- Filename = item.FileName, \r
- Codeset = item.CharacterCode, \r
- Language = item.LanguageCode\r
- }\r
- };\r
-\r
- subtitle.SubtitleList.Add(track);\r
- }\r
-\r
- return subtitle;\r
- }\r
-\r
- /// <summary>\r
- /// The create video.\r
- /// </summary>\r
- /// <param name="job">\r
- /// The job.\r
- /// </param>\r
- /// <returns>\r
- /// The <see cref="Video"/>.\r
- /// </returns>\r
- private static Video CreateVideo(EncodeJob job)\r
- {\r
- Video video = new Video();\r
-\r
- HBVideoEncoder videoEncoder = HandBrakeEncoderHelpers.VideoEncoders.FirstOrDefault(e => e.ShortName == job.VideoEncoder);\r
- Validate.NotNull(videoEncoder, "Video encoder " + job.VideoEncoder + " not recognized.");\r
- if (videoEncoder != null)\r
- {\r
- video.Codec = videoEncoder.Id;\r
- }\r
-\r
- if (!string.IsNullOrEmpty(job.AdvancedOptions))\r
- {\r
- video.Options = job.AdvancedOptions;\r
- }\r
- else\r
- {\r
- video.Level = job.VideoLevel;\r
- video.Options = job.VideoOptions;\r
- video.Preset = job.VideoPreset;\r
- video.Profile = job.VideoProfile;\r
- }\r
-\r
- if (job.VideoEncodeRateType == VideoEncodeRateType.ConstantQuality) video.Quality = job.Quality;\r
- if (job.VideoEncodeRateType == VideoEncodeRateType.AverageBitrate)\r
- {\r
- video.Bitrate = job.VideoBitrate;\r
- video.TwoPass = job.TwoPass;\r
- video.Turbo = job.TurboFirstPass;\r
- }\r
-\r
- if (job.VideoTunes != null && job.VideoTunes.Count > 0)\r
- {\r
- video.Tune = string.Join(",", job.VideoTunes);\r
- }\r
-\r
- return video;\r
- }\r
-\r
- /// <summary>\r
- /// The create audio.\r
- /// </summary>\r
- /// <param name="job">\r
- /// The job.\r
- /// </param>\r
- /// <returns>\r
- /// The <see cref="Audio"/>.\r
- /// </returns>\r
- private static Audio CreateAudio(EncodeJob job)\r
- {\r
- Audio audio = new Audio();\r
-\r
- if (!string.IsNullOrEmpty(job.AudioEncoderFallback))\r
- {\r
- HBAudioEncoder audioEncoder = HandBrakeEncoderHelpers.GetAudioEncoder(job.AudioEncoderFallback);\r
- Validate.NotNull(audioEncoder, "Unrecognized fallback audio encoder: " + job.AudioEncoderFallback);\r
- audio.FallbackEncoder = audioEncoder.Id;\r
- }\r
-\r
- audio.CopyMask = (int)NativeConstants.HB_ACODEC_ANY;\r
-\r
- audio.AudioList = new List<AudioList>();\r
- foreach (AudioEncoding item in job.AudioEncodings)\r
- {\r
- HBAudioEncoder encoder = HandBrakeEncoderHelpers.GetAudioEncoder(item.Encoder);\r
- Validate.NotNull(encoder, "Unrecognized audio encoder:" + item.Encoder);\r
-\r
- HBMixdown mixdown = HandBrakeEncoderHelpers.GetMixdown(item.Mixdown);\r
- Validate.NotNull(mixdown, "Unrecognized audio mixdown:" + item.Mixdown);\r
-\r
- AudioList audioTrack = new AudioList\r
- {\r
- Track = item.InputNumber - 1, \r
- DRC = item.Drc, \r
- Encoder = encoder.Id, \r
- Gain = item.Gain, \r
- Mixdown = mixdown.Id, \r
- NormalizeMixLevel = false, \r
- Samplerate = item.SampleRateRaw,\r
- Name = item.Name,\r
- };\r
-\r
- if (!item.IsPassthru)\r
- {\r
- if (item.EncodeRateType == AudioEncodeRateType.Quality)\r
- {\r
- audioTrack.Quality = item.Quality;\r
- }\r
-\r
- if (item.EncodeRateType == AudioEncodeRateType.Compression)\r
- {\r
- audioTrack.CompressionLevel = item.Compression;\r
- }\r
-\r
- if (item.EncodeRateType == AudioEncodeRateType.Bitrate)\r
- {\r
- audioTrack.Bitrate = item.Bitrate;\r
- }\r
- }\r
-\r
- audio.AudioList.Add(audioTrack);\r
- }\r
-\r
- return audio;\r
- }\r
-\r
- /// <summary>\r
- /// The create filter.\r
- /// </summary>\r
- /// <param name="job">\r
- /// The job.\r
- /// </param>\r
- /// <param name="title">\r
- /// The title.\r
- /// </param>\r
- /// <returns>\r
- /// The <see cref="Filter"/>.\r
- /// </returns>\r
- private static Filter CreateFilter(EncodeJob job, Title title)\r
- {\r
- Filter filter = new Filter\r
- {\r
- FilterList = new List<FilterList>(), \r
- Grayscale = job.Grayscale\r
- };\r
-\r
- // Detelecine\r
- if (job.Detelecine != Detelecine.Off)\r
- {\r
- FilterList filterItem = new FilterList { ID = (int)hb_filter_ids.HB_FILTER_DETELECINE, Settings = job.CustomDetelecine };\r
- filter.FilterList.Add(filterItem);\r
- }\r
-\r
- // Decomb\r
- if (job.Decomb != Decomb.Off)\r
- {\r
- string options;\r
- if (job.Decomb == Decomb.Fast)\r
- {\r
- options = "7:2:6:9:1:80";\r
- }\r
- else if (job.Decomb == Decomb.Bob)\r
- {\r
- options = "455";\r
- }\r
- else\r
- {\r
- options = job.CustomDecomb;\r
- }\r
-\r
- FilterList filterItem = new FilterList { ID = (int)hb_filter_ids.HB_FILTER_DECOMB, Settings = options };\r
- filter.FilterList.Add(filterItem);\r
- }\r
-\r
- // Deinterlace\r
- if (job.Deinterlace != Deinterlace.Off)\r
- {\r
- string options;\r
- if (job.Deinterlace == Deinterlace.Fast)\r
- {\r
- options = "0";\r
- }\r
- else if (job.Deinterlace == Deinterlace.Slow)\r
- {\r
- options = "1";\r
- }\r
- else if (job.Deinterlace == Deinterlace.Slower)\r
- {\r
- options = "3";\r
- }\r
- else if (job.Deinterlace == Deinterlace.Bob)\r
- {\r
- options = "15";\r
- }\r
- else\r
- {\r
- options = job.CustomDeinterlace;\r
- }\r
-\r
- FilterList filterItem = new FilterList { ID = (int)hb_filter_ids.HB_FILTER_DEINTERLACE, Settings = options };\r
- filter.FilterList.Add(filterItem);\r
- }\r
-\r
- // VFR / CFR\r
- int fm = job.ConstantFramerate ? 1 : job.PeakFramerate ? 2 : 0;\r
- IntPtr frameratePrt = Marshal.StringToHGlobalAnsi(job.Framerate.ToString(CultureInfo.InvariantCulture));\r
- int vrate = HBFunctions.hb_video_framerate_get_from_name(frameratePrt);\r
-\r
- int num;\r
- int den;\r
- if (vrate > 0)\r
- {\r
- num = 27000000;\r
- den = vrate;\r
- }\r
- else\r
- {\r
- // cfr or pfr flag with no rate specified implies use the title rate.\r
- num = title.FramerateNumerator;\r
- den = title.FramerateDenominator;\r
- }\r
-\r
- string framerateString = string.Format("{0}:{1}:{2}", fm, num, den); // filter_cfr, filter_vrate.num, filter_vrate.den\r
-\r
- FilterList framerateShaper = new FilterList { ID = (int)hb_filter_ids.HB_FILTER_VFR, Settings = framerateString };\r
- filter.FilterList.Add(framerateShaper);\r
-\r
- // Deblock\r
- if (job.Deblock >= 5)\r
- {\r
- FilterList filterItem = new FilterList { ID = (int)hb_filter_ids.HB_FILTER_DEBLOCK, Settings = job.Deblock.ToString() };\r
- filter.FilterList.Add(filterItem);\r
- }\r
-\r
- // Denoise\r
- if (job.Denoise != Denoise.Off)\r
- {\r
- hb_filter_ids id = job.Denoise == Denoise.hqdn3d\r
- ? hb_filter_ids.HB_FILTER_HQDN3D\r
- : hb_filter_ids.HB_FILTER_NLMEANS;\r
-\r
- string settings;\r
- if (!string.IsNullOrEmpty(job.CustomDenoise))\r
- {\r
- settings = job.CustomDenoise;\r
- }\r
- else\r
- {\r
- IntPtr settingsPtr = HBFunctions.hb_generate_filter_settings((int)id, job.DenoisePreset, job.DenoiseTune);\r
- settings = Marshal.PtrToStringAnsi(settingsPtr);\r
- }\r
-\r
- FilterList filterItem = new FilterList { ID = (int)id, Settings = settings };\r
- filter.FilterList.Add(filterItem);\r
- }\r
-\r
- // CropScale Filter\r
- Geometry resultGeometry = AnamorphicFactory.CreateGeometry(job, title, AnamorphicFactory.KeepSetting.HB_KEEP_WIDTH);\r
- FilterList cropScale = new FilterList\r
- {\r
- ID = (int)hb_filter_ids.HB_FILTER_CROP_SCALE, \r
- Settings =\r
- string.Format(\r
- "{0}:{1}:{2}:{3}:{4}:{5}", \r
- resultGeometry.Width, \r
- resultGeometry.Height, \r
- job.Cropping.Top, \r
- job.Cropping.Bottom, \r
- job.Cropping.Left, \r
- job.Cropping.Right)\r
- };\r
- filter.FilterList.Add(cropScale);\r
-\r
- // Rotate\r
- /* TODO NOT SUPPORTED YET. */\r
-\r
- return filter;\r
- }\r
-\r
- /// <summary>\r
- /// The create meta data.\r
- /// </summary>\r
- /// <param name="job">\r
- /// The job.\r
- /// </param>\r
- /// <returns>\r
- /// The <see cref="MetaData"/>.\r
- /// </returns>\r
- private static MetaData CreateMetaData(EncodeJob job)\r
- {\r
- MetaData metaData = new MetaData();\r
-\r
- /* TODO NOT SUPPORTED YET. */\r
- return metaData;\r
- }\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="ScanFactory.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The scan factory.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.Factories\r
-{\r
- using System;\r
- using System.Collections.Generic;\r
-\r
- using HandBrake.Interop.Json.Scan;\r
- using HandBrake.Interop.Model;\r
- using HandBrake.Interop.Model.Scan;\r
-\r
- /// <summary>\r
- /// This factory takes the JSON objects deserialized from libhb for the scan information\r
- /// and converts them into the internal Title objects.\r
- /// </summary>\r
- internal class ScanFactory\r
- {\r
- /// <summary>\r
- /// The create title set.\r
- /// </summary>\r
- /// <param name="scan">\r
- /// The scan.\r
- /// </param>\r
- /// <returns>\r
- /// The <see cref="IEnumerable"/>.\r
- /// </returns>\r
- internal static IEnumerable<Title> CreateTitleSet(JsonScanObject scan)\r
- {\r
- List<Title> titles = new List<Title>();\r
-\r
- if (scan != null)\r
- {\r
- foreach (TitleList item in scan.TitleList)\r
- {\r
- Title title = CreateTitle(item);\r
-\r
- if (title.TitleNumber == scan.MainFeature)\r
- {\r
- title.IsMainFeature = true;\r
- }\r
-\r
- titles.Add(title);\r
- }\r
- }\r
-\r
- return titles;\r
- }\r
-\r
- /// <summary>\r
- /// The create title.\r
- /// </summary>\r
- /// <param name="title">\r
- /// The title.\r
- /// </param>\r
- /// <returns>\r
- /// The <see cref="Title"/>.\r
- /// </returns>\r
- private static Title CreateTitle(TitleList title)\r
- {\r
- Title newTitle = new Title\r
- {\r
- TitleNumber = title.Index,\r
- Playlist = title.Playlist,\r
- Resolution = new Size(title.Geometry.Width, title.Geometry.Height),\r
- ParVal = new Size(title.Geometry.PAR.Num, title.Geometry.PAR.Den), \r
- Duration = new TimeSpan(title.Duration.Hours, title.Duration.Minutes, title.Duration.Seconds),\r
- AutoCropDimensions = new Cropping\r
- {\r
- Top = title.Crop[0],\r
- Bottom = title.Crop[1],\r
- Left = title.Crop[2],\r
- Right = title.Crop[3]\r
- },\r
- AngleCount = title.AngleCount,\r
- VideoCodecName = title.VideoCodec,\r
- Framerate = ((double)title.FrameRate.Num) / title.FrameRate.Den,\r
- FramerateNumerator = title.FrameRate.Num,\r
- FramerateDenominator = title.FrameRate.Den,\r
- Path = title.Path\r
- };\r
-\r
- switch (title.Type)\r
- {\r
- case 2:\r
- newTitle.InputType = InputType.Stream;\r
- break;\r
- case 0:\r
- newTitle.InputType = InputType.Dvd;\r
- break;\r
- case 1:\r
- newTitle.InputType = InputType.Bluray;\r
- break;\r
- case 3:\r
- newTitle.InputType = InputType.FFStream;\r
- break;\r
- }\r
-\r
- foreach (Subtitle subtitleTrack in CreateSubtitleTracks(title.SubtitleList))\r
- {\r
- newTitle.Subtitles.Add(subtitleTrack);\r
- }\r
-\r
- foreach (AudioTrack audioTrack in CreateAudioTracks(title.AudioList))\r
- {\r
- newTitle.AudioTracks.Add(audioTrack);\r
- }\r
-\r
- foreach (Chapter chapter in CreateChapters(title.ChapterList))\r
- {\r
- newTitle.Chapters.Add(chapter);\r
- }\r
- \r
- return newTitle;\r
- }\r
-\r
- /// <summary>\r
- /// The create subtitle tracks.\r
- /// </summary>\r
- /// <param name="subtitles">\r
- /// The subtitles.\r
- /// </param>\r
- /// <returns>\r
- /// The <see cref="IEnumerable"/>.\r
- /// </returns>\r
- private static IEnumerable<Subtitle> CreateSubtitleTracks(IEnumerable<SubtitleList> subtitles)\r
- {\r
- List<Subtitle> subtiles = new List<Subtitle>();\r
-\r
- int currentSubtitleTrack = 1;\r
- foreach (SubtitleList subtitle in subtitles)\r
- {\r
- Subtitle newSubtitle = new Subtitle\r
- {\r
- TrackNumber = currentSubtitleTrack,\r
- Language = subtitle.Language,\r
- LanguageCode = subtitle.LanguageCode,\r
- SubtitleSourceInt = subtitle.Source,\r
- SubtitleSource = (SubtitleSource)subtitle.Source // TODO Check correct\r
- };\r
-\r
- subtiles.Add(newSubtitle);\r
-\r
- currentSubtitleTrack++;\r
- }\r
-\r
- return subtiles;\r
- }\r
-\r
- /// <summary>\r
- /// The create audio tracks.\r
- /// </summary>\r
- /// <param name="audioTracks">\r
- /// The audio tracks.\r
- /// </param>\r
- /// <returns>\r
- /// The <see cref="IEnumerable"/>.\r
- /// </returns>\r
- private static IEnumerable<AudioTrack> CreateAudioTracks(IEnumerable<AudioList> audioTracks)\r
- {\r
- List<AudioTrack> tracks = new List<AudioTrack>();\r
-\r
- int currentAudioTrack = 1;\r
- foreach (AudioList track in audioTracks)\r
- {\r
- AudioTrack newAudio = new AudioTrack\r
- {\r
- TrackNumber = currentAudioTrack,\r
- CodecId = Convert.ToUInt32(track.Codec),\r
- Language = track.Language,\r
- LanguageCode = track.LanguageCode,\r
- Description = track.Description,\r
- ChannelLayout = (ulong)track.ChannelLayout,\r
- SampleRate = track.SampleRate,\r
- Bitrate = track.BitRate\r
- };\r
-\r
- tracks.Add(newAudio);\r
-\r
- currentAudioTrack++;\r
- }\r
- return tracks;\r
- }\r
-\r
- /// <summary>\r
- /// The create chapters.\r
- /// </summary>\r
- /// <param name="chapters">\r
- /// The chapters.\r
- /// </param>\r
- /// <returns>\r
- /// The <see cref="IEnumerable"/>.\r
- /// </returns>\r
- private static IEnumerable<Chapter> CreateChapters(IEnumerable<ChapterList> chapters)\r
- {\r
- List<Chapter> tracks = new List<Chapter>();\r
-\r
- int currentTrack = 1;\r
- foreach (ChapterList chapter in chapters)\r
- {\r
- Chapter newChapter = new Chapter\r
- {\r
- Name = chapter.Name,\r
- ChapterNumber = currentTrack,\r
- Duration = new TimeSpan(chapter.Duration.Hours, chapter.Duration.Minutes, chapter.Duration.Seconds)\r
- };\r
-\r
- tracks.Add(newChapter);\r
- currentTrack++;\r
- }\r
-\r
- return tracks;\r
- }\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="AudioList.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The audio list.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.Scan\r
-{\r
- /// <summary>\r
- /// The audio list.\r
- /// </summary>\r
- internal class AudioList\r
- {\r
- /// <summary>\r
- /// Gets or sets the bit rate.\r
- /// </summary>\r
- public int BitRate { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the channel layout.\r
- /// </summary>\r
- public int ChannelLayout { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the description.\r
- /// </summary>\r
- public string Description { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the language.\r
- /// </summary>\r
- public string Language { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the language code.\r
- /// </summary>\r
- public string LanguageCode { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the sample rate.\r
- /// </summary>\r
- public int SampleRate { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the codec.\r
- /// </summary>\r
- public int Codec { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="ChapterList.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The chapter list.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.Scan\r
-{\r
- /// <summary>\r
- /// The chapter list.\r
- /// </summary>\r
- internal class ChapterList\r
- {\r
- /// <summary>\r
- /// Gets or sets the duration.\r
- /// </summary>\r
- public Duration2 Duration { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the name.\r
- /// </summary>\r
- public string Name { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="Color.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The color.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.Scan\r
-{\r
- /// <summary>\r
- /// The color.\r
- /// </summary>\r
- internal class Color\r
- {\r
- /// <summary>\r
- /// Gets or sets the matrix.\r
- /// </summary>\r
- public int Matrix { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the primary.\r
- /// </summary>\r
- public int Primary { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the transfer.\r
- /// </summary>\r
- public int Transfer { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="Duration.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The duration.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.Scan\r
-{\r
- /// <summary>\r
- /// The duration.\r
- /// </summary>\r
- internal class Duration\r
- {\r
- /// <summary>\r
- /// Gets or sets the hours.\r
- /// </summary>\r
- public int Hours { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the minutes.\r
- /// </summary>\r
- public int Minutes { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the seconds.\r
- /// </summary>\r
- public int Seconds { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the ticks.\r
- /// </summary>\r
- public int Ticks { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="Duration2.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The duration 2.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.Scan\r
-{\r
- /// <summary>\r
- /// The duration 2.\r
- /// </summary>\r
- internal class Duration2\r
- {\r
- /// <summary>\r
- /// Gets or sets the hours.\r
- /// </summary>\r
- public int Hours { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the minutes.\r
- /// </summary>\r
- public int Minutes { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the seconds.\r
- /// </summary>\r
- public int Seconds { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the ticks.\r
- /// </summary>\r
- public int Ticks { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="FrameRate.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The frame rate.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.Scan\r
-{\r
- /// <summary>\r
- /// The frame rate.\r
- /// </summary>\r
- internal class FrameRate\r
- {\r
-\r
- /// <summary>\r
- /// Gets or sets the den.\r
- /// </summary>\r
- public int Den { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the num.\r
- /// </summary>\r
- public int Num { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="Geometry.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The geometry.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.Scan\r
-{\r
- /// <summary>\r
- /// The geometry.\r
- /// </summary>\r
- internal class Geometry\r
- {\r
- /// <summary>\r
- /// Gets or sets the height.\r
- /// </summary>\r
- public int Height { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the par.\r
- /// </summary>\r
- public PAR PAR { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the width.\r
- /// </summary>\r
- public int Width { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="JsonScanObject.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The root object.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.Scan\r
-{\r
- using System.Collections.Generic;\r
-\r
- /// <summary>\r
- /// The root object.\r
- /// </summary>\r
- internal class JsonScanObject\r
- {\r
- /// <summary>\r
- /// Gets or sets the main feature.\r
- /// </summary>\r
- public int MainFeature { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the title list.\r
- /// </summary>\r
- public List<TitleList> TitleList { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="MetaData.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The meta data.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.Scan\r
-{\r
- /// <summary>\r
- /// The meta data.\r
- /// </summary>\r
- internal class MetaData\r
- {\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="PAR.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The par.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.Scan\r
-{\r
- /// <summary>\r
- /// The par.\r
- /// </summary>\r
- internal class PAR\r
- {\r
- /// <summary>\r
- /// Gets or sets the height.\r
- /// </summary>\r
- public int Num { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the width.\r
- /// </summary>\r
- public int Den { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="SubtitleList.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The subtitle list.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.Scan\r
-{\r
- /// <summary>\r
- /// The subtitle list.\r
- /// </summary>\r
- internal class SubtitleList\r
- {\r
- /// <summary>\r
- /// Gets or sets the format.\r
- /// </summary>\r
- public int Format { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the language.\r
- /// </summary>\r
- public string Language { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the language code.\r
- /// </summary>\r
- public string LanguageCode { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the source.\r
- /// </summary>\r
- public int Source { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="TitleList.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The title list.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.Scan\r
-{\r
- using System.Collections.Generic;\r
-\r
- /// <summary>\r
- /// The title list.\r
- /// </summary>\r
- internal class TitleList\r
- {\r
- /// <summary>\r
- /// Gets or sets the angle count.\r
- /// </summary>\r
- public int AngleCount { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the audio list.\r
- /// </summary>\r
- public List<AudioList> AudioList { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the chapter list.\r
- /// </summary>\r
- public List<ChapterList> ChapterList { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the color.\r
- /// </summary>\r
- public Color Color { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the cropping values\r
- /// </summary>\r
- public List<int> Crop { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the duration.\r
- /// </summary>\r
- public Duration Duration { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the frame rate.\r
- /// </summary>\r
- public FrameRate FrameRate { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the geometry.\r
- /// </summary>\r
- public Geometry Geometry { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the index.\r
- /// </summary>\r
- public int Index { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether interlace detected.\r
- /// </summary>\r
- public bool InterlaceDetected { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the meta data.\r
- /// </summary>\r
- public MetaData MetaData { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the name.\r
- /// </summary>\r
- public string Name { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the path.\r
- /// </summary>\r
- public string Path { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the playlist.\r
- /// </summary>\r
- public int Playlist { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the subtitle list.\r
- /// </summary>\r
- public List<SubtitleList> SubtitleList { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the type.\r
- /// HB_DVD_TYPE, HB_BD_TYPE, HB_STREAM_TYPE, HB_FF_STREAM_TYPE\r
- /// </summary>\r
- public int Type { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the video codec.\r
- /// </summary>\r
- public string VideoCodec { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="JsonState.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The hand brake state.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.State\r
-{\r
- /// <summary>\r
- /// The hand brake state.\r
- /// </summary>\r
- public class JsonState\r
- {\r
- /// <summary>\r
- /// Gets or sets the scanning.\r
- /// </summary>\r
- public Scanning Scanning { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the working.\r
- /// </summary>\r
- public Working Working { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the work done.\r
- /// </summary>\r
- public WorkDone WorkDone { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the state.\r
- /// </summary>\r
- public int State { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="Scanning.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The scanning.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.State\r
-{\r
- /// <summary>\r
- /// The scanning.\r
- /// </summary>\r
- public class Scanning\r
- {\r
- /// <summary>\r
- /// Gets or sets the preview.\r
- /// </summary>\r
- public int Preview { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the preview count.\r
- /// </summary>\r
- public int PreviewCount { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the progress.\r
- /// </summary>\r
- public double Progress { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the title.\r
- /// </summary>\r
- public int Title { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the title count.\r
- /// </summary>\r
- public int TitleCount { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="WorkDone.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The work done.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.State\r
-{\r
- /// <summary>\r
- /// The work done.\r
- /// </summary>\r
- public class WorkDone\r
- {\r
- /// <summary>\r
- /// Gets or sets the error.\r
- /// </summary>\r
- public int Error { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="Working.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The working.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Json.State\r
-{\r
- /// <summary>\r
- /// The working.\r
- /// </summary>\r
- public class Working\r
- {\r
- /// <summary>\r
- /// Gets or sets the hours.\r
- /// </summary>\r
- public int Hours { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the job.\r
- /// </summary>\r
- public int Job { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the job count.\r
- /// </summary>\r
- public int JobCount { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the minutes.\r
- /// </summary>\r
- public int Minutes { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the progress.\r
- /// </summary>\r
- public double Progress { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the rate.\r
- /// </summary>\r
- public double Rate { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the rate avg.\r
- /// </summary>\r
- public double RateAvg { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the seconds.\r
- /// </summary>\r
- public int Seconds { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the sequence id.\r
- /// </summary>\r
- public int SequenceID { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="BitrateLimits.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Defines the BitrateLimits type.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Model\r
-{\r
- /// <summary>\r
- /// Represents bitrate limits as a range.\r
- /// </summary>\r
- public class BitrateLimits\r
- {\r
- /// <summary>\r
- /// The inclusive lower limit for the bitrate.\r
- /// </summary>\r
- public int Low { get; set; }\r
-\r
- /// <summary>\r
- /// The inclusive upper limit for the bitrate.\r
- /// </summary>\r
- public int High { get; set; }\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="Cropping.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Defines the Cropping type.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Model\r
-{\r
- /// <summary>\r
- /// The Cropping Model\r
- /// </summary>\r
- public class Cropping\r
- {\r
- /// <summary>\r
- /// Initializes a new instance of the <see cref="Cropping"/> class. \r
- /// </summary>\r
- public Cropping()\r
- {\r
- }\r
-\r
- /// <summary>\r
- /// Initializes a new instance of the <see cref="Cropping"/> class.\r
- /// Copy Constructor\r
- /// </summary>\r
- /// <param name="croping">\r
- /// The croping.\r
- /// </param>\r
- public Cropping(Cropping croping)\r
- {\r
- this.Top = croping.Top;\r
- this.Bottom = croping.Bottom;\r
- this.Left = croping.Left;\r
- this.Right = croping.Right;\r
- }\r
-\r
- /// <summary>\r
- /// Initializes a new instance of the <see cref="Cropping"/> class. \r
- /// </summary>\r
- /// <param name="top">\r
- /// The Top Value\r
- /// </param>\r
- /// <param name="bottom">\r
- /// The Bottom Value\r
- /// </param>\r
- /// <param name="left">\r
- /// The Left Value\r
- /// </param>\r
- /// <param name="right">\r
- /// The Right Value\r
- /// </param>\r
- public Cropping(int top, int bottom, int left, int right)\r
- {\r
- this.Top = top;\r
- this.Bottom = bottom;\r
- this.Left = left;\r
- this.Right = right;\r
- }\r
-\r
- /// <summary>\r
- /// Gets or sets Top.\r
- /// </summary>\r
- public int Top { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets Bottom.\r
- /// </summary>\r
- public int Bottom { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets Left.\r
- /// </summary>\r
- public int Left { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets Right.\r
- /// </summary>\r
- public int Right { get; set; }\r
-\r
- /// <summary>\r
- /// Clone this model\r
- /// </summary>\r
- /// <returns>\r
- /// A Cloned copy\r
- /// </returns>\r
- public Cropping Clone()\r
- {\r
- return new Cropping\r
- {\r
- Top = this.Top,\r
- Bottom = this.Bottom,\r
- Left = this.Left,\r
- Right = this.Right\r
- };\r
- }\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="EncodeJob.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Defines the EncodeJob type.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Model\r
-{\r
- using System.Collections.Generic;\r
-\r
- using HandBrake.Interop.Model.Encoding;\r
-\r
- /// <summary>\r
- /// The encode job.\r
- /// </summary>\r
- public class EncodeJob\r
- {\r
- /// <summary>\r
- /// Initializes a new instance of the <see cref="EncodeJob"/> class.\r
- /// </summary>\r
- public EncodeJob()\r
- {\r
- this.Cropping = new Cropping();\r
- }\r
-\r
- #region Source\r
-\r
- /// <summary>\r
- /// Gets or sets the source path.\r
- /// </summary>\r
- public string SourcePath { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the 1-based index of the title to encode.\r
- /// </summary>\r
- public int Title { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the range type.\r
- /// </summary>\r
- public VideoRangeType RangeType { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the seek points.\r
- /// This is the number of preview points.\r
- /// </summary>\r
- public int SeekPoints { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the start at preview.\r
- /// </summary>\r
- public int StartAtPreview { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the seconds end.\r
- /// </summary>\r
- public int SecondsEnd { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the seconds start.\r
- /// </summary>\r
- public double SecondsStart { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the angle to encode. 0 for default, 1+ for specified angle.\r
- /// </summary>\r
- public int Angle { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the chapter end.\r
- /// </summary>\r
- public int ChapterEnd { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the chapter start.\r
- /// </summary>\r
- public int ChapterStart { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the frames end.\r
- /// </summary>\r
- public int FramesEnd { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the frames start.\r
- /// </summary>\r
- public int FramesStart { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the source type.\r
- /// </summary>\r
- public SourceType SourceType { get; set; }\r
-\r
- #endregion\r
-\r
- #region Destination and Output Settings\r
-\r
- /// <summary>\r
- /// Gets or sets the output path.\r
- /// </summary>\r
- public string OutputPath { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the container name.\r
- /// </summary>\r
- public string ContainerName { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the preferred extension.\r
- /// </summary>\r
- public OutputExtension PreferredExtension { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether include chapter markers.\r
- /// </summary>\r
- public bool IncludeChapterMarkers { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether optimize.\r
- /// </summary>\r
- public bool Optimize { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether i pod 5 g support.\r
- /// </summary>\r
- public bool IPod5GSupport { get; set; }\r
- #endregion\r
-\r
- #region Picture Settings\r
-\r
- /// <summary>\r
- /// Gets or sets the width.\r
- /// </summary>\r
- public int Width { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the height.\r
- /// </summary>\r
- public int Height { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the max width.\r
- /// </summary>\r
- public int MaxWidth { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the max height.\r
- /// </summary>\r
- public int MaxHeight { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the scale method.\r
- /// </summary>\r
- public ScaleMethod ScaleMethod { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the cropping.\r
- /// </summary>\r
- public Cropping Cropping { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the anamorphic.\r
- /// </summary>\r
- public Anamorphic Anamorphic { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether use display width.\r
- /// </summary>\r
- public bool UseDisplayWidth { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the display width.\r
- /// </summary>\r
- public int DisplayWidth { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether keep display aspect.\r
- /// </summary>\r
- public bool KeepDisplayAspect { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the pixel aspect x.\r
- /// </summary>\r
- public int PixelAspectX { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the pixel aspect y.\r
- /// </summary>\r
- public int PixelAspectY { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the modulus.\r
- /// </summary>\r
- public int Modulus { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the rotation.\r
- /// </summary>\r
- public PictureRotation Rotation { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether the picture should be flipped horizontally.\r
- /// </summary>\r
- public bool FlipHorizontal { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether the picture should be flipped vertically.\r
- /// </summary>\r
- public bool FlipVertical { get; set; }\r
- #endregion\r
-\r
- #region Filters\r
-\r
- /// <summary>\r
- /// Gets or sets the deinterlace.\r
- /// </summary>\r
- public Deinterlace Deinterlace { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the custom deinterlace.\r
- /// </summary>\r
- public string CustomDeinterlace { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the decomb.\r
- /// </summary>\r
- public Decomb Decomb { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the custom decomb.\r
- /// </summary>\r
- public string CustomDecomb { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the detelecine.\r
- /// </summary>\r
- public Detelecine Detelecine { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the custom detelecine.\r
- /// </summary>\r
- public string CustomDetelecine { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the denoise.\r
- /// </summary>\r
- public Denoise Denoise { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the denoise preset name.\r
- /// </summary>\r
- public string DenoisePreset { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the denoise tune name.\r
- /// </summary>\r
- public string DenoiseTune { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether we should use the provided\r
- /// custom denoise string or we should use the preset and tune.\r
- /// </summary>\r
- public bool UseCustomDenoise { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the custom denoise.\r
- /// </summary>\r
- public string CustomDenoise { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the deblock.\r
- /// </summary>\r
- public int Deblock { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether the grayscale filter will be applied.\r
- /// </summary>\r
- public bool Grayscale { get; set; }\r
- #endregion\r
-\r
- #region Video\r
-\r
- /// <summary>\r
- /// Gets or sets the video encoder.\r
- /// </summary>\r
- public string VideoEncoder { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the video encoder options.\r
- /// </summary>\r
- public string VideoOptions { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the advanced options.\r
- /// This overrides the VideoOptions, VideoPreset, VideoTunes and VideoLevel\r
- /// </summary>\r
- public string AdvancedOptions { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the video encoder profile name.\r
- /// </summary>\r
- public string VideoProfile { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the video encoder preset name.\r
- /// </summary>\r
- public string VideoPreset { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the video encoder tunes.\r
- /// </summary>\r
- public List<string> VideoTunes { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the video encoder level.\r
- /// </summary>\r
- public string VideoLevel { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether to use QSV decoding.\r
- /// </summary>\r
- public bool QsvDecode { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the video encode rate type.\r
- /// </summary>\r
- public VideoEncodeRateType VideoEncodeRateType { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the quality.\r
- /// </summary>\r
- public double Quality { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the target size.\r
- /// </summary>\r
- public int TargetSize { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the video bitrate.\r
- /// </summary>\r
- public int VideoBitrate { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether two pass.\r
- /// </summary>\r
- public bool TwoPass { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether turbo first pass.\r
- /// </summary>\r
- public bool TurboFirstPass { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the framerate.\r
- /// </summary>\r
- public double Framerate { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether constant framerate.\r
- /// </summary>\r
- public bool ConstantFramerate { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether peak framerate.\r
- /// </summary>\r
- public bool PeakFramerate { get; set; }\r
- #endregion\r
-\r
- #region Audio\r
-\r
- /// <summary>\r
- /// Gets or sets the audio encodings.\r
- /// </summary>\r
- public List<AudioEncoding> AudioEncodings { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the audio encoder fallback.\r
- /// </summary>\r
- public string AudioEncoderFallback { get; set; }\r
- #endregion\r
-\r
- #region Chapter Markers \r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether use default chapter names.\r
- /// </summary>\r
- public bool UseDefaultChapterNames { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the custom chapter names.\r
- /// </summary>\r
- public List<string> CustomChapterNames { get; set; }\r
- #endregion\r
-\r
- #region Subtitles\r
-\r
- /// <summary>\r
- /// Gets or sets the subtitles.\r
- /// </summary>\r
- public Subtitles Subtitles { get; set; }\r
- #endregion\r
-\r
- #region Additional Args\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether to use DXVA hardware decoding.\r
- /// </summary>\r
- public bool DxvaDecoding { get; set; }\r
- #endregion\r
-\r
- #region Public Methods\r
-\r
- /// <summary>\r
- /// The clone.\r
- /// </summary>\r
- /// <returns>\r
- /// The <see cref="EncodeJob"/>.\r
- /// </returns>\r
- public EncodeJob Clone()\r
- {\r
- var clone = new EncodeJob\r
- {\r
- SourceType = this.SourceType, \r
- SourcePath = this.SourcePath, \r
- Title = this.Title, \r
- Angle = this.Angle, \r
- RangeType = this.RangeType, \r
- ChapterStart = this.ChapterStart, \r
- ChapterEnd = this.ChapterEnd, \r
- SecondsStart = this.SecondsStart, \r
- SecondsEnd = this.SecondsEnd, \r
- FramesStart = this.FramesStart, \r
- FramesEnd = this.FramesEnd, \r
- Subtitles = this.Subtitles, \r
- UseDefaultChapterNames = this.UseDefaultChapterNames, \r
- DxvaDecoding = this.DxvaDecoding, \r
- OutputPath = this.OutputPath, \r
-\r
- ContainerName = this.ContainerName, \r
- PreferredExtension = this.PreferredExtension, \r
- IncludeChapterMarkers = this.IncludeChapterMarkers, \r
- Optimize = this.Optimize, \r
- IPod5GSupport = this.IPod5GSupport, \r
-\r
- Width = this.Width, \r
- Height = this.Height, \r
- MaxWidth = this.MaxWidth, \r
- MaxHeight = this.MaxHeight, \r
- ScaleMethod = this.ScaleMethod, \r
- Cropping = this.Cropping.Clone(), \r
- Anamorphic = this.Anamorphic, \r
- UseDisplayWidth = this.UseDisplayWidth, \r
- DisplayWidth = this.DisplayWidth, \r
- KeepDisplayAspect = this.KeepDisplayAspect, \r
- PixelAspectX = this.PixelAspectX, \r
- PixelAspectY = this.PixelAspectY, \r
- Modulus = this.Modulus, \r
- Rotation = this.Rotation, \r
- FlipHorizontal = this.FlipHorizontal, \r
- FlipVertical = this.FlipVertical, \r
-\r
- Deinterlace = this.Deinterlace, \r
- CustomDeinterlace = this.CustomDeinterlace, \r
- Decomb = this.Decomb, \r
- CustomDecomb = this.CustomDecomb, \r
- Detelecine = this.Detelecine, \r
- CustomDetelecine = this.CustomDetelecine, \r
- Denoise = this.Denoise, \r
- DenoisePreset = this.DenoisePreset, \r
- DenoiseTune = this.DenoiseTune, \r
- UseCustomDenoise = this.UseCustomDenoise, \r
- CustomDenoise = this.CustomDenoise, \r
- Deblock = this.Deblock, \r
- Grayscale = this.Grayscale, \r
-\r
- VideoEncoder = this.VideoEncoder, \r
- VideoOptions = this.VideoOptions, \r
- VideoProfile = this.VideoProfile, \r
- VideoPreset = this.VideoPreset, \r
- VideoTunes = this.VideoTunes, \r
- VideoLevel = this.VideoLevel, \r
- QsvDecode = this.QsvDecode, \r
- VideoEncodeRateType = this.VideoEncodeRateType, \r
- Quality = this.Quality, \r
- TargetSize = this.TargetSize, \r
- VideoBitrate = this.VideoBitrate, \r
- TwoPass = this.TwoPass, \r
- TurboFirstPass = this.TurboFirstPass, \r
- Framerate = this.Framerate, \r
- ConstantFramerate = this.ConstantFramerate, \r
-\r
- AudioEncodings = new List<AudioEncoding>(this.AudioEncodings), \r
- AudioEncoderFallback = this.AudioEncoderFallback\r
- };\r
-\r
- return clone;\r
- }\r
-\r
- #endregion\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="Anamorphic.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Defines the Anamorphic type.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Model.Encoding\r
-{\r
- using System.ComponentModel.DataAnnotations;\r
-\r
- /// <summary>\r
- /// The anamorphic.\r
- /// </summary>\r
- public enum Anamorphic\r
- {\r
- [Display(Name = "None")]\r
- None = 0,\r
- [Display(Name = "Strict")]\r
- Strict = 1,\r
- [Display(Name = "Loose")]\r
- Loose = 2,\r
- [Display(Name = "Custom")]\r
- Custom = 3\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="AudioEncodeRateType.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The audio encode rate type.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Model.Encoding\r
-{\r
- /// <summary>\r
- /// The audio encode rate type.\r
- /// </summary>\r
- public enum AudioEncodeRateType\r
- {\r
- Bitrate,\r
- Quality,\r
- Compression\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="AudioEncoder.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The audio encoder enumeration\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Model.Encoding\r
-{\r
- using System.ComponentModel.DataAnnotations;\r
-\r
- using HandBrake.Interop.Attributes;\r
-\r
- /// <summary>\r
- /// The audio encoder.\r
- /// </summary>\r
- public enum AudioEncoder\r
- {\r
- [Display(Name = "AAC (avcodec)")]\r
- [ShortName("av_aac")]\r
- ffaac,\r
-\r
- [Display(Name = "AAC (FDK)")]\r
- [ShortName("fdk_aac")]\r
- fdkaac,\r
-\r
- [Display(Name = "HE-AAC (FDK)")]\r
- [ShortName("fdk_haac")]\r
- fdkheaac,\r
-\r
- [Display(Name = "MP3")]\r
- [ShortName("mp3")]\r
- Lame,\r
-\r
- [Display(Name = "AC3")]\r
- [ShortName("ac3")]\r
- Ac3,\r
-\r
- [Display(Name = "Auto Passthru")]\r
- [ShortName("copy")]\r
- Passthrough,\r
-\r
- [Display(Name = "AC3 Passthru")]\r
- [ShortName("copy:ac3")]\r
- Ac3Passthrough,\r
-\r
- [Display(Name = "DTS Passthru")]\r
- [ShortName("copy:dts")]\r
- DtsPassthrough,\r
-\r
- [Display(Name = "DTS-HD Passthru")]\r
- [ShortName("copy:dtshd")]\r
- DtsHDPassthrough,\r
-\r
- [Display(Name = "AAC Passthru")]\r
- [ShortName("copy:aac")]\r
- AacPassthru,\r
-\r
- [Display(Name = "MP3 Passthru")]\r
- [ShortName("copy:mp3")]\r
- Mp3Passthru,\r
-\r
- [Display(Name = "Vorbis")]\r
- [ShortName("vorbis")]\r
- Vorbis,\r
-\r
- [Display(Name = "FLAC 16-bit")]\r
- [ShortName("flac16")]\r
- ffflac,\r
-\r
- [Display(Name = "FLAC 24-bit")]\r
- [ShortName("flac24")]\r
- ffflac24,\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="AudioEncoding.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Defines the AudioEncoding type.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Model.Encoding\r
-{\r
- using System;\r
-\r
- /// <summary>\r
- /// The Audio Encoding Model\r
- /// </summary>\r
- public class AudioEncoding\r
- {\r
- /// <summary>\r
- /// Initializes a new instance of the AudioEncoding class.\r
- /// </summary>\r
- public AudioEncoding()\r
- {\r
- // Initialize to -1 to differentiate a compression of 0 from uninitialized.\r
- this.Compression = -1;\r
- }\r
-\r
- /// <summary>\r
- /// Gets or sets the chosen track to apply the encoding to.\r
- /// </summary>\r
- /// <remarks>1-based index. 0 means apply to all tracks.</remarks>\r
- public int InputNumber { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the encoder to use.\r
- /// </summary>\r
- public string Encoder { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the encode rate type (bitrate or quality).\r
- /// </summary>\r
- public AudioEncodeRateType EncodeRateType { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the bitrate (in kbps) of this track.\r
- /// </summary>\r
- public int Bitrate { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the target audio quality for this track.\r
- /// </summary>\r
- public float Quality { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the target audio compression for this track.\r
- /// </summary>\r
- public float Compression { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the mixdown.\r
- /// </summary>\r
- public string Mixdown { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the sample rate in Hz.\r
- /// </summary>\r
- public int SampleRateRaw { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets Gain.\r
- /// </summary>\r
- public int Gain { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets Drc.\r
- /// </summary>\r
- public double Drc { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets Name.\r
- /// </summary>\r
- public string Name { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether is passthru.\r
- /// </summary>\r
- public bool IsPassthru { get; set; }\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="Container.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Defines the Container type.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Model.Encoding\r
-{\r
- using System;\r
- using System.ComponentModel.DataAnnotations;\r
-\r
- /// <summary>\r
- /// The container.\r
- /// </summary>\r
- [Flags]\r
- public enum Container\r
- {\r
- None = 0x0,\r
-\r
- [Display(Name = "MP4")]\r
- MP4,\r
- [Display(Name = "MKV")]\r
- MKV\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="Decomb.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Defines the Decomb type.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Model.Encoding\r
-{\r
- /// <summary>\r
- /// The decomb.\r
- /// </summary>\r
- public enum Decomb\r
- {\r
- Off = 0,\r
- Default = 2,\r
- Fast = 3,\r
- Bob = 4,\r
- Custom = 1\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="Deinterlace.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Defines the Deinterlace type.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Model.Encoding\r
-{\r
- /// <summary>\r
- /// The deinterlace.\r
- /// </summary>\r
- public enum Deinterlace\r
- {\r
- Off = 0,\r
- Fast = 2,\r
- Slow = 3,\r
- Slower = 4,\r
- Bob = 5,\r
- Custom = 1\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="Denoise.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Defines the Denoise type.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Model.Encoding\r
-{\r
- /// <summary>\r
- /// The denoise.\r
- /// </summary>\r
- public enum Denoise\r
- {\r
- Off = 0,\r
- hqdn3d = 1,\r
- NLMeans = 2,\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="Detelecine.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Defines the Detelecine type.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Model.Encoding\r
-{\r
- /// <summary>\r
- /// The detelecine.\r
- /// </summary>\r
- public enum Detelecine\r
- {\r
- Off = 0,\r
- Default = 2,\r
- Custom = 1\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="HBAudioEncoder.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The hb audio encoder.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Model.Encoding\r
-{\r
- using HandBrake.Interop.HbLib;\r
-\r
- /// <summary>\r
- /// The hb audio encoder.\r
- /// </summary>\r
- public class HBAudioEncoder\r
- {\r
- /// <summary>\r
- /// Gets or sets the compatible containers.\r
- /// </summary>\r
- public int CompatibleContainers { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the compression limits.\r
- /// </summary>\r
- public RangeLimits CompressionLimits { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the default compression.\r
- /// </summary>\r
- public float DefaultCompression { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the default quality.\r
- /// </summary>\r
- public float DefaultQuality { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the display name.\r
- /// </summary>\r
- public string DisplayName { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the id.\r
- /// </summary>\r
- public int Id { get; set; }\r
-\r
- /// <summary>\r
- /// Gets a value indicating whether the encoder is passthrough.\r
- /// </summary>\r
- public bool IsPassthrough\r
- {\r
- get\r
- {\r
- return (this.Id & NativeConstants.HB_ACODEC_PASS_FLAG) > 0;\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Gets or sets the quality limits.\r
- /// </summary>\r
- public RangeLimits QualityLimits { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the short name.\r
- /// </summary>\r
- public string ShortName { get; set; }\r
-\r
- /// <summary>\r
- /// Gets a value indicating whether the encoder supports compression.\r
- /// </summary>\r
- public bool SupportsCompression\r
- {\r
- get\r
- {\r
- return this.CompressionLimits.High >= 0;\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Gets a value indicating whether the encoder supports quality.\r
- /// </summary>\r
- public bool SupportsQuality\r
- {\r
- get\r
- {\r
- return this.QualityLimits.High >= 0;\r
- }\r
- }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="HBContainer.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The hb container.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Model.Encoding\r
-{\r
- /// <summary>\r
- /// The hb container.\r
- /// </summary>\r
- public class HBContainer\r
- {\r
- /// <summary>\r
- /// Gets or sets the default extension.\r
- /// </summary>\r
- public string DefaultExtension { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the display name.\r
- /// </summary>\r
- public string DisplayName { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the id.\r
- /// </summary>\r
- public int Id { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the short name.\r
- /// </summary>\r
- public string ShortName { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="HBMixdown.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The hb mixdown.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Model.Encoding\r
-{\r
- /// <summary>\r
- /// The hb mixdown.\r
- /// </summary>\r
- public class HBMixdown\r
- {\r
- #region Public Properties\r
-\r
- /// <summary>\r
- /// Gets or sets the display name.\r
- /// </summary>\r
- public string DisplayName { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the id.\r
- /// </summary>\r
- public int Id { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the short name.\r
- /// </summary>\r
- public string ShortName { get; set; }\r
-\r
- #endregion\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="HBRate.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Represents a rate in HandBrake: audio sample rate or video framerate.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Model.Encoding\r
-{\r
- /// <summary>\r
- /// Represents a rate in HandBrake: audio sample rate or video framerate.\r
- /// </summary>\r
- public class HBRate\r
- {\r
- /// <summary>\r
- /// Gets or sets the name to use for this rate.\r
- /// </summary>\r
- public string Name { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the raw rate.\r
- /// </summary>\r
- public int Rate { get; set; }\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="HBVideoEncoder.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The hb video encoder.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Model.Encoding\r
-{\r
- using System.Collections.Generic;\r
-\r
- using HandBrake.Interop.HbLib;\r
- using HandBrake.Interop.Helpers;\r
-\r
- /// <summary>\r
- /// The hb video encoder.\r
- /// </summary>\r
- public class HBVideoEncoder\r
- {\r
- /// <summary>\r
- /// Gets or sets the compatible containers.\r
- /// </summary>\r
- public int CompatibleContainers { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the display name.\r
- /// </summary>\r
- public string DisplayName { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the id.\r
- /// </summary>\r
- public int Id { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the short name.\r
- /// </summary>\r
- public string ShortName { get; set; }\r
-\r
- /// <summary>\r
- /// Gets the list of presets this encoder supports. (null if the encoder doesn't support presets)\r
- /// </summary>\r
- public List<string> Presets\r
- {\r
- get\r
- {\r
- return InteropUtilities.ToStringListFromArrayPtr(HBFunctions.hb_video_encoder_get_presets(this.Id));\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Gets the list of tunes this encoder supports. (null if the encoder doesn't support tunes)\r
- /// </summary>\r
- public List<string> Tunes\r
- {\r
- get\r
- {\r
- return InteropUtilities.ToStringListFromArrayPtr(HBFunctions.hb_video_encoder_get_tunes(this.Id));\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Gets the list of profiles this encoder supports. (null if the encoder doesn't support profiles)\r
- /// </summary>\r
- public List<string> Profiles\r
- {\r
- get\r
- {\r
- return InteropUtilities.ToStringListFromArrayPtr(HBFunctions.hb_video_encoder_get_profiles(this.Id));\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Gets the list of levels this encoder supports. (null if the encoder doesn't support levels)\r
- /// </summary>\r
- public List<string> Levels\r
- {\r
- get\r
- {\r
- return InteropUtilities.ToStringListFromArrayPtr(HBFunctions.hb_video_encoder_get_levels(this.Id));\r
- }\r
- } \r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="Mixdown.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Defines the Mixdown type.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Model.Encoding\r
-{\r
- using System.ComponentModel.DataAnnotations;\r
-\r
- /// <summary>\r
- /// The Audio Mixdown Enumeration\r
- /// </summary>\r
- public enum Mixdown\r
- {\r
- [Display(Name = "Dolby Pro Logic II")]\r
- DolbyProLogicII = 0,\r
-\r
- [Display(Name = "None")]\r
- None,\r
-\r
- [Display(Name = "Automatic")]\r
- Auto,\r
-\r
- [Display(Name = "Mono")]\r
- Mono,\r
-\r
- [Display(Name = "Mono (Left Only)")]\r
- LeftOnly,\r
-\r
- [Display(Name = "Mono (Right Only)")]\r
- RightOnly,\r
-\r
- [Display(Name = "Stereo")]\r
- Stereo,\r
-\r
- [Display(Name = "Dolby Surround")]\r
- DolbySurround,\r
-\r
- [Display(Name = "5.1 Channels")]\r
- FivePoint1Channels,\r
-\r
- [Display(Name = "6.1 Channels")]\r
- SixPoint1Channels,\r
-\r
- [Display(Name = "7.1 Channels")]\r
- SevenPoint1Channels,\r
-\r
- [Display(Name = "7.1 (5F/2R/LFE)")]\r
- Five_2_LFE,\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="OutputExtension.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Defines the OutputExtension type.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Model.Encoding\r
-{\r
- /// <summary>\r
- /// The output extension.\r
- /// </summary>\r
- public enum OutputExtension\r
- {\r
- Mp4,\r
- M4v\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="PictureRotation.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Possible picture rotations.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Model.Encoding\r
-{\r
- /// <summary>\r
- /// Possible picture rotations.\r
- /// </summary>\r
- public enum PictureRotation\r
- {\r
- None = 0,\r
- Clockwise90,\r
- Clockwise180,\r
- Clockwise270\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="ScaleMethod.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Scaling Method\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Model.Encoding\r
-{\r
- /// <summary>\r
- /// Enumeration of rescaling algorithms.\r
- /// </summary>\r
- public enum ScaleMethod\r
- {\r
- /// <summary>\r
- /// Standard software scaling. Highest quality.\r
- /// </summary>\r
- Lanczos = 0,\r
-\r
- /// <summary>\r
- /// OpenCL-assisted bicubic scaling.\r
- /// </summary>\r
- Bicubic = 1\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="VideoEncodeRateType.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Defines the VideoEncodeRateType type.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Model.Encoding\r
-{\r
- /// <summary>\r
- /// The video encode rate type.\r
- /// </summary>\r
- public enum VideoEncodeRateType\r
- {\r
- TargetSize = 0,\r
- AverageBitrate = 1,\r
- ConstantQuality = 2\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="VideoEncoder.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The video encoder.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Model.Encoding\r
-{\r
- using System.ComponentModel.DataAnnotations;\r
-\r
- using HandBrake.Interop.Attributes;\r
-\r
- /// <summary>\r
- /// The video encoder.\r
- /// </summary>\r
- public enum VideoEncoder\r
- {\r
- [Display(Name = "H.264 (x264)")]\r
- [ShortName("x264")]\r
- X264 = 0,\r
-\r
- [Display(Name = "H.264 (Intel QSV)")]\r
- [ShortName("qsv_h264")]\r
- QuickSync,\r
-\r
- [Display(Name = "MPEG-4")]\r
- [ShortName("mpeg4")]\r
- FFMpeg,\r
-\r
- [Display(Name = "MPEG-2")]\r
- [ShortName("mpeg2")]\r
- FFMpeg2,\r
-\r
- [Display(Name = "Theora")]\r
- [ShortName("theora")]\r
- Theora,\r
-\r
- [Display(Name = "H.265 (x265)")]\r
- [ShortName("x265")]\r
- X265,\r
-\r
- [Display(Name = "VP8")]\r
- [ShortName("vp8")]\r
- VP8\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="Language.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Represents a language.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Model\r
-{\r
- /// <summary>\r
- /// Represents a language.\r
- /// </summary>\r
- public class Language\r
- {\r
- /// <summary>\r
- /// Gets or sets the english name of the language.\r
- /// </summary>\r
- public string EnglishName { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the native name of the language.\r
- /// </summary>\r
- public string NativeName { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the language code.\r
- /// </summary>\r
- public string Code { get; set; }\r
-\r
- /// <summary>\r
- /// Gets the display string for the language.\r
- /// </summary>\r
- public string Display\r
- {\r
- get\r
- {\r
- if (!string.IsNullOrEmpty(this.NativeName) && this.NativeName != this.EnglishName)\r
- {\r
- return this.EnglishName + " (" + this.NativeName + ")";\r
- }\r
-\r
- return this.EnglishName;\r
- }\r
- }\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="RangeLimits.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// The range limits.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Model\r
-{\r
- /// <summary>\r
- /// The range limits.\r
- /// </summary>\r
- public class RangeLimits\r
- {\r
- /// <summary>\r
- /// Gets or sets a value indicating whether ascending.\r
- /// </summary>\r
- public bool Ascending { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the granularity.\r
- /// </summary>\r
- public float Granularity { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the high.\r
- /// </summary>\r
- public float High { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the low.\r
- /// </summary>\r
- public float Low { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="AudioTrack.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// An object represending an AudioTrack associated with a Title, in a DVD\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Model.Scan\r
-{\r
- /// <summary>\r
- /// An object represending an AudioTrack associated with a Title, in a DVD\r
- /// </summary>\r
- public class AudioTrack\r
- {\r
- /// <summary>\r
- /// Gets or sets the track number of this Audio Track\r
- /// </summary>\r
- public int TrackNumber { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the audio codec ID for this track.\r
- /// </summary>\r
- public uint CodecId { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the language (if detected) of this Audio Track\r
- /// </summary>\r
- public string Language { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the language code for this audio track.\r
- /// </summary>\r
- public string LanguageCode { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the description for this audio track.\r
- /// </summary>\r
- public string Description { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the channel layout of this Audio Track.\r
- /// </summary>\r
- public ulong ChannelLayout { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the frequency (in Hz) of this Audio Track\r
- /// </summary>\r
- public int SampleRate { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the bitrate (in bits/sec) of this Audio Track.\r
- /// </summary>\r
- public int Bitrate { get; set; }\r
-\r
- /// <summary>\r
- /// Gets the display string for this audio track.\r
- /// </summary>\r
- public string Display\r
- {\r
- get\r
- {\r
- return this.GetDisplayString(true);\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Gets the display string for this audio track (not including track number)\r
- /// </summary>\r
- public string NoTrackDisplay\r
- {\r
- get\r
- {\r
- return this.GetDisplayString(false);\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Override of the ToString method to make this object easier to use in the UI\r
- /// </summary>\r
- /// <returns>A string formatted as: {track #} {language} ({format}) ({sub-format})</returns>\r
- public override string ToString()\r
- {\r
- return this.GetDisplayString(true);\r
- }\r
-\r
- /// <summary>\r
- /// The get display string.\r
- /// </summary>\r
- /// <param name="includeTrackNumber">\r
- /// The include track number.\r
- /// </param>\r
- /// <returns>\r
- /// The <see cref="string"/>.\r
- /// </returns>\r
- private string GetDisplayString(bool includeTrackNumber)\r
- {\r
- if (includeTrackNumber)\r
- {\r
- return this.TrackNumber + " " + this.Description;\r
- }\r
- \r
- return this.Description;\r
- }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="Chapter.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// An object representing a Chapter aosciated with a Title, in a DVD\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Model.Scan\r
-{\r
- using System;\r
- using System.Globalization;\r
-\r
- /// <summary>\r
- /// An object representing a Chapter aosciated with a Title, in a DVD\r
- /// </summary>\r
- public class Chapter\r
- {\r
- /// <summary>\r
- /// Gets or sets the name.\r
- /// </summary>\r
- public string Name { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the number of this Chapter, in regards to its parent Title\r
- /// </summary>\r
- public int ChapterNumber { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the duration of this chapter.\r
- /// </summary>\r
- public TimeSpan Duration { get; set; }\r
-\r
- /// <summary>\r
- /// Override of the ToString method to make this object easier to use in the UI\r
- /// </summary>\r
- /// <returns>A string formatted as: {chapter #}</returns>\r
- public override string ToString()\r
- {\r
- return this.ChapterNumber.ToString(CultureInfo.InvariantCulture);\r
- }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="InputType.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Defines the InputType type.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Model.Scan\r
-{\r
- using System.ComponentModel.DataAnnotations;\r
-\r
- /// <summary>\r
- /// The input type.\r
- /// </summary>\r
- public enum InputType\r
- {\r
- [Display(Name = "File")]\r
- Stream,\r
-\r
- [Display(Name = "DVD")]\r
- Dvd,\r
-\r
- [Display(Name = "Blu-ray")]\r
- Bluray,\r
-\r
- [Display(Name = "File")]\r
- FFStream\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="Subtitle.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// An object that represents a subtitle associated with a Title, in a DVD\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Model.Scan\r
-{\r
- using HandBrake.Interop.HbLib;\r
-\r
- /// <summary>\r
- /// An object that represents a subtitle associated with a Title, in a DVD\r
- /// </summary>\r
- public class Subtitle\r
- {\r
- /// <summary>\r
- /// Gets or sets the track number of this Subtitle\r
- /// </summary>\r
- public int TrackNumber { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the language (if detected) of this Subtitle\r
- /// </summary>\r
- public string Language { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the Langauage Code.\r
- /// </summary>\r
- public string LanguageCode { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the subtitle source.\r
- /// </summary>\r
- public SubtitleSource SubtitleSource { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the subtitle source raw integer.\r
- /// </summary>\r
- public int SubtitleSourceInt { get; set; }\r
-\r
- /// <summary>\r
- /// Gets a value indicating whether the "forced only" flag can be set on this subtitle.\r
- /// </summary>\r
- public bool CanSetForcedOnly\r
- {\r
- get\r
- {\r
- return HBFunctions.hb_subtitle_can_force(this.SubtitleSourceInt) > 0;\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Gets a value indicating whether this subtitle can be burned into the picture.\r
- /// </summary>\r
- public bool CanBurn\r
- {\r
- get\r
- {\r
- return HBFunctions.hb_subtitle_can_burn(this.SubtitleSourceInt) > 0;\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Returns true if the subtitle can be passed through using the given muxer.\r
- /// </summary>\r
- /// <param name="muxer">The muxer ID.</param>\r
- /// <returns>True if the subtitle can be passed through.</returns>\r
- public bool CanPass(int muxer)\r
- {\r
- return HBFunctions.hb_subtitle_can_pass(this.SubtitleSourceInt, muxer) > 0;\r
- }\r
-\r
- /// <summary>\r
- /// Override of the ToString method to make this object easier to use in the UI\r
- /// </summary>\r
- /// <returns>A string formatted as: {track #} {language}</returns>\r
- public override string ToString()\r
- {\r
- return string.Format("{0} {1} ({2})", this.TrackNumber, this.Language, this.SubtitleSource);\r
- }\r
-\r
- /// <summary>\r
- /// Gets the display.\r
- /// </summary>\r
- public string Display\r
- {\r
- get\r
- {\r
- return this.ToString();\r
- }\r
- }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="SubtitleSource.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Defines the SubtitleSource type.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Model.Scan\r
-{\r
- /// <summary>\r
- /// The subtitle source.\r
- /// </summary>\r
- public enum SubtitleSource\r
- {\r
- VobSub,\r
- SRT,\r
- CC608,\r
- CC708,\r
- UTF8,\r
- TX3G,\r
- SSA,\r
- PGS\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="Title.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// An object that represents a single Title of a DVD\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Model.Scan\r
-{\r
- using System;\r
- using System.Collections.Generic;\r
-\r
- using HandBrake.Interop.Model;\r
-\r
- /// <summary>\r
- /// An object that represents a single Title of a DVD\r
- /// </summary>\r
- public class Title\r
- {\r
- /// <summary>\r
- /// The audio tracks.\r
- /// </summary>\r
- private readonly List<AudioTrack> audioTracks;\r
-\r
- /// <summary>\r
- /// The chapters.\r
- /// </summary>\r
- private readonly List<Chapter> chapters;\r
-\r
- /// <summary>\r
- /// The subtitles.\r
- /// </summary>\r
- private readonly List<Subtitle> subtitles;\r
- \r
- /// <summary>\r
- /// Initializes a new instance of the Title class.\r
- /// </summary>\r
- public Title()\r
- {\r
- this.audioTracks = new List<AudioTrack>();\r
- this.chapters = new List<Chapter>();\r
- this.subtitles = new List<Subtitle>();\r
- }\r
-\r
- /// <summary>\r
- /// Gets or sets the input type of this title.\r
- /// </summary>\r
- public InputType InputType { get; set; }\r
-\r
- /// <summary>\r
- /// Gets a collection of chapters in this Title\r
- /// </summary>\r
- public List<Chapter> Chapters\r
- {\r
- get { return this.chapters; }\r
- }\r
-\r
- /// <summary>\r
- /// Gets a collection of audio tracks associated with this Title\r
- /// </summary>\r
- public List<AudioTrack> AudioTracks\r
- {\r
- get { return this.audioTracks; }\r
- }\r
-\r
- /// <summary>\r
- /// Gets a collection of subtitles associated with this Title\r
- /// </summary>\r
- public List<Subtitle> Subtitles\r
- {\r
- get { return this.subtitles; }\r
- }\r
-\r
- /// <summary>\r
- /// Gets or sets the track number of this Title (1-based).\r
- /// </summary>\r
- public int TitleNumber { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the playlist number this title came from.\r
- /// </summary>\r
- public int Playlist { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the duration of this title.\r
- /// </summary>\r
- public TimeSpan Duration { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the resolution (width/height) of this Title\r
- /// </summary>\r
- public Size Resolution { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the number of angles on the title.\r
- /// </summary>\r
- public int AngleCount { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the pixel aspect ratio.\r
- /// </summary>\r
- public Size ParVal { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the automatically detected crop region for this Title.\r
- /// </summary>\r
- public Cropping AutoCropDimensions { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the name of the video codec for this title.\r
- /// </summary>\r
- public string VideoCodecName { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the video frame rate for this title.\r
- /// </summary>\r
- public double Framerate { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the video frame rate numerator.\r
- /// </summary>\r
- public int FramerateNumerator { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the video frame rate denominator.\r
- /// </summary>\r
- public int FramerateDenominator { get; set; }\r
-\r
- /// <summary>\r
- /// Gets the total number of frames in this title.\r
- /// </summary>\r
- public int Frames\r
- {\r
- get\r
- {\r
- return (int)Math.Ceiling(this.Duration.TotalSeconds * this.Framerate);\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Gets or sets the path.\r
- /// </summary>\r
- public string Path { get; set; }\r
-\r
- /// <summary>\r
- /// Override of the ToString method to provide an easy way to use this object in the UI\r
- /// </summary>\r
- /// <returns>A string representing this track in the format: {title #}[ {playlist source}] (00:00:00)</returns>\r
- public override string ToString()\r
- {\r
- string playlistPortion = string.Empty;\r
- if (this.InputType == InputType.Bluray)\r
- {\r
- playlistPortion = string.Format(" {0:d5}.MPLS", this.Playlist);\r
- }\r
-\r
- return string.Format(\r
- "{0}{1} ({2:00}:{3:00}:{4:00})", \r
- this.TitleNumber, \r
- playlistPortion,\r
- this.Duration.Hours,\r
- this.Duration.Minutes, \r
- this.Duration.Seconds);\r
- }\r
-\r
- /// <summary>\r
- /// Gets the display string for this title.\r
- /// </summary>\r
- public string Display\r
- {\r
- get\r
- {\r
- return this.ToString();\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether is main feature.\r
- /// </summary>\r
- public bool IsMainFeature { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="Size.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Defines the Size type.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Model\r
-{\r
- /// <summary>\r
- /// The size.\r
- /// </summary>\r
- public class Size\r
- {\r
- /// <summary>\r
- /// Initializes a new instance of the <see cref="Size"/> class.\r
- /// </summary>\r
- /// <param name="width">\r
- /// The width.\r
- /// </param>\r
- /// <param name="height">\r
- /// The height.\r
- /// </param>\r
- public Size(int width, int height)\r
- {\r
- this.Width = width;\r
- this.Height = height;\r
- }\r
-\r
- /// <summary>\r
- /// Gets or sets the height.\r
- /// </summary>\r
- public int Height { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the width.\r
- /// </summary>\r
- public int Width { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="SourceSubtitle.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Defines the SourceSubtitle type.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Model\r
-{\r
- /// <summary>\r
- /// The source subtitle.\r
- /// </summary>\r
- public class SourceSubtitle\r
- {\r
- /// <summary>\r
- /// Gets or sets a value indicating whether the subtitle track should be burned in.\r
- /// </summary>\r
- public bool BurnedIn { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether default.\r
- /// </summary>\r
- public bool Default { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether forced.\r
- /// </summary>\r
- public bool Forced { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the 1-based subtitle track number. 0 means foreign audio search.\r
- /// </summary>\r
- public int TrackNumber { get; set; }\r
-\r
- /// <summary>\r
- /// The clone.\r
- /// </summary>\r
- /// <returns>\r
- /// The <see cref="SourceSubtitle"/>.\r
- /// </returns>\r
- public SourceSubtitle Clone()\r
- {\r
- return new SourceSubtitle\r
- {\r
- TrackNumber = this.TrackNumber, \r
- Default = this.Default, \r
- Forced = this.Forced, \r
- BurnedIn = this.BurnedIn\r
- };\r
- }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="SourceType.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Defines the SourceType type.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Model\r
-{\r
- /// <summary>\r
- /// The source type.\r
- /// </summary>\r
- public enum SourceType\r
- {\r
- /// <summary>\r
- /// The none.\r
- /// </summary>\r
- None = 0, \r
-\r
- /// <summary>\r
- /// The file.\r
- /// </summary>\r
- File, \r
-\r
- /// <summary>\r
- /// The video folder.\r
- /// </summary>\r
- VideoFolder, \r
-\r
- /// <summary>\r
- /// The dvd.\r
- /// </summary>\r
- Dvd\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="SrtSubtitle.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Defines the SrtSubtitle type.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Model\r
-{\r
- /// <summary>\r
- /// The srt subtitle.\r
- /// </summary>\r
- public class SrtSubtitle\r
- {\r
- /// <summary>\r
- /// Gets or sets the character code.\r
- /// </summary>\r
- public string CharacterCode { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether the subtitle track should be marked as default.\r
- /// </summary>\r
- public bool Default { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether the subtitle track should be burned in.\r
- /// </summary>\r
- public bool BurnedIn { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the file name.\r
- /// </summary>\r
- public string FileName { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the language code.\r
- /// </summary>\r
- public string LanguageCode { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the offset.\r
- /// </summary>\r
- public int Offset { get; set; }\r
-\r
- /// <summary>\r
- /// The clone.\r
- /// </summary>\r
- /// <returns>\r
- /// The <see cref="SrtSubtitle"/>.\r
- /// </returns>\r
- public SrtSubtitle Clone()\r
- {\r
- return new SrtSubtitle\r
- {\r
- Default = this.Default,\r
- BurnedIn = this.BurnedIn,\r
- FileName = this.FileName, \r
- LanguageCode = this.LanguageCode, \r
- CharacterCode = this.CharacterCode, \r
- Offset = this.Offset\r
- };\r
- }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="Subtitles.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Defines the Subtitles type.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Model\r
-{\r
- using System.Collections.Generic;\r
-\r
- /// <summary>\r
- /// The subtitles.\r
- /// </summary>\r
- public class Subtitles\r
- {\r
- /// <summary>\r
- /// Gets or sets the source subtitles.\r
- /// </summary>\r
- public List<SourceSubtitle> SourceSubtitles { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the srt subtitles.\r
- /// </summary>\r
- public List<SrtSubtitle> SrtSubtitles { get; set; }\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="VideoQualityLimits.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Defines the VideoQualityLimits type.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Model\r
-{\r
- /// <summary>\r
- /// Represents limits on video quality for a particular encoder.\r
- /// </summary>\r
- public class VideoQualityLimits\r
- {\r
- /// <summary>\r
- /// Gets or sets the inclusive lower limit for the quality.\r
- /// </summary>\r
- public float Low { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the inclusive upper limit for the quality.\r
- /// </summary>\r
- public float High { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets the granularity for the quality.\r
- /// </summary>\r
- public float Granularity { get; set; }\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether the quality increases as the number increases.\r
- /// </summary>\r
- public bool Ascending { get; set; }\r
- }\r
-}\r
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="VideoRangeType.cs" company="HandBrake Project (http://handbrake.fr)">\r
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-// Defines the VideoRangeType type.\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.Interop.Model\r
-{\r
- using System.ComponentModel.DataAnnotations;\r
-\r
- /// <summary>\r
- /// The video range type.\r
- /// </summary>\r
- public enum VideoRangeType\r
- {\r
- /// <summary>\r
- /// The entire title.\r
- /// </summary>\r
- [Display(Name = "Preview")]\r
- Preview,\r
-\r
- /// <summary>\r
- /// A chapter range.\r
- /// </summary>\r
- [Display(Name = "Chapters")]\r
- Chapters, \r
-\r
- /// <summary>\r
- /// A timespan range in seconds.\r
- /// </summary>\r
- [Display(Name = "Seconds")]\r
- Seconds, \r
-\r
- /// <summary>\r
- /// A frame range.\r
- /// </summary>\r
- [Display(Name = "Frames")]\r
- Frames\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-using System.Reflection;\r
-using System.Runtime.CompilerServices;\r
-using System.Runtime.InteropServices;\r
-\r
-// General Information about an assembly is controlled through the following \r
-// set of attributes. Change these attribute values to modify the information\r
-// associated with an assembly.\r
-[assembly: AssemblyTitle("HandBrakeInterop")]\r
-[assembly: AssemblyDescription("")]\r
-[assembly: AssemblyConfiguration("")]\r
-[assembly: AssemblyCompany("HandBrake Team")]\r
-[assembly: AssemblyProduct("HandBrake.Interop")]\r
-[assembly: AssemblyCopyright("Copyright © 2015 HandBrake Team")]\r
-[assembly: AssemblyTrademark("")]\r
-[assembly: AssemblyCulture("")]\r
-\r
-// Setting ComVisible to false makes the types in this assembly not visible \r
-// to COM components. If you need to access a type in this assembly from \r
-// COM, set the ComVisible attribute to true on that type.\r
-[assembly: ComVisible(false)]\r
-\r
-// The following GUID is for the ID of the typelib if this project is exposed to COM\r
-[assembly: Guid("cc59844b-9e1b-4854-8b92-3b24c646aee5")]\r
-\r
-// Version information for an assembly consists of the following four values:\r
-//\r
-// Major Version\r
-// Minor Version \r
-// Build Number\r
-// Revision\r
-//\r
-// You can specify all the values or you can default the Build and Revision Numbers \r
-// by using the '*' as shown below:\r
-// [assembly: AssemblyVersion("1.0.*")]\r
-[assembly: AssemblyVersion("2.0.0.0")]\r
-[assembly: AssemblyFileVersion("2.0.0.0")]\r
+++ /dev/null
-<StyleCopSettings Version="105">\r
- <Analyzers>\r
- <Analyzer AnalyzerId="StyleCop.CSharp.SpacingRules">\r
- <Rules>\r
- <Rule Name="TabsMustNotBeUsed">\r
- <RuleSettings>\r
- <BooleanProperty Name="Enabled">False</BooleanProperty>\r
- </RuleSettings>\r
- </Rule>\r
- </Rules>\r
- <AnalyzerSettings />\r
- </Analyzer>\r
- <Analyzer AnalyzerId="StyleCop.CSharp.DocumentationRules">\r
- <Rules>\r
- <Rule Name="FileMustHaveHeader">\r
- <RuleSettings>\r
- <BooleanProperty Name="Enabled">True</BooleanProperty>\r
- </RuleSettings>\r
- </Rule>\r
- <Rule Name="FileHeaderMustShowCopyright">\r
- <RuleSettings>\r
- <BooleanProperty Name="Enabled">True</BooleanProperty>\r
- </RuleSettings>\r
- </Rule>\r
- <Rule Name="FileHeaderMustHaveCopyrightText">\r
- <RuleSettings>\r
- <BooleanProperty Name="Enabled">True</BooleanProperty>\r
- </RuleSettings>\r
- </Rule>\r
- <Rule Name="FileHeaderMustContainFileName">\r
- <RuleSettings>\r
- <BooleanProperty Name="Enabled">True</BooleanProperty>\r
- </RuleSettings>\r
- </Rule>\r
- <Rule Name="FileHeaderFileNameDocumentationMustMatchFileName">\r
- <RuleSettings>\r
- <BooleanProperty Name="Enabled">True</BooleanProperty>\r
- </RuleSettings>\r
- </Rule>\r
- <Rule Name="FileHeaderMustHaveSummary">\r
- <RuleSettings>\r
- <BooleanProperty Name="Enabled">True</BooleanProperty>\r
- </RuleSettings>\r
- </Rule>\r
- <Rule Name="FileHeaderMustHaveValidCompanyText">\r
- <RuleSettings>\r
- <BooleanProperty Name="Enabled">True</BooleanProperty>\r
- </RuleSettings>\r
- </Rule>\r
- </Rules>\r
- <AnalyzerSettings />\r
- </Analyzer>\r
- </Analyzers>\r
-</StyleCopSettings>
\ No newline at end of file