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;
}
示例#2
0
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;
}
示例#3
0
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;
}