mirror of
https://github.com/sle118/squeezelite-esp32.git
synced 2026-03-19 21:09:27 +00:00
Compare commits
10 Commits
I2S-4MFlas
...
I2S-4MFlas
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3b9e50ada7 | ||
|
|
78a16e41dc | ||
|
|
2bc4a8c807 | ||
|
|
c521fba4a6 | ||
|
|
174942f509 | ||
|
|
9bf7b250e0 | ||
|
|
32c2a4d68a | ||
|
|
64f96c68dc | ||
|
|
9807bf5476 | ||
|
|
5a630887c4 |
2
.github/workflows/CrossBuild.yml
vendored
2
.github/workflows/CrossBuild.yml
vendored
@@ -80,7 +80,7 @@ jobs:
|
||||
run: |
|
||||
env | grep "artifact\|tag\|GITHUB\|version\|NUMBER\|TARGET" >${TARGET_BUILD_NAME}-env.txt
|
||||
echo "${tag}" >version.txt
|
||||
docker run --env-file=${TARGET_BUILD_NAME}-env.txt --rm -v $PWD:/project -w /project sle118/squeezelite-esp32:release-v4.0 /bin/bash -c "cp build-scripts/${TARGET_BUILD_NAME}-sdkconfig.defaults sdkconfig && idf.py build && zip -r build_output.zip build && zip build/${artifact_file_name} partitions*.csv build/*.bin build/bootloader/bootloader.bin build/partition_table/partition-table.bin build/flash_project_args build/size_*.txt"
|
||||
docker run --env-file=${TARGET_BUILD_NAME}-env.txt --rm -v $PWD:/project -w /project sle118/idf:release-v4.0 /bin/bash -c "cp build-scripts/${TARGET_BUILD_NAME}-sdkconfig.defaults sdkconfig && idf.py build && zip -r build_output.zip build && zip build/${artifact_file_name} partitions*.csv build/*.bin build/bootloader/bootloader.bin build/partition_table/partition-table.bin build/flash_project_args build/size_*.txt"
|
||||
# - name: Build Mock firmware
|
||||
# run: |
|
||||
# mkdir -p build
|
||||
|
||||
@@ -458,7 +458,6 @@ CONFIG_LWIP_SO_REUSE_RXTOALL=y
|
||||
#CONFIG_LWIP_IP_REASSEMBLY is not set
|
||||
CONFIG_LWIP_IP6_REASSEMBLY=Y
|
||||
CONFIG_LWIP_IP4_REASSEMBLY=Y
|
||||
|
||||
CONFIG_LWIP_ESP_GRATUITOUS_ARP=y
|
||||
CONFIG_LWIP_GARP_TMR_INTERVAL=60
|
||||
CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32
|
||||
|
||||
@@ -19,7 +19,7 @@ extern "C" {
|
||||
|
||||
struct alac_codec_s *alac_create_decoder(int magic_cookie_size, unsigned char *magic_cookie,
|
||||
unsigned char *sample_size, unsigned *sample_rate,
|
||||
unsigned char *channels);
|
||||
unsigned char *channels, unsigned int *block_size);
|
||||
void alac_delete_decoder(struct alac_codec_s *codec);
|
||||
bool alac_to_pcm(struct alac_codec_s *codec, unsigned char* input,
|
||||
unsigned char *output, char channels, unsigned *out_frames);
|
||||
|
||||
Binary file not shown.
@@ -168,7 +168,7 @@ static void rtp_thread_func(void *arg);
|
||||
#endif
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static struct alac_codec_s* alac_init(int fmtp[32]) {
|
||||
static struct alac_codec_s* alac_init(int fmtp[32]) {
|
||||
struct alac_codec_s *alac;
|
||||
unsigned sample_rate, block_size;
|
||||
unsigned char sample_size, channels;
|
||||
@@ -196,7 +196,7 @@ static struct alac_codec_s* alac_init(int fmtp[32]) {
|
||||
config.maxRun = htons(fmtp[8]);
|
||||
config.maxFrameBytes = htonl(fmtp[9]);
|
||||
config.avgBitRate = htonl(fmtp[10]);
|
||||
config.sampleRate = htonl(fmtp[11]);
|
||||
config.sampleRate = htonl(fmtp[11]);
|
||||
|
||||
alac = alac_create_decoder(sizeof(config), (unsigned char*) &config, &sample_size, &sample_rate, &channels, &block_size);
|
||||
if (!alac) {
|
||||
|
||||
@@ -119,8 +119,15 @@ static int read_mp4_header(void) {
|
||||
// extract audio config from within alac
|
||||
if (!strcmp(type, "alac") && bytes > len) {
|
||||
u8_t *ptr = streambuf->readp + 36;
|
||||
l->decoder = alac_create_decoder(len - 36, ptr, &l->sample_size, &l->sample_rate, &l->channels);
|
||||
l->play = l->trak;
|
||||
unsigned int block_size;
|
||||
l->play = l->trak;
|
||||
l->decoder = alac_create_decoder(len - 36, ptr, &l->sample_size, &l->sample_rate, &l->channels, &block_size);
|
||||
l->writebuf = malloc(block_size + 256);
|
||||
LOG_INFO("allocated write buffer of %u bytes", block_size);
|
||||
if (!l->writebuf) {
|
||||
LOG_ERROR("allocation failed");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
// extract the total number of samples from stts
|
||||
@@ -374,10 +381,9 @@ static decode_state alac_decode(void) {
|
||||
|
||||
// need to create a buffer with contiguous data
|
||||
if (bytes < block_size) {
|
||||
u8_t *buffer = malloc(block_size);
|
||||
memcpy(buffer, streambuf->readp, bytes);
|
||||
memcpy(buffer + bytes, streambuf->buf, block_size - bytes);
|
||||
iptr = buffer;
|
||||
iptr = malloc(block_size);
|
||||
memcpy(iptr, streambuf->readp, bytes);
|
||||
memcpy(iptr + bytes, streambuf->buf, block_size - bytes);
|
||||
} else iptr = streambuf->readp;
|
||||
|
||||
if (!alac_to_pcm(l->decoder, iptr, l->writebuf, 2, &frames)) {
|
||||
@@ -472,6 +478,7 @@ static decode_state alac_decode(void) {
|
||||
}
|
||||
} else if (l->sample_size == 16) {
|
||||
u16_t *_iptr = (u16_t*) iptr;
|
||||
iptr += count * 4;
|
||||
while (count--) {
|
||||
*optr++ = ALIGN16(*_iptr++);
|
||||
*optr++ = ALIGN16(*_iptr++);
|
||||
@@ -484,6 +491,7 @@ static decode_state alac_decode(void) {
|
||||
}
|
||||
} else if (l->sample_size == 32) {
|
||||
u32_t *_iptr = (u32_t*) iptr;
|
||||
iptr += count * 8;
|
||||
while (count--) {
|
||||
*optr++ = ALIGN32(*_iptr++);
|
||||
*optr++ = ALIGN32(*_iptr++);
|
||||
@@ -509,27 +517,17 @@ static decode_state alac_decode(void) {
|
||||
return DECODE_RUNNING;
|
||||
}
|
||||
|
||||
static void alac_open(u8_t size, u8_t rate, u8_t chan, u8_t endianness) {
|
||||
if (l->decoder) alac_delete_decoder(l->decoder);
|
||||
else l->writebuf = malloc(BLOCK_SIZE * 2);
|
||||
|
||||
if (l->chunkinfo) free(l->chunkinfo);
|
||||
if (l->block_size) free(l->block_size);
|
||||
if (l->stsc) free(l->stsc);
|
||||
l->decoder = l->chunkinfo = l->stsc = l->block_size = NULL;
|
||||
l->skip = 0;
|
||||
l->samples = l->sttssamples = 0;
|
||||
l->empty = false;
|
||||
l->pos = l->consume = l->sample = l->nextchunk = 0;
|
||||
}
|
||||
|
||||
static void alac_close(void) {
|
||||
if (l->decoder) alac_delete_decoder(l->decoder);
|
||||
if (l->writebuf) free(l->writebuf);
|
||||
if (l->chunkinfo) free(l->chunkinfo);
|
||||
if (l->block_size) free(l->block_size);
|
||||
if (l->stsc) free(l->stsc);
|
||||
l->decoder = l->chunkinfo = l->stsc = l->block_size = NULL;
|
||||
free(l->writebuf);
|
||||
memset(l, 0, sizeof(struct alac));
|
||||
}
|
||||
|
||||
static void alac_open(u8_t size, u8_t rate, u8_t chan, u8_t endianness) {
|
||||
alac_close();
|
||||
}
|
||||
|
||||
struct codec *register_alac(void) {
|
||||
@@ -543,13 +541,9 @@ struct codec *register_alac(void) {
|
||||
alac_decode, // decode
|
||||
};
|
||||
|
||||
l = malloc(sizeof(struct alac));
|
||||
if (!l) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
l->decoder = l->chunkinfo = l->stsc = l->block_size = NULL;
|
||||
|
||||
l = calloc(1, sizeof(struct alac));
|
||||
if (!l) return NULL;
|
||||
|
||||
LOG_INFO("using alac to decode alc");
|
||||
return &ret;
|
||||
}
|
||||
|
||||
@@ -972,7 +972,7 @@ static void visu_update(void) {
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (displayer.width / 2 > 3 * VU_WIDTH / 4) {
|
||||
} else if (displayer.width / 2 >= 3 * VU_WIDTH / 4) {
|
||||
if (visu.rotate) {
|
||||
draw_VU(display, vu_bitmap, visu.bars[0].current, 0, visu.row, visu.height / 2, visu.rotate);
|
||||
draw_VU(display, vu_bitmap, visu.bars[1].current, 0, visu.row + visu.height / 2, visu.height / 2, visu.rotate);
|
||||
|
||||
@@ -204,7 +204,7 @@ static decode_state pcm_decode(void) {
|
||||
out = process.max_in_frames;
|
||||
);
|
||||
|
||||
if ((stream.state <= DISCONNECT && bytes == 0) || (limit && audio_left == 0)) {
|
||||
if ((stream.state <= DISCONNECT && bytes < bytes_per_frame) || (limit && audio_left == 0)) {
|
||||
UNLOCK_O_direct;
|
||||
UNLOCK_S;
|
||||
return DECODE_COMPLETE;
|
||||
|
||||
Reference in New Issue
Block a user