1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
From 5cf2b5fbf925412620e2a40552d6348203851cb3 Mon Sep 17 00:00:00 2001
From: pkviet <pkv.stream@gmail.com>
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 <fdk-aac/aacenc_lib.h>
-
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;
|