From 923920cf263c8d2ae025c027d27b8ec688a8b5c8 Mon Sep 17 00:00:00 2001 From: Martin Pulec Date: Thu, 28 Jun 2018 21:11:35 +0200 Subject: [PATCH] CMPTO J2K enc: use placement new It is a bit prettier - we don't use pointer to pointer to (shared) pointer but only pointer to (shared) pointer instead ;) --- src/video_compress/cmpto_j2k.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/video_compress/cmpto_j2k.cpp b/src/video_compress/cmpto_j2k.cpp index dd6ac7049..36e0d4800 100644 --- a/src/video_compress/cmpto_j2k.cpp +++ b/src/video_compress/cmpto_j2k.cpp @@ -256,7 +256,7 @@ static void j2k_compressed_frame_dispose(struct video_frame *frame) static void release_cstream(void * custom_data, size_t custom_data_size, const void * codestream, size_t codestream_size) { (void) codestream; (void) custom_data_size; (void) codestream_size; - delete *(shared_ptr **) ((char *) custom_data + sizeof(struct video_desc)); + ((shared_ptr *) ((char *) custom_data + sizeof(struct video_desc)))->~shared_ptr(); } #define HANDLE_ERROR_COMPRESS_PUSH if (img) cmpto_j2k_enc_img_destroy(img); return @@ -267,7 +267,7 @@ static void j2k_compress_push(struct module *state, std::shared_ptr struct cmpto_j2k_enc_img *img = NULL; struct video_desc desc; void *udata; - shared_ptr **ref; + shared_ptr *ref; if (tx == NULL) { CHECK_OK(cmpto_j2k_enc_ctx_stop(s->context), "stop", NOOP); @@ -318,17 +318,17 @@ static void j2k_compress_push(struct module *state, std::shared_ptr CHECK_OK(cmpto_j2k_enc_img_allocate_custom_data( img, - sizeof(struct video_desc) + sizeof(shared_ptr *), + sizeof(struct video_desc) + sizeof(shared_ptr), &udata), "Allocate custom image data", HANDLE_ERROR_COMPRESS_PUSH); memcpy(udata, &desc, sizeof(desc)); - ref = (shared_ptr **)((char *) udata + sizeof(struct video_desc)); - *ref = new shared_ptr(s->pool.get_frame()); + ref = (shared_ptr *)((char *) udata + sizeof(struct video_desc)); + new (ref) shared_ptr(s->pool.get_frame()); - memcpy((*ref)->get()->tiles[0].data, tx->tiles[0].data, tx->tiles[0].data_len); - CHECK_OK(cmpto_j2k_enc_img_set_samples(img, (*ref)->get()->tiles[0].data, tx->tiles[0].data_len, release_cstream), + memcpy(ref->get()->tiles[0].data, tx->tiles[0].data, tx->tiles[0].data_len); + CHECK_OK(cmpto_j2k_enc_img_set_samples(img, ref->get()->tiles[0].data, tx->tiles[0].data_len, release_cstream), "Setting image samples", HANDLE_ERROR_COMPRESS_PUSH); unique_lock lk(s->lock);