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))
- Joose
_______________________________________________
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".