⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vld.c

📁 symbian 下的helix player源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
                        int strmax,     /* Max characters in "vlc" excluding terminating null */
                        int maxbits,    /* Max # bits in codeword */
                        int * bits,     /* Returns # bits; 0 < bits < maxbits+1 */
                        int * codeword, /* Returns codeword */
                        int minBits     // Min # bits in codeword
)
{
    int j, c;
    char msg[120]; /* Flawfinder: ignore */
    
    *bits = 0, j = 0, *codeword = 0;
    c = vlc[j];
    while (c != 0) {
        if (c == '0'  ||  c == '1') {
            *codeword <<= 1;
            ++(*bits);
            if (c == '1') {
                ++(*codeword);
            }
        } else if (isspace(c) == 0) {   /* Found illegal character */
            SafeSprintf(msg, 120, "parse_bits - Illegal string: %s", vlc);
            H261ErrMsg( msg );
            return( H261_ERROR );
        }
        c = vlc[++j];
    }
    if (j > strmax) {
        SafeSprintf(msg, 120, "Too long string: %s", vlc);
        H261ErrMsg( msg );
        return( H261_ERROR );
    }
    if (*bits > maxbits  ||  *bits < minBits) {
        SafeSprintf(msg, 120, "Illegal string: %s", vlc);
        H261ErrMsg( msg );
        return( H261_ERROR );
    }
    return (OK);
}


///////////  Routines for debugging  //////////////

//  strpad - Pad str to length len; return number of appended chars
/*static int strpad( char str[], int pad, int len)
{
    int i, numpad;

    numpad = 0;
    for (i = strlen(str); i < len; i++) {
        str[i] = pad;
        ++numpad;
    }
    if (numpad > 0) {
        str[len] = NULL;
    }
    return (numpad);
}*/

extern void printsym( SYMBOL sym )
{
    char ctype[80]; /* Flawfinder: ignore */
    
    sprinttype( sym.type, ctype, 80);
    printf("%s =%4d", ctype, sym.value);
    return;
}

extern void sprintsym( SYMBOL sym, char s[], int sBufLen)
{
    char ctype[80]; /* Flawfinder: ignore */
    
    sprinttype( sym.type, ctype, 80);
    SafeSprintf(s, sBufLen, "%s =%4d", ctype, sym.value);
    return;
}

extern void sprinttype( int symtype, char s[], int sBufLen)
{
    switch (symtype) {
    case SYM_EXIT:
        SafeSprintf(s, sBufLen, "EXIT");
        break;
    case SYM_ESCAPE:
        SafeSprintf(s, sBufLen, "ESCAPE  Table");
        break;
    case SYM_EOB:
        SafeSprintf(s, sBufLen, "End Of Block");
        break;
    case SYM_INTRA_DC:
        SafeSprintf(s, sBufLen, "Intra DC");
        break;
    case SYM_MBA:
        SafeSprintf(s, sBufLen, "MBA");
        break;
    case SYM_STARTCODE:
        SafeSprintf(s, sBufLen, "StartCode");
        break;
    case SYM_MBA_STUFFING:
        SafeSprintf(s, sBufLen, "MBA Stuffing");
        break;
    case SYM_MTYPE:
        SafeSprintf(s, sBufLen, "MB Type");
        break;
    case SYM_MVD:
        SafeSprintf(s, sBufLen, "MVDiff");
        break;
    case SYM_CBP:
        SafeSprintf(s, sBufLen, "CBP");
        break;
    case SYM_QUANT_TR:
        SafeSprintf(s, sBufLen, "Quant/TR");
        break;
    case SYM_GEI_PEI:
        SafeSprintf(s, sBufLen, "ExtraInsert");
        break;
    case SYM_SPARE:
        SafeSprintf(s, sBufLen, "Spare");
        break;
    case SYM_GN:
        SafeSprintf(s, sBufLen, "GOB Number");
        break;
    case SYM_PTYPE:
        SafeSprintf(s, sBufLen, "Picture Type");
        break;
    case SYM_ESC_RUN:
        SafeSprintf(s, sBufLen, "ESC Run");
        break;
    case SYM_ESC_LEVEL:
        SafeSprintf(s, sBufLen, "ESC Level");
        break;
    case SYM_MCBPC:
        SafeSprintf(s, sBufLen, "MCBPC");
        break;
    case SYM_MCBPC_STUFFING:
        SafeSprintf(s, sBufLen, "MCBPC Stuffing");
        break;
    case SYM_MODB:
        SafeSprintf(s, sBufLen, "MODB");
        break;
    case SYM_CBPY:
        SafeSprintf(s, sBufLen, "CBPY");
        break;
    case SYM_DQUANT:
        SafeSprintf(s, sBufLen, "DQUANT");
        break;
    default:
        SafeSprintf(s, sBufLen, "Run = %d   Level", symtype);
        break;
    }
    return;
}

extern void printstate( int state )
{
    switch (state) {
    case ST_MC_NOCBP_MVDX:
        printf("MC No coeffs MVDx");
        break;
    case ST_MC_NOCBP_MVDY:
        printf("MC No coeffs MVDy");
        break;
    case ST_MBA_STARTCODE:
        printf("MBA or Startcode");
        break;
    case ST_NEXT_BLK_6:
        printf("One block to go, AC coeff");
        break;
    case ST_FIRST_BLK_6:
        printf("One block to go, first coeff");
        break;
    case ST_NEXT_BLK_5:
        printf("Two blocks to go, AC coeff");
        break;
    case ST_FIRST_BLK_5:
        printf("Two blocks to go, first coeff");
        break;
    case ST_NEXT_BLK_4:
        printf("Three blocks to go, AC coeff");
        break;
    case ST_FIRST_BLK_4:
        printf("Three blocks to go, first coeff");
        break;
    case ST_NEXT_BLK_3:
        printf("Four blocks to go, AC coeff");
        break;
    case ST_FIRST_BLK_3:
        printf("Four blocks to go, first coeff");
        break;
    case ST_NEXT_BLK_2:
        printf("Five blocks to go, AC coeff");
        break;
    case ST_FIRST_BLK_2:
        printf("Five blocks to go, first coeff");
        break;
    case ST_NEXT_BLK_1:
        printf("Six blocks to go, AC coeff");
        break;
    case ST_FIRST_BLK_1:
        printf("Six blocks to go, first coeff");
        break;
    case ST_INTRA_DC_BLK_6:
        printf("Last INTRA block, DC coeff");
        break;
    case ST_INTRA_AC_BLK_5:
        printf("Two INTRA blocks to go, AC coeff");
        break;
    case ST_INTRA_DC_BLK_5:
        printf("Two INTRA blocks to go, DC coeff");
        break;
    case ST_INTRA_AC_BLK_4:
        printf("Three INTRA blocks to go, AC coeff");
        break;
    case ST_INTRA_DC_BLK_4:
        printf("Three INTRA blocks to go, DC coeff");
        break;
    case ST_INTRA_AC_BLK_3:
        printf("Four INTRA blocks to go, AC coeff");
        break;
    case ST_INTRA_DC_BLK_3:
        printf("Four INTRA blocks to go, DC coeff");
        break;
    case ST_INTRA_AC_BLK_2:
        printf("Five INTRA blocks to go, AC coeff");
        break;
    case ST_INTRA_DC_BLK_2:
        printf("Five INTRA blocks to go, DC coeff");
        break;
    case ST_INTRA_AC_BLK_1:
        printf("Six INTRA blocks to go, AC coeff");
        break;
    case ST_INTRA_DC_BLK_1:
        printf("Six INTRA blocks to go, DC coeff");
        break;
    case ST_MC_CBP_MVDX:
        printf("MVDx");
        break;
    case ST_MC_CBP_MVDY:
        printf("MVDy");
        break;
    case ST_CBP:
        printf("CBP");
        break;
    case ST_INTRA_MQUANT:
        printf("INTRA MQUANT");
        break;
    case ST_MC_CBP_MQUANT:
        printf("MC MQUANT");
        break;
    case ST_ESC_BLK_6:
        printf("ESCAPE, one block to go");
        break;
    case ST_INTER_MQUANT:
        printf("INTER MQUANT");
        break;
    case ST_ESC_BLK_5:
        printf("ESCAPE, two blocks to go");
        break;
    case ST_MTYPE:
        printf("MTYPE");
        break;
    case ST_ESC_BLK_4:
        printf("ESCAPE, three blocks to go");
        break;
    case ST_GEI_PEI:
        printf("PEI/GEI");
        break;
    case ST_ESC_BLK_3:
        printf("ESCAPE, four blocks to go");
        break;
    case ST_PTYPE:
        printf("PictureType");
        break;
    case ST_ESC_BLK_2:
        printf("ESCAPE, five blocks to go");
        break;
    case ST_GQUANT:
        printf("GQUANT");
        break;
    case ST_ESC_BLK_1:
        printf("ESCAPE, six blocks to go");
        break;
    case ST_TR:
        printf("TempRef");
        break;
    case ST_AFTER_STARTCODE:
        printf("After Startcode");
        break;
    case ST_ESC_INTRA_5:
        printf("ESCAPE, two INTRA blocks to go");
        break;
    case ST_ESC_INTRA_4:
        printf("ESCAPE, three INTRA blocks to go");
        break;
    case ST_ESC_INTRA_3:
        printf("ESCAPE, four INTRA blocks to go");
        break;
    case ST_ESC_INTRA_2:
        printf("ESCAPE, five INTRA blocks to go");
        break;
    case ST_ESC_INTRA_1:
        printf("ESCAPE, six INTRA blocks to go");
        break;

    // H.263 states
    case ST263_FINISHED:
        printf("Finished H.263 block decoding");
        break;
    case ST263_ESC_FINISHED:
        printf("Decode ESC-LEVEL, then done");
        break;
    case ST263_BLK_6:
        printf("Decoding last block (block 6)");
        break;
    case ST263_ESC_BLK6:
        printf("Decode ESC-LEVEL, then continue with block 6");
        break;
    case ST263_BLK_5:
        printf("Decoding block 5");
        break;
    case ST263_ESC_BLK5:
        printf("Decode ESC-LEVEL, then continue with block 5");
        break;
    case ST263_BLK_4:
        printf("Decoding block 4");
        break;
    case ST263_ESC_BLK4:
        printf("Decode ESC-LEVEL, then continue with block 4");
        break;
    case ST263_BLK_3:
        printf("Decoding block 3");
        break;
    case ST263_ESC_BLK3:
        printf("Decode ESC-LEVEL, then continue with block 3");
        break;
    case ST263_BLK_2:
        printf("Decoding block 2");
        break;
    case ST263_ESC_BLK2:
        printf("Decode ESC-LEVEL, then continue with block 2");
        break;
    case ST263_BLK_1:
        printf("Decoding block 1");
        break;
    case ST263_ESC_BLK1:
        printf("Decode ESC-LEVEL, then continue with block 1");
        break;
    case ST263_INTRA_DC_ONLY:
        printf("Decode INTRA-DC only, then exit");
        break;
    case ST263_INTRA_DC_AC:
        printf("Decode INTRA-DC and AC coeffs, then exit");
        break;

    default:
        printf("Unknown state = %d", state);
        break;
    }
    return;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -