OMX_ERRORTYPE process_input_parameters(int argc, char **args, OMX_PARAM_PORTDEFINITIONTYPE * params) { OMX_U32 i; // input, output, input-variance i = 1; while(i < argc) { /* input compression format */ if(strcmp(args[i], "-I") == 0 || strcmp(args[i], "--input-compression-format") == 0) { OMXDECODER_CHECK_NEXT_VALUE(i, args, argc, "Parameter for input compression format missing.\n"); if(strcasecmp(args[i], "avc") == 0) params->format.video.eCompressionFormat = OMX_VIDEO_CodingAVC; else if(strcasecmp(args[i], "mpeg4") == 0) params->format.video.eCompressionFormat = OMX_VIDEO_CodingMPEG4; else if(strcasecmp(args[i], "h263") == 0) params->format.video.eCompressionFormat = OMX_VIDEO_CodingH263; else if(strcasecmp(args[i], "wmv") == 0) { params->format.video.eCompressionFormat = OMX_VIDEO_CodingWMV; parameters.rcv_input = OMX_TRUE; } else if(strcasecmp(args[i], "mpeg2") == 0) params->format.video.eCompressionFormat = OMX_VIDEO_CodingMPEG2; else if(strcmp(args[i], "jpeg") == 0) { parameters.jpeg_input = OMX_TRUE; params->format.image.eCompressionFormat = OMX_IMAGE_CodingJPEG; } else { OMX_OSAL_Trace(OMX_OSAL_TRACE_ERROR, "Unknown input compression format.\n"); return OMX_ErrorBadParameter; } } else if(strcmp(args[i], "-e") == 0 || strcmp(args[i], "--error-concealment") == 0) { params->format.video.bFlagErrorConcealment = OMX_TRUE; } else { /* do nothing */ } ++i; } return OMX_ErrorNone; }
OMX_ERRORTYPE process_jpeg_output_parameters(int argc, char **args, OMX_PARAM_PORTDEFINITIONTYPE * params) { OMX_U32 i; i = 1; while(i < argc) { /* output color format */ if(strcmp(args[i], "-O") == 0 || strcmp(args[i], "--output-color-format") == 0) { OMXDECODER_CHECK_NEXT_VALUE(i, args, argc, "Parameter for output color format missing.\n"); if(strcasecmp(args[i], "YUV420Planar") == 0) params->format.image.eColorFormat = OMX_COLOR_FormatYUV420PackedPlanar; else if(strcasecmp(args[i], "YUV420SemiPlanar") == 0) params->format.image.eColorFormat = OMX_COLOR_FormatYUV420PackedSemiPlanar; else if(strcasecmp(args[i], "YCbCr") == 0) params->format.image.eColorFormat = OMX_COLOR_FormatYCbYCr; else if(strcasecmp(args[i], "16bitARGB4444") == 0) params->format.image.eColorFormat = OMX_COLOR_Format16bitARGB4444; else if(strcasecmp(args[i], "16bitARGB1555") == 0) params->format.image.eColorFormat = OMX_COLOR_Format16bitARGB1555; else if(strcasecmp(args[i], "16bitRGB565") == 0) params->format.image.eColorFormat = OMX_COLOR_Format16bitRGB565; else if(strcasecmp(args[i], "16bitBGR565") == 0) params->format.image.eColorFormat = OMX_COLOR_Format16bitBGR565; else if(strcasecmp(args[i], "32bitBGRA8888") == 0) params->format.image.eColorFormat = OMX_COLOR_Format32bitBGRA8888; else if(strcasecmp(args[i], "32bitARGB8888") == 0) params->format.image.eColorFormat = OMX_COLOR_Format32bitARGB8888; else { OMX_OSAL_Trace(OMX_OSAL_TRACE_ERROR, "Unknown output color format.\n"); return OMX_ErrorBadParameter; } } else if(strcmp(args[i], "-x") == 0 || strcmp(args[i], "--output-width") == 0) { OMXDECODER_CHECK_NEXT_VALUE(i, args, argc, "Parameter for output width is missing.\n"); params->format.image.nFrameWidth = atoi(args[i]); } else if(strcmp(args[i], "-y") == 0 || strcmp(args[i], "--output-height") == 0) { OMXDECODER_CHECK_NEXT_VALUE(i, args, argc, "Parameter for output height is missing.\n"); params->format.image.nFrameHeight = atoi(args[i]); } else { /* do nothing */ } ++i; } return OMX_ErrorNone; }
OMX_ERRORTYPE process_parameters(int argc, char **args, OMXDECODER_PARAMETERS * params) { OMX_U32 i, fcount; OMX_STRING files[3] = { 0 }; // input, output, input-variance fcount = 0; params->infile = 0; params->outfile = 0; params->rotation = 0; params->mirror = OMX_MirrorMax; i = 1; while(i < argc) { if(strcmp(args[i], "-v") == 0 || strcmp(args[i], "--input-variance-file") == 0) { OMXDECODER_CHECK_NEXT_VALUE(i, args, argc, "Parameter for input variance file missing.\n"); files[2] = args[i]; } else if(strcmp(args[i], "-i") == 0 || strcmp(args[i], "--input-file") == 0) { OMXDECODER_CHECK_NEXT_VALUE(i, args, argc, "Parameter for input file is missing.\n"); files[0] = args[i]; } else if(strcmp(args[i], "-o") == 0 || strcmp(args[i], "--output-file") == 0) { OMXDECODER_CHECK_NEXT_VALUE(i, args, argc, "Parameter for output file is missing.\n"); files[1] = args[i]; } if(strcmp(args[i], "-I") == 0 || strcmp(args[i], "--input-compression-format") == 0) { OMXDECODER_CHECK_NEXT_VALUE(i, args, argc, "Parameter for input compression format missing.\n"); if(strcmp(args[i], "jpeg") == 0) { parameters.jpeg_input = OMX_TRUE; } } else if(strcmp(args[i], "-s") == 0 || strcmp(args[i], "--buffer-size") == 0) { OMXDECODER_CHECK_NEXT_VALUE(i, args, argc, "Parameter for buffer size missing.\n"); params->buffer_size = atoi(args[i]); } else if(strcmp(args[i], "-c") == 0 || strcmp(args[i], "--buffer-count") == 0) { OMXDECODER_CHECK_NEXT_VALUE(i, args, argc, "Parameter for buffer count is missing.\n"); params->buffer_count = atoi(args[i]); } else if(strcmp(args[i], "-r") == 0 || strcmp(args[i], "--rotation") == 0) { if(++i == argc) { OMX_OSAL_Trace(OMX_OSAL_TRACE_ERROR, "Parameter for rotation is missing.\n"); return OMX_ErrorBadParameter; } params->rotation = atoi(args[i]); } else if(strcmp(args[i], "-m") == 0 || strcmp(args[i], "--mirror") == 0) { OMXDECODER_CHECK_NEXT_VALUE(i, args, argc, "Parameter for mirroring is missing.\n"); switch (atoi(args[i])) { case 1: params->mirror = OMX_MirrorHorizontal; break; case 2: params->mirror = OMX_MirrorVertical; break; case 3: params->mirror = OMX_MirrorBoth; break; default: params->mirror = OMX_MirrorNone; break; } } else if(strcmp(args[i], "-D") == 0 || strcmp(args[i], "--write-buffers") == 0) { params->splitted_output = OMX_TRUE; } else { // do nothing } ++i; } if(files[0] == 0) { OMX_OSAL_Trace(OMX_OSAL_TRACE_ERROR, "No input file.\n"); return OMX_ErrorBadParameter; } if(files[1] == 0) { OMX_OSAL_Trace(OMX_OSAL_TRACE_ERROR, "No output file.\n"); return OMX_ErrorBadParameter; } params->infile = files[0]; params->outfile = files[1]; params->varfile = files[2]; return OMX_ErrorNone; }