mirror of
https://github.com/sle118/squeezelite-esp32.git
synced 2025-12-12 06:27:12 +03:00
move to new cspot
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
#include "AACDecoder.h"
|
||||
#include <iostream>
|
||||
|
||||
using namespace bell;
|
||||
|
||||
AACDecoder::AACDecoder() {
|
||||
aac = AACInitDecoder();
|
||||
pcmData = (int16_t*)malloc(AAC_MAX_NSAMPS * AAC_MAX_NCHANS * sizeof(int16_t));
|
||||
}
|
||||
|
||||
AACDecoder::~AACDecoder() {
|
||||
AACFreeDecoder(aac);
|
||||
free(pcmData);
|
||||
}
|
||||
|
||||
bool AACDecoder::setup(uint32_t sampleRate, uint8_t channelCount,
|
||||
uint8_t bitDepth) {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool AACDecoder::setup(AudioContainer* container) {
|
||||
return true;
|
||||
}
|
||||
|
||||
uint8_t* AACDecoder::decode(uint8_t* inData, uint32_t& inLen,
|
||||
uint32_t& outLen) {
|
||||
if (!inData)
|
||||
return nullptr;
|
||||
|
||||
int status = AACDecode(aac, static_cast<unsigned char**>(&inData),
|
||||
reinterpret_cast<int*>(&inLen),
|
||||
static_cast<short*>(this->pcmData));
|
||||
|
||||
AACGetLastFrameInfo(aac, &frame);
|
||||
if (status != ERR_AAC_NONE) {
|
||||
lastErrno = status;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (sampleRate != frame.sampRateOut) {
|
||||
this->sampleRate = frame.sampRateOut;
|
||||
}
|
||||
|
||||
if (channelCount != frame.nChans) {
|
||||
this->channelCount = frame.nChans;
|
||||
}
|
||||
|
||||
outLen = frame.outputSamps * sizeof(int16_t);
|
||||
return (uint8_t*)pcmData;
|
||||
}
|
||||
Reference in New Issue
Block a user