31 #include <libcjson/cJSON.h> 32 #include <libmediaprocsutils/uri_parser.h> 33 #include <libmediaprocsutils/log.h> 34 #include <libmediaprocsutils/stat_codes.h> 35 #include <libmediaprocsutils/check_utils.h> 36 #include <libmediaprocs/proc_if.h> 49 if(ref_muxers_settings_mux_ctx== NULL)
52 if((muxers_settings_mux_ctx= *ref_muxers_settings_mux_ctx)!= NULL) {
54 free(muxers_settings_mux_ctx);
55 *ref_muxers_settings_mux_ctx= NULL;
65 CHECK_DO(muxers_settings_mux_ctx!= NULL,
return STAT_ERROR);
79 if(muxers_settings_mux_ctx== NULL)
98 CHECK_DO(muxers_settings_mux_ctx_src!= NULL,
return STAT_ERROR);
99 CHECK_DO(muxers_settings_mux_ctx_dst!= NULL,
return STAT_ERROR);
102 memcpy(muxers_settings_mux_ctx_dst, muxers_settings_mux_ctx_src,
118 int end_code= STAT_ERROR;
119 int flag_is_query= 0;
120 cJSON *cjson_rest= NULL, *cjson_aux= NULL;
121 char *rtsp_port_str= NULL, *bit_rate_estimated_str= NULL,
122 *time_stamp_freq_str= NULL, *rtsp_streaming_session_name_str= NULL;
123 LOG_CTX_INIT(log_ctx);
126 CHECK_DO(muxers_settings_mux_ctx!= NULL,
return STAT_ERROR);
127 CHECK_DO(str!= NULL,
return STAT_EINVAL);
131 flag_is_query= (str[0]==
'{' && str[strlen(str)-1]==
'}')? 0: 1;
135 if(flag_is_query== 1) {
138 rtsp_port_str= uri_parser_query_str_get_value(
"rtsp_port", str);
139 if(rtsp_port_str!= NULL)
140 muxers_settings_mux_ctx->
rtsp_port= atoll(rtsp_port_str);
143 time_stamp_freq_str= uri_parser_query_str_get_value(
"time_stamp_freq",
145 if(time_stamp_freq_str!= NULL)
147 time_stamp_freq_str);
150 rtsp_streaming_session_name_str= uri_parser_query_str_get_value(
151 "rtsp_streaming_session_name", str);
152 if(rtsp_streaming_session_name_str!= NULL) {
153 char *rtsp_streaming_session_name;
154 CHECK_DO(strlen(rtsp_streaming_session_name_str)> 0,
155 end_code= STAT_EINVAL;
goto end);
158 rtsp_streaming_session_name= strdup(
159 rtsp_streaming_session_name_str);
160 CHECK_DO(rtsp_streaming_session_name!= NULL,
goto end);
166 rtsp_streaming_session_name;
172 cjson_rest= cJSON_Parse(str);
173 CHECK_DO(cjson_rest!= NULL,
goto end);
176 cjson_aux= cJSON_GetObjectItem(cjson_rest,
"rtsp_port");
178 muxers_settings_mux_ctx->
rtsp_port= cjson_aux->valuedouble;
181 cjson_aux= cJSON_GetObjectItem(cjson_rest,
"time_stamp_freq");
186 cjson_aux= cJSON_GetObjectItem(cjson_rest,
187 "rtsp_streaming_session_name");
188 if(cjson_aux!= NULL) {
189 char *rtsp_streaming_session_name;
190 CHECK_DO(strlen(cjson_aux->valuestring)> 0,
191 end_code= STAT_EINVAL;
goto end);
194 rtsp_streaming_session_name= strdup(cjson_aux->valuestring);
195 CHECK_DO(rtsp_streaming_session_name!= NULL,
goto end);
201 rtsp_streaming_session_name;
206 end_code= STAT_SUCCESS;
208 if(cjson_rest!= NULL)
209 cJSON_Delete(cjson_rest);
210 if(rtsp_port_str!= NULL)
212 if(bit_rate_estimated_str!= NULL)
213 free(bit_rate_estimated_str);
214 if(time_stamp_freq_str!= NULL)
215 free(time_stamp_freq_str);
216 if(rtsp_streaming_session_name_str!= NULL)
217 free(rtsp_streaming_session_name_str);
223 cJSON **ref_cjson_rest,
log_ctx_t *log_ctx)
225 int end_code= STAT_ERROR;
226 cJSON *cjson_rest= NULL, *cjson_aux= NULL;
227 LOG_CTX_INIT(log_ctx);
230 CHECK_DO(muxers_settings_mux_ctx!= NULL,
goto end);
231 CHECK_DO(ref_cjson_rest!= NULL,
goto end);
233 *ref_cjson_rest= NULL;
236 cjson_rest= cJSON_CreateObject();
237 CHECK_DO(cjson_rest!= NULL,
goto end);
248 cjson_aux= cJSON_CreateNumber((
double)muxers_settings_mux_ctx->
rtsp_port);
249 CHECK_DO(cjson_aux!= NULL,
goto end);
250 cJSON_AddItemToObject(cjson_rest,
"rtsp_port", cjson_aux);
253 cjson_aux= cJSON_CreateNumber((
double)
255 CHECK_DO(cjson_aux!= NULL,
goto end);
256 cJSON_AddItemToObject(cjson_rest,
"time_stamp_freq", cjson_aux);
259 cjson_aux= cJSON_CreateString(
261 CHECK_DO(cjson_aux!= NULL,
goto end);
262 cJSON_AddItemToObject(cjson_rest,
"rtsp_streaming_session_name", cjson_aux);
264 *ref_cjson_rest= cjson_rest;
266 end_code= STAT_SUCCESS;
268 if(cjson_rest!= NULL)
269 cJSON_Delete(cjson_rest);
284 if(ref_muxers_settings_dmux_ctx== NULL)
287 if((muxers_settings_dmux_ctx= *ref_muxers_settings_dmux_ctx)!= NULL) {
289 if(muxers_settings_dmux_ctx->
rtsp_url!= NULL) {
290 free(muxers_settings_dmux_ctx->
rtsp_url);
291 muxers_settings_dmux_ctx->
rtsp_url= NULL;
294 free(muxers_settings_dmux_ctx);
295 *ref_muxers_settings_dmux_ctx= NULL;
305 CHECK_DO(muxers_settings_dmux_ctx!= NULL,
return STAT_ERROR);
307 muxers_settings_dmux_ctx->
rtsp_url= NULL;
315 if(muxers_settings_dmux_ctx== NULL)
318 if(muxers_settings_dmux_ctx->
rtsp_url!= NULL) {
319 free(muxers_settings_dmux_ctx->
rtsp_url);
320 muxers_settings_dmux_ctx->
rtsp_url= NULL;
334 CHECK_DO(muxers_settings_dmux_ctx_src!= NULL,
return STAT_ERROR);
335 CHECK_DO(muxers_settings_dmux_ctx_dst!= NULL,
return STAT_ERROR);
338 memcpy(muxers_settings_dmux_ctx_dst, muxers_settings_dmux_ctx_src,
342 muxers_settings_dmux_ctx_dst->
rtsp_url= strdup(
343 muxers_settings_dmux_ctx_src->
rtsp_url);
353 int end_code= STAT_ERROR;
354 int flag_is_query= 0;
355 cJSON *cjson_rest= NULL;
356 cJSON *cjson_aux= NULL;
357 char *rtsp_url_str= NULL;
358 LOG_CTX_INIT(log_ctx);
361 CHECK_DO(muxers_settings_dmux_ctx!= NULL,
return STAT_ERROR);
362 CHECK_DO(str!= NULL,
return STAT_EINVAL);
366 flag_is_query= (str[0]==
'{' && str[strlen(str)-1]==
'}')? 0: 1;
370 if(flag_is_query== 1) {
373 rtsp_url_str= uri_parser_query_str_get_value(
"rtsp_url", str);
374 if(rtsp_url_str!= NULL) {
376 CHECK_DO(strlen(rtsp_url_str)> 0, end_code= STAT_EINVAL;
goto end);
379 rtsp_url= strdup(rtsp_url_str);
380 CHECK_DO(rtsp_url!= NULL,
goto end);
383 if(muxers_settings_dmux_ctx->
rtsp_url!= NULL)
384 free(muxers_settings_dmux_ctx->
rtsp_url);
385 muxers_settings_dmux_ctx->
rtsp_url= rtsp_url;
391 cjson_rest= cJSON_Parse(str);
392 CHECK_DO(cjson_rest!= NULL,
goto end);
395 cjson_aux= cJSON_GetObjectItem(cjson_rest,
"rtsp_url");
396 if(cjson_aux!= NULL) {
398 CHECK_DO(strlen(cjson_aux->valuestring)> 0,
399 end_code= STAT_EINVAL;
goto end);
402 rtsp_url= strdup(cjson_aux->valuestring);
403 CHECK_DO(rtsp_url!= NULL,
goto end);
406 if(muxers_settings_dmux_ctx->
rtsp_url!= NULL)
407 free(muxers_settings_dmux_ctx->
rtsp_url);
408 muxers_settings_dmux_ctx->
rtsp_url= rtsp_url;
412 end_code= STAT_SUCCESS;
414 if(cjson_rest!= NULL)
415 cJSON_Delete(cjson_rest);
416 if(rtsp_url_str!= NULL)
423 cJSON **ref_cjson_rest,
log_ctx_t *log_ctx)
425 int end_code= STAT_ERROR;
426 cJSON *cjson_rest= NULL;
427 cJSON *cjson_aux= NULL;
428 LOG_CTX_INIT(log_ctx);
430 CHECK_DO(muxers_settings_dmux_ctx!= NULL,
goto end);
431 CHECK_DO(ref_cjson_rest!= NULL,
goto end);
433 *ref_cjson_rest= NULL;
436 cjson_rest= cJSON_CreateObject();
437 CHECK_DO(cjson_rest!= NULL,
goto end);
446 cjson_aux= cJSON_CreateString(muxers_settings_dmux_ctx->
rtsp_url);
447 CHECK_DO(cjson_aux!= NULL,
goto end);
448 cJSON_AddItemToObject(cjson_rest,
"rtsp_url", cjson_aux);
450 *ref_cjson_rest= cjson_rest;
452 end_code= STAT_SUCCESS;
454 if(cjson_rest!= NULL)
455 cJSON_Delete(cjson_rest);
int muxers_settings_mux_ctx_init(volatile muxers_settings_mux_ctx_t *muxers_settings_mux_ctx)
int muxers_settings_dmux_ctx_restful_put(volatile muxers_settings_dmux_ctx_t *muxers_settings_dmux_ctx, const char *str, log_ctx_t *log_ctx)
int muxers_settings_dmux_ctx_restful_get(volatile muxers_settings_dmux_ctx_t *muxers_settings_dmux_ctx, cJSON **ref_cjson_rest, log_ctx_t *log_ctx)
Multiplexers and de-multiplexers generic settings.
int muxers_settings_dmux_ctx_cpy(const muxers_settings_dmux_ctx_t *muxers_settings_dmux_ctx_src, muxers_settings_dmux_ctx_t *muxers_settings_dmux_ctx_dst)
muxers_settings_mux_ctx_t * muxers_settings_mux_ctx_allocate()
char * rtsp_streaming_session_name
int muxers_settings_mux_ctx_cpy(const muxers_settings_mux_ctx_t *muxers_settings_mux_ctx_src, muxers_settings_mux_ctx_t *muxers_settings_mux_ctx_dst)
#define CHECK_DO(COND, ACTION)
void muxers_settings_mux_ctx_release(muxers_settings_mux_ctx_t **ref_muxers_settings_mux_ctx)
int muxers_settings_dmux_ctx_init(volatile muxers_settings_dmux_ctx_t *muxers_settings_dmux_ctx)
int muxers_settings_mux_ctx_restful_get(volatile muxers_settings_mux_ctx_t *muxers_settings_mux_ctx, cJSON **ref_cjson_rest, log_ctx_t *log_ctx)
muxers_settings_dmux_ctx_t * muxers_settings_dmux_ctx_allocate()
void muxers_settings_dmux_ctx_release(muxers_settings_dmux_ctx_t **ref_muxers_settings_dmux_ctx)
void muxers_settings_mux_ctx_deinit(volatile muxers_settings_mux_ctx_t *muxers_settings_mux_ctx)
void muxers_settings_dmux_ctx_deinit(volatile muxers_settings_dmux_ctx_t *muxers_settings_dmux_ctx)
int muxers_settings_mux_ctx_restful_put(volatile muxers_settings_mux_ctx_t *muxers_settings_mux_ctx, const char *str, log_ctx_t *log_ctx)