Esempio n. 1
0
void test_exec_call(int fd, int test_id, uint32_t test_arg)
{
    uint16_t          server_status;
    int               packet_len;
    int               reply_len;
    char              packet_buf[512] = {0};
    char              return_buf[512] = {0};
    omx_packet        *packet = (omx_packet *)packet_buf;
    omx_packet        *rtn_packet = (omx_packet *)return_buf;
    fxn_error_args   *fxn_args   = (fxn_error_args *)&packet->data[1];

    /* Set Packet Header for the RCMServer, synchronous execution: */
    init_omx_packet(packet, OMX_DESC_MSG);

    /* Set OMX Function Index to call, with data: */
    packet->fxn_idx = FXN_IDX_FXNERROR;

    /* Set data for the OMX function: */
    packet->data_size = sizeof(fxn_error_args) + sizeof(int);
    packet->data[0] = 0; // RPC_OMX_MAP_INFO_NONE
    fxn_args->a = test_id;
    fxn_args->b = test_arg;

    /* Exec command: */
    packet_len = sizeof(omx_packet) + packet->data_size;
    exec_cmd(fd, (char *)packet, packet_len, (char *)rtn_packet, &reply_len);

    /* Decode reply: */
    server_status = (OMX_DESC_TYPE_MASK & rtn_packet->desc) >>
            OMX_DESC_TYPE_SHIFT;
    if (server_status == OMXSERVER_STATUS_SUCCESS)  {

       printf ("omx_errors: called fxnError(%d)), result = %d\n",
                    fxn_args->a, rtn_packet->result);
    }
    else {
       printf("omx_errors: Failed to execute fxnError: server status: %d\n",
            server_status);
    }
}
Esempio n. 2
0
void test_h264_decoder(int fd, int i)
{
    uint16_t          server_status;
    int               packet_len;
    int               reply_len;
    char              packet_buf[512] = {0};
    char              return_buf[512] = {0};
    omx_packet        *packet = (omx_packet *)packet_buf;
    omx_packet        *rtn_packet = (omx_packet *)return_buf;
    OMX_HANDLETYPE    omx_handle;

    /* Call OMX_GetHandle to create an H264_decoder: */

    /* Set Packet Header for the RCMServer, synchronous execution: */
    init_omx_packet(packet, OMX_DESC_MSG);

    /* Set OMX Function Index to call, with data: */
    packet->fxn_idx = FXN_IDX_OMX_GETHANDLE;
    /* Set data for the OMX function: */
    packet->data_size = strlen(H264_DECODER_NAME) + 1;
    strcpy((char *)&packet->data, H264_DECODER_NAME);
    *(char *)&packet->data[packet->data_size] = '\0';

    /* Exec command: */
    packet_len = sizeof(omx_packet) + packet->data_size;
    printf("omx_sample (%d): OMX_GetHandle (%s).\n", i, H264_DECODER_NAME);
    exec_cmd(fd, (char *)packet, packet_len, (char *)rtn_packet, &reply_len, 1);

    /* Decode reply: */
    server_status = (OMX_DESC_TYPE_MASK & rtn_packet->desc) >>
            OMX_DESC_TYPE_SHIFT;
    if (server_status == OMXSERVER_STATUS_SUCCESS)  {
       omx_handle = *(OMX_HANDLETYPE *)rtn_packet->data;
       printf("omx_sample (%d): Got omx_handle: 0x%x\n", i, omx_handle);
    }
    else {
       printf("omx_sample: Failed to execute OMX_GetHandle: server status: %d\n",
            server_status);
    }

    /* now call SetParameter, passing back omx_handle...*/
    init_omx_packet(packet, OMX_DESC_MSG);
    packet->fxn_idx = FXN_IDX_OMX_SETPARAMETER;
    packet->data_size = sizeof(uint32_t);
    packet->data[0] = omx_handle;

    /* Exec command: */
    packet_len = sizeof(omx_packet) + packet->data_size;
    printf("omx_sample(%d): OMX_SetParameter (0x%x)\n", i, omx_handle);
    exec_cmd(fd, (char *)packet, packet_len, (char *)rtn_packet, &reply_len, 0);

    /* Decode reply: */
    server_status = (OMX_DESC_TYPE_MASK & rtn_packet->desc) >>
            OMX_DESC_TYPE_SHIFT;
    if (server_status == OMXSERVER_STATUS_SUCCESS)  {
       printf("omx_sample (%d): Got result %d\n", i, rtn_packet->result);
    }
    else {
       printf("omx_sample: Failed to execute OMX_SetParameter: server status: %d\n",
            server_status);
    }

    /* Etc... */
}