Commit fd55470c authored by Lucas Cooper's avatar Lucas Cooper Committed by Timo Rothenpieler

avcodec/nvenc: Add encoder stats

Signed-off-by: 's avatarTimo Rothenpieler <timo@rothenpieler.org>
parent 50615791
...@@ -1186,6 +1186,8 @@ static int process_output_surface(AVCodecContext *avctx, AVPacket *pkt, NvencOut ...@@ -1186,6 +1186,8 @@ static int process_output_surface(AVCodecContext *avctx, AVPacket *pkt, NvencOut
NVENCSTATUS nv_status; NVENCSTATUS nv_status;
int res = 0; int res = 0;
enum AVPictureType pict_type;
switch (avctx->codec->id) { switch (avctx->codec->id) {
case AV_CODEC_ID_H264: case AV_CODEC_ID_H264:
slice_mode_data = ctx->encode_config.encodeCodecConfig.h264Config.sliceModeData; slice_mode_data = ctx->encode_config.encodeCodecConfig.h264Config.sliceModeData;
...@@ -1230,28 +1232,33 @@ static int process_output_surface(AVCodecContext *avctx, AVPacket *pkt, NvencOut ...@@ -1230,28 +1232,33 @@ static int process_output_surface(AVCodecContext *avctx, AVPacket *pkt, NvencOut
switch (lock_params.pictureType) { switch (lock_params.pictureType) {
case NV_ENC_PIC_TYPE_IDR: case NV_ENC_PIC_TYPE_IDR:
pkt->flags |= AV_PKT_FLAG_KEY; pkt->flags |= AV_PKT_FLAG_KEY;
#if FF_API_CODED_FRAME
FF_DISABLE_DEPRECATION_WARNINGS
case NV_ENC_PIC_TYPE_I: case NV_ENC_PIC_TYPE_I:
avctx->coded_frame->pict_type = AV_PICTURE_TYPE_I; pict_type = AV_PICTURE_TYPE_I;
break; break;
case NV_ENC_PIC_TYPE_P: case NV_ENC_PIC_TYPE_P:
avctx->coded_frame->pict_type = AV_PICTURE_TYPE_P; pict_type = AV_PICTURE_TYPE_P;
break; break;
case NV_ENC_PIC_TYPE_B: case NV_ENC_PIC_TYPE_B:
avctx->coded_frame->pict_type = AV_PICTURE_TYPE_B; pict_type = AV_PICTURE_TYPE_B;
break; break;
case NV_ENC_PIC_TYPE_BI: case NV_ENC_PIC_TYPE_BI:
avctx->coded_frame->pict_type = AV_PICTURE_TYPE_BI; pict_type = AV_PICTURE_TYPE_BI;
break; break;
default: default:
av_log(avctx, AV_LOG_ERROR, "Unknown picture type encountered, expect the output to be broken.\n"); 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"); 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; res = AVERROR_EXTERNAL;
goto error; goto error;
}
#if FF_API_CODED_FRAME
FF_DISABLE_DEPRECATION_WARNINGS
avctx->coded_frame->pict_type = pict_type;
FF_ENABLE_DEPRECATION_WARNINGS FF_ENABLE_DEPRECATION_WARNINGS
#endif #endif
}
ff_side_data_set_encoder_stats(pkt,
(lock_params.frameAvgQP - 1) * FF_QP2LAMBDA, NULL, 0, pict_type);
pkt->pts = lock_params.outputTimeStamp; pkt->pts = lock_params.outputTimeStamp;
pkt->dts = timestamp_queue_dequeue(&ctx->timestamp_list); pkt->dts = timestamp_queue_dequeue(&ctx->timestamp_list);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment