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::wrap(si32 *buffer, size_t num_ele, ui32 pre_size)
55 {
56 this->i32 = buffer;
57 this->size = num_ele;
58 this->pre_size = pre_size;
59 this->flags = LFT_32BIT | LFT_INTEGER;
60 }
61
63 template<>
64 void line_buf::wrap(float *buffer, size_t num_ele, ui32 pre_size)
65 {
66 this->f32 = buffer;
67 this->size = num_ele;
68 this->pre_size = pre_size;
69 this->flags = LFT_32BIT;
70 }
71
73 template<>
74 void line_buf::wrap(si64 *buffer, size_t num_ele, ui32 pre_size)
75 {
76 this->i64 = buffer;
77 this->size = num_ele;
78 this->pre_size = pre_size;
79 this->flags = LFT_64BIT | LFT_INTEGER;
80 }
81
83 //
84 //
85 //
86 //
87 //
89
92 {
93 ui32 extended_bytes = needed_bytes + (ui32)sizeof(coded_lists);
94
95 if (store == NULL)
96 {
97 ui32 bytes = ojph_max(extended_bytes, chunk_size);
98 ui32 store_bytes = stores_list::eval_store_bytes(bytes);
99 store = (stores_list*)malloc(store_bytes);
100 cur_store = store = new (store) stores_list(bytes);
101 total_allocated += store_bytes;
102 }
103
104 if (cur_store->available < extended_bytes)
105 {
106 ui32 bytes = ojph_max(extended_bytes, chunk_size);
107 ui32 store_bytes = stores_list::eval_store_bytes(bytes);
108 cur_store->next_store = (stores_list*)malloc(store_bytes);
110 total_allocated += store_bytes;
111 }
112
113 p = new (cur_store->data) coded_lists(needed_bytes);
114
115 assert(cur_store->available >= extended_bytes);
116 cur_store->available -= extended_bytes;
117 cur_store->data += extended_bytes;
118 }
119
120}
si64 * i64
Definition: ojph_mem.h:161
float * f32
Definition: ojph_mem.h:162
void wrap(T *buffer, size_t num_ele, ui32 pre_size)
si32 * i32
Definition: ojph_mem.h:160
void get_buffer(ui32 needed_bytes, coded_lists *&p)
Definition: ojph_mem.cpp:91
stores_list * cur_store
Definition: ojph_mem.h:232
int64_t si64
Definition: ojph_defs.h:57
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
static ui32 eval_store_bytes(ui32 available_bytes)
Definition: ojph_mem.h:223