{\r
/// <summary>\r
/// Gets or sets the chapter end.\r
+ /// Type is "chapter", "time", "frame", or "preview".\r
/// </summary>\r
- public int? ChapterEnd { get; set; }\r
+ public string Type { get; set; }\r
\r
/// <summary>\r
/// Gets or sets the chapter start.\r
/// </summary>\r
- public int? ChapterStart { get; set; }\r
+ public int? Start { 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
+ public int? End { get; set; }\r
\r
/// <summary>\r
/// Gets or sets the seek points.\r
SequenceID = 0, \r
Audio = CreateAudio(job), \r
Destination = CreateDestination(job), \r
- Filter = CreateFilter(job), \r
+ Filters = CreateFilter(job), \r
PAR = CreatePAR(job), \r
- MetaData = CreateMetaData(job),\r
+ Metadata = CreateMetaData(job),\r
Source = CreateSource(job, configuration), \r
- Subtitle = CreateSubtitle(job), \r
- Video = CreateVideo(job)\r
+ Subtitle = CreateSubtitle(job),\r
+ Video = CreateVideo(job, configuration)\r
};\r
\r
return encode;\r
switch (job.PointToPointMode)\r
{\r
case PointToPointMode.Chapters:\r
- range.ChapterEnd = job.EndPoint;\r
- range.ChapterStart = job.StartPoint;\r
+ range.Type = "chapter";\r
+ range.End = job.EndPoint;\r
+ range.Start = job.StartPoint;\r
break;\r
case PointToPointMode.Seconds:\r
- range.PtsToStart = job.StartPoint * 90000;\r
- range.PtsToStop = (job.EndPoint - job.StartPoint) * 90000; \r
+ range.Type = "time";\r
+ range.Start = job.StartPoint * 90000;\r
+ range.End = (job.EndPoint - job.StartPoint) * 90000; \r
break;\r
case PointToPointMode.Frames:\r
- range.FrameToStart = job.StartPoint;\r
- range.FrameToStop = job.EndPoint; \r
+ range.Type = "frame";\r
+ range.Start = job.StartPoint;\r
+ range.End = job.EndPoint; \r
break;\r
case PointToPointMode.Preview:\r
- range.StartAtPreview = job.PreviewEncodeStartAt;\r
+ range.Type = "preview";\r
+ range.Start = job.PreviewEncodeStartAt;\r
range.SeekPoints = configuration.PreviewScanCount;\r
- range.PtsToStop = job.PreviewEncodeDuration * 90000; \r
+ range.End = job.PreviewEncodeDuration * 90000; \r
break;\r
}\r
\r
}\r
else\r
{\r
- SubtitleList track = new SubtitleList { Burn = item.Burned, Default = item.Default, Force = item.Forced, ID = item.SourceTrack.TrackNumber, Track = (item.SourceTrack.TrackNumber - 1) };\r
+ SubtitleList track = new SubtitleList { Burn = item.Burned, Default = item.Default, Forced = item.Forced, ID = item.SourceTrack.TrackNumber, Track = (item.SourceTrack.TrackNumber - 1) };\r
subtitle.SubtitleList.Add(track);\r
}\r
}\r
/// <param name="job">\r
/// The job.\r
/// </param>\r
+ /// <param name="configuration">\r
+ /// The configuration.\r
+ /// </param>\r
/// <returns>\r
/// The <see cref="Video"/>.\r
/// </returns>\r
- private static Video CreateVideo(EncodeTask job)\r
+ private static Video CreateVideo(EncodeTask job, HBConfiguration configuration)\r
{\r
Video video = new Video();\r
\r
Validate.NotNull(videoEncoder, "Video encoder " + job.VideoEncoder + " not recognized.");\r
if (videoEncoder != null)\r
{\r
- video.Codec = videoEncoder.Id;\r
+ video.Encoder = videoEncoder.Id;\r
}\r
\r
string advancedOptions = job.ShowAdvancedTab ? job.AdvancedEncoderOptions : string.Empty;\r
}\r
}\r
\r
+ video.OpenCL = configuration.ScalingMode == VideoScaler.BicubicCl;\r
+ video.HWDecode = configuration.EnableDxva;\r
+ video.QSV.Decode = !configuration.DisableQuickSyncDecoding;\r
+\r
return video;\r
}\r
\r
{\r
Audio audio = new Audio();\r
\r
- int copyMask = 0;\r
- if (job.AllowedPassthruOptions.AudioAllowAACPass) copyMask = (int)NativeConstants.HB_ACODEC_AAC_PASS;\r
- if (job.AllowedPassthruOptions.AudioAllowAC3Pass) copyMask |= (int)NativeConstants.HB_ACODEC_AC3_PASS;\r
- if (job.AllowedPassthruOptions.AudioAllowDTSHDPass) copyMask |= (int)NativeConstants.HB_ACODEC_DCA_HD_PASS;\r
- if (job.AllowedPassthruOptions.AudioAllowDTSPass) copyMask |= (int)NativeConstants.HB_ACODEC_DCA_PASS;\r
- if (job.AllowedPassthruOptions.AudioAllowEAC3Pass) copyMask |= (int)NativeConstants.HB_ACODEC_EAC3_PASS;\r
- if (job.AllowedPassthruOptions.AudioAllowFlacPass) copyMask |= (int)NativeConstants.HB_ACODEC_FLAC_PASS;\r
- if (job.AllowedPassthruOptions.AudioAllowMP3Pass) copyMask |= (int)NativeConstants.HB_ACODEC_MP3_PASS;\r
- if (job.AllowedPassthruOptions.AudioAllowTrueHDPass) copyMask |= (int)NativeConstants.HB_ACODEC_TRUEHD_PASS;\r
-\r
- audio.CopyMask = copyMask; \r
+ List<string> copyMaskList = new List<string>();\r
+ if (job.AllowedPassthruOptions.AudioAllowAACPass) copyMaskList.Add("copy:aac");\r
+ if (job.AllowedPassthruOptions.AudioAllowAC3Pass) copyMaskList.Add("copy:ac3");\r
+ if (job.AllowedPassthruOptions.AudioAllowDTSHDPass) copyMaskList.Add("copy:dtshd");\r
+ if (job.AllowedPassthruOptions.AudioAllowDTSPass) copyMaskList.Add("copy:dts");\r
+ if (job.AllowedPassthruOptions.AudioAllowEAC3Pass) copyMaskList.Add("copy:eac3");\r
+ if (job.AllowedPassthruOptions.AudioAllowFlacPass) copyMaskList.Add("copy:flac");\r
+ if (job.AllowedPassthruOptions.AudioAllowMP3Pass) copyMaskList.Add("copy:mp3");\r
+ if (job.AllowedPassthruOptions.AudioAllowTrueHDPass) copyMaskList.Add("copy:truehd");\r
+ audio.CopyMask = copyMaskList.ToArray(); \r
+\r
HBAudioEncoder audioEncoder = HandBrakeEncoderHelpers.GetAudioEncoder(EnumHelper<AudioEncoder>.GetShortName(job.AllowedPassthruOptions.AudioEncoderFallback));\r
audio.FallbackEncoder = audioEncoder.Id;\r
\r