11#include <promeki/config.h>
12#if PROMEKI_ENABLE_CORE
19PROMEKI_NAMESPACE_BEGIN
21#if PROMEKI_ENABLE_PROAV
76class BufferAllocator {
78 PROMEKI_SHARED_BASE(BufferAllocator)
81 using Ptr = SharedPtr<BufferAllocator,
false>;
83 BufferAllocator() =
default;
84 virtual ~BufferAllocator() =
default;
86 BufferAllocator(
const BufferAllocator &) =
delete;
87 BufferAllocator &operator=(
const BufferAllocator &) =
delete;
96 virtual String name()
const = 0;
118#if PROMEKI_ENABLE_PROAV
119 virtual Buffer allocateVideoPlane(
const ImageDesc &desc,
int planeIndex)
const = 0;
132 virtual Buffer allocateAudioChunk(
const AudioDesc &desc,
size_t samples)
const = 0;
144 virtual Buffer allocateBytes(
size_t bytes,
size_t align = 0)
const = 0;
156 static Ptr defaultAllocator();
172class DefaultBufferAllocator :
public BufferAllocator {
174 PROMEKI_SHARED_DERIVED(DefaultBufferAllocator)
176 DefaultBufferAllocator() =
default;
177 ~DefaultBufferAllocator()
override =
default;
179 String name()
const override;
180#if PROMEKI_ENABLE_PROAV
181 Buffer allocateVideoPlane(
const ImageDesc &desc,
int planeIndex)
const override;
182 Buffer allocateAudioChunk(
const AudioDesc &desc,
size_t samples)
const override;
184 Buffer allocateBytes(
size_t bytes,
size_t align = 0)
const override;