Skip to content

Commit 19feb7b

Browse files
committed
video_rxtx/omt: Use unique_ptrs
1 parent b09fa03 commit 19feb7b

1 file changed

Lines changed: 16 additions & 12 deletions

File tree

src/video_rxtx/omt.cpp

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -45,18 +45,22 @@
4545
#include "video_codec.h"
4646
#include "video_display.h"
4747
#include "video_frame.h"
48+
#include "utils/misc.h"
4849

4950
#define MOD_NAME "[OMT] "
5051

5152
namespace{
53+
using omt_receive_uniq = std::unique_ptr<omt_receive_t, deleter_from_fcn<omt_receive_destroy>>;
54+
using omt_send_uniq = std::unique_ptr<omt_send_t, deleter_from_fcn<omt_send_destroy>>;
55+
5256
void omt_log_callback(const char *msg){
5357
log_msg(LOG_LEVEL_INFO, MOD_NAME "OMTLOG: %s\n", msg);
5458
}
5559

5660
struct omt_rxtx_state{
5761
module *parent = nullptr;
58-
omt_receive_t *omt_recv_handle = nullptr;
59-
omt_send_t *omt_send_handle = nullptr;
62+
omt_receive_uniq omt_recv_handle;
63+
omt_send_uniq omt_send_handle;
6064

6165
OMTMediaFrame send_video_frame{};
6266

@@ -80,36 +84,36 @@ void set_omt_sender_info(omt_rxtx_state *s){
8084
productName.copy(info.ProductName, OMT_MAX_STRING_LENGTH, 0);
8185
manufacturer.copy(info.Manufacturer, OMT_MAX_STRING_LENGTH, 0);
8286
version.copy(info.Version, OMT_MAX_STRING_LENGTH, 0);
83-
omt_send_setsenderinformation(s->omt_send_handle, &info);
87+
omt_send_setsenderinformation(s->omt_send_handle.get(), &info);
8488
}
8589

8690
void init_recv(const vrxtx_params *params, omt_rxtx_state *s){
8791
s->display_device = params->display_device;
8892
log_msg(LOG_LEVEL_INFO, MOD_NAME "Create omt receive with address %s\n", params->receiver);
89-
s->omt_recv_handle = omt_receive_create(params->receiver, static_cast<OMTFrameType>(OMTFrameType_Audio | OMTFrameType_Video),
90-
OMTPreferredVideoFormat_UYVY, OMTReceiveFlags_None);
93+
s->omt_recv_handle.reset(omt_receive_create(params->receiver, static_cast<OMTFrameType>(OMTFrameType_Audio | OMTFrameType_Video),
94+
OMTPreferredVideoFormat_UYVY, OMTReceiveFlags_None));
9195
}
9296

9397
void init_send(omt_rxtx_state *s){
94-
s->omt_send_handle = omt_send_create("UltraGrid", OMTQuality_Default);
98+
s->omt_send_handle.reset(omt_send_create("UltraGrid", OMTQuality_Default));
9599
set_omt_sender_info(s);
96100
s->send_video_frame.Type = OMTFrameType_Video;
97101
s->send_video_frame.Timestamp = -1;
98102
}
99103

100104
void *omt_rxtx_create(const vrxtx_params *params, const common_opts *common){
101-
auto s = new omt_rxtx_state();
105+
auto s = std::make_unique<omt_rxtx_state>();
102106
s->parent = common->parent;
103107

104108
omt_setloggingcallback(omt_log_callback);
105109

106110
if(params->rxtx_mode & MODE_RECEIVER)
107-
init_recv(params, s);
111+
init_recv(params, s.get());
108112

109113
if(params->rxtx_mode & MODE_SENDER)
110-
init_send(s);
114+
init_send(s.get());
111115

112-
return s;
116+
return s.release();
113117
}
114118

115119
void omt_rxtx_done(void *state){
@@ -145,7 +149,7 @@ void omt_rxtx_send_frame(void *state, std::shared_ptr<video_frame> f){
145149
s->send_video_frame.Data = f->tiles[0].data;
146150
s->send_video_frame.DataLength = f->tiles[0].data_len;
147151

148-
int ret = omt_send(s->omt_send_handle, &s->send_video_frame);
152+
int ret = omt_send(s->omt_send_handle.get(), &s->send_video_frame);
149153

150154
log_msg(LOG_LEVEL_INFO, MOD_NAME "Send returned %d\n", ret);
151155
}
@@ -166,7 +170,7 @@ void *omt_rxtx_recv_worker(void *state){
166170
omt_should_exit_callback, state);
167171

168172
while(!s->should_exit){
169-
auto omt_frame = omt_receive(s->omt_recv_handle, OMTFrameType_Video, 1000);
173+
auto omt_frame = omt_receive(s->omt_recv_handle.get(), OMTFrameType_Video, 1000);
170174
if(!omt_frame){
171175
log_msg(LOG_LEVEL_INFO, MOD_NAME "Receive failed\n");
172176
continue;

0 commit comments

Comments
 (0)