/// <summary> /// Initializes this instance. /// </summary> /// <param name="verbosity"> /// The code for the logging verbosity to use. /// </param> public void Initialize(int verbosity) { HandBrakeUtils.EnsureGlobalInit(); HandBrakeUtils.RegisterLogger(); this.hbHandle = HBFunctions.hb_init(verbosity, update_check: 0); }
/// <summary> /// Gets the size in bytes for the audio with the given parameters. /// </summary> /// <param name="job">The encode job.</param> /// <param name="lengthSeconds">The length of the encode in seconds.</param> /// <param name="title">The title to encode.</param> /// <param name="outputTrackList">The list of tracks to encode.</param> /// <returns>The size in bytes for the audio with the given parameters.</returns> internal static long GetAudioSize(EncodeJob job, double lengthSeconds, Title title, List <Tuple <AudioEncoding, int> > outputTrackList) { long audioBytes = 0; foreach (Tuple <AudioEncoding, int> outputTrack in outputTrackList) { AudioEncoding encoding = outputTrack.Item1; AudioTrack track = title.AudioTracks[outputTrack.Item2 - 1]; int samplesPerFrame = HandBrakeUtils.GetAudioSamplesPerFrame(encoding.Encoder); int audioBitrate; if (Utilities.IsPassthrough(encoding.Encoder)) { // Input bitrate is in bits/second. audioBitrate = track.Bitrate / 8; } else { // Output bitrate is in kbps. audioBitrate = encoding.Bitrate * 1000 / 8; } audioBytes += (long)(lengthSeconds * audioBitrate); // Audio overhead audioBytes += encoding.SampleRateRaw * ContainerOverheadPerFrame / samplesPerFrame; } return(audioBytes); }
/// <summary> /// Initializes static members of the Converters class. /// </summary> static Converters() { HandBrakeUtils.EnsureGlobalInit(); VideoRates = new Dictionary <double, int>(); foreach (var framerate in Encoders.VideoFramerates) { VideoRates.Add(double.Parse(framerate.Name), framerate.Rate); } }
/// <summary> /// Initializes static members of the HandBrakeUnitConversionHelpers class. /// </summary> static HandBrakeUnitConversionHelpers() { HandBrakeUtils.EnsureGlobalInit(); VideoRates = new Dictionary <double, int>(); foreach (var framerate in HandBrakeEncoderHelpers.VideoFramerates) { VideoRates.Add(double.Parse(framerate.Name, CultureInfo.InvariantCulture), framerate.Rate); } }
/// <summary> /// Gets the size in bytes for the audio with the given parameters. /// </summary> /// <param name="job">The encode job.</param> /// <param name="lengthSeconds">The length of the encode in seconds.</param> /// <param name="title">The title to encode.</param> /// <param name="outputTrackList">The list of tracks to encode.</param> /// <returns>The size in bytes for the audio with the given parameters.</returns> internal static long GetAudioSize(EncodeJob job, double lengthSeconds, Title title, List <Tuple <AudioEncoding, int> > outputTrackList) { long audioBytes = 0; foreach (Tuple <AudioEncoding, int> outputTrack in outputTrackList) { 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); // Audio overhead audioBytes += encoding.SampleRateRaw * ContainerOverheadPerFrame / samplesPerFrame; } return(audioBytes); }
/// <summary> /// Initializes static members of the HandBrakeEncoderHelpers class. /// </summary> static HandBrakeEncoderHelpers() { HandBrakeUtils.EnsureGlobalInit(); }