avcodec/nvenc: Add encoder stats
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
This commit is contained in:
parent
50615791ca
commit
fd55470c65
@ -1186,6 +1186,8 @@ static int process_output_surface(AVCodecContext *avctx, AVPacket *pkt, NvencOut
|
||||
NVENCSTATUS nv_status;
|
||||
int res = 0;
|
||||
|
||||
enum AVPictureType pict_type;
|
||||
|
||||
switch (avctx->codec->id) {
|
||||
case AV_CODEC_ID_H264:
|
||||
slice_mode_data = ctx->encode_config.encodeCodecConfig.h264Config.sliceModeData;
|
||||
@ -1230,28 +1232,33 @@ static int process_output_surface(AVCodecContext *avctx, AVPacket *pkt, NvencOut
|
||||
switch (lock_params.pictureType) {
|
||||
case NV_ENC_PIC_TYPE_IDR:
|
||||
pkt->flags |= AV_PKT_FLAG_KEY;
|
||||
#if FF_API_CODED_FRAME
|
||||
FF_DISABLE_DEPRECATION_WARNINGS
|
||||
case NV_ENC_PIC_TYPE_I:
|
||||
avctx->coded_frame->pict_type = AV_PICTURE_TYPE_I;
|
||||
pict_type = AV_PICTURE_TYPE_I;
|
||||
break;
|
||||
case NV_ENC_PIC_TYPE_P:
|
||||
avctx->coded_frame->pict_type = AV_PICTURE_TYPE_P;
|
||||
pict_type = AV_PICTURE_TYPE_P;
|
||||
break;
|
||||
case NV_ENC_PIC_TYPE_B:
|
||||
avctx->coded_frame->pict_type = AV_PICTURE_TYPE_B;
|
||||
pict_type = AV_PICTURE_TYPE_B;
|
||||
break;
|
||||
case NV_ENC_PIC_TYPE_BI:
|
||||
avctx->coded_frame->pict_type = AV_PICTURE_TYPE_BI;
|
||||
pict_type = AV_PICTURE_TYPE_BI;
|
||||
break;
|
||||
default:
|
||||
av_log(avctx, AV_LOG_ERROR, "Unknown picture type encountered, expect the output to be broken.\n");
|
||||
av_log(avctx, AV_LOG_ERROR, "Please report this error and include as much information on how to reproduce it as possible.\n");
|
||||
res = AVERROR_EXTERNAL;
|
||||
goto error;
|
||||
}
|
||||
|
||||
#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(pkt,
|
||||
(lock_params.frameAvgQP - 1) * FF_QP2LAMBDA, NULL, 0, pict_type);
|
||||
|
||||
pkt->pts = lock_params.outputTimeStamp;
|
||||
pkt->dts = timestamp_queue_dequeue(&ctx->timestamp_list);
|
||||
|
Loading…
Reference in New Issue
Block a user