// -------------------------------------------------------------------------------------------------------------------- // // This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. // // // An object represending an AudioTrack associated with a Title, in a DVD // // -------------------------------------------------------------------------------------------------------------------- namespace HandBrakeWPF.Services.Scan.Model { using System; /// /// An object represending an AudioTrack associated with a Title, in a DVD /// [Serializable] public class Audio { /// /// Initializes a new instance of the class. /// public Audio() { } /// /// Initializes a new instance of the class. /// /// /// The track number. /// /// /// The language. /// /// /// The language code. /// /// /// The description. /// /// /// The codec. /// /// /// The sample rate. /// /// /// The bitrate. /// /// /// The channel Layout. /// public Audio(int trackNumber, string language, string languageCode, string description, int codec, int sampleRate, int bitrate, int channelLayout) { this.ChannelLayout = channelLayout; this.TrackNumber = trackNumber; this.Language = language; this.LanguageCode = languageCode; this.Description = description; this.Codec = codec; this.SampleRate = sampleRate; this.Bitrate = bitrate; } /// /// Gets or sets The track number of this Audio Track /// public int TrackNumber { get; set; } /// /// Gets or sets The language (if detected) of this Audio Track /// public string Language { get; set; } /// /// Gets or sets LanguageCode. /// public string LanguageCode { get; set; } /// /// Gets or sets Description. /// public string Description { get; set; } /// /// Gets or sets The primary format of this Audio Track /// public int Codec { get; set; } /// /// Gets or sets The frequency (in MHz) of this Audio Track /// public int SampleRate { get; set; } /// /// Gets or sets The bitrate (in kbps) of this Audio Track /// public int Bitrate { get; set; } /// /// Gets or sets the channel layout of the source track (mixdown) /// public int ChannelLayout { get; set; } /// /// Override of the ToString method to make this object easier to use in the UI /// /// A string formatted as: {track #} {language} ({format}) ({sub-format}) public override string ToString() { if (this.Description == "None Found") { return this.Description; } return string.Format("{0} {1}", this.TrackNumber, this.Description); } /// /// The equals. /// /// /// The other. /// /// /// The System.Boolean. /// public bool Equals(Audio other) { if (ReferenceEquals(null, other)) { return false; } if (ReferenceEquals(this, other)) { return true; } return other.TrackNumber == this.TrackNumber && object.Equals(other.Language, this.Language) && object.Equals(other.LanguageCode, this.LanguageCode) && object.Equals(other.Codec, this.Codec); } /// /// Determines whether the specified is equal to the current . /// /// /// true if the specified is equal to the current ; otherwise, false. /// /// The to compare with the current . 2 public override bool Equals(object obj) { if (ReferenceEquals(null, obj)) { return false; } if (ReferenceEquals(this, obj)) { return true; } if (obj.GetType() != typeof(Audio)) { return false; } return this.Equals((Audio)obj); } /// /// Serves as a hash function for a particular type. /// /// /// A hash code for the current . /// /// 2 public override int GetHashCode() { unchecked { int result = this.TrackNumber; result = (result * 397) ^ (this.Language != null ? this.Language.GetHashCode() : 0); result = (result * 397) ^ (this.LanguageCode != null ? this.LanguageCode.GetHashCode() : 0); result = (result * 397) ^ (this.Codec != null ? this.Codec.GetHashCode() : 0); return result; } } } }