OpenJPH
Open-source implementation of JPEG2000 Part-15
ojph_mem.cpp
Go to the documentation of this file.
1//***************************************************************************/
2// This software is released under the 2-Clause BSD license, included
3// below.
4//
5// Copyright (c) 2019, Aous Naman
6// Copyright (c) 2019, Kakadu Software Pty Ltd, Australia
7// Copyright (c) 2019, The University of New South Wales, Australia
8//
9// Redistribution and use in source and binary forms, with or without
10// modification, are permitted provided that the following conditions are
11// met:
12//
13// 1. Redistributions of source code must retain the above copyright
14// notice, this list of conditions and the following disclaimer.
15//
16// 2. Redistributions in binary form must reproduce the above copyright
17// notice, this list of conditions and the following disclaimer in the
18// documentation and/or other materials provided with the distribution.
19//
20// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
21// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
22// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
23// PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24// HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
26// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
27// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
28// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
29// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31//***************************************************************************/
32// This file is part of the OpenJPH software implementation.
33// File: ojph_mem.cpp
34// Author: Aous Naman
35// Date: 28 August 2019
36//***************************************************************************/
37
38
39#include <new>
40#include "ojph_mem.h"
41
42namespace ojph {
43
45 //
46 //
47 //
48 //
49 //
51
53 template<>
54 void line_buf::finalize_alloc<si32>(mem_fixed_allocator *p)
55 {
56 assert(p != 0 && size != 0);
58 }
59
61 template<>
62 void line_buf::finalize_alloc<float>(mem_fixed_allocator *p)
63 {
64 assert(p != 0 && size != 0);
65 f32 = p->post_alloc_data<float>(size, pre_size);
66 }
67
69 template<>
70 void line_buf::wrap(si32 *buffer, size_t num_ele, ui32 pre_size)
71 {
72 i32 = buffer;
73 this->size = num_ele;
74 this->pre_size = pre_size;
75 }
76
78 template<>
79 void line_buf::wrap(float *buffer, size_t num_ele, ui32 pre_size)
80 {
81 f32 = buffer;
82 this->size = num_ele;
83 this->pre_size = pre_size;
84 }
85
87 //
88 //
89 //
90 //
91 //
93
96 {
97 ui32 extended_bytes = needed_bytes + (ui32)sizeof(coded_lists);
98
99 if (store == NULL)
100 {
101 ui32 bytes = ojph_max(extended_bytes, chunk_size);
102 ui32 store_bytes = stores_list::eval_store_bytes(bytes);
103 store = (stores_list*)malloc(store_bytes);
104 cur_store = store = new (store) stores_list(bytes);
105 total_allocated += store_bytes;
106 }
107
108 if (cur_store->available < extended_bytes)
109 {
110 ui32 bytes = ojph_max(extended_bytes, chunk_size);
111 ui32 store_bytes = stores_list::eval_store_bytes(bytes);
112 cur_store->next_store = (stores_list*)malloc(store_bytes);
114 total_allocated += store_bytes;
115 }
116
117 p = new (cur_store->data) coded_lists(needed_bytes);
118
119 assert(cur_store->available >= extended_bytes);
120 cur_store->available -= extended_bytes;
121 cur_store->data += extended_bytes;
122 }
123
124}
void get_buffer(ui32 needed_bytes, coded_lists *&p)
Definition: ojph_mem.cpp:95
stores_list * cur_store
Definition: ojph_mem.h:217
T * post_alloc_data(size_t num_ele, ui32 pre_size)
Definition: ojph_mem.h:89
int32_t si32
Definition: ojph_defs.h:55
uint32_t ui32
Definition: ojph_defs.h:54
#define ojph_max(a, b)
Definition: ojph_defs.h:73
size_t size
Definition: ojph_mem.h:152
float * f32
Definition: ojph_mem.h:156
void wrap(T *buffer, size_t num_ele, ui32 pre_size)
si32 * i32
Definition: ojph_mem.h:155
static ui32 eval_store_bytes(ui32 available_bytes)
Definition: ojph_mem.h:208