You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

40 lines
695 B
C++

// SPDX-License-Identifier: GPL-2.0-or-later
// Copyright The Music Player Daemon Project
#ifndef MPD_FFMPEG_BUFFER_HXX
#define MPD_FFMPEG_BUFFER_HXX
extern "C" {
#include <libavutil/mem.h>
}
#include <cstddef>
class FfmpegBuffer {
void *data = nullptr;
unsigned size = 0;
public:
FfmpegBuffer() noexcept = default;
~FfmpegBuffer() noexcept {
av_free(data);
}
FfmpegBuffer(const FfmpegBuffer &) = delete;
FfmpegBuffer &operator=(const FfmpegBuffer &) = delete;
[[gnu::malloc]]
void *Get(size_t min_size) noexcept {
av_fast_malloc(&data, &size, min_size);
return data;
}
template<typename T>
T *GetT(size_t n) noexcept {
return (T *)Get(n * sizeof(T));
}
};
#endif