本文整理汇总了C#中HandBrake.ApplicationServices.Parsing.Title类的典型用法代码示例。如果您正苦于以下问题:C# Title类的具体用法?C# Title怎么用?C# Title使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
Title类属于HandBrake.ApplicationServices.Parsing命名空间,在下文中一共展示了Title类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ChapterNaming
/// <summary>
/// Set's up the DataGridView on the Chapters tab (frmMain)
/// </summary>
/// <param name="title">
/// The currently selected title object.
/// This will be used to get chapter names if they exist.
/// </param>
/// <param name="dataChpt">
/// The DataGridView Control
/// </param>
/// <param name="chapterEnd">
/// The chapter End.
/// </param>
/// <returns>
/// The chapter naming.
/// </returns>
public static DataGridView ChapterNaming(Title title, DataGridView dataChpt, string chapterEnd)
{
int i = 0, finish = 0;
if (chapterEnd != "Auto")
int.TryParse(chapterEnd, out finish);
while (i < finish)
{
string chapterName = string.Empty;
if (title != null)
{
if (title.Chapters.Count <= i && title.Chapters[i] != null)
{
chapterName = title.Chapters[i].ChapterName;
}
}
int n = dataChpt.Rows.Add();
dataChpt.Rows[n].Cells[0].Value = i + 1;
dataChpt.Rows[n].Cells[1].Value = string.IsNullOrEmpty(chapterName) ? "Chapter " + (i + 1) : chapterName;
dataChpt.Rows[n].Cells[0].ValueType = typeof(int);
dataChpt.Rows[n].Cells[1].ValueType = typeof(string);
i++;
}
return dataChpt;
}
示例2: SetSource
/// <summary>
/// Setup this window for a new source
/// </summary>
/// <param name="title">
/// The title.
/// </param>
/// <param name="preset">
/// The preset.
/// </param>
/// <param name="task">
/// The task.
/// </param>
public void SetSource(Title title, Preset preset, EncodeTask task)
{
if (preset != null)
{
// Properties
this.SelectedDenoise = EnumHelper<Denoise>.GetDisplay(preset.Task.Denoise);
this.SelectedDecomb = EnumHelper<Decomb>.GetDisplay(preset.Task.Decomb);
this.SelectedDeInterlace = EnumHelper<Deinterlace>.GetDisplay(preset.Task.Deinterlace);
this.SelectedDetelecine = EnumHelper<Detelecine>.GetDisplay(preset.Task.Detelecine);
this.Grayscale = preset.Task.Grayscale;
this.DeblockValue = preset.Task.Deblock;
// Custom Values
this.CustomDecomb = preset.Task.CustomDecomb;
this.CustomDeinterlace = preset.Task.CustomDeinterlace;
this.CustomDetelecine = preset.Task.CustomDetelecine;
this.CustomDenoise = preset.Task.CustomDenoise;
}
}
示例3: ConvertTitles
/// <summary>
/// Convert Interop Title objects to App Services Title object
/// </summary>
/// <param name="titles">
/// The titles.
/// </param>
/// <returns>
/// The convert titles.
/// </returns>
private static List<Title> ConvertTitles(IEnumerable<Interop.SourceData.Title> titles)
{
List<Title> titleList = new List<Title>();
foreach (Interop.SourceData.Title title in titles)
{
Title converted = new Title
{
TitleNumber = title.TitleNumber,
Duration = title.Duration,
Resolution = new Size(title.Resolution.Width, title.Resolution.Height),
AspectRatio = title.AspectRatio,
AngleCount = title.AngleCount,
ParVal = new Size(title.ParVal.Width, title.ParVal.Height),
AutoCropDimensions = title.AutoCropDimensions,
Fps = title.Framerate
};
foreach (Interop.SourceData.Chapter chapter in title.Chapters)
{
converted.Chapters.Add(new Chapter(chapter.ChapterNumber, string.Empty, chapter.Duration));
}
foreach (Interop.SourceData.AudioTrack track in title.AudioTracks)
{
converted.AudioTracks.Add(new AudioTrack(track.TrackNumber, track.Language, track.LanguageCode, track.Description, string.Empty, track.SampleRate, track.Bitrate));
}
foreach (Interop.SourceData.Subtitle track in title.Subtitles)
{
SubtitleType convertedType = new SubtitleType();
switch (track.SubtitleSource)
{
case Interop.SourceData.SubtitleSource.VobSub:
convertedType = SubtitleType.VobSub;
break;
case Interop.SourceData.SubtitleSource.UTF8:
convertedType = SubtitleType.UTF8Sub;
break;
case Interop.SourceData.SubtitleSource.TX3G:
convertedType = SubtitleType.TX3G;
break;
case Interop.SourceData.SubtitleSource.SSA:
convertedType = SubtitleType.SSA;
break;
case Interop.SourceData.SubtitleSource.SRT:
convertedType = SubtitleType.SRT;
break;
case Interop.SourceData.SubtitleSource.CC608:
convertedType = SubtitleType.CC;
break;
case Interop.SourceData.SubtitleSource.CC708:
convertedType = SubtitleType.CC;
break;
}
converted.Subtitles.Add(new Subtitle(track.TrackNumber, track.Language, track.LanguageCode, convertedType));
}
titleList.Add(converted);
}
return titleList;
}
示例4: Parse
/// <summary>
/// Parse the Title Information
/// </summary>
/// <param name="output">A StringReader of output data</param>
/// <returns>A Title Object</returns>
public static Title Parse(StringReader output)
{
var thisTitle = new Title();
string nextLine = output.ReadLine();
// Get the Title Number
Match m = Regex.Match(nextLine, @"^\+ title ([0-9]*):");
if (m.Success)
thisTitle.TitleNumber = int.Parse(m.Groups[1].Value.Trim());
nextLine = output.ReadLine();
// Detect if this is the main feature
m = Regex.Match(nextLine, @" \+ Main Feature");
if (m.Success)
{
thisTitle.MainTitle = true;
nextLine = output.ReadLine();
}
// Get the stream name for file import
m = Regex.Match(nextLine, @"^ \+ stream:");
if (m.Success)
{
thisTitle.SourceName = nextLine.Replace("+ stream:", string.Empty).Trim();
nextLine = output.ReadLine();
}
// Jump over the VTS and blocks line
m = Regex.Match(nextLine, @"^ \+ vts:");
if (nextLine.Contains("blocks") || nextLine.Contains("+ vts "))
{
nextLine = output.ReadLine();
}
// Multi-Angle Support if LibDvdNav is enabled
if (!Properties.Settings.Default.DisableLibDvdNav)
{
m = Regex.Match(nextLine, @" \+ angle\(s\) ([0-9])");
if (m.Success)
{
string angleList = m.Value.Replace("+ angle(s) ", string.Empty).Trim();
int angleCount;
int.TryParse(angleList, out angleCount);
thisTitle.AngleCount = angleCount;
nextLine = output.ReadLine();
}
}
// Get duration for this title
m = Regex.Match(nextLine, @"^ \+ duration: ([0-9]{2}:[0-9]{2}:[0-9]{2})");
if (m.Success)
thisTitle.Duration = TimeSpan.Parse(m.Groups[1].Value);
// Get resolution, aspect ratio and FPS for this title
m = Regex.Match(output.ReadLine(), @"^ \+ size: ([0-9]*)x([0-9]*), pixel aspect: ([0-9]*)/([0-9]*), display aspect: ([0-9]*\.[0-9]*), ([0-9]*\.[0-9]*) fps");
if (m.Success)
{
thisTitle.Resolution = new Size(int.Parse(m.Groups[1].Value), int.Parse(m.Groups[2].Value));
thisTitle.ParVal = new Size(int.Parse(m.Groups[3].Value), int.Parse(m.Groups[4].Value));
thisTitle.AspectRatio = float.Parse(m.Groups[5].Value, Culture);
thisTitle.Fps = float.Parse(m.Groups[6].Value, Culture);
}
// Get autocrop region for this title
m = Regex.Match(output.ReadLine(), @"^ \+ autocrop: ([0-9]*)/([0-9]*)/([0-9]*)/([0-9]*)");
if (m.Success)
{
thisTitle.AutoCropDimensions = new Cropping
{
Top = int.Parse(m.Groups[1].Value),
Bottom = int.Parse(m.Groups[2].Value),
Left = int.Parse(m.Groups[3].Value),
Right = int.Parse(m.Groups[4].Value)
};
}
thisTitle.Chapters.AddRange(Chapter.ParseList(output));
thisTitle.AudioTracks.AddRange(AudioHelper.ParseList(output));
thisTitle.Subtitles.AddRange(Subtitle.ParseList(output));
return thisTitle;
}
示例5: ResetGUI
/// <summary>
/// Reset the GUI
/// </summary>
private void ResetGUI()
{
drp_dvdtitle.Items.Clear();
drop_chapterStart.Items.Clear();
drop_chapterFinish.Items.Clear();
lbl_duration.Text = "Select a Title";
PictureSettings.lbl_src_res.Text = "Select a Title";
sourcePath = String.Empty;
text_destination.Text = String.Empty;
selectedTitle = null;
}
示例6: SetSource
/// <summary>
/// Set the Source Title
/// </summary>
/// <param name="title">
/// The title.
/// </param>
/// <param name="preset">
/// The preset.
/// </param>
/// <param name="task">
/// The task.
/// </param>
public void SetSource(Title title, Preset preset, EncodeTask task)
{
this.SourceTracks = title.AudioTracks;
// Only reset the audio tracks if we have none, or if the task is null.
if (this.Task == null)
{
this.SetPreset(preset, task);
}
// If there are no source tracks, clear the list, otherwise try to Auto-Select the correct tracks
if (this.SourceTracks == null || !this.SourceTracks.Any())
{
this.Task.AudioTracks.Clear();
}
else
{
this.SetupTracks();
}
// Force UI Updates
this.NotifyOfPropertyChange(() => this.Task);
}
示例7: SetSource
/// <summary>
/// Setup this window for a new source
/// </summary>
/// <param name="title">
/// The title.
/// </param>
/// <param name="preset">
/// The preset.
/// </param>
/// <param name="task">
/// The task.
/// </param>
public void SetSource(Title title, Preset preset, EncodeTask task)
{
this.SourceTracks.Clear();
this.SourceTracks.Add(ForeignAudioSearchTrack);
foreach (Subtitle subtitle in title.Subtitles)
{
this.SourceTracks.Add(subtitle);
}
this.Task = task;
this.NotifyOfPropertyChange(() => this.Task);
this.AutomaticSubtitleSelection();
}
示例8: SetSource
/// <summary>
/// Setup this window for a new source
/// </summary>
/// <param name="title">
/// The title.
/// </param>
/// <param name="preset">
/// The preset.
/// </param>
/// <param name="task">
/// The task.
/// </param>
public void SetSource(Title title, Preset preset, EncodeTask task)
{
this.Task = task;
if (title != null)
{
// Set cached info
this.sourceParValues = title.ParVal;
this.sourceResolution = title.Resolution;
if (preset.PictureSettingsMode == PresetPictureSettingsMode.None)
{
// We have no instructions, so simply set it to the source.
this.Width = this.GetModulusValue(this.sourceResolution.Width - this.CropLeft - this.CropRight);
this.MaintainAspectRatio = true;
}
else
{
// Set the Max Width / Height available to the user controls
if (this.sourceResolution.Width < this.MaxWidth)
{
this.MaxWidth = this.sourceResolution.Width;
}
else if (this.sourceResolution.Width > this.MaxWidth)
{
this.MaxWidth = preset.Task.MaxWidth ?? this.sourceResolution.Width;
}
if (this.sourceResolution.Height < this.MaxHeight)
{
this.MaxHeight = this.sourceResolution.Height;
}
else if (this.sourceResolution.Height > this.MaxHeight)
{
this.MaxHeight = preset.Task.MaxHeight ?? this.sourceResolution.Height;
}
// Set the Width, and Maintain Aspect ratio. That should calc the Height for us.
this.Width = preset.Task.Width ?? this.MaxWidth; // Note: This will be auto-corrected in the property if it's too large.
// If our height is too large, let it downscale the width for us by setting the height to the lower value.
if (!this.MaintainAspectRatio && this.Height > this.MaxHeight)
{
this.Height = this.MaxHeight;
}
if (this.SelectedAnamorphicMode == Anamorphic.Custom)
{
this.AnamorphicAdjust(); // Refresh the values
}
}
// Update the cropping values, preffering those in the presets.
if (!preset.Task.HasCropping)
{
this.CropTop = title.AutoCropDimensions.Top;
this.CropBottom = title.AutoCropDimensions.Bottom;
this.CropLeft = title.AutoCropDimensions.Left;
this.CropRight = title.AutoCropDimensions.Right;
this.IsCustomCrop = false;
}
else
{
this.CropLeft = preset.Task.Cropping.Left;
this.CropRight = preset.Task.Cropping.Right;
this.CropTop = preset.Task.Cropping.Top;
this.CropBottom = preset.Task.Cropping.Bottom;
this.IsCustomCrop = true;
}
// Set Screen Controls
this.SourceInfo = string.Format(
"{0}x{1}, Aspect Ratio: {2:0.00}",
title.Resolution.Width,
title.Resolution.Height,
title.AspectRatio);
}
this.NotifyOfPropertyChange(() => this.Task);
}
示例9: SelectionTitle
/// <summary>
/// Initializes a new instance of the <see cref="SelectionTitle"/> class.
/// </summary>
/// <param name="title">
/// The title.
/// </param>
/// <param name="sourceName">
/// The source Name.
/// </param>
public SelectionTitle(Title title, string sourceName)
{
this.sourceName = sourceName;
this.Title = title;
}
示例10: SetSource
/// <summary>
/// Setup this window for a new source
/// </summary>
/// <param name="title">
/// The title.
/// </param>
/// <param name="preset">
/// The preset.
/// </param>
/// <param name="task">
/// The task.
/// </param>
public void SetSource(Title title, Preset preset, EncodeTask task)
{
this.SourceTracks = title.Subtitles;
this.SubtitleTracks = task.SubtitleTracks;
}
示例11: SetTrackListFromPreset
/// <summary>
/// Set the Track list dropdown from the parsed title captured during the scan
/// </summary>
/// <param name="selectedTitle">The selected title</param>
/// <param name="preset">A preset</param>
public void SetTrackListFromPreset(Title selectedTitle, Preset preset)
{
if (selectedTitle.AudioTracks.Count == 0)
{
audioList.Rows.Clear();
this.ScannedTracks.Clear();
this.ScannedTracks.Add(Audio.NoneFound);
this.drp_audioTrack.Refresh();
drp_audioTrack.SelectedIndex = 0;
return;
}
// Setup the Audio track source dropdown with the new audio tracks.
this.ScannedTracks.Clear();
this.drp_audioTrack.SelectedItem = null;
foreach (var item in selectedTitle.AudioTracks)
{
this.ScannedTracks.Add(item);
}
drp_audioTrack.SelectedItem = this.ScannedTracks.FirstOrDefault();
this.drp_audioTrack.Refresh();
// Add any tracks the preset has, if there is a preset and no audio tracks in the list currently
if (audioList.Rows.Count == 0 && preset != null)
{
EncodeTask parsed = QueryParserUtility.Parse(preset.Query);
foreach (AudioTrack audioTrack in parsed.AudioTracks)
{
audioTrack.ScannedTrack = drp_audioTrack.SelectedItem as Audio;
this.audioTracks.Add(audioTrack);
}
}
this.AutomaticTrackSelection();
}
示例12: SetSource
/// <summary>
/// Setup this window for a new source
/// </summary>
/// <param name="title">
/// The title.
/// </param>
/// <param name="preset">
/// The preset.
/// </param>
/// <param name="task">
/// The task.
/// </param>
public void SetSource(Title title, Preset preset, EncodeTask task)
{
this.Task = task;
if (title != null)
{
// Set cached info
this.sourceAspectRatio = title.AspectRatio;
this.sourceParValues = title.ParVal;
this.sourceResolution = title.Resolution;
// Set the Max Width / Height available to the user controls
if (sourceResolution.Width < this.MaxWidth)
{
this.MaxWidth = sourceResolution.Width;
}
else if (sourceResolution.Width > this.MaxWidth)
{
this.MaxWidth = preset.Task.MaxWidth ?? sourceResolution.Width;
}
if (sourceResolution.Height < this.MaxHeight)
{
this.MaxHeight = sourceResolution.Height;
}
else if (sourceResolution.Height > this.MaxHeight)
{
this.MaxHeight = preset.Task.MaxHeight ?? sourceResolution.Height;
}
// Set Screen Controls
this.SourceInfo = string.Format(
"{0}x{1}, Aspect Ratio: {2:0.00}",
title.Resolution.Width,
title.Resolution.Height,
title.AspectRatio);
if (!preset.Task.HasCropping)
{
this.CropTop = title.AutoCropDimensions.Top;
this.CropBottom = title.AutoCropDimensions.Bottom;
this.CropLeft = title.AutoCropDimensions.Left;
this.CropRight = title.AutoCropDimensions.Right;
this.IsCustomCrop = false;
}
else
{
this.CropLeft = preset.Task.Cropping.Left;
this.CropRight = preset.Task.Cropping.Right;
this.CropTop = preset.Task.Cropping.Top;
this.CropBottom = preset.Task.Cropping.Bottom;
this.IsCustomCrop = true;
}
// TODO handle preset max width / height
this.Width = title.Resolution.Width;
this.Height = title.Resolution.Height;
this.MaintainAspectRatio = true;
if (this.SelectedAnamorphicMode == Anamorphic.Custom)
{
AnamorphicAdjust(); // Refresh the values
}
}
this.NotifyOfPropertyChange(() => this.Task);
}
示例13: Setup
/// <summary>
/// Setup the window after a scan.
/// </summary>
/// <param name="selectedTitle">
/// The selected title.
/// </param>
/// <param name="currentTask">
/// The current task.
/// </param>
/// <param name="currentPreset">
/// The Current preset
/// </param>
public void Setup(Title selectedTitle, EncodeTask currentTask, Preset currentPreset)
{
}
示例14: SetSource
/// <summary>
/// Setup this window for a new source
/// </summary>
/// <param name="title">
/// The title.
/// </param>
/// <param name="preset">
/// The preset.
/// </param>
/// <param name="task">
/// The task.
/// </param>
public void SetSource(Title title, Preset preset, EncodeTask task)
{
this.Query = preset.Task.AdvancedEncoderOptions;
this.X264Preset = preset.Task.x264Preset;
this.X264Profile = preset.Task.x264Profile;
this.X264Tune = preset.Task.X264Tune;
}
示例15: BatchTitle
public BatchTitle(string fileName, Title title, bool include = false)
{
Title = title;
Include = include;
FileName = fileName;
}