Пример #1
0
static TW_UINT16 get_default_paper_size(const supported_size_t *s, int n)
{
    DWORD paper;
    int rc;
    int defsize = -1;
    double width, height;
    int i;
    rc = GetLocaleInfoA(LOCALE_USER_DEFAULT, LOCALE_IPAPERSIZE | LOCALE_RETURN_NUMBER, (void *) &paper, sizeof(paper));
    if (rc > 0)
        switch (paper)
        {
            case 1:
                defsize = TWSS_USLETTER;
                break;
            case 5:
                defsize = TWSS_USLEGAL;
                break;
            case 8:
                defsize = TWSS_A3;
                break;
            case 9:
                defsize = TWSS_A4;
                break;
        }

    if (defsize == -1)
        return TWSS_NONE;

    if (get_width_height(&width, &height, TRUE) != TWCC_SUCCESS)
        return TWSS_NONE;

    for (i = 0; i < n; i++)
        if (s[i].size == defsize)
        {
            /* Sane's use of integers to store floats is a hair lossy; deal with it */
            if (s[i].x > (width + .01) || s[i].y > (height + 0.01))
                return TWSS_NONE;
            else
                return s[i].size;
        }

    return TWSS_NONE;
}
Пример #2
0
static TW_UINT16 get_current_paper_size(const supported_size_t *s, int n)
{
    int i;
    double width, height;
    double xdelta, ydelta;

    if (get_width_height(&width, &height, FALSE) != TWCC_SUCCESS)
        return TWSS_NONE;

    for (i = 0; i < n; i++)
    {
        /* Sane's use of integers to store floats results
         * in a very small error; cope with that */
        xdelta = s[i].x - width;
        ydelta = s[i].y - height;
        if (xdelta < 0.01 && xdelta > -0.01 &&
            ydelta < 0.01 && ydelta > -0.01)
            return s[i].size;
    }

    return TWSS_NONE;
}
Пример #3
0
uint32_t init_video_handler(byte *metadata, uint32_t metadata_size, byte *metadata2, uint32_t metadata2_size, byte *sps_data, uint32_t *sps_size, byte *metadata3, uint32_t metadata3_size, byte *pps_data, uint32_t pps_size, byte *output_data, i2ctx **context) {
    uint32_t initVideo, count, sps_pps_data_length;
    uint16_t pps16, sps16, hton_sps_size, hton_pps_size;
    byte *sps_pps_data;
    uint32_t sps_s = *sps_size;
    /*uint32_t width, height;   
    nalHeader headers;*/

    if ((*context) == NULL) {
        return I2ERROR_CONTEXT_NULL;
    }
    if (output_data == NULL) {
        return I2ERROR_DESTINATION_NULL;
    }
    if ((metadata == NULL) || (metadata2 == NULL) || (metadata3 == NULL) || (sps_data == NULL) || (pps_data == NULL)) {
        return I2ERROR_SOURCE_NULL;
    }
    if ((metadata_size < 1) || (metadata2_size < 1) || (metadata3_size < 1) || ((*sps_size) < 1) || (pps_size < 1)) {
        return I2ERROR_SIZE_ZERO;
    }

    count = 0;

    sps_pps_data = (byte *) malloc(metadata_size + metadata2_size + 2 + sps_s + metadata3_size + 2 + pps_size);

    // Metadata
    memcpy(sps_pps_data + count, metadata, metadata_size);
    count = count + metadata_size;
    
    // Metadata2
    memcpy(sps_pps_data + count, metadata2, metadata2_size);
    count = count + metadata2_size;
    
    // Size SPS
    sps16 = sps_s;
    hton_sps_size = htons(sps16);
    memcpy(sps_pps_data + count, &hton_sps_size, 2);
    count = count + 2;
   
    // SPS
    memcpy(sps_pps_data + count, sps_data, sps_s);
    count = count + sps_s;
   
    // Metadata3
    memcpy(sps_pps_data + count, metadata3, metadata3_size);
    count = count + metadata3_size;
   
    // Size PPS
    pps16 = pps_size;
    hton_pps_size = htons(pps16);
    memcpy(sps_pps_data + count, &hton_pps_size, 2);
    count = count + 2;
    
    // PPS
    memcpy(sps_pps_data + count, pps_data, pps_size);
    count = count + pps_size;

    sps_pps_data_length = count;
    
    //spsToRbsp(sps_data, sps_s, &((*context)->ctxvideo->nalsHeader));
    //ppsToRbsp(pps_data, pps_size, &((*context)->ctxvideo->nalsHeader));   
    //if(get_width_height(&((*context)->ctxvideo)) == I2ERROR_SPS_PPS)
    //i2nalparser descomentar estas 3 lineas y comentar el if de abajo
    if (get_width_height(sps_data, sps_size, &((*context)->ctxvideo)) == I2ERROR_SPS_PPS) {
        return I2ERROR_SPS_PPS;
    }    

    initVideo = initVideoGenerator(sps_pps_data, sps_pps_data_length, output_data, context);

    return initVideo;
}