summaryrefslogtreecommitdiffstats
path: root/multimedia/obs-studio/libfdk-new-api.patch
blob: 73329cf8040cbad31d8ee67e3cfd79ed14f74e88 (plain)
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
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;