private void txtHours_TextChanged(object sender, EventArgs e) { try { Double duration = 0.0; Double audioSize = 0.0; Double audioBitrate = 0.0; AudioValueType audioValueType = AudioValueType.AudioBitrate; Double audioValue = 0.0; Double videoSize = 0.0; duration = brCalc.GetSecondsFromTime(Int32.Parse(txtHours.Text), Int32.Parse(txtMinutes.Text), Int32.Parse(txtSeconds.Text)); txtCalculatedDuration.Text = duration.ToString("#.00"); if (radioUseAudioBitrate.Checked) { audioSize = brCalc.BitrateToSize(AcHelper.DoubleParse(txtAudioBitrate.Text), duration) / 1024.0 / 1024.0; txtAudioSize.Text = (audioSize).ToString("#.00"); audioValueType = AudioValueType.AudioBitrate; audioValue = AcHelper.DoubleParse(txtAudioBitrate.Text); } else if (radioUseAudioSize.Checked) { audioBitrate = brCalc.SizeToBitrate(AcHelper.DoubleParse(txtAudioSize.Text) * 1024.0 * 1024.0, duration); txtAudioBitrate.Text = audioBitrate.ToString("#.00"); audioValueType = AudioValueType.AudioFileSize; audioValue = AcHelper.DoubleParse(txtAudioSize.Text) * 1024.0 * 1024.0; audioSize = audioValue; } if (radioUseVideoBitrate.Checked) { videoSize = brCalc.BitrateToSize(AcHelper.DoubleParse(txtTargetVideoBitrate.Text), duration); txtTargetVideoFileSize.Text = (videoSize / 1024.0 / 1024.0).ToString("#.00"); txtTargetTotalFileSize.Text = ((videoSize + audioSize) / 1024.0 / 1024.0).ToString("#.00");// (brCalc.CalculateTarget(duration, audioValueType, audioValue, Video_Value_Type.Video_Bitrate, AcHelper.DoubleParse(txtTargetVideoBitrate.Text)) / 1024.0 / 1024.0).ToString("#.00"); } else if (radioUseTotalFileSize.Checked) { txtTargetVideoBitrate.Text = brCalc.CalculateTarget(duration, audioValueType, audioValue, VideoValueType.TotalFileSize, AcHelper.DoubleParse(txtTargetTotalFileSize.Text) * 1024.0 * 1024.0).ToString("#.00"); videoSize = brCalc.BitrateToSize(AcHelper.DoubleParse(txtTargetVideoBitrate.Text), duration); txtTargetVideoFileSize.Text = (videoSize / 1024.0 / 1024.0).ToString("#.00"); } } catch (Exception ex) { Debug.WriteLine(ex); } }
/// <summary> /// /// </summary> /// <param name="duration">in seconds</param> /// <param name="audioValueType"></param> /// <param name="audioValue">in kbps for bitrate, in bytes for size</param> /// <param name="videoValueType"></param> /// <param name="videoValue">in kbps for bitrate, in bytes for size</param> /// <returns></returns> public Double CalculateTarget(Double duration, AudioValueType audioValueType, Double audioValue, VideoValueType videoValueType, Double videoValue) { Double targetValue = 0.0; Double audioSize = 0.0; Double videoSize = 0.0; switch (audioValueType) { case AudioValueType.AudioBitrate: audioSize = BitrateToSize(audioValue, duration); break; case AudioValueType.AudioFileSize: audioSize = audioValue; break; } switch (videoValueType) { case VideoValueType.TotalFileSize: //Target Value is video bitrate targetValue = SizeToBitrate(videoValue - audioSize, duration); break; case VideoValueType.VideoFileSize: //Target Value is video bitrate targetValue = SizeToBitrate(videoValue, duration); break; case VideoValueType.VideoBitrate: //Target Value is total filesize videoSize = BitrateToSize(videoValue, duration); targetValue = audioSize + videoSize; break; default: break; } return(targetValue); }