📄 vld.h
字号:
{"00 1110 11", 24, -1, 0},
{"00 1110 00", 25, 1, 0},
{"00 1110 01", 25, -1, 0},
{"00 1101 10", 26, 1, 0},
{"00 1101 11", 26, -1, 0},
{"End"}
};
static struct vlc_entry escape_run[] = {
{"FLC"},
{"00 0000", SYM_ESC_RUN, 0, -ST_DIFF_ESC_LEVEL, 63},
{"End"}
};
/* ESC_LEVEL: Levels 0 and -128 are not allowed */
static struct vlc_entry escape_level[] = {
{"FLC"},
{"0000 0001", SYM_ESC_LEVEL, 1, ST_DIFF_ESC_LEVEL, 127},
{"1000 0001", SYM_ESC_LEVEL, -127, ST_DIFF_ESC_LEVEL, -1},
{"End"}
};
/* INTRA DC coeff: Levels 0 and 255 not allowed; level 128 repr. by 255 */
static struct vlc_entry intra_dc[] = {
{"FLC"},
{"0000 0001", SYM_INTRA_DC, 1, -1, 127},
{"1111 1111", SYM_INTRA_DC, 128, -1, 128},
{"1000 0001", SYM_INTRA_DC, 129, -1, 254},
{"End"}
};
/* INTRA DC coeff: Levels 0 and 255 not allowed; level 128 repr. by 255 */
static struct vlc_entry last_intra_dc[] = {
{"FLC"},
{"0000 0001", SYM_INTRA_DC, 1, (ST_NEXT_BLK_6 - ST_INTRA_DC_BLK_6), 127},
{"1111 1111", SYM_INTRA_DC, 128, (ST_NEXT_BLK_6 - ST_INTRA_DC_BLK_6), 128},
{"1000 0001", SYM_INTRA_DC, 129, (ST_NEXT_BLK_6 - ST_INTRA_DC_BLK_6), 254},
{"End"}
};
static struct vlc_entry mba_startcode[] = {
{"1", SYM_MBA, 1, (ST_MTYPE - ST_MBA_STARTCODE)},
{"011", SYM_MBA, 2, (ST_MTYPE - ST_MBA_STARTCODE)},
{"010", SYM_MBA, 3, (ST_MTYPE - ST_MBA_STARTCODE)},
{"0011", SYM_MBA, 4, (ST_MTYPE - ST_MBA_STARTCODE)},
{"0010", SYM_MBA, 5, (ST_MTYPE - ST_MBA_STARTCODE)},
{"0001 1", SYM_MBA, 6, (ST_MTYPE - ST_MBA_STARTCODE)},
{"0001 0", SYM_MBA, 7, (ST_MTYPE - ST_MBA_STARTCODE)},
{"0000 111", SYM_MBA, 8, (ST_MTYPE - ST_MBA_STARTCODE)},
{"0000 110", SYM_MBA, 9, (ST_MTYPE - ST_MBA_STARTCODE)},
{"0000 1011", SYM_MBA, 10, (ST_MTYPE - ST_MBA_STARTCODE)},
{"0000 1010", SYM_MBA, 11, (ST_MTYPE - ST_MBA_STARTCODE)},
{"0000 1001", SYM_MBA, 12, (ST_MTYPE - ST_MBA_STARTCODE)},
{"0000 1000", SYM_MBA, 13, (ST_MTYPE - ST_MBA_STARTCODE)},
{"0000 0", SYM_ESCAPE, TAB_LONG_MBA, 0},
{"End"}
};
static struct vlc_entry long_mba[] = {
{"111", SYM_MBA, 14, (ST_MTYPE - ST_MBA_STARTCODE)},
{"110", SYM_MBA, 15, (ST_MTYPE - ST_MBA_STARTCODE)},
{"101 11", SYM_MBA, 16, (ST_MTYPE - ST_MBA_STARTCODE)},
{"101 10", SYM_MBA, 17, (ST_MTYPE - ST_MBA_STARTCODE)},
{"101 01", SYM_MBA, 18, (ST_MTYPE - ST_MBA_STARTCODE)},
{"101 00", SYM_MBA, 19, (ST_MTYPE - ST_MBA_STARTCODE)},
{"100 11", SYM_MBA, 20, (ST_MTYPE - ST_MBA_STARTCODE)},
{"100 10", SYM_MBA, 21, (ST_MTYPE - ST_MBA_STARTCODE)},
{"100 011", SYM_MBA, 22, (ST_MTYPE - ST_MBA_STARTCODE)},
{"100 010", SYM_MBA, 23, (ST_MTYPE - ST_MBA_STARTCODE)},
{"100 001", SYM_MBA, 24, (ST_MTYPE - ST_MBA_STARTCODE)},
{"100 000", SYM_MBA, 25, (ST_MTYPE - ST_MBA_STARTCODE)},
{"011 111", SYM_MBA, 26, (ST_MTYPE - ST_MBA_STARTCODE)},
{"011 110", SYM_MBA, 27, (ST_MTYPE - ST_MBA_STARTCODE)},
{"011 101", SYM_MBA, 28, (ST_MTYPE - ST_MBA_STARTCODE)},
{"011 100", SYM_MBA, 29, (ST_MTYPE - ST_MBA_STARTCODE)},
{"011 011", SYM_MBA, 30, (ST_MTYPE - ST_MBA_STARTCODE)},
{"011 010", SYM_MBA, 31, (ST_MTYPE - ST_MBA_STARTCODE)},
{"011 001", SYM_MBA, 32, (ST_MTYPE - ST_MBA_STARTCODE)},
{"011 000", SYM_MBA, 33, (ST_MTYPE - ST_MBA_STARTCODE)},
{"001 111", SYM_MBA_STUFFING, 0, 0},
{"000 0000 0", SYM_ESCAPE, TAB_LONG_STARTCODE, 0},
{"End"}
};
static struct vlc_entry long_startcode[] = {
{"001", SYM_STARTCODE, 0, (ST_AFTER_STARTCODE - ST_MBA_STARTCODE)},
{"End"}
};
static struct vlc_entry mtype[] = {
{"0001", SYM_MTYPE, MTYPE_INTRA, (ST_INTRA_DC_BLK_1 - ST_MTYPE)},
{"0000 001",SYM_MTYPE, MTYPE_INTRA_MQUANT, (ST_INTRA_MQUANT - ST_MTYPE)},
{"1", SYM_MTYPE, MTYPE_INTER, (ST_CBP - ST_MTYPE)},
{"0000 1", SYM_MTYPE, MTYPE_INTER_MQUANT, (ST_INTER_MQUANT - ST_MTYPE)},
{"0000 0001",SYM_MTYPE, MTYPE_MC_CBP, (ST_MC_CBP_MVDX - ST_MTYPE)},
{"001", SYM_MTYPE, MTYPE_MCFILT_NOCBP, (ST_MC_NOCBP_MVDX - ST_MTYPE)},
{"01", SYM_MTYPE, MTYPE_MCFILT_CBP, (ST_MC_CBP_MVDX - ST_MTYPE)},
{"0000 01", SYM_MTYPE, MTYPE_MCFILT_MQUANT,(ST_MC_CBP_MQUANT - ST_MTYPE)},
{"0000 0000", SYM_ESCAPE, TAB_LONG_MTYPE, 0},
{"End"}
};
static struct vlc_entry long_mtype[] = {
{"1", SYM_MTYPE, MTYPE_MC_NOCBP, (ST_MC_NOCBP_MVDX - ST_MTYPE)},
{"01", SYM_MTYPE, MTYPE_MC_MQUANT, (ST_MC_CBP_MQUANT - ST_MTYPE)},
{"End"}
};
static struct vlc_entry mvd[] = {
{"1", SYM_MVD, 0, 1},
{"010", SYM_MVD, 1, 1},
{"011", SYM_MVD, -1, 1},
{"0010", SYM_MVD, 2, 1},
{"0011", SYM_MVD, -2, 1},
{"0001 0", SYM_MVD, 3, 1},
{"0001 1", SYM_MVD, -3, 1},
{"0000 110", SYM_MVD, 4, 1},
{"0000 111", SYM_MVD, -4, 1},
{"0000 1010", SYM_MVD, 5, 1},
{"0000 1011", SYM_MVD, -5, 1},
{"0000 1000", SYM_MVD, 6, 1},
{"0000 1001", SYM_MVD, -6, 1},
{"0000 0", SYM_ESCAPE, TAB_LONG_MVD, 1},
{"End"}
};
static struct vlc_entry long_mvd[] = {
{"110", SYM_MVD, 7, 0},
{"111", SYM_MVD, -7, 0},
{"101 10", SYM_MVD, 8, 0},
{"101 11", SYM_MVD, -8, 0},
{"101 00", SYM_MVD, 9, 0},
{"101 01", SYM_MVD, -9, 0},
{"100 10", SYM_MVD, 10, 0},
{"100 11", SYM_MVD, -10, 0},
{"100 010", SYM_MVD, 11, 0},
{"100 011", SYM_MVD, -11, 0},
{"100 000", SYM_MVD, 12, 0},
{"100 001", SYM_MVD, -12, 0},
{"011 110", SYM_MVD, 13, 0},
{"011 111", SYM_MVD, -13, 0},
{"011 100", SYM_MVD, 14, 0},
{"011 101", SYM_MVD, -14, 0},
{"011 010", SYM_MVD, 15, 0},
{"011 011", SYM_MVD, -15, 0},
{"011 001", SYM_MVD, -16, 0},
{"End"}
};
static struct vlc_entry cbp[] = {
{"111", SYM_CBP, 0x3c, (ST_FIRST_BLK_3 - ST_CBP)},
{"1101", SYM_CBP, 0x4, (ST_FIRST_BLK_6 - ST_CBP)},
{"1100", SYM_CBP, 0x8, (ST_FIRST_BLK_6 - ST_CBP)},
{"1011", SYM_CBP, 0x10, (ST_FIRST_BLK_6 - ST_CBP)},
{"1010", SYM_CBP, 0x20, (ST_FIRST_BLK_6 - ST_CBP)},
{"1001 1", SYM_CBP, 0xc, (ST_FIRST_BLK_5 - ST_CBP)},
{"1001 0", SYM_CBP, 0x30, (ST_FIRST_BLK_5 - ST_CBP)},
{"1000 1", SYM_CBP, 0x14, (ST_FIRST_BLK_5 - ST_CBP)},
{"1000 0", SYM_CBP, 0x28, (ST_FIRST_BLK_5 - ST_CBP)},
{"0111 1", SYM_CBP, 0x1c, (ST_FIRST_BLK_4 - ST_CBP)},
{"0111 0", SYM_CBP, 0x2c, (ST_FIRST_BLK_4 - ST_CBP)},
{"0110 1", SYM_CBP, 0x34, (ST_FIRST_BLK_4 - ST_CBP)},
{"0110 0", SYM_CBP, 0x38, (ST_FIRST_BLK_4 - ST_CBP)},
{"0101 1", SYM_CBP, 0x1, (ST_FIRST_BLK_6 - ST_CBP)},
{"0101 0", SYM_CBP, 0x3d, (ST_FIRST_BLK_2 - ST_CBP)},
{"0100 1", SYM_CBP, 0x2, (ST_FIRST_BLK_6 - ST_CBP)},
{"0100 0", SYM_CBP, 0x3e, (ST_FIRST_BLK_2 - ST_CBP)},
{"0011 11", SYM_CBP, 0x18, (ST_FIRST_BLK_5 - ST_CBP)},
{"0011 10", SYM_CBP, 0x24, (ST_FIRST_BLK_5 - ST_CBP)},
{"0011 01", SYM_CBP, 0x3, (ST_FIRST_BLK_5 - ST_CBP)},
{"0011 00", SYM_CBP, 0x3f, (ST_FIRST_BLK_1 - ST_CBP)},
{"0010 111", SYM_CBP, 0x5, (ST_FIRST_BLK_5 - ST_CBP)},
{"0010 110", SYM_CBP, 0x9, (ST_FIRST_BLK_5 - ST_CBP)},
{"0010 101", SYM_CBP, 0x11, (ST_FIRST_BLK_5 - ST_CBP)},
{"0010 100", SYM_CBP, 0x21, (ST_FIRST_BLK_5 - ST_CBP)},
{"0010 011", SYM_CBP, 0x6, (ST_FIRST_BLK_5 - ST_CBP)},
{"0010 010", SYM_CBP, 0xa, (ST_FIRST_BLK_5 - ST_CBP)},
{"0010 001", SYM_CBP, 0x12, (ST_FIRST_BLK_5 - ST_CBP)},
{"0010 000", SYM_CBP, 0x22, (ST_FIRST_BLK_5 - ST_CBP)},
{"0001 1111", SYM_CBP, 0x7, (ST_FIRST_BLK_4 - ST_CBP)},
{"0001 1110", SYM_CBP, 0xb, (ST_FIRST_BLK_4 - ST_CBP)},
{"0001 1101", SYM_CBP, 0x13, (ST_FIRST_BLK_4 - ST_CBP)},
{"0001 1100", SYM_CBP, 0x23, (ST_FIRST_BLK_4 - ST_CBP)},
{"0001 1011", SYM_CBP, 0xd, (ST_FIRST_BLK_4 - ST_CBP)},
{"0001 1010", SYM_CBP, 0x31, (ST_FIRST_BLK_4 - ST_CBP)},
{"0001 1001", SYM_CBP, 0x15, (ST_FIRST_BLK_4 - ST_CBP)},
{"0001 1000", SYM_CBP, 0x29, (ST_FIRST_BLK_4 - ST_CBP)},
{"0001 0111", SYM_CBP, 0xe, (ST_FIRST_BLK_4 - ST_CBP)},
{"0001 0110", SYM_CBP, 0x32, (ST_FIRST_BLK_4 - ST_CBP)},
{"0001 0101", SYM_CBP, 0x16, (ST_FIRST_BLK_4 - ST_CBP)},
{"0001 0100", SYM_CBP, 0x2a, (ST_FIRST_BLK_4 - ST_CBP)},
{"0001 0011", SYM_CBP, 0xf, (ST_FIRST_BLK_3 - ST_CBP)},
{"0001 0010", SYM_CBP, 0x33, (ST_FIRST_BLK_3 - ST_CBP)},
{"0001 0001", SYM_CBP, 0x17, (ST_FIRST_BLK_3 - ST_CBP)},
{"0001 0000", SYM_CBP, 0x2b, (ST_FIRST_BLK_3 - ST_CBP)},
{"0000 1111", SYM_CBP, 0x19, (ST_FIRST_BLK_4 - ST_CBP)},
{"0000 1110", SYM_CBP, 0x25, (ST_FIRST_BLK_4 - ST_CBP)},
{"0000 1101", SYM_CBP, 0x1a, (ST_FIRST_BLK_4 - ST_CBP)},
{"0000 1100", SYM_CBP, 0x26, (ST_FIRST_BLK_4 - ST_CBP)},
{"0000 1011", SYM_CBP, 0x1d, (ST_FIRST_BLK_3 - ST_CBP)},
{"0000 1010", SYM_CBP, 0x2d, (ST_FIRST_BLK_3 - ST_CBP)},
{"0000 1001", SYM_CBP, 0x35, (ST_FIRST_BLK_3 - ST_CBP)},
{"0000 1000", SYM_CBP, 0x39, (ST_FIRST_BLK_3 - ST_CBP)},
{"0000 0111", SYM_CBP, 0x1e, (ST_FIRST_BLK_3 - ST_CBP)},
{"0000 0110", SYM_CBP, 0x2e, (ST_FIRST_BLK_3 - ST_CBP)},
{"0000 0101", SYM_CBP, 0x36, (ST_FIRST_BLK_3 - ST_CBP)},
{"0000 0100", SYM_CBP, 0x3a, (ST_FIRST_BLK_3 - ST_CBP)},
{"0000 00", SYM_ESCAPE, TAB_LONG_CBP, 0},
{"End"}
};
static struct vlc_entry long_cbp[] = {
{"11 1", SYM_CBP, 0x1f, (ST_FIRST_BLK_2 - ST_CBP)},
{"11 0", SYM_CBP, 0x2f, (ST_FIRST_BLK_2 - ST_CBP)},
{"10 1", SYM_CBP, 0x37, (ST_FIRST_BLK_2 - ST_CBP)},
{"10 0", SYM_CBP, 0x3b, (ST_FIRST_BLK_2 - ST_CBP)},
{"01 1", SYM_CBP, 0x1b, (ST_FIRST_BLK_3 - ST_CBP)},
{"01 0", SYM_CBP, 0x27, (ST_FIRST_BLK_3 - ST_CBP)},
{"End"}
};
static struct vlc_entry quant_tr[] = {
{"FLC"},
{"00000", SYM_QUANT_TR, 0, ST_DIFF_QUANT, 31},
{"End"}
};
static struct vlc_entry gei_pei[] = {
{"0", SYM_GEI_PEI, 0, (ST_MBA_STARTCODE - ST_GEI_PEI)},
{"1", SYM_ESCAPE, TAB_LONG_SPARE, 0},
{"End"}
};
static struct vlc_entry long_spare[] = {
{"FLC"},
{"0000 0000", SYM_SPARE, 0, 0, 255},
{"End"}
};
static struct vlc_entry gn[] = {
{"FLC"},
{"0000", SYM_GN, 0, (ST_TR - ST_AFTER_STARTCODE), 0},
{"0001", SYM_GN, 1, (ST_GQUANT - ST_AFTER_STARTCODE), 15},
{"End"}
};
static struct vlc_entry ptype[] = {
{"FLC"},
{"0000 00", SYM_PTYPE, 0, (ST_GEI_PEI - ST_PTYPE), 63},
{"End"}
};
static struct vlc_entry illegal_state[] = {
{"0", SYM_EXIT, ILLEGAL_STATE, 0},
{"1", SYM_EXIT, ILLEGAL_STATE, 0},
{"End"}
};
//////////////// Tables for H.263 //////////////////
// Starts with COD=0 for coded block; COD=1 for skipped block
static struct vlc_entry mcbpc263[] = {
{"0 0000 0", SYM_ESCAPE, TAB263_LONG_MCBPC_INTER},
{"1", SYM_MCBPC, MTYPE_SKIP},
{"0 1", SYM_MCBPC, MTYPE263_INTER + 0},
{"0 0011", SYM_MCBPC, MTYPE263_INTER + 1},
{"0 0010", SYM_MCBPC, MTYPE263_INTER + 2},
{"0 0001 01", SYM_MCBPC, MTYPE263_INTER + 3},
{"0 011", SYM_MCBPC, MTYPE263_INTER_Q + 0},
{"0 0000 111", SYM_MCBPC, MTYPE263_INTER_Q + 1},
{"0 0000 110", SYM_MCBPC, MTYPE263_INTER_Q + 2},
{"0 010", SYM_MCBPC, MTYPE263_INTER4V + 0},
{"0 0000 101", SYM_MCBPC, MTYPE263_INTER4V + 1},
{"0 0000 100", SYM_MCBPC, MTYPE263_INTER4V + 2},
{"0 0001 1", SYM_MCBPC, MTYPE263_INTRA + 0},
{"0 0001 00", SYM_MCBPC, MTYPE263_INTRA_Q + 0},
{"End"}
};
static struct vlc_entry long_mcbpc263[] = { // Starts with "0 0000 0"
{"00 0000 0", SYM_ESCAPE, TAB263_LONG_STARTCODE}, // Note: no COD=0 preceeds startcode
{"000 1", SYM_MCBPC_STUFFING, MTYPE263_STUFFING},
{"010 1", SYM_MCBPC, MTYPE263_INTER_Q + 3},
{"101", SYM_MCBPC, MTYPE263_INTER4V + 3},
{"100", SYM_MCBPC, MTYPE263_INTRA + 1},
{"011", SYM_MCBPC, MTYPE263_INTRA + 2},
{"11", SYM_MCBPC, MTYPE263_INTRA + 3},
{"010 0", SYM_MCBPC, MTYPE263_INTRA_Q + 1},
{"001 1", SYM_MCBPC, MTYPE263_INTRA_Q + 2},
{"001 0", SYM_MCBPC, MTYPE263_INTRA_Q + 3},
{"End"}
};
static struct vlc_entry long_startcode263[] = { // Starts with "0000 0000 0000 0"
{"000 0", SYM_ESCAPE, TAB263_ZEROS_AND_START},
{"000 1", SYM_STARTCODE, MTYPE263_STARTCODE},
{"End"}
};
// Handle startcodes preceded by 1 to 7 zeros
// Starts with 17 zeros
// CJG 8.13.96: added line containing "0000 0001"
// Deals with Intel's padding more than 7 bits of zeros (8) after last macroblock in row.
// This does not conform to H.263, and we may want to remove it after(if) Intel fixes
// their video coder. This change was interop tested in San Jose with all other vendors.
static struct vlc_entry zeros_and_start263[] = {
{"1", SYM_STARTCODE, MTYPE263_STARTCODE},
{"01", SYM_STARTCODE, MTYPE263_STARTCODE},
{"001", SYM_STARTCODE, MTYPE263_STARTCODE},
{"0001", SYM_STARTCODE, MTYPE263_STARTCODE},
{"0000 1", SYM_STARTCODE, MTYPE263_STARTCODE},
{"0000 01", SYM_STARTCODE, MTYPE263_STARTCODE},
{"0000 001", SYM_STARTCODE, MTYPE263_STARTCODE},
{"0000 0001", SYM_STARTCODE, MTYPE263_STARTCODE},
{"End"}
};
static struct vlc_entry intra_mcbpc263[] = {
{"0000 0000", SYM_ESCAPE, TAB263_LONG_MCBPC_INTRA},
{"1", SYM_MCBPC, MTYPE263_INTRA + 0},
{"001", SYM_MCBPC, MTYPE263_INTRA + 1},
{"010", SYM_MCBPC, MTYPE263_INTRA + 2},
{"011", SYM_MCBPC, MTYPE263_INTRA + 3},
{"0001", SYM_MCBPC, MTYPE263_INTRA_Q + 0},
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -