obs-ffmpeg: Align NVENC dts math
Multiply by number of bframes like FFmpeg does.master
parent
6ee7725c03
commit
b150e4fd39
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue