From 9443735b93c541680e1fb63f79c1de01c402be50 Mon Sep 17 00:00:00 2001 From: jamescyeh Date: Tue, 7 Apr 2020 15:28:19 -0700 Subject: [PATCH] initial checkin, and initial guess as to what this should be --- provider/mediaconvert/h264.go | 34 ++++++++++++++++++++++++++++++++-- provider/mediaconvert/h265.go | 4 ++-- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/provider/mediaconvert/h264.go b/provider/mediaconvert/h264.go index e1f9e653..cbdfc253 100644 --- a/provider/mediaconvert/h264.go +++ b/provider/mediaconvert/h264.go @@ -42,6 +42,36 @@ func h264CodecSettingsFrom(preset db.Preset) (*mediaconvert.VideoCodecSettings, tuning = mediaconvert.H264QualityTuningLevelMultiPassHq } + if rateControl == mediaconvert.H264RateControlModeQvbr { + var qvbrLevel int64 = 9 + height, err := strconv.Atoi(preset.Video.Height) + if err == nil { + if height <= 720 { + qvbrLevel = 8 + } + if height <= 540 { + qvbrLevel = 7 + } + } + return &mediaconvert.VideoCodecSettings{ + Codec: mediaconvert.VideoCodecH264, + H264Settings: &mediaconvert.H264Settings{ + // MaxBitrate: aws.Int64(bitrate), + GopSize: aws.Float64(gopSize), + GopSizeUnits: gopUnit, + RateControlMode: rateControl, + QvbrSettings: &mediaconvert.H264QvbrSettings{ + MaxAverageBitrate: aws.Int64(bitrate), + QvbrQualityLevel: aws.Int64(qvbrLevel), + }, + CodecProfile: profile, + CodecLevel: mediaconvert.H264CodecLevelAuto, + InterlaceMode: mediaconvert.H264InterlaceModeProgressive, + QualityTuningLevel: mediaconvert.H264QualityTuningLevelMultiPassHq, + }, + }, nil + } + return &mediaconvert.VideoCodecSettings{ Codec: mediaconvert.VideoCodecH264, H264Settings: &mediaconvert.H264Settings{ @@ -74,9 +104,9 @@ func h264RateControlModeFrom(rateControl string) (mediaconvert.H264RateControlMo switch rateControl { case "vbr": return mediaconvert.H264RateControlModeVbr, nil - case "", "cbr": + case "cbr": return mediaconvert.H264RateControlModeCbr, nil - case "qvbr": + case "", "qvbr": return mediaconvert.H264RateControlModeQvbr, nil default: return "", fmt.Errorf("rate control mode %q is not supported with mediaconvert", rateControl) diff --git a/provider/mediaconvert/h265.go b/provider/mediaconvert/h265.go index ba80eb4f..65e7e44c 100644 --- a/provider/mediaconvert/h265.go +++ b/provider/mediaconvert/h265.go @@ -87,9 +87,9 @@ func h265RateControlModeFrom(rateControl string) (mediaconvert.H265RateControlMo switch rateControl { case "vbr": return mediaconvert.H265RateControlModeVbr, nil - case "", "cbr": + case "cbr": return mediaconvert.H265RateControlModeCbr, nil - case "qvbr": + case "", "qvbr": return mediaconvert.H265RateControlModeQvbr, nil default: return "", fmt.Errorf("rate control mode %q is not supported with mediaconvert", rateControl)