Merge pull request #5549 from MaMazav/Support_EPH_and_SOP_markers
Support EPH and SOP markers.
This commit is contained in:
commit
ee70aadb56
@ -324,12 +324,6 @@ var JpxImage = (function JpxImageClosure() {
|
||||
cod.precinctsSizes = precinctsSizes;
|
||||
}
|
||||
var unsupported = [];
|
||||
if (cod.sopMarkerUsed) {
|
||||
unsupported.push('sopMarkerUsed');
|
||||
}
|
||||
if (cod.ephMarkerUsed) {
|
||||
unsupported.push('ephMarkerUsed');
|
||||
}
|
||||
if (cod.selectiveArithmeticCodingBypass) {
|
||||
unsupported.push('selectiveArithmeticCodingBypass');
|
||||
}
|
||||
@ -816,6 +810,21 @@ var JpxImage = (function JpxImageClosure() {
|
||||
bufferSize -= count;
|
||||
return (buffer >>> bufferSize) & ((1 << count) - 1);
|
||||
}
|
||||
function skipMarkerIfEqual(value) {
|
||||
if (data[offset + position - 1] === 0xFF &&
|
||||
data[offset + position] === value) {
|
||||
skipBytes(1);
|
||||
return true;
|
||||
} else if (data[offset + position] === 0xFF &&
|
||||
data[offset + position + 1] === value) {
|
||||
skipBytes(2);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
function skipBytes(count) {
|
||||
position += count;
|
||||
}
|
||||
function alignToByte() {
|
||||
bufferSize = 0;
|
||||
if (skipNextBit) {
|
||||
@ -843,9 +852,15 @@ var JpxImage = (function JpxImageClosure() {
|
||||
}
|
||||
var tileIndex = context.currentTile.index;
|
||||
var tile = context.tiles[tileIndex];
|
||||
var sopMarkerUsed = context.COD.sopMarkerUsed;
|
||||
var ephMarkerUsed = context.COD.ephMarkerUsed;
|
||||
var packetsIterator = tile.packetsIterator;
|
||||
while (position < dataLength) {
|
||||
alignToByte();
|
||||
if (sopMarkerUsed && skipMarkerIfEqual(0x91)) {
|
||||
// Skip also marker segment length and packet sequence ID
|
||||
skipBytes(4);
|
||||
}
|
||||
if (!readBits(1)) {
|
||||
continue;
|
||||
}
|
||||
@ -928,6 +943,9 @@ var JpxImage = (function JpxImageClosure() {
|
||||
});
|
||||
}
|
||||
alignToByte();
|
||||
if (ephMarkerUsed) {
|
||||
skipMarkerIfEqual(0x92);
|
||||
}
|
||||
while (queue.length > 0) {
|
||||
var packetItem = queue.shift();
|
||||
codeblock = packetItem.codeblock;
|
||||
|
Loading…
Reference in New Issue
Block a user