23 #if defined(__GNUC__) && !defined(GROK_SKIP_POISON)
24 #pragma GCC poison malloc calloc realloc free
44 void*
grkCalloc(
size_t numOfElements,
size_t sizeOfElements);
89 template<
typename T,
template<
typename TT>
typename A>
92 grk_buf(T* buffer,
size_t off,
size_t length,
bool ownsData)
97 grk_buf(T* buffer,
size_t length,
bool ownsData) :
grk_buf(buffer, 0, length, ownsData) {}
137 inline bool write(T* b,
size_t size)
151 buf = A<T>::alloc(length);
210 GRK_WARN(
"grk_buf8: attempt to increment buffer offset out of bounds");
221 if(
offset < (
size_t)(-off))
276 template<
typename T,
template<
typename TT>
typename A>
279 grk_buf2d(T* buffer,
bool ownsData, uint32_t w, uint32_t strd, uint32_t h)
320 uint64_t data_size_needed = (uint64_t)
stride *
height() *
sizeof(T);
321 if(!data_size_needed)
325 grk::GRK_ERROR(
"Failed to allocate aligned memory buffer of dimensions %u x %u",
330 memset(this->
buf, 0, data_size_needed);
379 const uint32_t destStride)
403 const uint32_t srcStride)
415 bool copy_data(T* dest, uint32_t dest_w, uint32_t dest_h, uint32_t dest_stride)
const
417 assert(dest_w <=
width());
418 assert(dest_h <=
height());
419 assert(dest_stride <=
stride);
424 auto src_ptr = this->
buf;
425 auto dest_ptr = dest;
426 for(uint32_t j = 0; j < dest_h; ++j)
428 memcpy(dest_ptr, src_ptr, dest_w *
sizeof(T));
429 dest_ptr += dest_stride;
442 T* dest = this->
buf + (inter.y0 *
stride + inter.x0);
443 T* src = rhs.
buf + ((inter.y0 - rhs.
y0) * rhs.
stride + inter.x0 - rhs.
x0);
444 uint32_t
len = inter.width();
445 for(uint32_t j = inter.y0; j < inter.y1; ++j)
447 filter.copy(dest, src,
len);
#define SIZE_MAX
Definition: MemManager.cpp:30
#define GRK_UNUSED(x)
Definition: grk_includes.h:87
Copyright (C) 2016-2022 Grok Image Compression Inc.
Definition: ICacheable.h:20
void grkAlignedFree(void *ptr)
Definition: MemManager.cpp:127
void grkFree(void *ptr)
Deallocates or frees a memory block.
Definition: MemManager.cpp:149
void GRK_ERROR(const char *fmt,...)
Definition: logger.cpp:58
void GRK_WARN(const char *fmt,...)
Definition: logger.cpp:49
void * grkAlignedMalloc(size_t size)
Allocate memory aligned to a 16 byte boundary.
Definition: MemManager.cpp:123
void * grkMalloc(size_t size)
Allocate an uninitialized memory block.
Definition: MemManager.cpp:108
void * grkCalloc(size_t num, size_t size)
Allocate a memory block with elements initialized to 0.
Definition: MemManager.cpp:115
void * grkRealloc(void *ptr, size_t new_size)
Reallocate memory blocks.
Definition: MemManager.cpp:142
uint32_t grkMakeAlignedWidth(uint32_t width)
Definition: MemManager.cpp:40
Definition: MemManager.h:79
void dealloc(T *buf)
Definition: MemManager.h:84
T * alloc(size_t length)
Definition: MemManager.h:80
Definition: MemManager.h:67
T * alloc(size_t length)
Definition: MemManager.h:68
void dealloc(T *buf)
Definition: MemManager.h:72
Definition: MemManager.h:249
grk_buf2d_simple incY_IPL(size_t deltaY)
Definition: MemManager.h:262
grk_buf2d_simple()
Definition: MemManager.h:250
T * buf_
Definition: MemManager.h:272
grk_buf2d_simple incX_IPL(size_t deltaX)
Definition: MemManager.h:252
grk_buf2d_simple incX(size_t deltaX)
Definition: MemManager.h:258
grk_buf2d_simple incY(size_t deltaY)
Definition: MemManager.h:268
uint32_t stride_
Definition: MemManager.h:273
grk_buf2d_simple(T *buf, uint32_t stride)
Definition: MemManager.h:251
Definition: MemManager.h:278
void transfer(T **buffer, uint32_t *strd)
Definition: MemManager.h:348
grk_buf2d(uint32_t w, uint32_t h)
Definition: MemManager.h:283
void attach(T *buffer, uint32_t strd)
Definition: MemManager.h:336
bool write(grk_rect32 window, const int32_t *src, const uint32_t srcColStride, const uint32_t srcStride)
Write the contents of a rectangular window from a user buffer.
Definition: MemManager.h:402
bool copy_data(T *dest, uint32_t dest_w, uint32_t dest_h, uint32_t dest_stride) const
Definition: MemManager.h:415
grk_buf2d_simple< T > simple(void) const
Definition: MemManager.h:291
grk_buf2d(uint32_t w, uint32_t strd, uint32_t h)
Definition: MemManager.h:282
bool alloc2d(bool clear)
Definition: MemManager.h:314
void copy(const grk_buf2d &rhs, F filter)
Definition: MemManager.h:436
grk_buf2d & operator=(const grk_buf2d *rhs)
Definition: MemManager.h:303
grk_buf2d(void)
Definition: MemManager.h:287
grk_buf2d_simple< float > simpleF(void) const
Definition: MemManager.h:295
grk_buf2d(const grk_buf2d &rhs)
Definition: MemManager.h:288
grk_buf2d(const grk_rect32 *b)
Definition: MemManager.h:284
bool read(grk_rect32 window, int32_t *dest, const uint32_t destColStride, const uint32_t destStride)
Read the contents of a rectangular window into a user buffer.
Definition: MemManager.h:378
virtual ~grk_buf2d()=default
grk_buf2d(T *buffer, bool ownsData, uint32_t w, uint32_t strd, uint32_t h)
Definition: MemManager.h:279
void acquire(T *buffer, uint32_t strd)
Definition: MemManager.h:342
T * getBuffer(void) const
Definition: MemManager.h:452
uint32_t stride
Definition: MemManager.h:456
bool isWindowValid(grk_rect32 win)
Returns whether window bounds are valid (non empty and within buffer bounds)
Definition: MemManager.h:362
grk_buf2d & operator=(const grk_buf2d &rhs)
Definition: MemManager.h:299
Definition: MemManager.h:91
size_t remainingLength(void)
Definition: MemManager.h:193
void attach(T *buffer)
Definition: MemManager.h:170
grk_buf & operator=(const grk_buf *rhs)
Definition: MemManager.h:110
T read(void)
Definition: MemManager.h:125
grk_buf(T *buffer, size_t length)
Definition: MemManager.h:95
bool owns_data
Definition: MemManager.h:241
grk_buf & operator=(const grk_buf &rhs)
Definition: MemManager.h:106
size_t len
Definition: MemManager.h:240
void incrementOffset(ptrdiff_t off)
Definition: MemManager.h:197
void acquire(T *buffer)
Definition: MemManager.h:176
bool write(T *b, size_t size)
Definition: MemManager.h:137
void transfer(T **buffer)
Definition: MemManager.h:183
grk_buf(T *buffer, size_t off, size_t length, bool ownsData)
Definition: MemManager.h:92
grk_buf()
Definition: MemManager.h:96
bool write(T val)
Definition: MemManager.h:129
virtual bool alloc(size_t length)
Definition: MemManager.h:146
grk_buf(const grk_buf &rhs)
Definition: MemManager.h:102
bool canRead(void)
Definition: MemManager.h:121
grk_buf(T *buffer, size_t length, bool ownsData)
Definition: MemManager.h:97
T * currPtr(void) const
Definition: MemManager.h:232
virtual ~grk_buf()
Definition: MemManager.h:98
virtual void dealloc()
Definition: MemManager.h:160
T * buf
Definition: MemManager.h:238
size_t offset
Definition: MemManager.h:239
uint32_t width() const
Definition: util.h:246
uint32_t y1
Definition: util.h:109
uint32_t x0
Definition: util.h:109
uint32_t x1
Definition: util.h:109
grk_rect< uint32_t > & operator=(const grk_rect< uint32_t > &rhs)
Definition: util.h:133
uint32_t height() const
Definition: util.h:250
grk_rect< uint32_t > intersection(const grk_rect< uint32_t > rhs) const
Definition: util.h:200
uint32_t y0
Definition: util.h:109