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

📄 vld.c

📁 linux下的一款播放器
💻 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 + -