Compare commits

..

5 Commits

Author SHA1 Message Date
philippe44
58840f894f Merge branch 'master-v4.3' of https://github.com/sle118/squeezelite-esp32 into master-v4.3 2024-01-02 00:44:20 -08:00
philippe44
94109ebf38 fix copy typo - release 2024-01-02 00:43:32 -08:00
github-actions
fc20618fa2 Update prebuilt objects [skip actions] 2024-01-02 08:37:41 +00:00
philippe44
70720d3445 don't allocate segments - release 2024-01-02 00:35:47 -08:00
github-actions
4abe1304e8 Update prebuilt objects [skip actions] 2024-01-01 02:54:46 +00:00
24 changed files with 36 additions and 29 deletions

View File

@@ -1,3 +1,7 @@
2024-01-01
- ogg stream are parsed to foward metadata to LMS
- fix some ogg parsing on multi-stream containers
2023-11-19 2023-11-19
- more robust (?) airplay RTP frame recovery - more robust (?) airplay RTP frame recovery
- initialize of scratch string in monitor (trying to figure out random reboot) - initialize of scratch string in monitor (trying to figure out random reboot)

View File

@@ -227,6 +227,7 @@ static int read_opus_header(void) {
} else if (u->status == OGG_COMMENT_HEADER) { } else if (u->status == OGG_COMMENT_HEADER) {
// don't consume VorbisComment which could be a huge packet, just skip it // don't consume VorbisComment which could be a huge packet, just skip it
if (!OG(&go, page_packets, &u->page)) continue; if (!OG(&go, page_packets, &u->page)) continue;
LOG_INFO("comment skipped successfully");
done = 1; done = 1;
} }
} }

View File

@@ -583,7 +583,7 @@ struct streamstate {
struct { struct {
enum { STREAM_OGG_OFF, STREAM_OGG_SYNC, STREAM_OGG_HEADER, STREAM_OGG_SEGMENTS, STREAM_OGG_PAGE } state; enum { STREAM_OGG_OFF, STREAM_OGG_SYNC, STREAM_OGG_HEADER, STREAM_OGG_SEGMENTS, STREAM_OGG_PAGE } state;
u32_t want, miss, match; u32_t want, miss, match;
u8_t* data; u8_t* data, segments[255];
#pragma pack(push, 1) #pragma pack(push, 1)
struct { struct {
char pattern[4]; char pattern[4];

View File

@@ -59,7 +59,7 @@ is enough and much faster than a mutex
static bool polling; static bool polling;
static sockfd fd; static sockfd fd;
struct streamstate stream; struct EXT_RAM_ATTR streamstate stream;
#if USE_SSL #if USE_SSL
static SSL_CTX *SSLctx; static SSL_CTX *SSLctx;
@@ -148,7 +148,7 @@ static bool running = true;
static void _disconnect(stream_state state, disconnect_code disconnect) { static void _disconnect(stream_state state, disconnect_code disconnect) {
stream.state = state; stream.state = state;
stream.disconnect = disconnect; stream.disconnect = disconnect;
if (stream.ogg.state == STREAM_OGG_HEADER && stream.ogg.data) free(stream.ogg.data); if (stream.ogg.state == STREAM_OGG_PAGE && stream.ogg.data) free(stream.ogg.data);
stream.ogg.data = NULL; stream.ogg.data = NULL;
#if USE_SSL #if USE_SSL
if (ssl) { if (ssl) {
@@ -205,7 +205,7 @@ static void stream_ogg(size_t n) {
case STREAM_OGG_HEADER: case STREAM_OGG_HEADER:
if (!memcmp(stream.ogg.header.pattern, "OggS", 4)) { if (!memcmp(stream.ogg.header.pattern, "OggS", 4)) {
stream.ogg.miss = stream.ogg.want = stream.ogg.header.count; stream.ogg.miss = stream.ogg.want = stream.ogg.header.count;
stream.ogg.data = malloc(stream.ogg.miss); stream.ogg.data = stream.ogg.segments;
stream.ogg.state = STREAM_OGG_SEGMENTS; stream.ogg.state = STREAM_OGG_SEGMENTS;
} else { } else {
stream.ogg.state = STREAM_OGG_SYNC; stream.ogg.state = STREAM_OGG_SYNC;
@@ -220,11 +220,10 @@ static void stream_ogg(size_t n) {
if (stream.ogg.header.granule == 0) { if (stream.ogg.header.granule == 0) {
// granule 0 means a new stream, so let's look into it // granule 0 means a new stream, so let's look into it
stream.ogg.state = STREAM_OGG_PAGE; stream.ogg.state = STREAM_OGG_PAGE;
stream.ogg.data = realloc(stream.ogg.data, stream.ogg.want); stream.ogg.data = malloc(stream.ogg.want);
} else { } else {
// otherwise, jump over data // otherwise, jump over data
stream.ogg.state = STREAM_OGG_SYNC; stream.ogg.state = STREAM_OGG_SYNC;
free(stream.ogg.data);
stream.ogg.data = NULL; stream.ogg.data = NULL;
} }
break; break;
@@ -262,7 +261,7 @@ static void stream_ogg(size_t n) {
stream.meta_send = true; stream.meta_send = true;
wake_controller(); wake_controller();
LOG_INFO("Ogg meta len: %u", stream.header_len); LOG_INFO("Ogg metadata length: %u", stream.header_len - 3);
break; break;
} }
free(stream.ogg.data); free(stream.ogg.data);
@@ -726,7 +725,7 @@ bool stream_disconnect(void) {
disc = true; disc = true;
} }
stream.state = STOPPED; stream.state = STOPPED;
if (stream.ogg.state == STREAM_OGG_HEADER && stream.ogg.data) free(stream.ogg.data); if (stream.ogg.state == STREAM_OGG_PAGE && stream.ogg.data) free(stream.ogg.data);
stream.ogg.data = NULL; stream.ogg.data = NULL;
UNLOCK; UNLOCK;
return disc; return disc;

View File

@@ -242,7 +242,7 @@ static int read_vorbis_header(void) {
OV(&gv, comment_init, &v->comment); OV(&gv, comment_init, &v->comment);
v->comment.vendor = "N/A"; v->comment.vendor = "N/A";
fetch = true; fetch = true;
LOG_INFO("comment skipped succesfully"); LOG_INFO("comment skipped successfully");
// because of lack of page alignment, we might have the setup page already fully in // because of lack of page alignment, we might have the setup page already fully in
if (packets == 1) continue; if (packets == 1) continue;

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

View File

@@ -72,6 +72,8 @@ declare function getStatus(): {};
declare function getStatus(): {}; declare function getStatus(): {};
declare function getStatus(): {}; declare function getStatus(): {};
declare function getStatus(): {}; declare function getStatus(): {};
declare function getStatus(): {};
declare function getRadioButton(entry: any): string;
declare function getRadioButton(entry: any): string; declare function getRadioButton(entry: any): string;
declare function getRadioButton(entry: any): string; declare function getRadioButton(entry: any): string;
declare function getRadioButton(entry: any): string; declare function getRadioButton(entry: any): string;
@@ -220,6 +222,7 @@ declare function pushStatus(): void;
declare function pushStatus(): void; declare function pushStatus(): void;
declare function pushStatus(): void; declare function pushStatus(): void;
declare function pushStatus(): void; declare function pushStatus(): void;
declare function pushStatus(): void;
declare let sd: {}; declare let sd: {};
declare let rf: boolean; declare let rf: boolean;
declare function refreshStatus(): void; declare function refreshStatus(): void;

View File

@@ -1,5 +1,5 @@
target_add_binary_data( __idf_wifi-manager webapp/dist/css/index.4bbe29a78a667faa2b6f.css.gz BINARY) target_add_binary_data( __idf_wifi-manager webapp/dist/css/index.4bbe29a78a667faa2b6f.css.gz BINARY)
target_add_binary_data( __idf_wifi-manager webapp/dist/favicon-32x32.png BINARY) target_add_binary_data( __idf_wifi-manager webapp/dist/favicon-32x32.png BINARY)
target_add_binary_data( __idf_wifi-manager webapp/dist/index.html.gz BINARY) target_add_binary_data( __idf_wifi-manager webapp/dist/index.html.gz BINARY)
target_add_binary_data( __idf_wifi-manager webapp/dist/js/index.4cb8fa.bundle.js.gz BINARY) target_add_binary_data( __idf_wifi-manager webapp/dist/js/index.105fd5.bundle.js.gz BINARY)
target_add_binary_data( __idf_wifi-manager webapp/dist/js/node_vendors.4cb8fa.bundle.js.gz BINARY) target_add_binary_data( __idf_wifi-manager webapp/dist/js/node_vendors.105fd5.bundle.js.gz BINARY)

View File

@@ -6,29 +6,29 @@ extern const uint8_t _favicon_32x32_png_start[] asm("_binary_favicon_32x32_png_s
extern const uint8_t _favicon_32x32_png_end[] asm("_binary_favicon_32x32_png_end"); extern const uint8_t _favicon_32x32_png_end[] asm("_binary_favicon_32x32_png_end");
extern const uint8_t _index_html_gz_start[] asm("_binary_index_html_gz_start"); extern const uint8_t _index_html_gz_start[] asm("_binary_index_html_gz_start");
extern const uint8_t _index_html_gz_end[] asm("_binary_index_html_gz_end"); extern const uint8_t _index_html_gz_end[] asm("_binary_index_html_gz_end");
extern const uint8_t _index_4cb8fa_bundle_js_gz_start[] asm("_binary_index_4cb8fa_bundle_js_gz_start"); extern const uint8_t _index_105fd5_bundle_js_gz_start[] asm("_binary_index_105fd5_bundle_js_gz_start");
extern const uint8_t _index_4cb8fa_bundle_js_gz_end[] asm("_binary_index_4cb8fa_bundle_js_gz_end"); extern const uint8_t _index_105fd5_bundle_js_gz_end[] asm("_binary_index_105fd5_bundle_js_gz_end");
extern const uint8_t _node_vendors_4cb8fa_bundle_js_gz_start[] asm("_binary_node_vendors_4cb8fa_bundle_js_gz_start"); extern const uint8_t _node_vendors_105fd5_bundle_js_gz_start[] asm("_binary_node_vendors_105fd5_bundle_js_gz_start");
extern const uint8_t _node_vendors_4cb8fa_bundle_js_gz_end[] asm("_binary_node_vendors_4cb8fa_bundle_js_gz_end"); extern const uint8_t _node_vendors_105fd5_bundle_js_gz_end[] asm("_binary_node_vendors_105fd5_bundle_js_gz_end");
const char * resource_lookups[] = { const char * resource_lookups[] = {
"/css/index.4bbe29a78a667faa2b6f.css.gz", "/css/index.4bbe29a78a667faa2b6f.css.gz",
"/favicon-32x32.png", "/favicon-32x32.png",
"/index.html.gz", "/index.html.gz",
"/js/index.4cb8fa.bundle.js.gz", "/js/index.105fd5.bundle.js.gz",
"/js/node_vendors.4cb8fa.bundle.js.gz", "/js/node_vendors.105fd5.bundle.js.gz",
"" ""
}; };
const uint8_t * resource_map_start[] = { const uint8_t * resource_map_start[] = {
_index_4bbe29a78a667faa2b6f_css_gz_start, _index_4bbe29a78a667faa2b6f_css_gz_start,
_favicon_32x32_png_start, _favicon_32x32_png_start,
_index_html_gz_start, _index_html_gz_start,
_index_4cb8fa_bundle_js_gz_start, _index_105fd5_bundle_js_gz_start,
_node_vendors_4cb8fa_bundle_js_gz_start _node_vendors_105fd5_bundle_js_gz_start
}; };
const uint8_t * resource_map_end[] = { const uint8_t * resource_map_end[] = {
_index_4bbe29a78a667faa2b6f_css_gz_end, _index_4bbe29a78a667faa2b6f_css_gz_end,
_favicon_32x32_png_end, _favicon_32x32_png_end,
_index_html_gz_end, _index_html_gz_end,
_index_4cb8fa_bundle_js_gz_end, _index_105fd5_bundle_js_gz_end,
_node_vendors_4cb8fa_bundle_js_gz_end _node_vendors_105fd5_bundle_js_gz_end
}; };

View File

@@ -1,6 +1,6 @@
/*********************************** /***********************************
webpack_headers webpack_headers
dist/css/index.4bbe29a78a667faa2b6f.css.gz,dist/favicon-32x32.png,dist/index.html.gz,dist/js/index.4cb8fa.bundle.js.gz,dist/js/node_vendors.4cb8fa.bundle.js.gz dist/css/index.4bbe29a78a667faa2b6f.css.gz,dist/favicon-32x32.png,dist/index.html.gz,dist/js/index.105fd5.bundle.js.gz,dist/js/node_vendors.105fd5.bundle.js.gz
***********************************/ ***********************************/
#pragma once #pragma once
#include <inttypes.h> #include <inttypes.h>

Binary file not shown.

Binary file not shown.

BIN
server_certs/r2m01.cer.42 Normal file

Binary file not shown.

BIN
server_certs/r2m01.cer.43 Normal file

Binary file not shown.