e5c3c0ad8a
The player now owns the effective mode (config or override) and passes it down: spotify_apply(enable) and hls_set_url(url) instead of both reading source.mode from the config. /api/player/source forces spotify|hls|off (config returns to the saved mode), /api/player/url plays an m3u8 now; neither is saved. GET reports it in `forced`. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
24 lines
878 B
C
24 lines
878 B
C
// HLS client: playlists, variant choice, live segment loop. Segment bytes go to a sink callback.
|
|
#pragma once
|
|
|
|
#include <stdbool.h>
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
|
|
#include "esp_err.h"
|
|
|
|
// Receives segment data in chunks (MPEG-TS etc.). Return false to abort the segment.
|
|
typedef bool (*hls_sink_t)(const uint8_t *data, size_t len, bool segment_start);
|
|
|
|
#define HLS_URL_MAX 384
|
|
|
|
esp_err_t hls_start(hls_sink_t sink);
|
|
// The playlist URL to play ("" = none). A different URL restarts fetching with it.
|
|
void hls_set_url(const char *url);
|
|
// Stop fetching (current download is abandoned) until resumed. Reasons are independent:
|
|
// fetching runs only when no reason holds it.
|
|
#define HLS_SUSPEND_OTA (1 << 0)
|
|
#define HLS_SUSPEND_FAILOVER (1 << 1)
|
|
#define HLS_SUSPEND_USER (1 << 2) // paused via the player API
|
|
void hls_suspend(unsigned reason, bool suspend);
|