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
5152namespace {
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+
5256void omt_log_callback (const char *msg){
5357 log_msg (LOG_LEVEL_INFO, MOD_NAME " OMTLOG: %s\n " , msg);
5458}
5559
5660struct 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
8690void 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
9397void 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
100104void *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
115119void 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