MayaFlux 0.1.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches
FileBridgeBuffer.hpp
Go to the documentation of this file.
1#pragma once
2
5
6namespace MayaFlux::Kakshya {
7class SoundFileContainer;
8class DynamicSoundStream;
9}
10
11namespace MayaFlux::Buffers {
12
13class StreamWriteProcessor;
14class ContainerToBufferAdapter;
15
16/**
17 * @brief A processing chain that reads audio data from a sound file container and writes it to a dynamic sound stream.
18 *
19 * This chain is used to bridge a sound file container to a dynamic sound stream, allowing the audio data
20 * from the file to be processed and played back in real-time.
21 */
22class MAYAFLUX_API FileToStreamChain : public BufferProcessingChain {
23public:
24 FileToStreamChain(std::shared_ptr<Kakshya::SoundFileContainer> file_container,
25 std::shared_ptr<Kakshya::DynamicSoundStream> capture_stream,
26 uint32_t source_channel = 0);
27
28 inline std::shared_ptr<Kakshya::DynamicSoundStream> get_capture_stream() const
29 {
30 return m_capture_stream;
31 }
32
33 void attach_to_buffer(std::shared_ptr<Buffer> buffer);
34
35private:
36 void setup_processors();
37
38 std::shared_ptr<Kakshya::SoundFileContainer> m_file_container;
39 std::shared_ptr<Kakshya::DynamicSoundStream> m_capture_stream;
40 std::shared_ptr<ContainerToBufferAdapter> m_container_adapter;
41 std::shared_ptr<StreamWriteProcessor> m_stream_writer;
43};
44
45/**
46 * @brief A buffer processor that uses a FileToStreamChain to process audio data.
47 *
48 * This processor is responsible for managing the processing of audio data from a sound file container
49 * to a dynamic sound stream using the provided FileToStreamChain.
50 */
51class MAYAFLUX_API FileBridgeProcessor : public BufferProcessor {
52public:
53 FileBridgeProcessor(std::shared_ptr<FileToStreamChain> chain);
54
55 void processing_function(std::shared_ptr<Buffer> buffer) override;
56
57 void on_attach(std::shared_ptr<Buffer> buffer) override;
58
59 void on_detach(std::shared_ptr<Buffer> /*buffer*/) override;
60
61 [[nodiscard]] inline std::shared_ptr<FileToStreamChain> get_chain() const
62 {
63 return m_chain;
64 }
65
66private:
67 std::shared_ptr<FileToStreamChain> m_chain;
68 std::shared_ptr<Buffer> m_attached_buffer;
69};
70
71/**
72 * @brief An audio buffer that bridges a sound file container to a dynamic sound stream.
73 *
74 * This buffer uses a FileToStreamChain to read audio data from a sound file container and write it
75 * to a dynamic sound stream, allowing for real-time playback of the audio data.
76 */
77class MAYAFLUX_API FileBridgeBuffer : public AudioBuffer {
78public:
79 FileBridgeBuffer(uint32_t channel_id,
80 std::shared_ptr<Kakshya::SoundFileContainer> file_container,
81 uint32_t source_channel = 0);
82
83 inline std::shared_ptr<Kakshya::DynamicSoundStream> get_capture_stream() const
84 {
85 return m_capture_stream;
86 }
87
88 inline std::shared_ptr<Kakshya::SoundFileContainer> get_file_container() const
89 {
90 return m_file_container;
91 }
92
93 inline std::shared_ptr<FileToStreamChain> get_chain() const
94 {
95 return m_chain;
96 }
97
98 void setup_chain_and_processor();
99
100private:
101 std::shared_ptr<Kakshya::SoundFileContainer> m_file_container;
102 std::shared_ptr<Kakshya::DynamicSoundStream> m_capture_stream;
103 std::shared_ptr<FileToStreamChain> m_chain;
104 std::shared_ptr<FileBridgeProcessor> m_processor;
105};
106
107} // namespace MayaFlux::Buffers
Concrete audio implementation of the Buffer interface for double-precision audio data.
Advanced pipeline manager for multi-stage buffer transformations with backend optimization.
Central computational transformation interface for continuous buffer processing.
std::shared_ptr< FileBridgeProcessor > m_processor
std::shared_ptr< Kakshya::SoundFileContainer > get_file_container() const
std::shared_ptr< FileToStreamChain > get_chain() const
std::shared_ptr< Kakshya::DynamicSoundStream > get_capture_stream() const
std::shared_ptr< Kakshya::SoundFileContainer > m_file_container
std::shared_ptr< Kakshya::DynamicSoundStream > m_capture_stream
std::shared_ptr< FileToStreamChain > m_chain
An audio buffer that bridges a sound file container to a dynamic sound stream.
std::shared_ptr< Buffer > m_attached_buffer
std::shared_ptr< FileToStreamChain > m_chain
std::shared_ptr< FileToStreamChain > get_chain() const
A buffer processor that uses a FileToStreamChain to process audio data.
std::shared_ptr< StreamWriteProcessor > m_stream_writer
std::shared_ptr< ContainerToBufferAdapter > m_container_adapter
std::shared_ptr< Kakshya::DynamicSoundStream > get_capture_stream() const
std::shared_ptr< Kakshya::DynamicSoundStream > m_capture_stream
std::shared_ptr< Kakshya::SoundFileContainer > m_file_container
A processing chain that reads audio data from a sound file container and writes it to a dynamic sound...