88
99namespace libhelix {
1010
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 );
1313
1414/* *
1515 * @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 {
2222 AACDecoderHelix () = default ;
2323
2424#ifdef ARDUINO
25- AACDecoderHelix (Print &output, AACInfoCallback infoCallback= nullptr ){
25+ AACDecoderHelix (Print &output){
2626 this ->out = &output;
27- this ->infoCallback = infoCallback;
2827 }
2928#endif
3029 AACDecoderHelix (AACDataCallback dataCallback){
@@ -35,9 +34,9 @@ class AACDecoderHelix : public CommonHelix {
3534 end ();
3635 }
3736
38-
39- void setInfoCallback (AACInfoCallback cb){
37+ void setInfoCallback (AACInfoCallback cb, void * caller=nullptr ){
4038 this ->infoCallback = cb;
39+ p_caller_info = caller;
4140 }
4241
4342 void setDataCallback (AACDataCallback cb){
@@ -75,6 +74,8 @@ class AACDecoderHelix : public CommonHelix {
7574 AACDataCallback pcmCallback = nullptr ;
7675 AACInfoCallback infoCallback = nullptr ;
7776 _AACFrameInfo aacFrameInfo;
77+ void *p_caller_info = nullptr ;
78+ void *p_caller_data = nullptr ;
7879
7980 // / Allocate the decoder
8081 virtual void allocateDecoder () override {
@@ -140,11 +141,11 @@ class AACDecoderHelix : public CommonHelix {
140141 // provide result
141142 if (pcmCallback!=nullptr ){
142143 // output via callback
143- pcmCallback (info, pcm_buffer,info.outputSamps );
144+ pcmCallback (info, pcm_buffer,info.outputSamps , p_caller_data );
144145 } else {
145146 // output to stream
146147 if (info.sampRateOut !=aacFrameInfo.sampRateOut && infoCallback!=nullptr ){
147- infoCallback (info);
148+ infoCallback (info, p_caller_info );
148149 }
149150#ifdef ARDUINO
150151 int sampleSize = info.bitsPerSample / 8 ;
0 commit comments