summaryrefslogtreecommitdiff
path: root/src/codecs/include/mad.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/codecs/include/mad.hpp')
-rw-r--r--src/codecs/include/mad.hpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/codecs/include/mad.hpp b/src/codecs/include/mad.hpp
index e28e32c8..60a0b81c 100644
--- a/src/codecs/include/mad.hpp
+++ b/src/codecs/include/mad.hpp
@@ -38,13 +38,14 @@ class MadMp3Decoder : public ICodec {
private:
auto SkipID3Tags(IStream& stream) -> std::optional<uint32_t>;
- struct VbrInfo {
+ struct Mp3Info {
+ uint16_t starting_sample;
uint32_t length;
std::optional<uint32_t> bytes;
std::optional<std::span<const unsigned char, 100>> toc;
};
- auto GetVbrInfo(const mad_header& header) -> std::optional<VbrInfo>;
+ auto GetMp3Info(const mad_header& header) -> std::optional<Mp3Info>;
auto GetBytesUsed() -> std::size_t;
@@ -55,7 +56,14 @@ class MadMp3Decoder : public ICodec {
std::unique_ptr<mad_frame> frame_;
std::unique_ptr<mad_synth> synth_;
- int current_sample_;
+ // Count of samples processed in the current frame (channels combined)
+ int current_frame_sample_;
+ // Count of samples processed in the current stream (channels separate, i.e. usually x2)
+ int current_stream_sample_;
+ // How many samples in the current stream (channels separate) with encoder delay/padding removed
+ int total_samples_;
+ // Encoder delay, i.e. how many samples to skip at the start of the stream
+ int skip_samples_;
bool is_eof_;
bool is_eos_;
};