summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorailurux <ailuruxx@gmail.com>2024-02-16 10:57:47 +1100
committerailurux <ailuruxx@gmail.com>2024-02-16 10:57:47 +1100
commita49d754da6c293445be16ac643d10849c01ea96b (patch)
tree2a22d040d3b6f9dda88d2642144f342e09b31026
parent62f6179abe24339c2e5b7350528afbcad4c52067 (diff)
downloadtangara-fw-a49d754da6c293445be16ac643d10849c01ea96b.tar.gz
Seeking working with hardcoded event, wav only
-rw-r--r--src/audio/audio_decoder.cpp2
-rw-r--r--src/audio/audio_fsm.cpp4
-rw-r--r--src/codecs/wav.cpp8
3 files changed, 11 insertions, 3 deletions
diff --git a/src/audio/audio_decoder.cpp b/src/audio/audio_decoder.cpp
index 02cf27e3..eaa9ff9c 100644
--- a/src/audio/audio_decoder.cpp
+++ b/src/audio/audio_decoder.cpp
@@ -155,7 +155,7 @@ auto Decoder::BeginDecoding(std::shared_ptr<TaggedStream> stream) -> bool {
.bitrate_kbps = open_res->sample_rate_hz,
.encoding = stream->type(),
});
- timer_.reset(new Timer(tags, open_res.value()));
+ timer_.reset(new Timer(tags, open_res.value(), stream->Offset()));
// TODO: How does *this?* need to change?
PlaybackUpdate ev{.seconds_elapsed = stream->Offset(), .track = tags};
diff --git a/src/audio/audio_fsm.cpp b/src/audio/audio_fsm.cpp
index c67cfc7a..75e3c24a 100644
--- a/src/audio/audio_fsm.cpp
+++ b/src/audio/audio_fsm.cpp
@@ -244,11 +244,13 @@ void Uninitialised::react(const system_fsm::BootComplete& ev) {
}
void Standby::react(const PlayFile& ev) {
+ sCurrentTrack = 0;
+ sIsPlaybackAllowed = true;
sFileSource->SetPath(ev.filename, 10);
}
void Playback::react(const PlayFile& ev) {
- sFileSource->SetPath(ev.filename, 15);
+ sFileSource->SetPath(ev.filename, 10);
}
void Standby::react(const SeekFile& ev) {
diff --git a/src/codecs/wav.cpp b/src/codecs/wav.cpp
index 652f4f88..22cbd49c 100644
--- a/src/codecs/wav.cpp
+++ b/src/codecs/wav.cpp
@@ -199,7 +199,7 @@ auto WavDecoder::OpenStream(std::shared_ptr<IStream> input,uint32_t offset)
return cpp::fail(Error::kUnsupportedFormat);
}
- auto data_offset = offset * samples_per_second * bits_per_sample;
+ int64_t data_offset = offset * samples_per_second * bytes_per_sample_;
// Seek track to start of data
input->SeekTo(data_chunk_index + 8 + data_offset, IStream::SeekFrom::kStartOfStream);
@@ -218,6 +218,7 @@ auto WavDecoder::DecodeTo(cpp::span<sample::Sample> output)
buffer_.ConsumeBytes([&](cpp::span<std::byte> buf) -> size_t {
size_t bytes_read = buf.size_bytes();
+ ESP_LOGI(kTag, "Bytes read: %d", bytes_read);
size_t frames_read =
bytes_read / bytes_per_sample_ / output_format_.num_channels;
@@ -243,6 +244,11 @@ auto WavDecoder::DecodeTo(cpp::span<sample::Sample> output)
return samples_written * bytes_per_sample_;
});
+ ESP_LOGI(kTag, "Samples written %d", samples_written);
+ if (is_eof) {
+ ESP_LOGI(kTag, "EOF");
+ }
+
return OutputInfo{.samples_written = samples_written,
.is_stream_finished = samples_written == 0 && is_eof};
}