On Tue, Aug 18, 2020 at 10:41 AM myp...@gmail.com <myp...@gmail.com> wrote: > > On Mon, Aug 17, 2020 at 7:08 PM Joose Sainio <joose.sai...@tuni.fi> wrote: > > > > On 7.8.2020 5.40, myp...@gmail.com wrote: > > > On Sun, Jul 26, 2020 at 8:45 PM Jun Zhao <mypopy...@gmail.com> wrote: > > >> From: Jun Zhao <barryjz...@tencent.com> > > >> > > >> Export choosen pict_type and qp. > > >> > > >> Signed-off-by: Jun Zhao <barryjz...@tencent.com> > > >> --- > > >> libavcodec/libkvazaar.c | 30 ++++++++++++++++++++++++++++++ > > >> 1 file changed, 30 insertions(+) > > >> > > >> diff --git a/libavcodec/libkvazaar.c b/libavcodec/libkvazaar.c > > >> index 71c9c8f..9032547 100644 > > >> --- a/libavcodec/libkvazaar.c > > >> +++ b/libavcodec/libkvazaar.c > > >> @@ -37,6 +37,7 @@ > > >> > > >> #include "avcodec.h" > > >> #include "internal.h" > > >> +#include "packet_internal.h" > > >> > > >> typedef struct LibkvazaarContext { > > >> const AVClass *class; > > >> @@ -170,6 +171,7 @@ static int libkvazaar_encode(AVCodecContext *avctx, > > >> kvz_data_chunk *data_out = NULL; > > >> uint32_t len_out = 0; > > >> int retval = 0; > > >> + int pict_type; > > >> > > >> *got_packet_ptr = 0; > > >> > > >> @@ -257,6 +259,34 @@ static int libkvazaar_encode(AVCodecContext *avctx, > > >> avpkt->flags |= AV_PKT_FLAG_KEY; > > >> } > > >> > > >> + switch (frame_info.slice_type) { > > >> + case KVZ_SLICE_I: > > >> + pict_type = AV_PICTURE_TYPE_I; > > >> + break; > > >> + case KVZ_SLICE_P: > > >> + pict_type = AV_PICTURE_TYPE_P; > > >> + break; > > >> + case KVZ_SLICE_B: > > >> + pict_type = AV_PICTURE_TYPE_B; > > >> + break; > > >> + default: > > >> + av_log(avctx, AV_LOG_ERROR, "Unknown picture type encountered.\n"); > > >> + return AVERROR_EXTERNAL; > > >> + } > > >> +#if FF_API_CODED_FRAME > > >> +FF_DISABLE_DEPRECATION_WARNINGS > > >> + avctx->coded_frame->pict_type = pict_type; > > >> +FF_ENABLE_DEPRECATION_WARNINGS > > >> +#endif > > >> + > > >> + ff_side_data_set_encoder_stats(avpkt, frame_info.qp * FF_QP2LAMBDA, > > >> NULL, 0, pict_type); > > >> + > > >> +#if FF_API_CODED_FRAME > > >> +FF_DISABLE_DEPRECATION_WARNINGS > > >> + avctx->coded_frame->quality = frame_info.qp * FF_QP2LAMBDA; > > >> +FF_ENABLE_DEPRECATION_WARNINGS > > >> +#endif > > >> + > > >> *got_packet_ptr = 1; > > >> } > > >> > > >> -- > > >> 2.7.4 > > >> > > > ping ? > > Sorry, I forgot I was subscribed to the list on the old organization > > so the message didn't go through originally. > > > > In terms of Kvazaar this seems ok but the QP to lambda conversion will > > result > > in vastly different lambda value than what Kvazaar would have used > > internally (and in fact the FF_QP2LAMBDA macro states it is for h.263). > > I can't comment whether this is problem on the ffmpeg side. > > > > The correct formula for hevc/h.265 would be > > lambda = 0.57 * pow(2.0, (qp - 12 / 3.0)) > This is the other issue, I think, will try to fix it. After grep and dig in the ff_side_data_set_encoder_stats, I think use frame_info.qp * FF_QP2LAMBDA (Avg frame QP as frame quality number with scale number FF_QP2LAMBDA ) is Ok in this case.
In fact, the function int ff_side_data_set_encoder_stats(AVPacket *pkt, int quality, int64_t *error, int error_count, int pict_type); we just give a inaccuracy quality number for encoded Frame and depend on the specific codec _______________________________________________ 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".