Message ID | 20200408001341.65204-2-ryo.hirafuji@gmail.com |
---|---|
State | New |
Headers | show |
Series | [FFmpeg-devel,v4,1/2] libavcodec/libaomenc.c: Support gray input | expand |
Context | Check | Description |
---|---|---|
andriy/ffmpeg-patchwork | success | Make fate finished |
On Tue, Apr 7, 2020 at 5:14 PM Ryo Hirafuji <ryo.hirafuji@gmail.com> wrote: > > From: Ryo Hirafuji <psi@7io.org> > > AV1 support lossless encoding. > In this patch, I added a command line flag to enable it. > > Fixes ticket #7600 > --- > libavcodec/libaomenc.c | 14 +++++++++++--- > 1 file changed, 11 insertions(+), 3 deletions(-) > > [...] > @@ -574,7 +577,9 @@ static av_cold int aom_init(AVCodecContext *avctx, > if (avctx->rc_min_rate == avctx->rc_max_rate && > avctx->rc_min_rate == avctx->bit_rate && avctx->bit_rate) { > enccfg.rc_end_usage = AOM_CBR; > - } else if (ctx->crf >= 0) { > + } else if (ctx->crf == 0) { > + enccfg.rc_end_usage = AOM_Q; I saw the earlier comments around using crf=0 as the trigger for this. libaom will behave differently with q vs cq mode. This also differs from the -lossless in libvpxenc where this feature originated; mostly we've been mapping options one to one with vpx/aomenc. Let me ask around about the preference for lossless usage in libaom.
I see, Thanks. I'm looking forward to the answer. (If you are OK, please CC to me. I also would like to know about lossless mode in libaom, because I also use my software) 2020年4月15日(水) 10:00 James Zern <jzern-at-google.com@ffmpeg.org>: > On Tue, Apr 7, 2020 at 5:14 PM Ryo Hirafuji <ryo.hirafuji@gmail.com> > wrote: > > > > From: Ryo Hirafuji <psi@7io.org> > > > > AV1 support lossless encoding. > > In this patch, I added a command line flag to enable it. > > > > Fixes ticket #7600 > > --- > > libavcodec/libaomenc.c | 14 +++++++++++--- > > 1 file changed, 11 insertions(+), 3 deletions(-) > > > > [...] > > @@ -574,7 +577,9 @@ static av_cold int aom_init(AVCodecContext *avctx, > > if (avctx->rc_min_rate == avctx->rc_max_rate && > > avctx->rc_min_rate == avctx->bit_rate && avctx->bit_rate) { > > enccfg.rc_end_usage = AOM_CBR; > > - } else if (ctx->crf >= 0) { > > + } else if (ctx->crf == 0) { > > + enccfg.rc_end_usage = AOM_Q; > > I saw the earlier comments around using crf=0 as the trigger for this. > libaom will behave differently with q vs cq mode. This also differs > from the -lossless in libvpxenc where this feature originated; mostly > we've been mapping options one to one with vpx/aomenc. Let me ask > around about the preference for lossless usage in libaom. > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
On Fri, Apr 17, 2020 at 9:57 AM Ryo Hirafuji <ryo.hirafuji@link-u.co.jp> wrote: > > I see, Thanks. > I'm looking forward to the answer. > There is some benefit to using cq-level as many of the encoder decisions are based on this (reference frame structure, speed features, etc) and so it's better tuned than quality mode. In both cases the output is lossless so either will work, but given the structure of the options to the library it might make sense to match vp9 in libvpxenc.c and use cq-level. > (If you are OK, please CC to me. I also would like to know about lossless > mode in libaom, because I also use my software) > Sorry, I missed this comment. I don't have any results that would be visible publicly. > 2020年4月15日(水) 10:00 James Zern <jzern-at-google.com@ffmpeg.org>: > > > On Tue, Apr 7, 2020 at 5:14 PM Ryo Hirafuji <ryo.hirafuji@gmail.com> > > wrote: > > > > > > From: Ryo Hirafuji <psi@7io.org> > > > > > > AV1 support lossless encoding. > > > In this patch, I added a command line flag to enable it. > > > > > > Fixes ticket #7600 > > > --- > > > libavcodec/libaomenc.c | 14 +++++++++++--- > > > 1 file changed, 11 insertions(+), 3 deletions(-) > > > > > > [...] > > > @@ -574,7 +577,9 @@ static av_cold int aom_init(AVCodecContext *avctx, > > > if (avctx->rc_min_rate == avctx->rc_max_rate && > > > avctx->rc_min_rate == avctx->bit_rate && avctx->bit_rate) { > > > enccfg.rc_end_usage = AOM_CBR; > > > - } else if (ctx->crf >= 0) { > > > + } else if (ctx->crf == 0) { > > > + enccfg.rc_end_usage = AOM_Q; > > > > I saw the earlier comments around using crf=0 as the trigger for this. > > libaom will behave differently with q vs cq mode. This also differs > > from the -lossless in libvpxenc where this feature originated; mostly > > we've been mapping options one to one with vpx/aomenc. Let me ask > > around about the preference for lossless usage in libaom. > > _______________________________________________ > > ffmpeg-devel mailing list > > ffmpeg-devel@ffmpeg.org > > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > > > To unsubscribe, visit link above, or email > > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
Hi all - just wondering about the status of this. I was doing some tests with just -crf 0 with mixed results before I saw this thread. http://ffmpeg.org/pipermail/ffmpeg-user/2020-June/048885.html K
diff --git a/libavcodec/libaomenc.c b/libavcodec/libaomenc.c index ff79c0af9f..cc50ffc11b 100644 --- a/libavcodec/libaomenc.c +++ b/libavcodec/libaomenc.c @@ -130,6 +130,9 @@ static const char *const ctlidstr[] = { #endif #ifdef AOM_CTRL_AV1E_SET_ENABLE_INTRABC [AV1E_SET_ENABLE_INTRABC] = "AV1E_SET_ENABLE_INTRABC", +#endif +#ifdef AOM_CTRL_AV1E_SET_LOSSLESS + [AV1E_SET_LOSSLESS] = "AOM_CTRL_AV1E_SET_LOSSLESS", #endif [AV1E_SET_ENABLE_CDEF] = "AV1E_SET_ENABLE_CDEF", }; @@ -574,7 +577,9 @@ static av_cold int aom_init(AVCodecContext *avctx, if (avctx->rc_min_rate == avctx->rc_max_rate && avctx->rc_min_rate == avctx->bit_rate && avctx->bit_rate) { enccfg.rc_end_usage = AOM_CBR; - } else if (ctx->crf >= 0) { + } else if (ctx->crf == 0) { + enccfg.rc_end_usage = AOM_Q; + } else if (ctx->crf > 0) { enccfg.rc_end_usage = AOM_CQ; if (!avctx->bit_rate) enccfg.rc_end_usage = AOM_Q; @@ -704,9 +709,12 @@ static av_cold int aom_init(AVCodecContext *avctx, codecctl_int(avctx, AV1E_SET_ENABLE_RESTORATION, ctx->enable_restoration); codecctl_int(avctx, AOME_SET_STATIC_THRESHOLD, ctx->static_thresh); - if (ctx->crf >= 0) + if (ctx->crf >= 0) { codecctl_int(avctx, AOME_SET_CQ_LEVEL, ctx->crf); - +#ifdef AOM_CTRL_AV1E_SET_LOSSLESS + codecctl_int(avctx, AV1E_SET_LOSSLESS, ctx->crf == 0); +#endif + } codecctl_int(avctx, AV1E_SET_COLOR_PRIMARIES, avctx->color_primaries); codecctl_int(avctx, AV1E_SET_MATRIX_COEFFICIENTS, avctx->colorspace); codecctl_int(avctx, AV1E_SET_TRANSFER_CHARACTERISTICS, avctx->color_trc);
From: Ryo Hirafuji <psi@7io.org> AV1 support lossless encoding. In this patch, I added a command line flag to enable it. Fixes ticket #7600 --- libavcodec/libaomenc.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-)