// --------------------------------------------------------------------------------------------------------------------
//
// 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 HandBrake.ApplicationServices.Parsing
{
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 format.
///
///
/// The sample rate.
///
///
/// The bitrate.
///
public Audio(int trackNumber, string language, string languageCode, string description, string format, int sampleRate, int bitrate)
{
this.TrackNumber = trackNumber;
this.Language = language;
this.LanguageCode = languageCode;
this.Description = description;
this.Format = format;
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 string Format { 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; }
///
/// 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.Format, this.Format);
}
///
/// 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 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.Format != null ? this.Format.GetHashCode() : 0);
return result;
}
}
}
}