<AppDesignerFolder>Properties</AppDesignerFolder>\r
<RootNamespace>HandBrake.ApplicationServices</RootNamespace>\r
<AssemblyName>HandBrake.ApplicationServices</AssemblyName>\r
- <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>\r
+ <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>\r
<FileAlignment>512</FileAlignment>\r
<FileUpgradeFlags>\r
</FileUpgradeFlags>\r
<OldToolsVersion>3.5</OldToolsVersion>\r
<UpgradeBackupLocation />\r
- <TargetFrameworkProfile>\r
- </TargetFrameworkProfile>\r
+ <TargetFrameworkProfile>Client</TargetFrameworkProfile>\r
</PropertyGroup>\r
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
<DebugSymbols>true</DebugSymbols>\r
<SpecificVersion>False</SpecificVersion>\r
<HintPath>..\libraries\Growl.CoreLibrary.dll</HintPath>\r
</Reference>\r
+ <Reference Include="HandBrakeInterop">\r
+ <HintPath>..\libraries\HandBrakeInterop.dll</HintPath>\r
+ </Reference>\r
<Reference Include="Microsoft.WindowsAPICodePack, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">\r
<SpecificVersion>False</SpecificVersion>\r
<HintPath>..\libraries\Microsoft.WindowsAPICodePack.dll</HintPath>\r
<SpecificVersion>False</SpecificVersion>\r
<HintPath>..\libraries\Microsoft.WindowsAPICodePack.Shell.dll</HintPath>\r
</Reference>\r
+ <Reference Include="PresentationCore" />\r
<Reference Include="System" />\r
<Reference Include="System.Core">\r
<RequiredTargetFramework>3.5</RequiredTargetFramework>\r
</Reference>\r
<Reference Include="System.Data" />\r
<Reference Include="System.Xml" />\r
+ <Reference Include="WindowsBase" />\r
</ItemGroup>\r
<ItemGroup>\r
<Compile Include="EventArgs\EncodeCompletedEventArgs.cs" />\r
<Compile Include="Functions\Win32.cs" />\r
<Compile Include="Functions\Win7.cs" />\r
<Compile Include="Init.cs" />\r
+ <Compile Include="Model\Encoding\AudioTrack.cs" />\r
<Compile Include="Model\Encoding\Anamorphic.cs" />\r
<Compile Include="Model\Encoding\AudioEncoder.cs" />\r
- <Compile Include="Model\Encoding\AudioTrack.cs" />\r
<Compile Include="Model\Encoding\Mixdown.cs" />\r
<Compile Include="Model\Encoding\PointToPointMode.cs" />\r
<Compile Include="Model\Encoding\Cropping.cs" />\r
<Compile Include="Services\Interfaces\IQueueManager.cs" />\r
<Compile Include="Services\Interfaces\IQueueProcessor.cs" />\r
<Compile Include="Services\Interfaces\IScan.cs" />\r
+ <Compile Include="Services\LibScan.cs" />\r
<Compile Include="Services\QueueManager.cs" />\r
<Compile Include="Services\QueueProcessor.cs" />\r
<Compile Include="Services\Scan.cs" />\r
<Name>HandBrake.Framework</Name>\r
</ProjectReference>\r
</ItemGroup>\r
- <ItemGroup>\r
- <Folder Include="Model\Interfaces\" />\r
- </ItemGroup>\r
+ <ItemGroup />\r
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
<Import Project="$(ProgramFiles)\MSBuild\Microsoft\StyleCop\v4.4\Microsoft.StyleCop.targets" />\r
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
public class AudioTrack\r
{\r
/// <summary>\r
+ /// Initializes a new instance of the <see cref="AudioTrack"/> class.\r
+ /// </summary>\r
+ public AudioTrack()\r
+ { \r
+ }\r
+\r
+ /// <summary>\r
+ /// Initializes a new instance of the <see cref="AudioTrack"/> class.\r
+ /// </summary>\r
+ /// <param name="trackNumber">\r
+ /// The track number.\r
+ /// </param>\r
+ /// <param name="language">\r
+ /// The language.\r
+ /// </param>\r
+ /// <param name="languageCode">\r
+ /// The language code.\r
+ /// </param>\r
+ /// <param name="description">\r
+ /// The description.\r
+ /// </param>\r
+ /// <param name="format">\r
+ /// The format.\r
+ /// </param>\r
+ /// <param name="sampleRate">\r
+ /// The sample rate.\r
+ /// </param>\r
+ /// <param name="bitrate">\r
+ /// The bitrate.\r
+ /// </param>\r
+ public AudioTrack(int trackNumber, string language, string languageCode, string description, string format, int sampleRate, int bitrate)\r
+ {\r
+ this.TrackNumber = trackNumber;\r
+ this.Language = language;\r
+ this.LanguageCode = languageCode;\r
+ this.Description = description;\r
+ this.Format = format;\r
+ this.SampleRate = sampleRate;\r
+ this.Bitrate = bitrate;\r
+ }\r
+\r
+ /// <summary>\r
/// Gets or sets The track number of this Audio Track\r
/// </summary>\r
public int TrackNumber { get; set; }\r
public class Chapter\r
{\r
/// <summary>\r
+ /// Initializes a new instance of the <see cref="Chapter"/> class.\r
+ /// </summary>\r
+ public Chapter()\r
+ {\r
+ }\r
+\r
+ /// <summary>\r
+ /// Initializes a new instance of the <see cref="Chapter"/> class.\r
+ /// </summary>\r
+ /// <param name="number">\r
+ /// The number.\r
+ /// </param>\r
+ /// <param name="Name">\r
+ /// The name.\r
+ /// </param>\r
+ /// <param name="duration">\r
+ /// The duration.\r
+ /// </param>\r
+ public Chapter(int number, string Name, TimeSpan duration)\r
+ {\r
+ this.ChapterName = Name;\r
+ this.ChapterNumber = number;\r
+ this.Duration = duration;\r
+ }\r
+\r
+ /// <summary>\r
/// Gets or sets The number of this Chapter, in regards to it's parent Title\r
/// </summary>\r
public int ChapterNumber { get; set; }\r
}\r
\r
/// <summary>\r
- /// Gets Titles. A list of titles from the source\r
+ /// Gets or sets Titles. A list of titles from the source\r
/// </summary>\r
- public List<Title> Titles { get; private set; }\r
+ public List<Title> Titles { get; set; }\r
\r
/// <summary>\r
/// Parse the StreamReader output into a List of Titles\r
public class Subtitle\r
{\r
/// <summary>\r
+ /// Initializes a new instance of the <see cref="Subtitle"/> class.\r
+ /// </summary>\r
+ public Subtitle()\r
+ {\r
+ }\r
+\r
+ /// <summary>\r
+ /// Initializes a new instance of the <see cref="Subtitle"/> class.\r
+ /// </summary>\r
+ /// <param name="trackNumber">\r
+ /// The track number.\r
+ /// </param>\r
+ /// <param name="language">\r
+ /// The language.\r
+ /// </param>\r
+ /// <param name="languageCode">\r
+ /// The language code.\r
+ /// </param>\r
+ /// <param name="subtitleType">\r
+ /// The subtitle type.\r
+ /// </param>\r
+ public Subtitle(int trackNumber, string language, string languageCode, SubtitleType subtitleType)\r
+ {\r
+ this.TrackNumber = trackNumber;\r
+ this.Language = language;\r
+ this.LanguageCode = languageCode;\r
+ this.SubtitleType = subtitleType;\r
+ }\r
+\r
+\r
+ /// <summary>\r
/// Gets or sets the track number of this Subtitle\r
/// </summary>\r
public int TrackNumber { get; set; }\r
--- /dev/null
+/* LibScan.cs $\r
+ This file is part of the HandBrake source code.\r
+ Homepage: <http://handbrake.fr>.\r
+ It may be used under the terms of the GNU General Public License. */\r
+\r
+namespace HandBrake.ApplicationServices.Services\r
+{\r
+ using System;\r
+ using System.Collections.Generic;\r
+ using System.Text;\r
+ using System.Threading;\r
+\r
+ using HandBrake.ApplicationServices.EventArgs;\r
+ using HandBrake.ApplicationServices.Model.Encoding;\r
+ using HandBrake.ApplicationServices.Parsing;\r
+ using HandBrake.ApplicationServices.Services.Interfaces;\r
+ using HandBrake.Interop;\r
+\r
+ using AudioTrack = HandBrake.ApplicationServices.Parsing.AudioTrack;\r
+ using Cropping = HandBrake.ApplicationServices.Model.Encoding.Cropping;\r
+ using ScanProgressEventArgs = HandBrake.Interop.ScanProgressEventArgs;\r
+ using Size = System.Drawing.Size;\r
+\r
+ /// <summary>\r
+ /// Scan a Source\r
+ /// </summary>\r
+ public class LibScan : IScan\r
+ {\r
+ /*\r
+ * TODO\r
+ * 1. Expose the Previews code.\r
+ * 2. Expose the Logging.\r
+ * \r
+ */\r
+\r
+ #region Private Variables\r
+\r
+ /// <summary>\r
+ /// Lock for the log file\r
+ /// </summary>\r
+ static readonly object LogLock = new object();\r
+\r
+ /// <summary>\r
+ /// LibHB Instance\r
+ /// </summary>\r
+ private readonly HandBrakeInstance instance;\r
+\r
+ /// <summary>\r
+ /// Log data from HandBrakeInstance\r
+ /// </summary>\r
+ private readonly StringBuilder logging;\r
+\r
+ #endregion\r
+\r
+ /// <summary>\r
+ /// Initializes a new instance of the <see cref="LibScan"/> class. \r
+ /// </summary>\r
+ public LibScan()\r
+ {\r
+ logging = new StringBuilder();\r
+\r
+ instance = new HandBrakeInstance();\r
+ instance.Initialize(1);\r
+ instance.ScanProgress += this.InstanceScanProgress;\r
+ instance.ScanCompleted += this.InstanceScanCompleted;\r
+\r
+ HandBrakeUtils.MessageLogged += this.HandBrakeInstanceMessageLogged;\r
+ HandBrakeUtils.ErrorLogged += this.HandBrakeInstanceErrorLogged;\r
+ }\r
+\r
+ #region Events\r
+\r
+ /// <summary>\r
+ /// Scan has Started\r
+ /// </summary>\r
+ public event EventHandler ScanStared;\r
+\r
+ /// <summary>\r
+ /// Scan has completed\r
+ /// </summary>\r
+ public event ScanCompletedStatus ScanCompleted;\r
+\r
+ /// <summary>\r
+ /// Encode process has progressed\r
+ /// </summary>\r
+ public event ScanProgessStatus ScanStatusChanged;\r
+\r
+ #endregion\r
+\r
+ #region Properties\r
+\r
+ /// <summary>\r
+ /// Gets a value indicating whether IsScanning.\r
+ /// </summary>\r
+ public bool IsScanning { get; private set; }\r
+\r
+ /// <summary>\r
+ /// Gets the Souce Data.\r
+ /// </summary>\r
+ public DVD SouceData { get; private set; }\r
+\r
+ /// <summary>\r
+ /// Gets ActivityLog.\r
+ /// </summary>\r
+ public string ActivityLog\r
+ {\r
+ get\r
+ {\r
+ return logging.ToString();\r
+ }\r
+ }\r
+\r
+ #endregion\r
+\r
+ #region Public Methods\r
+\r
+ /// <summary>\r
+ /// Scan a Source Path.\r
+ /// Title 0: scan all\r
+ /// </summary>\r
+ /// <param name="sourcePath">Path to the file to scan</param>\r
+ /// <param name="title">int title number. 0 for scan all</param>\r
+ public void Scan(string sourcePath, int title)\r
+ {\r
+ Thread t = new Thread(unused => this.ScanSource(sourcePath, title));\r
+ t.Start();\r
+ }\r
+\r
+ /// <summary>\r
+ /// Kill the scan\r
+ /// </summary>\r
+ public void Stop()\r
+ {\r
+ instance.StopScan();\r
+ }\r
+\r
+ #endregion\r
+\r
+ #region Private Methods\r
+\r
+ /// <summary>\r
+ /// Start a scan for a given source path and title\r
+ /// </summary>\r
+ /// <param name="sourcePath">Path to the source file</param>\r
+ /// <param name="title">the title number to look at</param>\r
+ private void ScanSource(object sourcePath, int title)\r
+ {\r
+ try\r
+ {\r
+ IsScanning = true;\r
+ if (this.ScanStared != null)\r
+ this.ScanStared(this, new EventArgs());\r
+\r
+ if (title != 0)\r
+ instance.StartScan(sourcePath.ToString(), 10, title);\r
+ else\r
+ instance.StartScan(sourcePath.ToString(), 10);\r
+ }\r
+ catch (Exception exc)\r
+ {\r
+ this.Stop();\r
+\r
+ if (this.ScanCompleted != null)\r
+ this.ScanCompleted(this, new ScanCompletedEventArgs(false, exc, "An Error has occured in ScanService.ScanSource()"));\r
+ }\r
+ }\r
+\r
+ #endregion\r
+\r
+ #region HandBrakeInstance Event Handlers\r
+ /// <summary>\r
+ /// Scan Completed Event Handler\r
+ /// </summary>\r
+ /// <param name="sender">\r
+ /// The sender.\r
+ /// </param>\r
+ /// <param name="e">\r
+ /// The EventArgs.\r
+ /// </param>\r
+ private void InstanceScanCompleted(object sender, EventArgs e)\r
+ {\r
+ this.SouceData = new DVD { Titles = ConvertTitles(this.instance.Titles) };\r
+\r
+ IsScanning = false;\r
+\r
+ if (this.ScanCompleted != null)\r
+ this.ScanCompleted(this, new ScanCompletedEventArgs(true, null, string.Empty));\r
+ }\r
+\r
+ /// <summary>\r
+ /// Scan Progress Event Handler\r
+ /// </summary>\r
+ /// <param name="sender">\r
+ /// The sender.\r
+ /// </param>\r
+ /// <param name="e">\r
+ /// The EventArgs.\r
+ /// </param>\r
+ private void InstanceScanProgress(object sender, ScanProgressEventArgs e)\r
+ {\r
+ if (this.ScanStatusChanged != null)\r
+ {\r
+ ApplicationServices.EventArgs.ScanProgressEventArgs eventArgs =\r
+ new ApplicationServices.EventArgs.ScanProgressEventArgs\r
+ {\r
+ CurrentTitle = e.CurrentTitle,\r
+ Titles = e.Titles\r
+ };\r
+\r
+ this.ScanStatusChanged(this, eventArgs);\r
+ }\r
+ }\r
+\r
+ /// <summary>\r
+ /// Log a message\r
+ /// </summary>\r
+ /// <param name="sender">\r
+ /// The sender.\r
+ /// </param>\r
+ /// <param name="e">\r
+ /// The MessageLoggedEventArgs.\r
+ /// </param>\r
+ private void HandBrakeInstanceErrorLogged(object sender, MessageLoggedEventArgs e)\r
+ {\r
+ lock (LogLock)\r
+ {\r
+ this.logging.AppendLine(e.Message);\r
+ }\r
+ }\r
+\r
+ /// <summary>\r
+ /// Log a message\r
+ /// </summary>\r
+ /// <param name="sender">\r
+ /// The sender.\r
+ /// </param>\r
+ /// <param name="e">\r
+ /// The MessageLoggedEventArgs.\r
+ /// </param>\r
+ private void HandBrakeInstanceMessageLogged(object sender, MessageLoggedEventArgs e)\r
+ {\r
+ lock (LogLock)\r
+ {\r
+ this.logging.AppendLine(e.Message);\r
+ }\r
+ }\r
+\r
+ /// <summary>\r
+ /// Convert Interop Title objects to App Services Title object\r
+ /// </summary>\r
+ /// <param name="titles">\r
+ /// The titles.\r
+ /// </param>\r
+ /// <returns>\r
+ /// The convert titles.\r
+ /// </returns>\r
+ private static List<Title> ConvertTitles(IEnumerable<SourceData.Title> titles)\r
+ {\r
+ List<Title> titleList = new List<Title>();\r
+ foreach (SourceData.Title title in titles)\r
+ {\r
+ Title converted = new Title\r
+ {\r
+ TitleNumber = title.TitleNumber,\r
+ Duration = title.Duration,\r
+ Resolution = new Size(title.Resolution.Width, title.Resolution.Height),\r
+ AspectRatio = title.AspectRatio,\r
+ AngleCount = title.AngleCount,\r
+ ParVal = new Size(title.ParVal.Width, title.ParVal.Height),\r
+ AutoCropDimensions =\r
+ Cropping.CreateCroppingObject(\r
+ title.AutoCropDimensions.Top,\r
+ title.AutoCropDimensions.Bottom,\r
+ title.AutoCropDimensions.Left,\r
+ title.AutoCropDimensions.Right),\r
+ Fps = title.Framerate\r
+ };\r
+\r
+ foreach (SourceData.Chapter chapter in title.Chapters)\r
+ {\r
+ converted.Chapters.Add(new Chapter(chapter.ChapterNumber, string.Empty, chapter.Duration));\r
+ }\r
+\r
+ foreach (SourceData.AudioTrack track in title.AudioTracks)\r
+ {\r
+ converted.AudioTracks.Add(new AudioTrack(track.TrackNumber, track.Language, track.LanguageCode, track.Description, string.Empty, track.SampleRate, track.Bitrate));\r
+ }\r
+\r
+ foreach (SourceData.Subtitle track in title.Subtitles)\r
+ {\r
+ SubtitleType convertedType = new SubtitleType();\r
+\r
+ switch (track.SubtitleSource)\r
+ {\r
+ case SourceData.SubtitleSource.VobSub:\r
+ convertedType = SubtitleType.VobSub;\r
+ break;\r
+ case SourceData.SubtitleSource.UTF8:\r
+ convertedType = SubtitleType.UTF8Sub;\r
+ break;\r
+ case SourceData.SubtitleSource.TX3G:\r
+ convertedType = SubtitleType.TX3G;\r
+ break;\r
+ case SourceData.SubtitleSource.SSA:\r
+ convertedType = SubtitleType.SSA;\r
+ break;\r
+ case SourceData.SubtitleSource.SRT:\r
+ convertedType = SubtitleType.SRT;\r
+ break;\r
+ case SourceData.SubtitleSource.CC608:\r
+ convertedType = SubtitleType.CC;\r
+ break;\r
+ case SourceData.SubtitleSource.CC708:\r
+ convertedType = SubtitleType.CC;\r
+ break;\r
+ }\r
+\r
+ converted.Subtitles.Add(new Subtitle(track.TrackNumber, track.Language, track.LanguageCode, convertedType));\r
+ }\r
+\r
+ titleList.Add(converted);\r
+ }\r
+\r
+ return titleList;\r
+ }\r
+ #endregion\r
+ }\r
+}
\ No newline at end of file
</setting>\r
</HandBrake.ApplicationServices.Properties.Settings>\r
</userSettings>\r
-<startup><supportedRuntime version="v2.0.50727"/></startup></configuration>\r
+<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/></startup></configuration>\r
<AppDesignerFolder>Properties</AppDesignerFolder>\r
<RootNamespace>HandBrake.Framework</RootNamespace>\r
<AssemblyName>HandBrake.Framework</AssemblyName>\r
- <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>\r
+ <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>\r
<FileAlignment>512</FileAlignment>\r
<FileUpgradeFlags>\r
</FileUpgradeFlags>\r
<OldToolsVersion>3.5</OldToolsVersion>\r
<UpgradeBackupLocation />\r
+ <TargetFrameworkProfile>Client</TargetFrameworkProfile>\r
</PropertyGroup>\r
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
<DebugSymbols>true</DebugSymbols>\r
Global\r
GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
Debug|Any CPU = Debug|Any CPU\r
+ Debug|Mixed Platforms = Debug|Mixed Platforms\r
+ Debug|x64 = Debug|x64\r
Debug|x86 = Debug|x86\r
Install|Any CPU = Install|Any CPU\r
+ Install|Mixed Platforms = Install|Mixed Platforms\r
+ Install|x64 = Install|x64\r
Install|x86 = Install|x86\r
NightlyBuild|Any CPU = NightlyBuild|Any CPU\r
+ NightlyBuild|Mixed Platforms = NightlyBuild|Mixed Platforms\r
+ NightlyBuild|x64 = NightlyBuild|x64\r
NightlyBuild|x86 = NightlyBuild|x86\r
Release|Any CPU = Release|Any CPU\r
+ Release|Mixed Platforms = Release|Mixed Platforms\r
+ Release|x64 = Release|x64\r
Release|x86 = Release|x86\r
EndGlobalSection\r
GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
{A2923D42-C38B-4B12-8CBA-B8D93D6B13A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
{A2923D42-C38B-4B12-8CBA-B8D93D6B13A3}.Debug|Any CPU.Build.0 = Debug|Any CPU\r
+ {A2923D42-C38B-4B12-8CBA-B8D93D6B13A3}.Debug|Mixed Platforms.ActiveCfg = Debug|x86\r
+ {A2923D42-C38B-4B12-8CBA-B8D93D6B13A3}.Debug|Mixed Platforms.Build.0 = Debug|x86\r
+ {A2923D42-C38B-4B12-8CBA-B8D93D6B13A3}.Debug|x64.ActiveCfg = Debug|x86\r
{A2923D42-C38B-4B12-8CBA-B8D93D6B13A3}.Debug|x86.ActiveCfg = Debug|x86\r
{A2923D42-C38B-4B12-8CBA-B8D93D6B13A3}.Debug|x86.Build.0 = Debug|x86\r
{A2923D42-C38B-4B12-8CBA-B8D93D6B13A3}.Install|Any CPU.ActiveCfg = Install|Any CPU\r
{A2923D42-C38B-4B12-8CBA-B8D93D6B13A3}.Install|Any CPU.Build.0 = Install|Any CPU\r
+ {A2923D42-C38B-4B12-8CBA-B8D93D6B13A3}.Install|Mixed Platforms.ActiveCfg = Install|x86\r
+ {A2923D42-C38B-4B12-8CBA-B8D93D6B13A3}.Install|Mixed Platforms.Build.0 = Install|x86\r
+ {A2923D42-C38B-4B12-8CBA-B8D93D6B13A3}.Install|x64.ActiveCfg = Install|x86\r
{A2923D42-C38B-4B12-8CBA-B8D93D6B13A3}.Install|x86.ActiveCfg = Install|x86\r
{A2923D42-C38B-4B12-8CBA-B8D93D6B13A3}.Install|x86.Build.0 = Install|x86\r
{A2923D42-C38B-4B12-8CBA-B8D93D6B13A3}.NightlyBuild|Any CPU.ActiveCfg = NightlyBuild|Any CPU\r
{A2923D42-C38B-4B12-8CBA-B8D93D6B13A3}.NightlyBuild|Any CPU.Build.0 = NightlyBuild|Any CPU\r
+ {A2923D42-C38B-4B12-8CBA-B8D93D6B13A3}.NightlyBuild|Mixed Platforms.ActiveCfg = NightlyBuild|x86\r
+ {A2923D42-C38B-4B12-8CBA-B8D93D6B13A3}.NightlyBuild|Mixed Platforms.Build.0 = NightlyBuild|x86\r
+ {A2923D42-C38B-4B12-8CBA-B8D93D6B13A3}.NightlyBuild|x64.ActiveCfg = NightlyBuild|x86\r
{A2923D42-C38B-4B12-8CBA-B8D93D6B13A3}.NightlyBuild|x86.ActiveCfg = NightlyBuild|x86\r
{A2923D42-C38B-4B12-8CBA-B8D93D6B13A3}.NightlyBuild|x86.Build.0 = NightlyBuild|x86\r
{A2923D42-C38B-4B12-8CBA-B8D93D6B13A3}.Release|Any CPU.ActiveCfg = Release|Any CPU\r
{A2923D42-C38B-4B12-8CBA-B8D93D6B13A3}.Release|Any CPU.Build.0 = Release|Any CPU\r
+ {A2923D42-C38B-4B12-8CBA-B8D93D6B13A3}.Release|Mixed Platforms.ActiveCfg = Release|x86\r
+ {A2923D42-C38B-4B12-8CBA-B8D93D6B13A3}.Release|Mixed Platforms.Build.0 = Release|x86\r
+ {A2923D42-C38B-4B12-8CBA-B8D93D6B13A3}.Release|x64.ActiveCfg = Release|x86\r
{A2923D42-C38B-4B12-8CBA-B8D93D6B13A3}.Release|x86.ActiveCfg = Release|x86\r
{A2923D42-C38B-4B12-8CBA-B8D93D6B13A3}.Release|x86.Build.0 = Release|x86\r
{087A2BA8-BAC2-4577-A46F-07FF9D420016}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
{087A2BA8-BAC2-4577-A46F-07FF9D420016}.Debug|Any CPU.Build.0 = Debug|Any CPU\r
+ {087A2BA8-BAC2-4577-A46F-07FF9D420016}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU\r
+ {087A2BA8-BAC2-4577-A46F-07FF9D420016}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU\r
+ {087A2BA8-BAC2-4577-A46F-07FF9D420016}.Debug|x64.ActiveCfg = Debug|Any CPU\r
{087A2BA8-BAC2-4577-A46F-07FF9D420016}.Debug|x86.ActiveCfg = Debug|Any CPU\r
{087A2BA8-BAC2-4577-A46F-07FF9D420016}.Install|Any CPU.ActiveCfg = Release|Any CPU\r
{087A2BA8-BAC2-4577-A46F-07FF9D420016}.Install|Any CPU.Build.0 = Release|Any CPU\r
+ {087A2BA8-BAC2-4577-A46F-07FF9D420016}.Install|Mixed Platforms.ActiveCfg = NightlyBuild|Any CPU\r
+ {087A2BA8-BAC2-4577-A46F-07FF9D420016}.Install|Mixed Platforms.Build.0 = NightlyBuild|Any CPU\r
+ {087A2BA8-BAC2-4577-A46F-07FF9D420016}.Install|x64.ActiveCfg = NightlyBuild|Any CPU\r
{087A2BA8-BAC2-4577-A46F-07FF9D420016}.Install|x86.ActiveCfg = Release|Any CPU\r
{087A2BA8-BAC2-4577-A46F-07FF9D420016}.NightlyBuild|Any CPU.ActiveCfg = NightlyBuild|Any CPU\r
{087A2BA8-BAC2-4577-A46F-07FF9D420016}.NightlyBuild|Any CPU.Build.0 = NightlyBuild|Any CPU\r
+ {087A2BA8-BAC2-4577-A46F-07FF9D420016}.NightlyBuild|Mixed Platforms.ActiveCfg = NightlyBuild|Any CPU\r
+ {087A2BA8-BAC2-4577-A46F-07FF9D420016}.NightlyBuild|Mixed Platforms.Build.0 = NightlyBuild|Any CPU\r
+ {087A2BA8-BAC2-4577-A46F-07FF9D420016}.NightlyBuild|x64.ActiveCfg = NightlyBuild|Any CPU\r
{087A2BA8-BAC2-4577-A46F-07FF9D420016}.NightlyBuild|x86.ActiveCfg = Release|Any CPU\r
{087A2BA8-BAC2-4577-A46F-07FF9D420016}.Release|Any CPU.ActiveCfg = Release|Any CPU\r
{087A2BA8-BAC2-4577-A46F-07FF9D420016}.Release|Any CPU.Build.0 = Release|Any CPU\r
+ {087A2BA8-BAC2-4577-A46F-07FF9D420016}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU\r
+ {087A2BA8-BAC2-4577-A46F-07FF9D420016}.Release|Mixed Platforms.Build.0 = Release|Any CPU\r
+ {087A2BA8-BAC2-4577-A46F-07FF9D420016}.Release|x64.ActiveCfg = Release|Any CPU\r
{087A2BA8-BAC2-4577-A46F-07FF9D420016}.Release|x86.ActiveCfg = Release|Any CPU\r
{49AD42C1-BF9B-4D78-A644-020878FAADE6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
{49AD42C1-BF9B-4D78-A644-020878FAADE6}.Debug|Any CPU.Build.0 = Debug|Any CPU\r
+ {49AD42C1-BF9B-4D78-A644-020878FAADE6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU\r
+ {49AD42C1-BF9B-4D78-A644-020878FAADE6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU\r
+ {49AD42C1-BF9B-4D78-A644-020878FAADE6}.Debug|x64.ActiveCfg = Debug|Any CPU\r
{49AD42C1-BF9B-4D78-A644-020878FAADE6}.Debug|x86.ActiveCfg = Debug|Any CPU\r
{49AD42C1-BF9B-4D78-A644-020878FAADE6}.Install|Any CPU.ActiveCfg = Release|Any CPU\r
{49AD42C1-BF9B-4D78-A644-020878FAADE6}.Install|Any CPU.Build.0 = Release|Any CPU\r
+ {49AD42C1-BF9B-4D78-A644-020878FAADE6}.Install|Mixed Platforms.ActiveCfg = NightlyBuild|Any CPU\r
+ {49AD42C1-BF9B-4D78-A644-020878FAADE6}.Install|Mixed Platforms.Build.0 = NightlyBuild|Any CPU\r
+ {49AD42C1-BF9B-4D78-A644-020878FAADE6}.Install|x64.ActiveCfg = NightlyBuild|Any CPU\r
{49AD42C1-BF9B-4D78-A644-020878FAADE6}.Install|x86.ActiveCfg = Release|Any CPU\r
{49AD42C1-BF9B-4D78-A644-020878FAADE6}.NightlyBuild|Any CPU.ActiveCfg = Release|Any CPU\r
{49AD42C1-BF9B-4D78-A644-020878FAADE6}.NightlyBuild|Any CPU.Build.0 = Release|Any CPU\r
+ {49AD42C1-BF9B-4D78-A644-020878FAADE6}.NightlyBuild|Mixed Platforms.ActiveCfg = NightlyBuild|Any CPU\r
+ {49AD42C1-BF9B-4D78-A644-020878FAADE6}.NightlyBuild|Mixed Platforms.Build.0 = NightlyBuild|Any CPU\r
+ {49AD42C1-BF9B-4D78-A644-020878FAADE6}.NightlyBuild|x64.ActiveCfg = NightlyBuild|Any CPU\r
{49AD42C1-BF9B-4D78-A644-020878FAADE6}.NightlyBuild|x86.ActiveCfg = Release|Any CPU\r
{49AD42C1-BF9B-4D78-A644-020878FAADE6}.Release|Any CPU.ActiveCfg = Release|Any CPU\r
{49AD42C1-BF9B-4D78-A644-020878FAADE6}.Release|Any CPU.Build.0 = Release|Any CPU\r
+ {49AD42C1-BF9B-4D78-A644-020878FAADE6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU\r
+ {49AD42C1-BF9B-4D78-A644-020878FAADE6}.Release|Mixed Platforms.Build.0 = Release|Any CPU\r
+ {49AD42C1-BF9B-4D78-A644-020878FAADE6}.Release|x64.ActiveCfg = Release|Any CPU\r
{49AD42C1-BF9B-4D78-A644-020878FAADE6}.Release|x86.ActiveCfg = Release|Any CPU\r
EndGlobalSection\r
GlobalSection(SolutionProperties) = preSolution\r
<UpgradeBackupLocation>\r
</UpgradeBackupLocation>\r
<OldToolsVersion>3.5</OldToolsVersion>\r
- <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>\r
+ <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>\r
<IsWebBootstrapper>false</IsWebBootstrapper>\r
<SignManifests>false</SignManifests>\r
<PublishUrl>publish\</PublishUrl>\r
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>\r
<UseApplicationTrust>false</UseApplicationTrust>\r
<BootstrapperEnabled>true</BootstrapperEnabled>\r
+ <TargetFrameworkProfile>Client</TargetFrameworkProfile>\r
</PropertyGroup>\r
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
<DebugSymbols>true</DebugSymbols>\r
File "HandBrake.Framework.dll"\r
File "Microsoft.WindowsAPICodePack.Shell.dll"\r
File "Microsoft.WindowsAPICodePack.dll"\r
+ File "HandBrakeInterop.dll"\r
\r
;File "Caliburn.Castle.dll"\r
;File "Caliburn.Core.dll"\r
Delete "$INSTDIR\HandBrake.Framework.dll"\r
Delete "$INSTDIR\Microsoft.WindowsAPICodePack.Shell.dll"\r
Delete "$INSTDIR\Microsoft.WindowsAPICodePack.dll"\r
+ Delete "$INSTDIR\HandBrakeInterop.dll"\r
\r
Delete "$INSTDIR\Caliburn.Castle.dll"\r
Delete "$INSTDIR\Caliburn.Core.dll"\r
File "HandBrake.Framework.dll"\r
File "Microsoft.WindowsAPICodePack.Shell.dll"\r
File "Microsoft.WindowsAPICodePack.dll"\r
+ File "HandBrakeInterop.dll"\r
\r
;File "Caliburn.Castle.dll"\r
;File "Caliburn.Core.dll"\r
Delete "$INSTDIR\HandBrake.Framework.dll"\r
Delete "$INSTDIR\Microsoft.WindowsAPICodePack.Shell.dll"\r
Delete "$INSTDIR\Microsoft.WindowsAPICodePack.dll"\r
+ Delete "$INSTDIR\HandBrakeInterop.dll"\r
\r
Delete "$INSTDIR\Caliburn.Castle.dll"\r
Delete "$INSTDIR\Caliburn.Core.dll"\r
<?xml version="1.0"?>\r
-\r
<configuration>\r
<configSections>\r
- <section name="castle" type="Castle.Windsor.Configuration.AppDomain.CastleSectionHandler, Castle.Windsor" />\r
+ <section name="castle" type="Castle.Windsor.Configuration.AppDomain.CastleSectionHandler, Castle.Windsor"/>\r
\r
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">\r
- <section name="Handbrake.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />\r
+ <section name="Handbrake.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/>\r
</sectionGroup>\r
</configSections>\r
\r
<value>Do Nothing</value>\r
</setting>\r
<setting name="defaultPreset" serializeAs="String">\r
- <value />\r
+ <value/>\r
</setting>\r
<setting name="hb_build" serializeAs="String">\r
<value>0</value>\r
<value>True</value>\r
</setting>\r
<setting name="autoNamePath" serializeAs="String">\r
- <value />\r
+ <value/>\r
</setting>\r
<setting name="appcast" serializeAs="String">\r
<value>http://handbrake.fr/appcast.xml</value>\r
<value>False</value>\r
</setting>\r
<setting name="saveLogPath" serializeAs="String">\r
- <value />\r
+ <value/>\r
</setting>\r
<setting name="saveLogWithVideo" serializeAs="String">\r
<value>False</value>\r
<value>True</value>\r
</setting>\r
<setting name="lastUpdateCheckDate" serializeAs="String">\r
- <value />\r
+ <value/>\r
</setting>\r
<setting name="daysBetweenUpdateCheck" serializeAs="String">\r
<value>7</value>\r
<value>0</value>\r
</setting>\r
<setting name="hb_platform" serializeAs="String">\r
- <value />\r
+ <value/>\r
</setting>\r
<setting name="growlQueue" serializeAs="String">\r
<value>False</value>\r
<value>False</value>\r
</setting>\r
<setting name="CliExeHash" serializeAs="String">\r
- <value />\r
+ <value/>\r
</setting>\r
<setting name="previewScanCount" serializeAs="String">\r
<value>10</value>\r
</Handbrake.Properties.Settings>\r
</userSettings>\r
\r
- <startup />\r
+ <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/></startup>\r
\r
<!--<castle>\r
<components>\r
</components>\r
</castle>-->\r
\r
-</configuration>
\ No newline at end of file
+</configuration>\r
private string dvdDriveLabel;\r
private Preset currentlySelectedPreset;\r
private DVD currentSource;\r
- private IScan SourceScan = new ScanService();\r
+\r
+ private IScan SourceScan;\r
private List<DriveInformation> drives;\r
private QueueTask queueEdit;\r
\r
{\r
InitializeComponent();\r
\r
+ // We can use LibHB, if the library hb.dll exists.\r
+ this.SourceScan = File.Exists("hb.dll") ? (IScan)new LibScan() : new ScanService();\r
+\r
// Update the users config file with the CLI version data.\r
Main.SetCliVersionData();\r
\r