I've rechecked documentation for the "vpx_codec_control" - can't find any guarantee about the last parameter when the function fails, thus prefer to be on the safe side. On Tue, Apr 5, 2022 at 3:59 PM James Almer wrote: > > On 4/5/2022 9:15 AM, Danil Chapovalov wrote: > > --- > > libavcodec/libvpxenc.c | 9 ++++++++- > > 1 file changed, 8 insertions(+), 1 deletion(-) > > > > diff --git a/libavcodec/libvpxenc.c b/libavcodec/libvpxenc.c > > index dff1d06b0e..0705863450 100644 > > --- a/libavcodec/libvpxenc.c > > +++ b/libavcodec/libvpxenc.c > > @@ -1250,6 +1250,8 @@ static int storeframe(AVCodecContext *avctx, struct FrameListData *cx_frame, > > int ret = ff_get_encode_buffer(avctx, pkt, cx_frame->sz, 0); > > uint8_t *side_data; > > int pict_type; > > + int quality; > > + VPxContext *ctx = avctx->priv_data; > > > > if (ret < 0) > > return ret; > > @@ -1264,7 +1266,12 @@ static int storeframe(AVCodecContext *avctx, struct FrameListData *cx_frame, > > pict_type = AV_PICTURE_TYPE_P; > > } > > > > - ff_side_data_set_encoder_stats(pkt, 0, cx_frame->sse + 1, > > + ret = vpx_codec_control(&ctx->encoder, VP8E_GET_LAST_QUANTIZER_64, &quality); > > + if (ret != VPX_CODEC_OK) { > > Is the last argument guaranteed to be untouched when the return value of > vpx_codec_control() is not VPX_CODEC_OK? If so, you can initialize > quality to 0 above, and remove this part. > > > + quality = 0; > > + } > > + > > + ff_side_data_set_encoder_stats(pkt, quality * FF_QP2LAMBDA, cx_frame->sse + 1, > > cx_frame->have_sse ? 3 : 0, pict_type); > > > > if (cx_frame->have_sse) { > _______________________________________________ > 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".