diff options
author | Lucas Cooper <bobobo@google.com> | 2016-03-07 15:47:56 -0800 |
---|---|---|
committer | Timo Rothenpieler <timo@rothenpieler.org> | 2016-03-08 10:41:07 +0100 |
commit | fd55470c657ffd7cd5ac00a53ecd3224aa99d83b (patch) | |
tree | 96f278a81270ef384e9710ddb19f6794e43c2c44 /libavcodec/nvenc.c | |
parent | 50615791ca8cc4e33bccc23a31438f446c00920b (diff) | |
download | ffmpeg-fd55470c657ffd7cd5ac00a53ecd3224aa99d83b.tar.gz |
avcodec/nvenc: Add encoder stats
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
Diffstat (limited to 'libavcodec/nvenc.c')
-rw-r--r-- | libavcodec/nvenc.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/libavcodec/nvenc.c b/libavcodec/nvenc.c index 5d78930848..c001c9ea78 100644 --- a/libavcodec/nvenc.c +++ b/libavcodec/nvenc.c @@ -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); |