obs-ffmpeg: Align NVENC dts math

Multiply by number of bframes like FFmpeg does.
master
jpark37 2021-03-16 18:58:11 -07:00
parent 6ee7725c03
commit b150e4fd39
1 changed files with 3 additions and 4 deletions

View File

@ -50,7 +50,7 @@ struct nvenc_data {
bool encode_started; bool encode_started;
bool first_packet; bool first_packet;
bool can_change_bitrate; bool can_change_bitrate;
bool bframes; int32_t bframes;
DARRAY(struct nv_bitstream) bitstreams; DARRAY(struct nv_bitstream) bitstreams;
DARRAY(struct nv_texture) textures; DARRAY(struct nv_texture) textures;
@ -461,7 +461,7 @@ static bool init_encoder(struct nvenc_data *enc, obs_data_t *settings)
break; break;
} }
enc->bframes = bf > 0; enc->bframes = bf;
/* lookahead */ /* lookahead */
if (lookahead && nv_get_cap(enc, NV_ENC_CAPS_SUPPORT_LOOKAHEAD)) { if (lookahead && nv_get_cap(enc, NV_ENC_CAPS_SUPPORT_LOOKAHEAD)) {
@ -908,8 +908,7 @@ static bool nvenc_encode_tex(void *data, uint32_t handle, int64_t pts,
circlebuf_pop_front(&enc->dts_list, &dts, sizeof(dts)); circlebuf_pop_front(&enc->dts_list, &dts, sizeof(dts));
/* subtract bframe delay from dts */ /* subtract bframe delay from dts */
if (enc->bframes) dts -= (int64_t)enc->bframes * packet->timebase_num;
dts -= packet->timebase_num;
*received_packet = true; *received_packet = true;
packet->data = enc->packet_data.array; packet->data = enc->packet_data.array;