8
8
9
9
namespace libhelix {
10
10
11
- typedef void (*AACInfoCallback)(_AACFrameInfo &info);
12
- typedef void (*AACDataCallback)(_AACFrameInfo &info,short *pcm_buffer, size_t len);
11
+ typedef void (*AACInfoCallback)(_AACFrameInfo &info, void * caller );
12
+ typedef void (*AACDataCallback)(_AACFrameInfo &info,short *pcm_buffer, size_t len, void * caller );
13
13
14
14
/* *
15
15
* @brief A simple Arduino API for the libhelix AAC decoder. The data us provided with the help of write() calls.
@@ -22,9 +22,8 @@ class AACDecoderHelix : public CommonHelix {
22
22
AACDecoderHelix () = default ;
23
23
24
24
#ifdef ARDUINO
25
- AACDecoderHelix (Print &output, AACInfoCallback infoCallback= nullptr ){
25
+ AACDecoderHelix (Print &output){
26
26
this ->out = &output;
27
- this ->infoCallback = infoCallback;
28
27
}
29
28
#endif
30
29
AACDecoderHelix (AACDataCallback dataCallback){
@@ -35,9 +34,9 @@ class AACDecoderHelix : public CommonHelix {
35
34
end ();
36
35
}
37
36
38
-
39
- void setInfoCallback (AACInfoCallback cb){
37
+ void setInfoCallback (AACInfoCallback cb, void * caller=nullptr ){
40
38
this ->infoCallback = cb;
39
+ p_caller_info = caller;
41
40
}
42
41
43
42
void setDataCallback (AACDataCallback cb){
@@ -75,6 +74,8 @@ class AACDecoderHelix : public CommonHelix {
75
74
AACDataCallback pcmCallback = nullptr ;
76
75
AACInfoCallback infoCallback = nullptr ;
77
76
_AACFrameInfo aacFrameInfo;
77
+ void *p_caller_info = nullptr ;
78
+ void *p_caller_data = nullptr ;
78
79
79
80
// / Allocate the decoder
80
81
virtual void allocateDecoder () override {
@@ -140,11 +141,11 @@ class AACDecoderHelix : public CommonHelix {
140
141
// provide result
141
142
if (pcmCallback!=nullptr ){
142
143
// output via callback
143
- pcmCallback (info, pcm_buffer,info.outputSamps );
144
+ pcmCallback (info, pcm_buffer,info.outputSamps , p_caller_data );
144
145
} else {
145
146
// output to stream
146
147
if (info.sampRateOut !=aacFrameInfo.sampRateOut && infoCallback!=nullptr ){
147
- infoCallback (info);
148
+ infoCallback (info, p_caller_info );
148
149
}
149
150
#ifdef ARDUINO
150
151
int sampleSize = info.bitsPerSample / 8 ;
0 commit comments