From cfb01cfd589256b5ca7ae0acdb4faf0208b23180 Mon Sep 17 00:00:00 2001 From: mojyack Date: Tue, 31 Mar 2026 11:07:38 +0900 Subject: [PATCH] pcmbuf: remove pcmbuf_sampr Change-Id: I5da91acbf8a3e23446d38b9e62d4e1c67d41aba9 --- apps/codec_thread.c | 3 ++- apps/pcmbuf.c | 26 +++++++++----------------- apps/pcmbuf.h | 2 -- apps/playback.c | 4 ---- 4 files changed, 11 insertions(+), 24 deletions(-) diff --git a/apps/codec_thread.c b/apps/codec_thread.c index f3c95abdd3..2b109235c5 100644 --- a/apps/codec_thread.c +++ b/apps/codec_thread.c @@ -26,6 +26,7 @@ #include "kernel.h" #include "codecs.h" #include "codec_thread.h" +#include "pcm_mixer.h" #include "pcmbuf.h" #include "audio_thread.h" #include "playback.h" @@ -518,7 +519,7 @@ static void run_codec(void) codec_queue_ack(Q_CODEC_RUN); trigger_cpu_boost(); - dsp_configure(ci.dsp, DSP_SET_OUT_FREQUENCY, pcmbuf_get_frequency()); + dsp_configure(ci.dsp, DSP_SET_OUT_FREQUENCY, mixer_get_frequency()); if (!encoder) { diff --git a/apps/pcmbuf.c b/apps/pcmbuf.c index e9e05bc5c0..68b7e40602 100644 --- a/apps/pcmbuf.c +++ b/apps/pcmbuf.c @@ -69,17 +69,20 @@ chunks */ /* Return data level in 1/4-second increments */ -#define DATA_LEVEL(quarter_secs) (pcmbuf_sampr * (quarter_secs)) +static inline unsigned int data_level(int quarter_secs) +{ + return mixer_get_frequency() * quarter_secs; +} /* Number of bytes played per second */ -#define BYTERATE (pcmbuf_sampr * PCMBUF_SAMPLE_SIZE) +#define BYTERATE (mixer_get_frequency() * PCMBUF_SAMPLE_SIZE) #if MEMORYSIZE > 2 /* Keep watermark high for large memory target - at least (2s) */ #define PCMBUF_WATERMARK (BYTERATE * 2) #define MIN_BUFFER_SIZE (BYTERATE * 3) /* 1 seconds of buffer is low data */ -#define LOW_DATA DATA_LEVEL(4) +#define LOW_DATA data_level(4) #else #define PCMBUF_WATERMARK (BYTERATE / 4) /* 0.25 seconds */ #define MIN_BUFFER_SIZE (BYTERATE * 1) @@ -109,7 +112,6 @@ static size_t pcmbuf_size; static struct chunkdesc *pcmbuf_descriptors; static unsigned int pcmbuf_desc_count; static unsigned int position_key = 1; -static unsigned int pcmbuf_sampr = 0; static size_t chunk_ridx; static size_t chunk_widx; @@ -482,7 +484,7 @@ void * pcmbuf_request_buffer(int *count) if (low_latency_mode) { /* 1/4s latency. */ - if (remaining > DATA_LEVEL(1)) + if (remaining > data_level(1)) return NULL; } @@ -724,7 +726,7 @@ void pcmbuf_start_track_change(enum pcm_track_change_type type) else if (crossfade_setting != CROSSFADE_ENABLE_OFF) { if (crossfade_status == CROSSFADE_INACTIVE && - pcmbuf_unplayed_bytes() >= DATA_LEVEL(2) && + pcmbuf_unplayed_bytes() >= data_level(2) && !low_latency_mode) { switch (crossfade_setting) @@ -1151,7 +1153,7 @@ static void crossfade_start(void) size_t unplayed = pcmbuf_unplayed_bytes(); /* Reject crossfade if less than .5s of data */ - if (unplayed < DATA_LEVEL(2)) + if (unplayed < data_level(2)) { logf("crossfade rejected"); crossfade_cancel(); @@ -1447,13 +1449,3 @@ void pcmbuf_set_low_latency(bool state) { low_latency_mode = state; } - -void pcmbuf_update_frequency(void) -{ - pcmbuf_sampr = mixer_get_frequency(); -} - -unsigned int pcmbuf_get_frequency(void) -{ - return pcmbuf_sampr; -} diff --git a/apps/pcmbuf.h b/apps/pcmbuf.h index a9daed23cc..846a7d868f 100644 --- a/apps/pcmbuf.h +++ b/apps/pcmbuf.h @@ -80,7 +80,5 @@ void pcmbuf_sync_position_update(void); /* Misc */ bool pcmbuf_is_lowdata(void); void pcmbuf_set_low_latency(bool state); -void pcmbuf_update_frequency(void); -unsigned int pcmbuf_get_frequency(void); #endif /* PCMBUF_H */ diff --git a/apps/playback.c b/apps/playback.c index 1e21660fe6..eeb4aca86e 100644 --- a/apps/playback.c +++ b/apps/playback.c @@ -3036,7 +3036,6 @@ static void audio_start_playback(const struct audio_resume_info *resume_info, skip_resume_adjustments = id3_get(PLAYING_ID3)->skip_resume_adjustments; track_list_clear(TRACK_LIST_CLEAR_ALL); - pcmbuf_update_frequency(); } else { @@ -3049,7 +3048,6 @@ static void audio_start_playback(const struct audio_resume_info *resume_info, pcmbuf_start_track_change(TRACK_CHANGE_MANUAL); wipe_track_metadata(true); } - pcmbuf_update_frequency(); /* Set after track finish event in case skip was in progress */ skip_pending = TRACK_SKIP_NONE; @@ -3071,7 +3069,6 @@ static void audio_start_playback(const struct audio_resume_info *resume_info, #ifndef PLATFORM_HAS_VOLUME_CHANGE sound_set_volume(global_status.volume); #endif - pcmbuf_update_frequency(); /* Be sure channel is audible */ pcmbuf_fade(false, true); @@ -4315,7 +4312,6 @@ void INIT_ATTR playback_init(void) mutex_init(&id3_mutex); track_list_init(); buffering_init(); - pcmbuf_update_frequency(); #ifdef HAVE_CROSSFADE /* Set crossfade setting for next buffer init which should be about... */ pcmbuf_request_crossfade_enable(global_settings.crossfade);