On Sun, Dec 17, 2023 at 1:51 PM Zhao Zhili <quinkbl...@foxmail.com> wrote: > > From: Zhao Zhili <zhiliz...@tencent.com> > > From AOSP doc, these values are device and codec specific, but lower > values generally result in more efficient (smaller-sized) encoding. > > For example, global_quality 50 on Pixel 6 results a 1080P 30 FPS > HEVC with 3744 kb/s, while global_quality 80 results 28178 kb/s. > > Fix #10689 > > Signed-off-by: Zhao Zhili <zhiliz...@tencent.com> > --- > libavcodec/mediacodecenc.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/libavcodec/mediacodecenc.c b/libavcodec/mediacodecenc.c > index a1ae5d5ec5..7eae542248 100644 > --- a/libavcodec/mediacodecenc.c > +++ b/libavcodec/mediacodecenc.c > @@ -268,8 +268,11 @@ static av_cold int mediacodec_init(AVCodecContext *avctx) > > if (avctx->bit_rate) > ff_AMediaFormat_setInt32(format, "bitrate", avctx->bit_rate); > - if (s->bitrate_mode >= 0) > + if (s->bitrate_mode >= 0) { > ff_AMediaFormat_setInt32(format, "bitrate-mode", s->bitrate_mode); > + if (s->bitrate_mode == BITRATE_MODE_CQ && avctx->global_quality > 0) > + ff_AMediaFormat_setInt32(format, "quality", > avctx->global_quality); > + } > // frame-rate and i-frame-interval are required to configure codec > if (avctx->framerate.num >= avctx->framerate.den && avctx->framerate.den > > 0) { > s->fps = avctx->framerate.num / avctx->framerate.den; > -- > 2.34.1 >
Does the `global_quality` value need to be checked/clamped against `MediaCodecInfo.EncoderCapabilities.getQualityRange()` before use ? Otherwise, LGTM. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".