|
| | ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) |
| |
| | DCT_ROOT = os.environ.get('BSDEC_DCT_ROOT') |
| |
| | SRC = os.path.join(DCT_ROOT, 'src', 'supportpsx', 'dct.cc') |
| |
| | OUT = os.path.join(ROOT, 'bsdec', 'bsdec-vlc.h') |
| |
| | src = open(SRC).read() |
| |
| | m = re.search(r'c_vlcMaxLevel\[32\]\s*=\s*\{([^}]*)\}', src) |
| |
| list | maxlvl = [int(x) for x in m.group(1).split(',')] |
| |
| | pairs = re.findall(r'\{\s*(0x[0-9a-fA-F]+|0)\s*,\s*(\d+)\s*\}', m.group(1)) |
| |
| | EOB = one(r'c_vlcEob\s*=\s*\{\s*(0x[0-9a-fA-F]+)\s*,\s*(\d+)\s*\}', 'eob') |
| |
| | ESC = one(r'c_vlcEsc\s*=\s*\{\s*(0x[0-9a-fA-F]+)\s*,\s*(\d+)\s*\}', 'esc') |
| |
| list | syms = [] |
| |
| | c |
| |
| | b |
| |
| list | codes = [s[0] for s in syms] |
| |
| | MAXNZ = max(len(c) - len(c.lstrip('0')) for c in codes) |
| |
| list | groups = [[] for _ in range(MAXNZ + 1)] |
| |
| | n = len(c) - len(c.lstrip('0')) |
| |
| list | widths = [max(len(c) - n - 1 for c, _, _, _ in g) for n, g in enumerate(groups)] |
| |
| list | tables = [] |
| |
| list | offsets = [] |
| |
| int | total = 0 |
| |
| list | w = widths[n] |
| |
| list | slots = [None] * (1 << w) |
| |
| | suf = c[n + 1:] |
| |
| | nbits = len(suf) |
| |
| int | base = int(suf, 2) if nbits else 0 |
| |
| tuple | idx = (base << (w - nbits)) | extra |
| |
| int | INVALID = 0 |
| |
| | holes = sum(1 for t in tables for e in t if e is None) |
| |
| int | pad = 32 - len(widths) |
| |
| str | line = ' ' |
| |
| str | tok = ' 0x%08x,' % pack(e) |
| |
| | luma = dcbook('c_dcSizeLuma') |
| |
| | chroma = dcbook('c_dcSizeChroma') |
| |
| list | pats = [format(c, '0%db' % b) for c, b in bk] |
| |