From 5cf2b5fbf925412620e2a40552d6348203851cb3 Mon Sep 17 00:00:00 2001 From: pkviet Date: Thu, 29 Nov 2018 21:10:45 +0100 Subject: [PATCH] obs-libfdk: Compatibility fix for new API fdk-aac v2.0.0 (aacenc 4.0.0) changes the AACENC_InfoStruct: the encoderDelay parameter is replaced by two, nDelay and nDelayCore. This patch checks the lib version and adjust the parameter accordingly. --- plugins/obs-libfdk/obs-libfdk.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/plugins/obs-libfdk/obs-libfdk.c b/plugins/obs-libfdk/obs-libfdk.c index d6eb496184..94b139de57 100644 --- a/plugins/obs-libfdk/obs-libfdk.c +++ b/plugins/obs-libfdk/obs-libfdk.c @@ -9,7 +9,6 @@ #include - static const char *libfdk_get_error(AACENC_ERROR err) { switch(err) { @@ -224,7 +223,7 @@ static bool libfdk_encode(void *data, struct encoder_frame *frame, void *in_ptr; void *out_ptr; AACENC_ERROR err; - + int64_t encoderDelay; in_ptr = frame->data[0]; in_size = enc->frame_size_bytes; @@ -261,10 +260,13 @@ static bool libfdk_encode(void *data, struct encoder_frame *frame, } *received_packet = true; - - packet->pts = enc->total_samples - - enc->info.encoderDelay; // TODO: Just a guess, find out if that's actualy right - packet->dts = enc->total_samples - enc->info.encoderDelay; +#if (AACENCODER_LIB_VL0 >= 4) + encoderDelay= enc->info.nDelay; +#else + encoderDelay= enc->info.encoderDelay; +#endif + packet->pts = enc->total_samples - encoderDelay; + packet->dts = enc->total_samples - encoderDelay; packet->data = enc->packet_buffer; packet->size = out_args.numOutBytes; packet->type = OBS_ENCODER_AUDIO;