Micro optimization of ArithmeticDecoder_readBit
This commit is contained in:
parent
2b6cb317db
commit
bd9419f1ef
@ -128,41 +128,39 @@ var ArithmeticDecoder = (function ArithmeticDecoderClosure() {
|
|||||||
var cx_index = contexts[pos] >> 1, cx_mps = contexts[pos] & 1;
|
var cx_index = contexts[pos] >> 1, cx_mps = contexts[pos] & 1;
|
||||||
var qeTableIcx = QeTable[cx_index];
|
var qeTableIcx = QeTable[cx_index];
|
||||||
var qeIcx = qeTableIcx.qe;
|
var qeIcx = qeTableIcx.qe;
|
||||||
var nmpsIcx = qeTableIcx.nmps;
|
|
||||||
var nlpsIcx = qeTableIcx.nlps;
|
|
||||||
var switchIcx = qeTableIcx.switchFlag;
|
|
||||||
var d;
|
var d;
|
||||||
this.a -= qeIcx;
|
var a = this.a - qeIcx;
|
||||||
|
|
||||||
if (this.chigh < qeIcx) {
|
if (this.chigh < qeIcx) {
|
||||||
// exchangeLps
|
// exchangeLps
|
||||||
if (this.a < qeIcx) {
|
if (a < qeIcx) {
|
||||||
this.a = qeIcx;
|
a = qeIcx;
|
||||||
d = cx_mps;
|
d = cx_mps;
|
||||||
cx_index = nmpsIcx;
|
cx_index = qeTableIcx.nmps;
|
||||||
} else {
|
} else {
|
||||||
this.a = qeIcx;
|
a = qeIcx;
|
||||||
d = 1 - cx_mps;
|
d = 1 ^ cx_mps;
|
||||||
if (switchIcx) {
|
if (qeTableIcx.switchFlag === 1) {
|
||||||
cx_mps = d;
|
cx_mps = d;
|
||||||
}
|
}
|
||||||
cx_index = nlpsIcx;
|
cx_index = qeTableIcx.nlps;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
this.chigh -= qeIcx;
|
this.chigh -= qeIcx;
|
||||||
if ((this.a & 0x8000) !== 0) {
|
if ((a & 0x8000) !== 0) {
|
||||||
|
this.a = a;
|
||||||
return cx_mps;
|
return cx_mps;
|
||||||
}
|
}
|
||||||
// exchangeMps
|
// exchangeMps
|
||||||
if (this.a < qeIcx) {
|
if (a < qeIcx) {
|
||||||
d = 1 - cx_mps;
|
d = 1 ^ cx_mps;
|
||||||
if (switchIcx) {
|
if (qeTableIcx.switchFlag === 1) {
|
||||||
cx_mps = d;
|
cx_mps = d;
|
||||||
}
|
}
|
||||||
cx_index = nlpsIcx;
|
cx_index = qeTableIcx.nlps;
|
||||||
} else {
|
} else {
|
||||||
d = cx_mps;
|
d = cx_mps;
|
||||||
cx_index = nmpsIcx;
|
cx_index = qeTableIcx.nmps;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// C.3.3 renormD;
|
// C.3.3 renormD;
|
||||||
@ -171,11 +169,12 @@ var ArithmeticDecoder = (function ArithmeticDecoderClosure() {
|
|||||||
this.byteIn();
|
this.byteIn();
|
||||||
}
|
}
|
||||||
|
|
||||||
this.a <<= 1;
|
a <<= 1;
|
||||||
this.chigh = ((this.chigh << 1) & 0xFFFF) | ((this.clow >> 15) & 1);
|
this.chigh = ((this.chigh << 1) & 0xFFFF) | ((this.clow >> 15) & 1);
|
||||||
this.clow = (this.clow << 1) & 0xFFFF;
|
this.clow = (this.clow << 1) & 0xFFFF;
|
||||||
this.ct--;
|
this.ct--;
|
||||||
} while ((this.a & 0x8000) === 0);
|
} while ((a & 0x8000) === 0);
|
||||||
|
this.a = a;
|
||||||
|
|
||||||
contexts[pos] = cx_index << 1 | cx_mps;
|
contexts[pos] = cx_index << 1 | cx_mps;
|
||||||
return d;
|
return d;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user