mirror of https://git.ffmpeg.org/ffmpeg.git
avcodec/nvenc: fix b frame settings
Reviewed-by: Timo Rothenpieler <timo@rothenpieler.org> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
6e69bf4a7e
commit
72c61c272c
|
@ -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…
Reference in New Issue