/// <summary>
        /// Sanitizes a mixdown given the output codec and input channel layout.
        /// </summary>
        /// <param name="mixdown">
        /// The desired mixdown.
        /// </param>
        /// <param name="encoder">
        /// The output encoder to be used.
        /// </param>
        /// <param name="layout">
        /// The input channel layout.
        /// </param>
        /// <returns>
        /// A sanitized mixdown value.
        /// </returns>
        public static HBMixdown SanitizeMixdown(HBMixdown mixdown, HBAudioEncoder encoder, ulong layout)
        {
            if (mixdown == null)
            {
                return(null);
            }

            int sanitizedMixdown = HBFunctions.hb_mixdown_get_best((uint)encoder.Id, layout, mixdown.Id);

            if (sanitizedMixdown != -1)
            {
                return(Mixdowns.Single(m => m.Id == sanitizedMixdown));
            }
            return(Mixdowns.FirstOrDefault()); // "none"
        }
Exemple #2
0
        /// <summary>
        /// Gets the default mixdown for the given audio encoder and channel layout.
        /// </summary>
        /// <param name="encoder">
        /// The output codec to be used.
        /// </param>
        /// <param name="layout">
        /// The input channel layout.
        /// </param>
        /// <returns>
        /// The default mixdown for the given codec and channel layout.
        /// </returns>
        public static HBMixdown GetDefaultMixdown(HBAudioEncoder encoder, ulong layout)
        {
            int defaultMixdown = HBFunctions.hb_mixdown_get_default((uint)encoder.Id, layout);

            return(Mixdowns.Single(m => m.Id == defaultMixdown));
        }
Exemple #3
0
 /// <summary>
 /// Gets the mixdown with the specified ID.
 /// </summary>
 /// <param name="id">The mixdown ID.</param>
 /// <returns>The requested mixdown.</returns>
 public static HBMixdown GetMixdown(int id)
 {
     return(Mixdowns.SingleOrDefault(m => m.Id == id));
 }
Exemple #4
0
 /// <summary>
 /// Gets the mixdown with the specified short name.
 /// </summary>
 /// <param name="shortName">
 /// The name of the mixdown.
 /// </param>
 /// <returns>
 /// The requested mixdown.
 /// </returns>
 public static HBMixdown GetMixdown(string shortName)
 {
     return(Mixdowns.SingleOrDefault(m => m.ShortName == shortName));
 }
Exemple #5
0
        /// <summary>
        /// Sanitizes a mixdown given the output codec and input channel layout.
        /// </summary>
        /// <param name="mixdown">The desired mixdown.</param>
        /// <param name="encoder">The output encoder to be used.</param>
        /// <param name="layout">The input channel layout.</param>
        /// <returns>A sanitized mixdown value.</returns>
        public static HBMixdown SanitizeMixdown(HBMixdown mixdown, HBAudioEncoder encoder, int layout)
        {
            int sanitizedMixdown = HBFunctions.hb_get_best_mixdown((uint)encoder.Id, layout, mixdown.Id);

            return(Mixdowns.Single(m => m.Id == sanitizedMixdown));
        }