LCOV - code coverage report
Current view: top level - src/audio/recorder - i_recorder.h (source / functions) Coverage Total Hit
Test: merged.info Lines: 100.0 % 2 2
Test Date: 2026-06-07 15:51:50 Functions: 50.0 % 2 1

            Line data    Source code
       1              : #pragma once
       2              : 
       3              : #include <string>
       4              : 
       5              : namespace Amplitron {
       6              : 
       7              : class IAudioEngine;
       8              : 
       9              : /**
      10              :  * @brief Interface for audio recorder subsystem.
      11              :  * Satisfies the Dependency Inversion Principle (DIP).
      12              :  */
      13          300 : class IRecorder {
      14              :    public:
      15              :     static constexpr int WAVEFORM_SIZE = 512;
      16              : 
      17          889 :     virtual ~IRecorder() = default;
      18              : 
      19              :     // Start recording to a temporary WAV file
      20              :     virtual bool start(const std::string& filepath, int sample_rate, int channels = 1) = 0;
      21              : 
      22              :     // Stop recording and finalize the WAV file
      23              :     virtual void stop() = 0;
      24              : 
      25              :     // Pause / resume recording
      26              :     virtual void pause() = 0;
      27              :     virtual void resume() = 0;
      28              : 
      29              :     // Write audio samples (called from audio callback)
      30              :     virtual void write_samples(const float* buffer, int num_samples) = 0;
      31              :     virtual void write_samples_stereo(const float* left, const float* right, int num_samples) = 0;
      32              : 
      33              :     // Write metadata JSON sidecar file
      34              :     virtual void write_metadata(const std::string& wav_path, IAudioEngine& engine) = 0;
      35              : 
      36              :     // Move the recorded temp file to a user-chosen path
      37              :     virtual bool save_to(const std::string& dest_path) = 0;
      38              : 
      39              :     // Discard the recorded temp file
      40              :     virtual void discard() = 0;
      41              : 
      42              :     virtual bool is_recording() const = 0;
      43              :     virtual bool is_paused() const = 0;
      44              :     virtual bool has_unsaved() const = 0;
      45              :     virtual float get_duration() const = 0;
      46              :     virtual int64_t get_samples_written() const = 0;
      47              :     virtual int get_channels() const = 0;
      48              :     virtual const std::string& filepath() const = 0;
      49              : 
      50              :     // Waveform visualization data (lock-free ring buffer of peak values)
      51              :     virtual void get_waveform(float* out, int count) const = 0;
      52              :     virtual float get_current_peak() const = 0;
      53              : };
      54              : 
      55              : }  // namespace Amplitron
        

Generated by: LCOV version 2.0-1