Browse Source

avcodec/nvenc: fix b frame settings

Reviewed-by: Timo Rothenpieler <timo@rothenpieler.org>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
tags/n2.6
agathah Michael Niedermayer 10 years ago
parent
commit
72c61c272c
1 changed files with 10 additions and 1 deletions
  1. +10
    -1
      libavcodec/nvenc.c

+ 10
- 1
libavcodec/nvenc.c View File

@@ -657,7 +657,12 @@ static av_cold int nvenc_encode_init(AVCodecContext *avctx)
}

if (ctx->gobpattern >= 0) {
ctx->encode_config.frameIntervalP = 1;
ctx->encode_config.frameIntervalP = ctx->gobpattern;
}

// when there're b frames, set dts offset
if (ctx->encode_config.frameIntervalP >= 2) {
ctx->last_dts = -2;
}

ctx->encode_config.encodeCodecConfig.h264Config.h264VUIParameters.colourDescriptionPresentFlag = 1;
@@ -905,6 +910,10 @@ static int process_output_surface(AVCodecContext *avctx, AVPacket *pkt, AVFrame
pkt->pts = lock_params.outputTimeStamp;
pkt->dts = timestamp_queue_dequeue(&ctx->timestamp_list);

// when there're b frame(s), set dts offset
if (ctx->encode_config.frameIntervalP >= 2)
pkt->dts -= 1;

if (pkt->dts > pkt->pts)
pkt->dts = pkt->pts;



Loading…
Cancel
Save