diff options
author | Jun Zhao | 2020-07-26 10:43:10 +0800 |
---|---|---|
committer | Jun Zhao | 2020-08-20 15:06:14 +0800 |
commit | d5abb11738a3897681f5e1205659e0054180efe4 (patch) | |
tree | ef8be79dee4141b837a58819418343bb1582479f | |
parent | c0aa3dfaa8ecdb85d735edef8b6b741fa074d44d (diff) |
lavc/libkvazaar: export encoded frame stats
Export choosen pict_type and qp.
Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
-rw-r--r-- | libavcodec/libkvazaar.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/libavcodec/libkvazaar.c b/libavcodec/libkvazaar.c index 71c9c8f77c..9032547678 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; } |