summaryrefslogtreecommitdiff
path: root/src/j2k_transcode.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/j2k_transcode.cc')
-rw-r--r--src/j2k_transcode.cc21
1 files changed, 6 insertions, 15 deletions
diff --git a/src/j2k_transcode.cc b/src/j2k_transcode.cc
index 686bc040..664d18a3 100644
--- a/src/j2k_transcode.cc
+++ b/src/j2k_transcode.cc
@@ -188,23 +188,14 @@ dcp::decompress_j2k (uint8_t const * data, int64_t size, int reduce)
class WriteBuffer
{
public:
-/* XXX: is there a better strategy for this? */
-#define MAX_J2K_SIZE (1024 * 1024 * 2)
- WriteBuffer ()
- : _data (shared_array<uint8_t>(new uint8_t[MAX_J2K_SIZE]), MAX_J2K_SIZE)
- , _offset (0)
- {
- _data.set_size (0);
- }
-
OPJ_SIZE_T write (void* buffer, OPJ_SIZE_T nb_bytes)
{
- DCP_ASSERT ((_offset + nb_bytes) < MAX_J2K_SIZE);
- memcpy (_data.data() + _offset, buffer, nb_bytes);
- _offset += nb_bytes;
- if (_offset > OPJ_SIZE_T(_data.size())) {
- _data.set_size (_offset);
+ auto const new_offset = _offset + nb_bytes;
+ if (new_offset > OPJ_SIZE_T(_data.size())) {
+ _data.set_size(new_offset);
}
+ memcpy(_data.data() + _offset, buffer, nb_bytes);
+ _offset = new_offset;
return nb_bytes;
}
@@ -221,7 +212,7 @@ public:
private:
ArrayData _data;
- OPJ_SIZE_T _offset;
+ OPJ_SIZE_T _offset = 0;
};