32 #include <libcjson/cJSON.h>    33 #include <libmediaprocsutils/log.h>    34 #include <libmediaprocsutils/stat_codes.h>    35 #include <libmediaprocsutils/check_utils.h>    36 #include <libmediaprocsutils/fifo.h>    37 #include <libmediaprocs/proc_if.h>    38 #include <libmediaprocs/proc.h>    67         const char *settings_str, 
log_ctx_t *log_ctx, va_list arg);
    86     "bypass", 
"bypass", 
"video/bypass",
    87     (uint64_t)(PROC_FEATURE_BITRATE|PROC_FEATURE_REGISTER_PTS),
    90     proc_send_frame_default1,
    92     proc_recv_frame_default1,
   108         const char *settings_str, 
log_ctx_t *log_ctx, va_list arg)
   110     int ret_code, end_code= STAT_ERROR;
   113     LOG_CTX_INIT(log_ctx);
   116     CHECK_DO(proc_if!= NULL, 
return NULL);
   117     CHECK_DO(settings_str!= NULL, 
return NULL);
   122     CHECK_DO(bypass_ctx!= NULL, 
goto end);
   129     CHECK_DO(ret_code== STAT_SUCCESS, 
goto end);
   133     CHECK_DO(ret_code== STAT_SUCCESS, 
goto end);
   135     end_code= STAT_SUCCESS;
   137     if(end_code!= STAT_SUCCESS)
   151     if(ref_proc_ctx== NULL || (bypass_ctx= (
bypass_ctx_t*)*ref_proc_ctx)== NULL)
   154     LOG_CTX_SET(((
proc_ctx_t*)bypass_ctx)->log_ctx);
   173     int ret_code, end_code= STAT_ERROR;
   175     size_t fifo_elem_size= 0;
   179     CHECK_DO(proc_ctx!= NULL, 
return STAT_ERROR);
   180     CHECK_DO(iput_fifo_ctx!= NULL, 
return STAT_ERROR);
   181     CHECK_DO(oput_fifo_ctx!= NULL, 
return STAT_ERROR);
   183     LOG_CTX_SET(proc_ctx->
log_ctx);
   186     ret_code= 
fifo_get(iput_fifo_ctx, (
void**)&proc_frame_ctx, &fifo_elem_size);
   187     CHECK_DO(ret_code== STAT_SUCCESS || ret_code== STAT_EAGAIN, 
goto end);
   188     if(ret_code== STAT_EAGAIN) {
   193     if(proc_frame_ctx== NULL)
   201     ret_code= 
fifo_put(oput_fifo_ctx, (
void**)&proc_frame_ctx, 
sizeof(
void*));
   202     CHECK_DO(ret_code== STAT_SUCCESS || ret_code== STAT_ENOMEM, 
goto end);
   204     end_code= STAT_SUCCESS;
   206     if(proc_frame_ctx!= NULL)
   222     CHECK_DO(proc_ctx!= NULL, 
return STAT_ERROR);
   223     CHECK_DO(str!= NULL, 
return STAT_ERROR);
   244     int end_code= STAT_ERROR;
   247     cJSON *cjson_rest= NULL, *cjson_settings= NULL;
   252     CHECK_DO(proc_ctx!= NULL, 
return STAT_ERROR);
   253     CHECK_DO(rest_fmt< PROC_IF_REST_FMT_ENUM_MAX, 
return STAT_ERROR);
   254     CHECK_DO(ref_reponse!= NULL, 
return STAT_ERROR);
   256     LOG_CTX_SET(proc_ctx->
log_ctx);
   261     cjson_rest= cJSON_CreateObject();
   262     CHECK_DO(cjson_rest!= NULL, 
goto end);
   279     cjson_settings= cJSON_CreateObject();
   280     CHECK_DO(cjson_settings!= NULL, 
goto end);
   286     cJSON_AddItemToObject(cjson_rest, 
"settings", cjson_settings);
   287     cjson_settings= NULL; 
   304         CHECK_DO(*ref_reponse!= NULL && strlen((
char*)*ref_reponse)> 0,
   308         *ref_reponse= (
void*)cjson_rest;
   312         LOGE(
"Unknown format requested for processor REST\n");
   316     end_code= STAT_SUCCESS;
   318     if(cjson_rest!= NULL)
   319         cJSON_Delete(cjson_rest);
   320     if(cjson_settings!= NULL)
   321         cJSON_Delete(cjson_settings);
   336     LOG_CTX_INIT(log_ctx);
   339     CHECK_DO(bypass_settings_ctx!= NULL, 
return STAT_ERROR);
   356     LOG_CTX_INIT(log_ctx);
   359     CHECK_DO(bypass_settings_ctx!= NULL, 
return);
 int fifo_get(fifo_ctx_t *fifo_ctx, void **ref_elem, size_t *ref_elem_size)
 
#define CJSON_PRINT(CJSON_PTR)
 
struct bypass_ctx_s bypass_ctx_t
 
void proc_frame_ctx_release(proc_frame_ctx_t **ref_proc_frame_ctx)
 
const proc_if_t proc_if_bypass
 
static int bypass_process_frame(proc_ctx_t *proc_ctx, fifo_ctx_t *iput_fifo_ctx, fifo_ctx_t *oput_fifo_ctx)
 
int fifo_put(fifo_ctx_t *fifo_ctx, void **ref_elem, size_t elem_size)
 
static int bypass_rest_get(proc_ctx_t *proc_ctx, const proc_if_rest_fmt_t rest_fmt, void **ref_reponse)
 
static void bypass_settings_ctx_deinit(volatile bypass_settings_ctx_t *bypass_settings_ctx, log_ctx_t *log_ctx)
 
"Bypass" or dummy processor. 
 
#define CHECK_DO(COND, ACTION)
 
Character string response. 
 
static proc_ctx_t * bypass_open(const proc_if_t *proc_if, const char *settings_str, log_ctx_t *log_ctx, va_list arg)
 
enum proc_if_rest_fmt_enum proc_if_rest_fmt_t
 
static int bypass_rest_put(proc_ctx_t *proc_ctx, const char *str)
 
volatile struct bypass_settings_ctx_s bypass_settings_ctx
 
proc_frame_ctx_t * proc_frame_ctx_dup(const proc_frame_ctx_t *proc_frame_ctx_arg)
 
struct bypass_settings_ctx_s bypass_settings_ctx_t
 
static int bypass_settings_ctx_init(volatile bypass_settings_ctx_t *bypass_settings_ctx, log_ctx_t *log_ctx)
 
static void bypass_close(proc_ctx_t **ref_proc_ctx)