UNPKG

vox-core

Version:

Runtime de aplicaciones multiplataforma

49 lines (39 loc) 1.32 kB
if (typeof define !== 'function') { var define = require('amdefine')(module); } define(['../freeze','./Encoder'],function(freeze,Encoder){ 'use strict'; var BitTreeDecoder = function(numBitLevels){ this._numBitLevels = numBitLevels; this.init(); }; BitTreeDecoder.prototype.init = function(){ this._models = Encoder.initBitModels(null, 1 << this._numBitLevels); }; BitTreeDecoder.prototype.decode = function(rangeDecoder){ var m = 1, i = this._numBitLevels; while(i --){ m = (m << 1) | rangeDecoder.decodeBit(this._models, m); } return m - (1 << this._numBitLevels); }; BitTreeDecoder.prototype.reverseDecode = function(rangeDecoder){ var m = 1, symbol = 0, i = 0, bit; for (; i < this._numBitLevels; ++ i){ bit = rangeDecoder.decodeBit(this._models, m); m = (m << 1) | bit; symbol |= (bit << i); } return symbol; }; BitTreeDecoder.reverseDecode = function(models, startIndex, rangeDecoder, numBitLevels) { var m = 1, symbol = 0, i = 0, bit; for (; i < numBitLevels; ++ i){ bit = rangeDecoder.decodeBit(models, startIndex + m); m = (m << 1) | bit; symbol |= (bit << i); } return symbol; }; freeze(BitTreeDecoder.prototype); return freeze(BitTreeDecoder); });