private void SaveVideo(ref VFMFVideoEncoderSettings video) { // Main settings switch (cbMP4Mode.SelectedIndex) { case 0: // v11 (CPU) H264 video.Codec = VFMFVideoEncoder.MS_H264; break; case 1: // v11 nVidia NVENC H264 video.Codec = VFMFVideoEncoder.NVENC_H264; break; case 2: // v11 Intel QuickSync H264 video.Codec = VFMFVideoEncoder.QSV_H264; break; case 3: // v11 AMD Radeon H264 video.Codec = VFMFVideoEncoder.AMD_H264; break; case 4: // v11 nVidia NVENC H265 video.Codec = VFMFVideoEncoder.NVENC_H265; break; case 5: // v11 AMD Radeon H265 video.Codec = VFMFVideoEncoder.AMD_H265; break; } // Video H264 settings switch (cbMFProfile.SelectedIndex) { case 0: video.Profile = VFMFH264Profile.Base; break; case 1: video.Profile = VFMFH264Profile.Main; break; case 2: video.Profile = VFMFH264Profile.High; break; } switch (cbMFLevel.SelectedIndex) { case 0: video.Level = VFMFH264Level.Level1; break; case 1: video.Level = VFMFH264Level.Level11; break; case 2: video.Level = VFMFH264Level.Level12; break; case 3: video.Level = VFMFH264Level.Level13; break; case 4: video.Level = VFMFH264Level.Level2; break; case 5: video.Level = VFMFH264Level.Level21; break; case 6: video.Level = VFMFH264Level.Level22; break; case 7: video.Level = VFMFH264Level.Level3; break; case 8: video.Level = VFMFH264Level.Level31; break; case 9: video.Level = VFMFH264Level.Level32; break; case 10: video.Level = VFMFH264Level.Level4; break; case 11: video.Level = VFMFH264Level.Level41; break; case 12: video.Level = VFMFH264Level.Level42; break; case 13: video.Level = VFMFH264Level.Level5; break; case 14: video.Level = VFMFH264Level.Level51; break; case 15: video.Level = VFMFH264Level.Level52; break; } video.RateControl = (VFMFCommonRateControlMode)cbMFRateControl.SelectedIndex; video.CABAC = cbMFCABAC.Checked; video.LowLatencyMode = cbMFLowLatency.Checked; int.TryParse(edMFBFramesCount.Text, out var tmp); video.DefaultBPictureCount = tmp; int.TryParse(edMFKeyFrameSpacing.Text, out tmp); video.MaxKeyFrameSpacing = tmp; int.TryParse(edMFBitrate.Text, out tmp); video.AvgBitrate = tmp; int.TryParse(edMFMaxBitrate.Text, out tmp); video.MaxBitrate = tmp; int.TryParse(edMFQuality.Text, out tmp); video.Quality = tmp; }
private void LoadVideo(VFMFVideoEncoderSettings video) { // Main settings switch (video.Codec) { case VFMFVideoEncoder.MS_H264: cbMP4Mode.SelectedIndex = 0; break; case VFMFVideoEncoder.QSV_H264: cbMP4Mode.SelectedIndex = 2; break; case VFMFVideoEncoder.NVENC_H264: cbMP4Mode.SelectedIndex = 1; break; case VFMFVideoEncoder.AMD_H264: cbMP4Mode.SelectedIndex = 3; break; case VFMFVideoEncoder.NVENC_H265: cbMP4Mode.SelectedIndex = 4; break; case VFMFVideoEncoder.AMD_H265: cbMP4Mode.SelectedIndex = 5; break; default: throw new ArgumentOutOfRangeException(); } // Video H264 settings switch (video.Profile) { case VFMFH264Profile.Simple: cbMFProfile.SelectedIndex = 0; break; case VFMFH264Profile.Main: cbMFProfile.SelectedIndex = 1; break; case VFMFH264Profile.High: cbMFProfile.SelectedIndex = 2; break; default: throw new ArgumentOutOfRangeException(); } switch (video.Level) { case VFMFH264Level.Level1: cbMFLevel.SelectedIndex = 0; break; case VFMFH264Level.Level1b: cbMFLevel.SelectedIndex = 1; break; case VFMFH264Level.Level12: cbMFLevel.SelectedIndex = 2; break; case VFMFH264Level.Level13: cbMFLevel.SelectedIndex = 3; break; case VFMFH264Level.Level2: cbMFLevel.SelectedIndex = 4; break; case VFMFH264Level.Level21: cbMFLevel.SelectedIndex = 5; break; case VFMFH264Level.Level22: cbMFLevel.SelectedIndex = 6; break; case VFMFH264Level.Level3: cbMFLevel.SelectedIndex = 7; break; case VFMFH264Level.Level31: cbMFLevel.SelectedIndex = 8; break; case VFMFH264Level.Level32: cbMFLevel.SelectedIndex = 9; break; case VFMFH264Level.Level4: cbMFLevel.SelectedIndex = 10; break; case VFMFH264Level.Level41: cbMFLevel.SelectedIndex = 11; break; case VFMFH264Level.Level42: cbMFLevel.SelectedIndex = 12; break; case VFMFH264Level.Level5: cbMFLevel.SelectedIndex = 13; break; case VFMFH264Level.Level51: cbMFLevel.SelectedIndex = 14; break; case VFMFH264Level.Level52: cbMFLevel.SelectedIndex = 15; break; default: throw new ArgumentOutOfRangeException(); } cbMFRateControl.SelectedIndex = (int)video.RateControl; cbMFCABAC.Checked = video.CABAC; cbMFLowLatency.Checked = video.LowLatencyMode; edMFBFramesCount.Text = video.DefaultBPictureCount.ToString(); edMFKeyFrameSpacing.Text = video.MaxKeyFrameSpacing.ToString(); edMFBitrate.Text = video.AvgBitrate.ToString(); edMFMaxBitrate.Text = video.MaxBitrate.ToString(); edMFQuality.Text = video.Quality.ToString(); }