Skip to content

Commit 28034e4

Browse files
committed
decompress/oapv: Use unique_ptr for decoder handle
1 parent d9545a3 commit 28034e4

1 file changed

Lines changed: 6 additions & 11 deletions

File tree

src/video_decompress/openapv.cpp

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,12 @@ namespace {
5555

5656
#define FRM_INDEX (0) // index of primary frame in oapv_frms_t
5757

58+
using oapvd_uniq = std::unique_ptr<std::remove_pointer_t<oapvd_t>, deleter_from_fcn<oapvd_delete>>;
59+
5860
struct state_video_decompress_openapv {
5961
state_video_decompress_openapv();
60-
~state_video_decompress_openapv();
61-
62-
oapvd_t decoder_handle{};
62+
63+
oapvd_uniq decoder_handle;
6364
oapvd_cdesc_t cdesc{};
6465

6566
Oapv_Frames decoded_frames;
@@ -78,18 +79,12 @@ state_video_decompress_openapv::state_video_decompress_openapv() {
7879
int ret = -1;
7980

8081
cdesc.threads = OAPV_CDESC_THREADS_AUTO;
81-
decoder_handle = oapvd_create(&cdesc, &ret);
82+
decoder_handle.reset(oapvd_create(&cdesc, &ret));
8283
if (OAPV_FAILED(ret)) {
8384
throw std::runtime_error("oapvd_create failed (" + std::string(oapv_err_str(ret)) + ")");
8485
}
8586
}
8687

87-
state_video_decompress_openapv::~state_video_decompress_openapv() {
88-
if (decoder_handle) {
89-
oapvd_delete(decoder_handle);
90-
}
91-
}
92-
9388
bool configure_with(state_video_decompress_openapv *s, unsigned char *bitstream_buffer, size_t codestream_size) {
9489
int ret = -1;
9590
oapv_au_info_t aui{};
@@ -221,7 +216,7 @@ decompress_status openapv_decompress(void *state, unsigned char *dst, unsigned c
221216
s->input_buffer.bsize = src_len;
222217

223218
oapvd_stat_t stat{};
224-
int ret = oapvd_decode(s->decoder_handle, &s->input_buffer, s->decoded_frames.get_frms(), nullptr, &stat);
219+
int ret = oapvd_decode(s->decoder_handle.get(), &s->input_buffer, s->decoded_frames.get_frms(), nullptr, &stat);
225220
if (OAPV_FAILED(ret)) {
226221
log_msg(LOG_LEVEL_WARNING, MOD_NAME "oapvd_decode failed (%s) src_len=%u.\n", oapv_err_str(ret), src_len);
227222
return DECODER_NO_FRAME;

0 commit comments

Comments
 (0)