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> 44 "interleaved_signed_16b",
59 if(ref_audio_settings_enc_ctx== NULL)
62 if((audio_settings_enc_ctx= *ref_audio_settings_enc_ctx)!= NULL) {
64 free(audio_settings_enc_ctx);
65 *ref_audio_settings_enc_ctx= NULL;
75 CHECK_DO(audio_settings_enc_ctx!= NULL,
return STAT_ERROR);
97 CHECK_DO(audio_settings_enc_ctx_src!= NULL,
return STAT_ERROR);
98 CHECK_DO(audio_settings_enc_ctx_dst!= NULL,
return STAT_ERROR);
101 memcpy(audio_settings_enc_ctx_dst, audio_settings_enc_ctx_src,
113 int end_code= STAT_ERROR;
114 int flag_is_query= 0;
115 cJSON *cjson_rest= NULL, *cjson_aux= NULL;
116 char *bit_rate_output_str= NULL, *sample_rate_output_str= NULL;
117 LOG_CTX_INIT(log_ctx);
120 CHECK_DO(audio_settings_enc_ctx!= NULL,
return STAT_ERROR);
121 CHECK_DO(str!= NULL,
return STAT_EINVAL);
125 flag_is_query= (str[0]==
'{' && str[strlen(str)-1]==
'}')? 0: 1;
129 if(flag_is_query== 1) {
132 bit_rate_output_str= uri_parser_query_str_get_value(
"bit_rate_output",
134 if(bit_rate_output_str!= NULL)
138 sample_rate_output_str= uri_parser_query_str_get_value(
139 "sample_rate_output", str);
140 if(sample_rate_output_str!= NULL)
142 atoll(sample_rate_output_str);
147 cjson_rest= cJSON_Parse(str);
148 CHECK_DO(cjson_rest!= NULL,
goto end);
151 cjson_aux= cJSON_GetObjectItem(cjson_rest,
"bit_rate_output");
156 cjson_aux= cJSON_GetObjectItem(cjson_rest,
"sample_rate_output");
162 end_code= STAT_SUCCESS;
164 if(cjson_rest!= NULL)
165 cJSON_Delete(cjson_rest);
166 if(bit_rate_output_str!= NULL)
167 free(bit_rate_output_str);
168 if(sample_rate_output_str!= NULL)
169 free(sample_rate_output_str);
175 cJSON **ref_cjson_rest,
log_ctx_t *log_ctx)
177 int end_code= STAT_ERROR;
178 cJSON *cjson_rest= NULL, *cjson_aux= NULL;
179 LOG_CTX_INIT(log_ctx);
181 CHECK_DO(audio_settings_enc_ctx!= NULL,
goto end);
182 CHECK_DO(ref_cjson_rest!= NULL,
goto end);
184 *ref_cjson_rest= NULL;
187 cjson_rest= cJSON_CreateObject();
188 CHECK_DO(cjson_rest!= NULL,
goto end);
198 cjson_aux= cJSON_CreateNumber((
double)
200 CHECK_DO(cjson_aux!= NULL,
goto end);
201 cJSON_AddItemToObject(cjson_rest,
"bit_rate_output", cjson_aux);
204 cjson_aux= cJSON_CreateNumber((
double)
206 CHECK_DO(cjson_aux!= NULL,
goto end);
207 cJSON_AddItemToObject(cjson_rest,
"sample_rate_output", cjson_aux);
209 *ref_cjson_rest= cjson_rest;
211 end_code= STAT_SUCCESS;
213 if(cjson_rest!= NULL)
214 cJSON_Delete(cjson_rest);
229 if(ref_audio_settings_dec_ctx== NULL)
232 if((audio_settings_dec_ctx= *ref_audio_settings_dec_ctx)!= NULL) {
235 audio_settings_dec_ctx);
237 free(audio_settings_dec_ctx);
238 *ref_audio_settings_dec_ctx= NULL;
248 CHECK_DO(audio_settings_dec_ctx!= NULL,
return STAT_ERROR);
251 "interleaved_signed_16b");
262 CHECK_DO(audio_settings_dec_ctx!= NULL,
return);
282 CHECK_DO(audio_settings_dec_ctx_src!= NULL,
return STAT_ERROR);
283 CHECK_DO(audio_settings_dec_ctx_dst!= NULL,
return STAT_ERROR);
302 int end_code= STAT_ERROR;
303 int flag_is_query= 0;
304 cJSON *cjson_rest= NULL, *cjson_aux= NULL;
305 char *samples_format_output_str= NULL;
306 LOG_CTX_INIT(log_ctx);
309 CHECK_DO(audio_settings_dec_ctx!= NULL,
return STAT_ERROR);
310 CHECK_DO(str!= NULL,
return STAT_EINVAL);
314 flag_is_query= (str[0]==
'{' && str[strlen(str)-1]==
'}')? 0: 1;
318 if(flag_is_query== 1) {
321 samples_format_output_str= uri_parser_query_str_get_value(
322 "samples_format_output", str);
323 if(samples_format_output_str!= NULL) {
325 int i, flag_supported;
328 CHECK_DO(strlen(samples_format_output_str)> 0,
329 end_code= STAT_EINVAL;
goto end);
332 for(i= 0, flag_supported= 0;
335 if(strncmp(samples_format_output_str, fmt, strlen(fmt))== 0) {
340 if(flag_supported== 0) {
341 end_code= STAT_EINVAL;
348 samples_format_output_str);
354 cjson_rest= cJSON_Parse(str);
355 CHECK_DO(cjson_rest!= NULL,
goto end);
358 cjson_aux= cJSON_GetObjectItem(cjson_rest,
"samples_format_output");
359 if(cjson_aux!= NULL) {
361 int i, flag_supported;
364 CHECK_DO(cjson_aux->valuestring!= NULL &&
365 strlen(cjson_aux->valuestring)> 0,
366 end_code= STAT_EINVAL;
goto end);
369 for(i= 0, flag_supported= 0;
372 if(strncmp(cjson_aux->valuestring, fmt, strlen(fmt))== 0) {
377 if(flag_supported== 0) {
378 end_code= STAT_EINVAL;
385 cjson_aux->valuestring);
390 end_code= STAT_SUCCESS;
392 if(cjson_rest!= NULL)
393 cJSON_Delete(cjson_rest);
394 if(samples_format_output_str!= NULL)
395 free(samples_format_output_str);
401 cJSON **ref_cjson_rest,
log_ctx_t *log_ctx)
403 int end_code= STAT_ERROR;
404 cJSON *cjson_rest= NULL;
405 LOG_CTX_INIT(log_ctx);
407 CHECK_DO(audio_settings_dec_ctx!= NULL,
goto end);
408 CHECK_DO(ref_cjson_rest!= NULL,
goto end);
410 *ref_cjson_rest= NULL;
413 cjson_rest= cJSON_CreateObject();
414 CHECK_DO(cjson_rest!= NULL,
goto end);
434 *ref_cjson_rest= cjson_rest;
436 end_code= STAT_SUCCESS;
438 if(cjson_rest!= NULL)
439 cJSON_Delete(cjson_rest);
int audio_settings_enc_ctx_restful_get(volatile audio_settings_enc_ctx_t *audio_settings_enc_ctx, cJSON **ref_cjson_rest, log_ctx_t *log_ctx)
audio_settings_enc_ctx_t * audio_settings_enc_ctx_allocate()
void audio_settings_enc_ctx_release(audio_settings_enc_ctx_t **ref_audio_settings_enc_ctx)
int audio_settings_dec_ctx_init(volatile audio_settings_dec_ctx_t *audio_settings_dec_ctx)
int audio_settings_enc_ctx_init(volatile audio_settings_enc_ctx_t *audio_settings_enc_ctx)
int audio_settings_enc_ctx_restful_put(volatile audio_settings_enc_ctx_t *audio_settings_enc_ctx, const char *str, log_ctx_t *log_ctx)
void audio_settings_dec_ctx_release(audio_settings_dec_ctx_t **ref_audio_settings_dec_ctx)
int audio_settings_dec_ctx_cpy(const audio_settings_dec_ctx_t *audio_settings_dec_ctx_src, audio_settings_dec_ctx_t *audio_settings_dec_ctx_dst)
char * samples_format_output
#define CHECK_DO(COND, ACTION)
int audio_settings_enc_ctx_cpy(const audio_settings_enc_ctx_t *audio_settings_enc_ctx_src, audio_settings_enc_ctx_t *audio_settings_enc_ctx_dst)
audio_settings_dec_ctx_t * audio_settings_dec_ctx_allocate()
void audio_settings_dec_ctx_deinit(volatile audio_settings_dec_ctx_t *audio_settings_dec_ctx)
void audio_settings_enc_ctx_deinit(volatile audio_settings_enc_ctx_t *audio_settings_enc_ctx)
Audio encoder and decoder generic settings.
static const char * supported_samples_format_oput_array_dec[]
int audio_settings_dec_ctx_restful_put(volatile audio_settings_dec_ctx_t *audio_settings_dec_ctx, const char *str, log_ctx_t *log_ctx)
int audio_settings_dec_ctx_restful_get(volatile audio_settings_dec_ctx_t *audio_settings_dec_ctx, cJSON **ref_cjson_rest, log_ctx_t *log_ctx)