MayaFlux
0.1.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches
BufferProcessor.cpp
Go to the documentation of this file.
1
#include "
BufferProcessor.hpp
"
2
#include "
Buffer.hpp
"
3
4
namespace
MayaFlux::Buffers
{
5
6
void
BufferProcessor::process
(std::shared_ptr<Buffer> buffer)
7
{
8
if
(!buffer->try_acquire_processing()) {
9
std::cerr <<
"Warning: Buffer already being processed, skipping processor"
<< std::endl;
10
return
;
11
}
12
13
m_active_processing
.fetch_add(1, std::memory_order_acquire);
14
15
try
{
16
processing_function
(buffer);
17
}
catch
(...) {
18
buffer->release_processing();
19
m_active_processing
.fetch_sub(1, std::memory_order_release);
20
throw
;
21
}
22
23
buffer->release_processing();
24
m_active_processing
.fetch_sub(1, std::memory_order_release);
25
}
26
27
void
BufferProcessor::process_non_owning
(std::shared_ptr<Buffer> buffer)
28
{
29
m_active_processing
.fetch_add(1, std::memory_order_acquire);
30
31
try
{
32
processing_function
(buffer);
33
}
catch
(...) {
34
m_active_processing
.fetch_sub(1, std::memory_order_release);
35
throw
;
36
}
37
38
m_active_processing
.fetch_sub(1, std::memory_order_release);
39
}
40
}
BufferProcessor.hpp
Buffer.hpp
MayaFlux::Buffers::BufferProcessor::process
void process(std::shared_ptr< Buffer > buffer)
Applies a computational transformation to the data in the provided buffer.
Definition
BufferProcessor.cpp:6
MayaFlux::Buffers::BufferProcessor::m_active_processing
std::atomic< size_t > m_active_processing
Definition
BufferProcessor.hpp:186
MayaFlux::Buffers::BufferProcessor::processing_function
virtual void processing_function(std::shared_ptr< Buffer > buffer)=0
The core processing function that must be implemented by derived classes.
MayaFlux::Buffers::BufferProcessor::process_non_owning
void process_non_owning(std::shared_ptr< Buffer > buffer)
Internal processing method for non-owning buffer contexts.
Definition
BufferProcessor.cpp:27
MayaFlux::Buffers
Definition
Depot.hpp:23
src
MayaFlux
Buffers
BufferProcessor.cpp
Generated by
1.9.8