diff options
Diffstat (limited to 'win/CS/HandBrake.Interop')
-rw-r--r-- | win/CS/HandBrake.Interop/HandBrakeInterop/HandBrakeUtils.cs | 167 |
1 files changed, 87 insertions, 80 deletions
diff --git a/win/CS/HandBrake.Interop/HandBrakeInterop/HandBrakeUtils.cs b/win/CS/HandBrake.Interop/HandBrakeInterop/HandBrakeUtils.cs index 908afe250..e0f04c3d9 100644 --- a/win/CS/HandBrake.Interop/HandBrakeInterop/HandBrakeUtils.cs +++ b/win/CS/HandBrake.Interop/HandBrakeInterop/HandBrakeUtils.cs @@ -4,14 +4,12 @@ // </copyright>
// <summary>
// Defines the HandBrakeUtils type.
-// </summary> -// -------------------------------------------------------------------------------------------------------------------- - -using System.Runtime.InteropServices; - -namespace HandBrake.Interop -{ - using System; +// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrake.Interop
+{
+ using System;
using System.Collections.Generic;
using HandBrake.Interop.HbLib;
@@ -50,6 +48,15 @@ namespace HandBrake.Interop public static event EventHandler<MessageLoggedEventArgs> ErrorLogged;
/// <summary>
+ /// Enables or disables LibDVDNav. If disabled libdvdread will be used instead.
+ /// </summary>
+ /// <param name="enableDvdNav">True to enable LibDVDNav.</param>
+ public static void SetDvdNav(bool enableDvdNav)
+ {
+ HBFunctions.hb_dvd_set_dvdnav(enableDvdNav ? 1 : 0);
+ }
+
+ /// <summary>
/// Register the logger.
/// </summary>
public static void RegisterLogger()
@@ -113,12 +120,12 @@ namespace HandBrake.Interop System.Diagnostics.Debug.WriteLine("ERROR: " + message);
}
- } - - /// <summary> - /// Gets the total number of seconds on the given encode job. - /// </summary> - /// <param name="job">The encode job to query.</param> + }
+
+ /// <summary>
+ /// Gets the total number of seconds on the given encode job.
+ /// </summary>
+ /// <param name="job">The encode job to query.</param>
/// <param name="title">The title being encoded.</param>
/// <returns>The total number of seconds of video to encode.</returns>
internal static double GetJobLengthSeconds(EncodeJob job, Title title)
@@ -142,37 +149,37 @@ namespace HandBrake.Interop return 0;
}
- /// <summary> - /// Gets the number of audio samples used per frame for the given audio encoder. - /// </summary> - /// <param name="encoderName">The encoder to query.</param> - /// <returns>The number of audio samples used per frame for the given - /// audio encoder.</returns> - internal static int GetAudioSamplesPerFrame(string encoderName) - { - switch (encoderName) - { - case "faac": - case "ffaac": - case "copy:aac": - case "vorbis": - return 1024; - case "lame": - case "copy:mp3": - return 1152; - case "ffac3": - case "copy": - case "copy:ac3": - case "copy:dts": - case "copy:dtshd": - return 1536; - } - - // Unknown encoder; make a guess. - return 1536; - } - - /// <summary> + /// <summary>
+ /// Gets the number of audio samples used per frame for the given audio encoder.
+ /// </summary>
+ /// <param name="encoderName">The encoder to query.</param>
+ /// <returns>The number of audio samples used per frame for the given
+ /// audio encoder.</returns>
+ internal static int GetAudioSamplesPerFrame(string encoderName)
+ {
+ switch (encoderName)
+ {
+ case "faac":
+ case "ffaac":
+ case "copy:aac":
+ case "vorbis":
+ return 1024;
+ case "lame":
+ case "copy:mp3":
+ return 1152;
+ case "ffac3":
+ case "copy":
+ case "copy:ac3":
+ case "copy:dts":
+ case "copy:dtshd":
+ return 1536;
+ }
+
+ // Unknown encoder; make a guess.
+ return 1536;
+ }
+
+ /// <summary>
/// Gets the size in bytes for the audio with the given parameters.
/// </summary>
/// <param name="job">The encode job.</param>
@@ -189,41 +196,41 @@ namespace HandBrake.Interop AudioEncoding encoding = outputTrack.Item1;
AudioTrack track = title.AudioTracks[outputTrack.Item2 - 1];
- int samplesPerFrame = HandBrakeUtils.GetAudioSamplesPerFrame(encoding.Encoder); - int audioBitrate; - - HBAudioEncoder audioEncoder = Encoders.GetAudioEncoder(encoding.Encoder); - - if (audioEncoder.IsPassthrough) - { - // Input bitrate is in bits/second. - audioBitrate = track.Bitrate / 8; - } - else if (encoding.EncodeRateType == AudioEncodeRateType.Quality) - { - // Can't predict size of quality targeted audio encoding. - audioBitrate = 0; - } - else - { - int outputBitrate; - if (encoding.Bitrate > 0) - { - outputBitrate = encoding.Bitrate; - } - else - { - outputBitrate = Encoders.GetDefaultBitrate( - audioEncoder, - encoding.SampleRateRaw == 0 ? track.SampleRate : encoding.SampleRateRaw, - Encoders.SanitizeMixdown(Encoders.GetMixdown(encoding.Mixdown), audioEncoder, track.ChannelLayout)); - } - - // Output bitrate is in kbps. - audioBitrate = outputBitrate * 1000 / 8; - } - - audioBytes += (long)(lengthSeconds * audioBitrate); + int samplesPerFrame = HandBrakeUtils.GetAudioSamplesPerFrame(encoding.Encoder);
+ int audioBitrate;
+
+ HBAudioEncoder audioEncoder = Encoders.GetAudioEncoder(encoding.Encoder);
+
+ if (audioEncoder.IsPassthrough)
+ {
+ // Input bitrate is in bits/second.
+ audioBitrate = track.Bitrate / 8;
+ }
+ else if (encoding.EncodeRateType == AudioEncodeRateType.Quality)
+ {
+ // Can't predict size of quality targeted audio encoding.
+ audioBitrate = 0;
+ }
+ else
+ {
+ int outputBitrate;
+ if (encoding.Bitrate > 0)
+ {
+ outputBitrate = encoding.Bitrate;
+ }
+ else
+ {
+ outputBitrate = Encoders.GetDefaultBitrate(
+ audioEncoder,
+ encoding.SampleRateRaw == 0 ? track.SampleRate : encoding.SampleRateRaw,
+ Encoders.SanitizeMixdown(Encoders.GetMixdown(encoding.Mixdown), audioEncoder, track.ChannelLayout));
+ }
+
+ // Output bitrate is in kbps.
+ audioBitrate = outputBitrate * 1000 / 8;
+ }
+
+ audioBytes += (long)(lengthSeconds * audioBitrate);
// Audio overhead
audioBytes += encoding.SampleRateRaw * ContainerOverheadPerFrame / samplesPerFrame;
|