| 17 | struct AudioSourceProvider; |
| 18 | |
| 19 | class AudioHardwareDeviceNode : public AudioNode, public AudioDeviceRenderCallback |
| 20 | { |
| 21 | protected: |
| 22 | // AudioNode interface |
| 23 | virtual double tailTime(ContextRenderLock & r) const override { return 0; } |
| 24 | virtual double latencyTime(ContextRenderLock & r) const override { return 0; } |
| 25 | |
| 26 | AudioContext * m_context = nullptr; |
| 27 | |
| 28 | // Platform specific implementation |
| 29 | std::unique_ptr<AudioDevice> m_platformAudioDevice; |
| 30 | AudioHardwareInput * m_audioHardwareInput = nullptr; |
| 31 | SamplingInfo last_info = {}; |
| 32 | |
| 33 | const AudioStreamConfig outConfig = {}; |
| 34 | const AudioStreamConfig inConfig = {}; |
| 35 | |
| 36 | public: |
| 37 | AudioHardwareDeviceNode(AudioContext & context, |
| 38 | const AudioStreamConfig & outputConfig, const AudioStreamConfig & inputConfig); |
| 39 | virtual ~AudioHardwareDeviceNode(); |
| 40 | |
| 41 | static const char* static_name() { return "AudioHardwareDevice"; } |
| 42 | virtual const char* name() const override { return static_name(); } |
| 43 | static AudioNodeDescriptor * desc(); |
| 44 | |
| 45 | // AudioNode interface |
| 46 | // process should never be called |
| 47 | virtual void process(ContextRenderLock &, int bufferSize) override {} |
| 48 | virtual void reset(ContextRenderLock &) override; |
| 49 | virtual void initialize() override; |
| 50 | virtual void uninitialize() override; |
| 51 | |
| 52 | virtual void backendReinitialize(); |
| 53 | |
| 54 | // AudioDeviceRenderCallback interface |
| 55 | virtual void render(AudioBus * src, AudioBus * dst, int frames, const SamplingInfo & info) override; |
| 56 | virtual void start() override; |
| 57 | virtual void stop() override; |
| 58 | virtual bool isRunning() const override; |
| 59 | virtual const SamplingInfo & getSamplingInfo() const override; |
| 60 | virtual const AudioStreamConfig & getOutputConfig() const override; |
| 61 | virtual const AudioStreamConfig & getInputConfig() const override; |
| 62 | |
| 63 | AudioSourceProvider * AudioHardwareInputProvider(); |
| 64 | }; |
| 65 | |
| 66 | } // namespace lab |
| 67 |
nothing calls this directly
no outgoing calls
no test coverage detected