pylint work, issue #71
This commit is contained in:
parent
0162117ee2
commit
38434ee58e
6 changed files with 311 additions and 280 deletions
|
|
@ -19,15 +19,25 @@ from .lib import openjp2 as opj2
|
||||||
|
|
||||||
# Need a catch-all list of valid markers.
|
# Need a catch-all list of valid markers.
|
||||||
# See table A-1 in ISO/IEC FCD15444-1.
|
# See table A-1 in ISO/IEC FCD15444-1.
|
||||||
_valid_markers = [0xff00, 0xff01, 0xfffe]
|
_VALID_MARKERS = [0xff00, 0xff01, 0xfffe]
|
||||||
for _marker in range(0xffc0, 0xffe0):
|
for _marker in range(0xffc0, 0xffe0):
|
||||||
_valid_markers.append(_marker)
|
_VALID_MARKERS.append(_marker)
|
||||||
for _marker in range(0xfff0, 0xfff9):
|
for _marker in range(0xfff0, 0xfff9):
|
||||||
_valid_markers.append(_marker)
|
_VALID_MARKERS.append(_marker)
|
||||||
for _marker in range(0xff4f, 0xff70):
|
for _marker in range(0xff4f, 0xff70):
|
||||||
_valid_markers.append(_marker)
|
_VALID_MARKERS.append(_marker)
|
||||||
for _marker in range(0xff90, 0xff94):
|
for _marker in range(0xff90, 0xff94):
|
||||||
_valid_markers.append(_marker)
|
_VALID_MARKERS.append(_marker)
|
||||||
|
|
||||||
|
|
||||||
|
class InconsistentStartOfTileError(IOError):
|
||||||
|
"""To be raised if bad SOT segment encountered.
|
||||||
|
|
||||||
|
SOT segment offsets are recorded as encountered. The offsets should all be
|
||||||
|
different.
|
||||||
|
"""
|
||||||
|
def __init__(self, msg):
|
||||||
|
IOError.__init__(self, msg)
|
||||||
|
|
||||||
|
|
||||||
class Codestream(object):
|
class Codestream(object):
|
||||||
|
|
@ -59,6 +69,10 @@ class Codestream(object):
|
||||||
Supplying False may impose a large performance penalty.
|
Supplying False may impose a large performance penalty.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# Number of components. Must be kept track of for the processing of
|
||||||
|
# many segments.
|
||||||
|
self._csiz = -1
|
||||||
|
|
||||||
# Do we parse the tile part bit stream or not?
|
# Do we parse the tile part bit stream or not?
|
||||||
self._parse_tpart_flag = False
|
self._parse_tpart_flag = False
|
||||||
|
|
||||||
|
|
@ -70,137 +84,155 @@ class Codestream(object):
|
||||||
segment = SOCsegment(offset=fptr.tell() - 2, length=0)
|
segment = SOCsegment(offset=fptr.tell() - 2, length=0)
|
||||||
self.segment.append(segment)
|
self.segment.append(segment)
|
||||||
|
|
||||||
tile_offset = []
|
self._tile_offset = []
|
||||||
tile_length = []
|
self._tile_length = []
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
offset = fptr.tell()
|
|
||||||
read_buffer = fptr.read(2)
|
read_buffer = fptr.read(2)
|
||||||
marker_id, = struct.unpack('>H', read_buffer)
|
marker_id, = struct.unpack('>H', read_buffer)
|
||||||
|
|
||||||
if marker_id >= 0xff30 and marker_id <= 0xff3f:
|
if marker_id == 0xff90 and header_only:
|
||||||
the_id = '0x{0:x}'.format(marker_id)
|
# start-of-tile (SOT) means we are out of the main header.
|
||||||
segment = Segment(id=the_id, offset=offset, length=0)
|
# No need to go any further.
|
||||||
|
|
||||||
elif marker_id == 0xff51:
|
|
||||||
# Need to keep track of the number of components from SIZ for
|
|
||||||
# other markers
|
|
||||||
segment = _parse_siz_segment(fptr)
|
|
||||||
self._csiz = len(segment.ssiz)
|
|
||||||
|
|
||||||
elif marker_id == 0xff52:
|
|
||||||
segment = _parse_cod_segment(fptr)
|
|
||||||
|
|
||||||
sop = (segment.scod & 2) > 0
|
|
||||||
eph = (segment.scod & 4) > 0
|
|
||||||
|
|
||||||
if sop or eph:
|
|
||||||
self._parse_tpart_flag = True
|
|
||||||
else:
|
|
||||||
self._parse_tpart_flag = False
|
|
||||||
|
|
||||||
elif marker_id == 0xff53:
|
|
||||||
segment = self._parse_coc_segment(fptr)
|
|
||||||
|
|
||||||
elif marker_id == 0xff55:
|
|
||||||
segment = _parse_tlm_segment(fptr)
|
|
||||||
|
|
||||||
elif marker_id == 0xff58:
|
|
||||||
segment = _parse_plt_segment(fptr)
|
|
||||||
|
|
||||||
elif marker_id == 0xff5c:
|
|
||||||
segment = _parse_qcd_segment(fptr)
|
|
||||||
|
|
||||||
elif marker_id == 0xff5d:
|
|
||||||
segment = self._parse_qcc_segment(fptr)
|
|
||||||
|
|
||||||
elif marker_id == 0xff5e:
|
|
||||||
segment = self._parse_rgn_segment(fptr)
|
|
||||||
|
|
||||||
elif marker_id == 0xff5f:
|
|
||||||
segment = self._parse_pod_segment(fptr)
|
|
||||||
|
|
||||||
elif marker_id == 0xff60:
|
|
||||||
segment = _parse_ppm_segment(fptr)
|
|
||||||
|
|
||||||
elif marker_id == 0xff61:
|
|
||||||
segment = _parse_ppt_segment(fptr)
|
|
||||||
|
|
||||||
elif marker_id == 0xff63:
|
|
||||||
segment = _parse_crg_segment(fptr, self._csiz)
|
|
||||||
|
|
||||||
elif marker_id == 0xff64:
|
|
||||||
segment = _parse_cme_segment(fptr)
|
|
||||||
|
|
||||||
elif marker_id == 0xff90:
|
|
||||||
# Need to keep easy access to tile offsets and lengths for when
|
|
||||||
# we encounter start-of-data marker segments.
|
|
||||||
if header_only:
|
|
||||||
# Stop parsing as soon as we hit the first Start Of Tile.
|
|
||||||
return
|
|
||||||
|
|
||||||
segment = _parse_sot_segment(fptr)
|
|
||||||
if segment.offset not in tile_offset:
|
|
||||||
tile_offset.append(segment.offset)
|
|
||||||
tile_length.append(segment.psot)
|
|
||||||
else:
|
|
||||||
msg = "Inconsistent start-of-tile (SOT) marker segment "
|
|
||||||
msg += "encountered in tile with index {0}. "
|
|
||||||
msg += "Codestream parsing terminated."
|
|
||||||
msg = msg.format(segment.isot)
|
|
||||||
warnings.warn(msg)
|
|
||||||
return
|
|
||||||
|
|
||||||
elif marker_id == 0xff93:
|
|
||||||
# start of data. Need to seek past the current tile part.
|
|
||||||
# The last SOT marker segment has the info that we need.
|
|
||||||
segment = _parse_sod_segment(fptr)
|
|
||||||
|
|
||||||
elif marker_id == 0xffd9:
|
|
||||||
# end of codestream
|
|
||||||
segment = _parse_eoc_segment(fptr)
|
|
||||||
self.segment.append(segment)
|
|
||||||
break
|
break
|
||||||
|
|
||||||
elif marker_id in _valid_markers:
|
try:
|
||||||
# It's a reserved marker that I don't know anything about.
|
segment = self._process_marker_segment(fptr, marker_id)
|
||||||
# See table A-1 in ISO/IEC FCD15444-1.
|
except InconsistentStartOfTileError as isote:
|
||||||
segment = _parse_generic_segment(fptr, marker_id)
|
# Treat this as a warning.
|
||||||
|
msg = str(isote)
|
||||||
elif ((marker_id & 0xff00) >> 8) == 255:
|
|
||||||
# Peek ahead to see if the next two bytes are a marker or not.
|
|
||||||
# Then seek back.
|
|
||||||
msg = "Unrecognized marker id: 0x{0:x}".format(marker_id)
|
|
||||||
warnings.warn(msg)
|
warnings.warn(msg)
|
||||||
cpos = fptr.tell()
|
break
|
||||||
read_buffer = fptr.read(2)
|
|
||||||
next_item, = struct.unpack('>H', read_buffer)
|
|
||||||
fptr.seek(cpos)
|
|
||||||
if ((next_item & 0xff00) >> 8) == 255:
|
|
||||||
# No segment associated with this marker, so reset
|
|
||||||
# to two bytes after it.
|
|
||||||
segment = Segment(id='0x{0:x}'.format(marker_id),
|
|
||||||
offset=offset, length=0)
|
|
||||||
else:
|
|
||||||
segment = _parse_generic_segment(fptr, marker_id)
|
|
||||||
|
|
||||||
else:
|
|
||||||
msg = 'Invalid marker id encountered at byte {0:d} '
|
|
||||||
msg += 'in codestream: "0x{1:x}"'
|
|
||||||
msg = msg.format(offset, marker_id)
|
|
||||||
raise IOError(msg)
|
|
||||||
|
|
||||||
self.segment.append(segment)
|
self.segment.append(segment)
|
||||||
|
|
||||||
|
if marker_id == 0xffd9:
|
||||||
|
# end of codestream, should break.
|
||||||
|
break
|
||||||
|
|
||||||
if marker_id == 0xff93:
|
if marker_id == 0xff93:
|
||||||
# If SOD, then we need to seek past the tile part bit stream.
|
# If SOD, then we need to seek past the tile part bit stream.
|
||||||
if self._parse_tpart_flag:
|
if self._parse_tpart_flag:
|
||||||
# But first parse the tile part bit stream for SOP and
|
# But first parse the tile part bit stream for SOP and
|
||||||
# EPH segments.
|
# EPH segments.
|
||||||
self._parse_tile_part_bit_stream(fptr, segment,
|
self._parse_tile_part_bit_stream(fptr, segment,
|
||||||
tile_length[-1])
|
self._tile_length[-1])
|
||||||
|
|
||||||
fptr.seek(tile_offset[-1] + tile_length[-1])
|
fptr.seek(self._tile_offset[-1] + self._tile_length[-1])
|
||||||
|
|
||||||
|
def _process_marker_segment(self, fptr, marker_id):
|
||||||
|
"""Process and return a segment from the codestream.
|
||||||
|
"""
|
||||||
|
offset = fptr.tell() - 2
|
||||||
|
|
||||||
|
if marker_id >= 0xff30 and marker_id <= 0xff3f:
|
||||||
|
the_id = '0x{0:x}'.format(marker_id)
|
||||||
|
segment = Segment(marker_id=the_id, offset=offset, length=0)
|
||||||
|
|
||||||
|
elif marker_id == 0xff51:
|
||||||
|
# Need to keep track of the number of components from SIZ for
|
||||||
|
# other markers
|
||||||
|
segment = _parse_siz_segment(fptr)
|
||||||
|
self._csiz = len(segment.ssiz)
|
||||||
|
|
||||||
|
elif marker_id == 0xff52:
|
||||||
|
segment = _parse_cod_segment(fptr)
|
||||||
|
|
||||||
|
sop = (segment.scod & 2) > 0
|
||||||
|
eph = (segment.scod & 4) > 0
|
||||||
|
|
||||||
|
if sop or eph:
|
||||||
|
self._parse_tpart_flag = True
|
||||||
|
else:
|
||||||
|
self._parse_tpart_flag = False
|
||||||
|
|
||||||
|
elif marker_id == 0xff53:
|
||||||
|
segment = self._parse_coc_segment(fptr)
|
||||||
|
|
||||||
|
elif marker_id == 0xff55:
|
||||||
|
segment = _parse_tlm_segment(fptr)
|
||||||
|
|
||||||
|
elif marker_id == 0xff58:
|
||||||
|
segment = _parse_plt_segment(fptr)
|
||||||
|
|
||||||
|
elif marker_id == 0xff5c:
|
||||||
|
segment = _parse_qcd_segment(fptr)
|
||||||
|
|
||||||
|
elif marker_id == 0xff5d:
|
||||||
|
segment = self._parse_qcc_segment(fptr)
|
||||||
|
|
||||||
|
elif marker_id == 0xff5e:
|
||||||
|
segment = self._parse_rgn_segment(fptr)
|
||||||
|
|
||||||
|
elif marker_id == 0xff5f:
|
||||||
|
segment = self._parse_pod_segment(fptr)
|
||||||
|
|
||||||
|
elif marker_id == 0xff60:
|
||||||
|
segment = _parse_ppm_segment(fptr)
|
||||||
|
|
||||||
|
elif marker_id == 0xff61:
|
||||||
|
segment = _parse_ppt_segment(fptr)
|
||||||
|
|
||||||
|
elif marker_id == 0xff63:
|
||||||
|
segment = _parse_crg_segment(fptr, self._csiz)
|
||||||
|
|
||||||
|
elif marker_id == 0xff64:
|
||||||
|
segment = _parse_cme_segment(fptr)
|
||||||
|
|
||||||
|
elif marker_id == 0xff90:
|
||||||
|
# Need to keep easy access to tile offsets and lengths for when
|
||||||
|
# we encounter start-of-data marker segments.
|
||||||
|
|
||||||
|
segment = _parse_sot_segment(fptr)
|
||||||
|
if segment.offset not in self._tile_offset:
|
||||||
|
self._tile_offset.append(segment.offset)
|
||||||
|
self._tile_length.append(segment.psot)
|
||||||
|
else:
|
||||||
|
msg = "Inconsistent start-of-tile (SOT) marker segment "
|
||||||
|
msg += "encountered in tile with index {0}. "
|
||||||
|
msg += "Codestream parsing terminated."
|
||||||
|
msg = msg.format(segment.isot)
|
||||||
|
raise InconsistentStartOfTileError(msg)
|
||||||
|
|
||||||
|
elif marker_id == 0xff93:
|
||||||
|
# start of data. Need to seek past the current tile part.
|
||||||
|
# The last SOT marker segment has the info that we need.
|
||||||
|
segment = _parse_sod_segment(fptr)
|
||||||
|
|
||||||
|
elif marker_id == 0xffd9:
|
||||||
|
# end of codestream
|
||||||
|
segment = _parse_eoc_segment(fptr)
|
||||||
|
|
||||||
|
elif marker_id in _VALID_MARKERS:
|
||||||
|
# It's a reserved marker that I don't know anything about.
|
||||||
|
# See table A-1 in ISO/IEC FCD15444-1.
|
||||||
|
segment = _parse_generic_segment(fptr, marker_id)
|
||||||
|
|
||||||
|
elif ((marker_id & 0xff00) >> 8) == 255:
|
||||||
|
# Peek ahead to see if the next two bytes are a marker or not.
|
||||||
|
# Then seek back.
|
||||||
|
msg = "Unrecognized marker id: 0x{0:x}".format(marker_id)
|
||||||
|
warnings.warn(msg)
|
||||||
|
cpos = fptr.tell()
|
||||||
|
read_buffer = fptr.read(2)
|
||||||
|
next_item, = struct.unpack('>H', read_buffer)
|
||||||
|
fptr.seek(cpos)
|
||||||
|
if ((next_item & 0xff00) >> 8) == 255:
|
||||||
|
# No segment associated with this marker, so reset
|
||||||
|
# to two bytes after it.
|
||||||
|
segment = Segment(id='0x{0:x}'.format(marker_id),
|
||||||
|
offset=offset, length=0)
|
||||||
|
else:
|
||||||
|
segment = _parse_generic_segment(fptr, marker_id)
|
||||||
|
|
||||||
|
else:
|
||||||
|
msg = 'Invalid marker id encountered at byte {0:d} '
|
||||||
|
msg += 'in codestream: "0x{1:x}"'
|
||||||
|
msg = msg.format(offset, marker_id)
|
||||||
|
raise IOError(msg)
|
||||||
|
|
||||||
|
return segment
|
||||||
|
|
||||||
def _parse_tile_part_bit_stream(self, fptr, sod_marker, tile_length):
|
def _parse_tile_part_bit_stream(self, fptr, sod_marker, tile_length):
|
||||||
"""Parse the tile part bit stream for SOP, EPH marker segments."""
|
"""Parse the tile part bit stream for SOP, EPH marker segments."""
|
||||||
|
|
@ -380,7 +412,7 @@ class Segment(object):
|
||||||
|
|
||||||
Attributes
|
Attributes
|
||||||
----------
|
----------
|
||||||
id : str
|
marker_id : str
|
||||||
Identifier for the segment.
|
Identifier for the segment.
|
||||||
offset : int
|
offset : int
|
||||||
Offset of marker segment in bytes from beginning of file.
|
Offset of marker segment in bytes from beginning of file.
|
||||||
|
|
@ -388,14 +420,14 @@ class Segment(object):
|
||||||
Length of marker segment in bytes. This number does not include the
|
Length of marker segment in bytes. This number does not include the
|
||||||
two bytes constituting the marker.
|
two bytes constituting the marker.
|
||||||
"""
|
"""
|
||||||
def __init__(self, id='', offset=-1, length=-1):
|
def __init__(self, marker_id='', offset=-1, length=-1, data=None):
|
||||||
self.id = id
|
self.marker_id = marker_id
|
||||||
self.offset = offset
|
self.offset = offset
|
||||||
self.length = length
|
self.length = length
|
||||||
self._data = None
|
self._data = data
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
msg = '{0} marker segment @ ({1}, {2})'.format(self.id,
|
msg = '{0} marker segment @ ({1}, {2})'.format(self.marker_id,
|
||||||
self.offset,
|
self.offset,
|
||||||
self.length)
|
self.length)
|
||||||
return msg
|
return msg
|
||||||
|
|
@ -406,7 +438,7 @@ class COCsegment(Segment):
|
||||||
|
|
||||||
Attributes
|
Attributes
|
||||||
----------
|
----------
|
||||||
id : str
|
marker_id : str
|
||||||
Identifier for the segment.
|
Identifier for the segment.
|
||||||
offset : int
|
offset : int
|
||||||
Offset of marker segment in bytes from beginning of file.
|
Offset of marker segment in bytes from beginning of file.
|
||||||
|
|
@ -427,7 +459,7 @@ class COCsegment(Segment):
|
||||||
Core coding system
|
Core coding system
|
||||||
"""
|
"""
|
||||||
def __init__(self, ccoc, scoc, spcoc, length, offset):
|
def __init__(self, ccoc, scoc, spcoc, length, offset):
|
||||||
Segment.__init__(self, id='COC')
|
Segment.__init__(self, marker_id='COC')
|
||||||
self.ccoc = ccoc
|
self.ccoc = ccoc
|
||||||
self.scoc = scoc
|
self.scoc = scoc
|
||||||
self.spcoc = spcoc
|
self.spcoc = spcoc
|
||||||
|
|
@ -479,7 +511,7 @@ class CODsegment(Segment):
|
||||||
|
|
||||||
Attributes
|
Attributes
|
||||||
----------
|
----------
|
||||||
id : str
|
marker_id : str
|
||||||
Identifier for the segment.
|
Identifier for the segment.
|
||||||
offset : int
|
offset : int
|
||||||
Offset of marker segment in bytes from beginning of file.
|
Offset of marker segment in bytes from beginning of file.
|
||||||
|
|
@ -500,7 +532,7 @@ class CODsegment(Segment):
|
||||||
Core coding system
|
Core coding system
|
||||||
"""
|
"""
|
||||||
def __init__(self, scod, spcod, length, offset):
|
def __init__(self, scod, spcod, length, offset):
|
||||||
Segment.__init__(self, id='COD')
|
Segment.__init__(self, marker_id='COD')
|
||||||
self.scod = scod
|
self.scod = scod
|
||||||
self.spcod = spcod
|
self.spcod = spcod
|
||||||
self.length = length
|
self.length = length
|
||||||
|
|
@ -510,7 +542,7 @@ class CODsegment(Segment):
|
||||||
self._layers = params[1]
|
self._layers = params[1]
|
||||||
self._numresolutions = params[3]
|
self._numresolutions = params[3]
|
||||||
|
|
||||||
if params[3] > opj2._J2K_MAXRLVLS:
|
if params[3] > opj2.J2K_MAXRLVLS:
|
||||||
msg = "Invalid number of resolutions ({0})."
|
msg = "Invalid number of resolutions ({0})."
|
||||||
msg = msg.format(params[3] + 1)
|
msg = msg.format(params[3] + 1)
|
||||||
warnings.warn(msg)
|
warnings.warn(msg)
|
||||||
|
|
@ -581,7 +613,7 @@ class CMEsegment(Segment):
|
||||||
|
|
||||||
Attributes
|
Attributes
|
||||||
----------
|
----------
|
||||||
id : str
|
marker_id : str
|
||||||
Identifier for the segment.
|
Identifier for the segment.
|
||||||
offset : int
|
offset : int
|
||||||
Offset of marker segment in bytes from beginning of file.
|
Offset of marker segment in bytes from beginning of file.
|
||||||
|
|
@ -601,7 +633,7 @@ class CMEsegment(Segment):
|
||||||
Core coding system
|
Core coding system
|
||||||
"""
|
"""
|
||||||
def __init__(self, rcme, ccme, length, offset):
|
def __init__(self, rcme, ccme, length, offset):
|
||||||
Segment.__init__(self, id='CME')
|
Segment.__init__(self, marker_id='CME')
|
||||||
self.rcme = rcme
|
self.rcme = rcme
|
||||||
self.ccme = ccme
|
self.ccme = ccme
|
||||||
self.length = length
|
self.length = length
|
||||||
|
|
@ -624,7 +656,7 @@ class CRGsegment(Segment):
|
||||||
|
|
||||||
Attributes
|
Attributes
|
||||||
----------
|
----------
|
||||||
id : str
|
marker_id : str
|
||||||
Identifier for the segment.
|
Identifier for the segment.
|
||||||
offset : int
|
offset : int
|
||||||
Offset of marker segment in bytes from beginning of file.
|
Offset of marker segment in bytes from beginning of file.
|
||||||
|
|
@ -635,7 +667,7 @@ class CRGsegment(Segment):
|
||||||
Horizontal, vertical offset for each component
|
Horizontal, vertical offset for each component
|
||||||
"""
|
"""
|
||||||
def __init__(self, xcrg, ycrg, length, offset):
|
def __init__(self, xcrg, ycrg, length, offset):
|
||||||
Segment.__init__(self, id='CRG')
|
Segment.__init__(self, marker_id='CRG')
|
||||||
self.xcrg = xcrg
|
self.xcrg = xcrg
|
||||||
self.ycrg = ycrg
|
self.ycrg = ycrg
|
||||||
self.length = length
|
self.length = length
|
||||||
|
|
@ -655,7 +687,7 @@ class EOCsegment(Segment):
|
||||||
|
|
||||||
Attributes
|
Attributes
|
||||||
----------
|
----------
|
||||||
id : str
|
marker_id : str
|
||||||
Identifier for the segment.
|
Identifier for the segment.
|
||||||
offset : int
|
offset : int
|
||||||
Offset of marker segment in bytes from beginning of file.
|
Offset of marker segment in bytes from beginning of file.
|
||||||
|
|
@ -671,7 +703,7 @@ class EOCsegment(Segment):
|
||||||
Core coding system
|
Core coding system
|
||||||
"""
|
"""
|
||||||
def __init__(self, length, offset):
|
def __init__(self, length, offset):
|
||||||
Segment.__init__(self, id='EOC')
|
Segment.__init__(self, marker_id='EOC')
|
||||||
self.length = length
|
self.length = length
|
||||||
self.offset = offset
|
self.offset = offset
|
||||||
|
|
||||||
|
|
@ -681,7 +713,7 @@ class PODsegment(Segment):
|
||||||
|
|
||||||
Attributes
|
Attributes
|
||||||
----------
|
----------
|
||||||
id : str
|
marker_id : str
|
||||||
Identifier for the segment.
|
Identifier for the segment.
|
||||||
offset : int
|
offset : int
|
||||||
Offset of marker segment in bytes from beginning of file.
|
Offset of marker segment in bytes from beginning of file.
|
||||||
|
|
@ -708,7 +740,7 @@ class PODsegment(Segment):
|
||||||
Core coding system
|
Core coding system
|
||||||
"""
|
"""
|
||||||
def __init__(self, pod_params, length, offset):
|
def __init__(self, pod_params, length, offset):
|
||||||
Segment.__init__(self, id='POD')
|
Segment.__init__(self, marker_id='POD')
|
||||||
|
|
||||||
self.rspod = pod_params[0::6]
|
self.rspod = pod_params[0::6]
|
||||||
self.cspod = pod_params[1::6]
|
self.cspod = pod_params[1::6]
|
||||||
|
|
@ -748,7 +780,7 @@ class PLTsegment(Segment):
|
||||||
|
|
||||||
Attributes
|
Attributes
|
||||||
----------
|
----------
|
||||||
id : str
|
marker_id : str
|
||||||
Identifier for the segment.
|
Identifier for the segment.
|
||||||
offset : int
|
offset : int
|
||||||
Offset of marker segment in bytes from beginning of file.
|
Offset of marker segment in bytes from beginning of file.
|
||||||
|
|
@ -767,7 +799,7 @@ class PLTsegment(Segment):
|
||||||
Core coding system
|
Core coding system
|
||||||
"""
|
"""
|
||||||
def __init__(self, zplt, iplt, length, offset):
|
def __init__(self, zplt, iplt, length, offset):
|
||||||
Segment.__init__(self, id='PLT')
|
Segment.__init__(self, marker_id='PLT')
|
||||||
self.zplt = zplt
|
self.zplt = zplt
|
||||||
self.iplt = iplt
|
self.iplt = iplt
|
||||||
self.length = length
|
self.length = length
|
||||||
|
|
@ -787,7 +819,7 @@ class PPMsegment(Segment):
|
||||||
|
|
||||||
Attributes
|
Attributes
|
||||||
----------
|
----------
|
||||||
id : str
|
marker_id : str
|
||||||
Identifier for the segment.
|
Identifier for the segment.
|
||||||
offset : int
|
offset : int
|
||||||
Offset of marker segment in bytes from beginning of file.
|
Offset of marker segment in bytes from beginning of file.
|
||||||
|
|
@ -804,7 +836,7 @@ class PPMsegment(Segment):
|
||||||
Core coding system
|
Core coding system
|
||||||
"""
|
"""
|
||||||
def __init__(self, zppm, data, length, offset):
|
def __init__(self, zppm, data, length, offset):
|
||||||
Segment.__init__(self, id='PPM')
|
Segment.__init__(self, marker_id='PPM')
|
||||||
self.zppm = zppm
|
self.zppm = zppm
|
||||||
|
|
||||||
# both Nppm and Ippms information stored in _data
|
# both Nppm and Ippms information stored in _data
|
||||||
|
|
@ -826,7 +858,7 @@ class PPTsegment(Segment):
|
||||||
|
|
||||||
Attributes
|
Attributes
|
||||||
----------
|
----------
|
||||||
id : str
|
marker_id : str
|
||||||
Identifier for the segment.
|
Identifier for the segment.
|
||||||
offset : int
|
offset : int
|
||||||
Offset of marker segment in bytes from beginning of file.
|
Offset of marker segment in bytes from beginning of file.
|
||||||
|
|
@ -845,7 +877,7 @@ class PPTsegment(Segment):
|
||||||
Core coding system
|
Core coding system
|
||||||
"""
|
"""
|
||||||
def __init__(self, zppt, ippt, length, offset):
|
def __init__(self, zppt, ippt, length, offset):
|
||||||
Segment.__init__(self, id='PPT')
|
Segment.__init__(self, marker_id='PPT')
|
||||||
self.zppt = zppt
|
self.zppt = zppt
|
||||||
self.ippt = ippt
|
self.ippt = ippt
|
||||||
self.length = length
|
self.length = length
|
||||||
|
|
@ -864,7 +896,7 @@ class QCCsegment(Segment):
|
||||||
|
|
||||||
Attributes
|
Attributes
|
||||||
----------
|
----------
|
||||||
id : str
|
marker_id : str
|
||||||
Identifier for the segment.
|
Identifier for the segment.
|
||||||
offset : int
|
offset : int
|
||||||
Offset of marker segment in bytes from beginning of file.
|
Offset of marker segment in bytes from beginning of file.
|
||||||
|
|
@ -885,7 +917,7 @@ class QCCsegment(Segment):
|
||||||
Core coding system
|
Core coding system
|
||||||
"""
|
"""
|
||||||
def __init__(self, cqcc, sqcc, spqcc, length, offset):
|
def __init__(self, cqcc, sqcc, spqcc, length, offset):
|
||||||
Segment.__init__(self, id='QCC')
|
Segment.__init__(self, marker_id='QCC')
|
||||||
self.cqcc = cqcc
|
self.cqcc = cqcc
|
||||||
self.sqcc = sqcc
|
self.sqcc = sqcc
|
||||||
self.spqcc = spqcc
|
self.spqcc = spqcc
|
||||||
|
|
@ -913,7 +945,7 @@ class QCDsegment(Segment):
|
||||||
|
|
||||||
Attributes
|
Attributes
|
||||||
----------
|
----------
|
||||||
id : str
|
marker_id : str
|
||||||
Identifier for the segment.
|
Identifier for the segment.
|
||||||
offset : int
|
offset : int
|
||||||
Offset of marker segment in bytes from beginning of file.
|
Offset of marker segment in bytes from beginning of file.
|
||||||
|
|
@ -932,7 +964,7 @@ class QCDsegment(Segment):
|
||||||
Core coding system
|
Core coding system
|
||||||
"""
|
"""
|
||||||
def __init__(self, sqcd, spqcd, length, offset):
|
def __init__(self, sqcd, spqcd, length, offset):
|
||||||
Segment.__init__(self, id='QCD')
|
Segment.__init__(self, marker_id='QCD')
|
||||||
|
|
||||||
self.sqcd = sqcd
|
self.sqcd = sqcd
|
||||||
self.spqcd = spqcd
|
self.spqcd = spqcd
|
||||||
|
|
@ -961,7 +993,7 @@ class RGNsegment(Segment):
|
||||||
|
|
||||||
Attributes
|
Attributes
|
||||||
----------
|
----------
|
||||||
id : str
|
marker_id : str
|
||||||
Identifier for the segment.
|
Identifier for the segment.
|
||||||
offset : int
|
offset : int
|
||||||
Offset of marker segment in bytes from beginning of file.
|
Offset of marker segment in bytes from beginning of file.
|
||||||
|
|
@ -982,7 +1014,7 @@ class RGNsegment(Segment):
|
||||||
Core coding system
|
Core coding system
|
||||||
"""
|
"""
|
||||||
def __init__(self, length, offset, crgn, srgn, sprgn):
|
def __init__(self, length, offset, crgn, srgn, sprgn):
|
||||||
Segment.__init__(self, id='RGN')
|
Segment.__init__(self, marker_id='RGN')
|
||||||
self.length = length
|
self.length = length
|
||||||
self.offset = offset
|
self.offset = offset
|
||||||
self.crgn = crgn
|
self.crgn = crgn
|
||||||
|
|
@ -1005,7 +1037,7 @@ class SIZsegment(Segment):
|
||||||
|
|
||||||
Attributes
|
Attributes
|
||||||
----------
|
----------
|
||||||
id : str
|
marker_id : str
|
||||||
Identifier for the segment.
|
Identifier for the segment.
|
||||||
offset : int
|
offset : int
|
||||||
Offset of marker segment in bytes from beginning of file.
|
Offset of marker segment in bytes from beginning of file.
|
||||||
|
|
@ -1035,7 +1067,7 @@ class SIZsegment(Segment):
|
||||||
Core coding system
|
Core coding system
|
||||||
"""
|
"""
|
||||||
def __init__(self, xy_buffer, component_buffer, length, offset):
|
def __init__(self, xy_buffer, component_buffer, length, offset):
|
||||||
Segment.__init__(self, id='SIZ')
|
Segment.__init__(self, marker_id='SIZ')
|
||||||
|
|
||||||
data = struct.unpack('>HIIIIIIIIH', xy_buffer)
|
data = struct.unpack('>HIIIIIIIIH', xy_buffer)
|
||||||
|
|
||||||
|
|
@ -1107,7 +1139,7 @@ class SOCsegment(Segment):
|
||||||
|
|
||||||
Attributes
|
Attributes
|
||||||
----------
|
----------
|
||||||
id : str
|
marker_id : str
|
||||||
Identifier for the segment.
|
Identifier for the segment.
|
||||||
offset : int
|
offset : int
|
||||||
Offset of marker segment in bytes from beginning of file.
|
Offset of marker segment in bytes from beginning of file.
|
||||||
|
|
@ -1123,7 +1155,7 @@ class SOCsegment(Segment):
|
||||||
Core coding system
|
Core coding system
|
||||||
"""
|
"""
|
||||||
def __init__(self, **kwargs):
|
def __init__(self, **kwargs):
|
||||||
Segment.__init__(self, id='SOC')
|
Segment.__init__(self, marker_id='SOC')
|
||||||
self.__dict__.update(**kwargs)
|
self.__dict__.update(**kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1132,7 +1164,7 @@ class SODsegment(Segment):
|
||||||
|
|
||||||
Attributes
|
Attributes
|
||||||
----------
|
----------
|
||||||
id : str
|
marker_id : str
|
||||||
Identifier for the segment.
|
Identifier for the segment.
|
||||||
offset : int
|
offset : int
|
||||||
Offset of marker segment in bytes from beginning of file.
|
Offset of marker segment in bytes from beginning of file.
|
||||||
|
|
@ -1148,7 +1180,7 @@ class SODsegment(Segment):
|
||||||
Core coding system
|
Core coding system
|
||||||
"""
|
"""
|
||||||
def __init__(self, length, offset):
|
def __init__(self, length, offset):
|
||||||
Segment.__init__(self, id='SOD')
|
Segment.__init__(self, marker_id='SOD')
|
||||||
self.length = length
|
self.length = length
|
||||||
self.offset = offset
|
self.offset = offset
|
||||||
|
|
||||||
|
|
@ -1158,7 +1190,7 @@ class EPHsegment(Segment):
|
||||||
|
|
||||||
Attributes
|
Attributes
|
||||||
----------
|
----------
|
||||||
id : str
|
marker_id : str
|
||||||
Identifier for the segment.
|
Identifier for the segment.
|
||||||
offset : int
|
offset : int
|
||||||
Offset of marker segment in bytes from beginning of file.
|
Offset of marker segment in bytes from beginning of file.
|
||||||
|
|
@ -1174,7 +1206,7 @@ class EPHsegment(Segment):
|
||||||
Core coding system
|
Core coding system
|
||||||
"""
|
"""
|
||||||
def __init__(self, length, offset):
|
def __init__(self, length, offset):
|
||||||
Segment.__init__(self, id='EPH')
|
Segment.__init__(self, marker_id='EPH')
|
||||||
self.length = length
|
self.length = length
|
||||||
self.offset = offset
|
self.offset = offset
|
||||||
|
|
||||||
|
|
@ -1184,7 +1216,7 @@ class SOPsegment(Segment):
|
||||||
|
|
||||||
Attributes
|
Attributes
|
||||||
----------
|
----------
|
||||||
id : str
|
marker_id : str
|
||||||
Identifier for the segment.
|
Identifier for the segment.
|
||||||
offset : int
|
offset : int
|
||||||
Offset of marker segment in bytes from beginning of file.
|
Offset of marker segment in bytes from beginning of file.
|
||||||
|
|
@ -1201,7 +1233,7 @@ class SOPsegment(Segment):
|
||||||
Core coding system
|
Core coding system
|
||||||
"""
|
"""
|
||||||
def __init__(self, nsop, length, offset):
|
def __init__(self, nsop, length, offset):
|
||||||
Segment.__init__(self, id='SOP')
|
Segment.__init__(self, marker_id='SOP')
|
||||||
self.nsop = nsop
|
self.nsop = nsop
|
||||||
self.length = length
|
self.length = length
|
||||||
self.offset = offset
|
self.offset = offset
|
||||||
|
|
@ -1217,7 +1249,7 @@ class SOTsegment(Segment):
|
||||||
|
|
||||||
Attributes
|
Attributes
|
||||||
----------
|
----------
|
||||||
id : str
|
marker_id : str
|
||||||
Identifier for the segment.
|
Identifier for the segment.
|
||||||
offset : int
|
offset : int
|
||||||
Offset of marker segment in bytes from beginning of file.
|
Offset of marker segment in bytes from beginning of file.
|
||||||
|
|
@ -1241,7 +1273,7 @@ class SOTsegment(Segment):
|
||||||
Core coding system
|
Core coding system
|
||||||
"""
|
"""
|
||||||
def __init__(self, isot, psot, tpsot, tnsot, length, offset):
|
def __init__(self, isot, psot, tpsot, tnsot, length, offset):
|
||||||
Segment.__init__(self, id='SOT')
|
Segment.__init__(self, marker_id='SOT')
|
||||||
self.isot = isot
|
self.isot = isot
|
||||||
self.psot = psot
|
self.psot = psot
|
||||||
self.tpsot = tpsot
|
self.tpsot = tpsot
|
||||||
|
|
@ -1269,7 +1301,7 @@ class TLMsegment(Segment):
|
||||||
|
|
||||||
Attributes
|
Attributes
|
||||||
----------
|
----------
|
||||||
id : str
|
marker_id : str
|
||||||
Identifier for the segment.
|
Identifier for the segment.
|
||||||
offset : int
|
offset : int
|
||||||
Offset of marker segment in bytes from beginning of file.
|
Offset of marker segment in bytes from beginning of file.
|
||||||
|
|
@ -1291,7 +1323,7 @@ class TLMsegment(Segment):
|
||||||
Core coding system
|
Core coding system
|
||||||
"""
|
"""
|
||||||
def __init__(self, length, offset, ztlm, ttlm, ptlm):
|
def __init__(self, length, offset, ztlm, ttlm, ptlm):
|
||||||
Segment.__init__(self, id='TLM')
|
Segment.__init__(self, marker_id='TLM')
|
||||||
self.length = length
|
self.length = length
|
||||||
self.offset = offset
|
self.offset = offset
|
||||||
self.ztlm = ztlm
|
self.ztlm = ztlm
|
||||||
|
|
@ -1730,7 +1762,6 @@ def _parse_generic_segment(fptr, marker_id):
|
||||||
length, = struct.unpack('>H', read_buffer)
|
length, = struct.unpack('>H', read_buffer)
|
||||||
data = fptr.read(length-2)
|
data = fptr.read(length-2)
|
||||||
|
|
||||||
segment = Segment(id='0x{0:x}'.format(marker_id),
|
segment = Segment(marker_id='0x{0:x}'.format(marker_id), offset=offset,
|
||||||
offset=offset, length=length)
|
length=length, data=data)
|
||||||
segment._data = data
|
|
||||||
return segment
|
return segment
|
||||||
|
|
|
||||||
|
|
@ -154,8 +154,8 @@ _rsiz_capabilities_t = ctypes.c_int32
|
||||||
_stream_t_p = ctypes.c_void_p
|
_stream_t_p = ctypes.c_void_p
|
||||||
|
|
||||||
_PATH_LEN = 4096
|
_PATH_LEN = 4096
|
||||||
_J2K_MAXRLVLS = 33
|
J2K_MAXRLVLS = 33
|
||||||
_J2K_MAXBANDS = (3 * _J2K_MAXRLVLS - 2)
|
_J2K_MAXBANDS = (3 * J2K_MAXRLVLS - 2)
|
||||||
|
|
||||||
_JPWL_MAX_NO_TILESPECS = 16
|
_JPWL_MAX_NO_TILESPECS = 16
|
||||||
|
|
||||||
|
|
@ -379,10 +379,10 @@ class _cparameters_t(ctypes.Structure):
|
||||||
("res_spec", ctypes.c_int),
|
("res_spec", ctypes.c_int),
|
||||||
|
|
||||||
# initial precinct width
|
# initial precinct width
|
||||||
("prcw_init", ctypes.c_int * _J2K_MAXRLVLS),
|
("prcw_init", ctypes.c_int * J2K_MAXRLVLS),
|
||||||
|
|
||||||
# initial precinct height
|
# initial precinct height
|
||||||
("prch_init", ctypes.c_int * _J2K_MAXRLVLS),
|
("prch_init", ctypes.c_int * J2K_MAXRLVLS),
|
||||||
|
|
||||||
# input file name
|
# input file name
|
||||||
("infile", ctypes.c_char * _PATH_LEN),
|
("infile", ctypes.c_char * _PATH_LEN),
|
||||||
|
|
@ -606,10 +606,10 @@ class _tccp_info_t(ctypes.Structure):
|
||||||
("roishift", ctypes.c_int32),
|
("roishift", ctypes.c_int32),
|
||||||
|
|
||||||
# precinct width
|
# precinct width
|
||||||
("prcw", ctypes.c_uint32 * _J2K_MAXRLVLS),
|
("prcw", ctypes.c_uint32 * J2K_MAXRLVLS),
|
||||||
|
|
||||||
# precinct width
|
# precinct width
|
||||||
("prch", ctypes.c_uint32 * _J2K_MAXRLVLS)]
|
("prch", ctypes.c_uint32 * J2K_MAXRLVLS)]
|
||||||
|
|
||||||
|
|
||||||
class _tile_info_v2_t(ctypes.Structure):
|
class _tile_info_v2_t(ctypes.Structure):
|
||||||
|
|
|
||||||
|
|
@ -54,7 +54,7 @@ class TestCodestream(unittest.TestCase):
|
||||||
j = Jp2k(tfile.name)
|
j = Jp2k(tfile.name)
|
||||||
c = j.get_codestream()
|
c = j.get_codestream()
|
||||||
|
|
||||||
self.assertEqual(c.segment[2].id, '0xff6f')
|
self.assertEqual(c.segment[2].marker_id, '0xff6f')
|
||||||
self.assertEqual(c.segment[2].length, 3)
|
self.assertEqual(c.segment[2].length, 3)
|
||||||
self.assertEqual(c.segment[2]._data, b'\x00')
|
self.assertEqual(c.segment[2]._data, b'\x00')
|
||||||
|
|
||||||
|
|
@ -84,7 +84,7 @@ class TestCodestream(unittest.TestCase):
|
||||||
j = Jp2k(tfile.name)
|
j = Jp2k(tfile.name)
|
||||||
c = j.get_codestream()
|
c = j.get_codestream()
|
||||||
|
|
||||||
self.assertEqual(c.segment[2].id, '0xff79')
|
self.assertEqual(c.segment[2].marker_id, '0xff79')
|
||||||
self.assertEqual(c.segment[2].length, 3)
|
self.assertEqual(c.segment[2].length, 3)
|
||||||
self.assertEqual(c.segment[2]._data, b'\x00')
|
self.assertEqual(c.segment[2]._data, b'\x00')
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1515,7 +1515,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
c = Jp2k(jfile).get_codestream(header_only=False)
|
c = Jp2k(jfile).get_codestream(header_only=False)
|
||||||
|
|
||||||
# Segment IDs.
|
# Segment IDs.
|
||||||
actual = [x.id for x in c.segment]
|
actual = [x.marker_id for x in c.segment]
|
||||||
expected = ['SOC', 'SIZ', 'QCD', 'COD', 'SOT', 'SOD', 'EOC']
|
expected = ['SOC', 'SIZ', 'QCD', 'COD', 'SOT', 'SOD', 'EOC']
|
||||||
self.assertEqual(actual, expected)
|
self.assertEqual(actual, expected)
|
||||||
|
|
||||||
|
|
@ -1662,7 +1662,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
"Creator: AV-J2K (c) 2000,2001 Algo Vision")
|
"Creator: AV-J2K (c) 2000,2001 Algo Vision")
|
||||||
|
|
||||||
# One unknown marker
|
# One unknown marker
|
||||||
self.assertEqual(c.segment[6].id, '0xff30')
|
self.assertEqual(c.segment[6].marker_id, '0xff30')
|
||||||
|
|
||||||
# SOT: start of tile part
|
# SOT: start of tile part
|
||||||
self.assertEqual(c.segment[7].isot, 0)
|
self.assertEqual(c.segment[7].isot, 0)
|
||||||
|
|
@ -1672,16 +1672,16 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
|
|
||||||
# SOD: start of data
|
# SOD: start of data
|
||||||
# Just one.
|
# Just one.
|
||||||
self.assertEqual(c.segment[8].id, 'SOD')
|
self.assertEqual(c.segment[8].marker_id, 'SOD')
|
||||||
|
|
||||||
# SOP, EPH
|
# SOP, EPH
|
||||||
sop = [x.id for x in c.segment if x.id == 'SOP']
|
sop = [x.marker_id for x in c.segment if x.marker_id == 'SOP']
|
||||||
eph = [x.id for x in c.segment if x.id == 'EPH']
|
eph = [x.marker_id for x in c.segment if x.marker_id == 'EPH']
|
||||||
self.assertEqual(len(sop), 24)
|
self.assertEqual(len(sop), 24)
|
||||||
self.assertEqual(len(eph), 24)
|
self.assertEqual(len(eph), 24)
|
||||||
|
|
||||||
# EOC: end of codestream
|
# EOC: end of codestream
|
||||||
self.assertEqual(c.segment[-1].id, 'EOC')
|
self.assertEqual(c.segment[-1].marker_id, 'EOC')
|
||||||
|
|
||||||
def test_NR_p0_03_dump(self):
|
def test_NR_p0_03_dump(self):
|
||||||
jfile = os.path.join(data_root, 'input/conformance/p0_03.j2k')
|
jfile = os.path.join(data_root, 'input/conformance/p0_03.j2k')
|
||||||
|
|
@ -1798,7 +1798,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
|
|
||||||
# SOD: start of data
|
# SOD: start of data
|
||||||
# Just one.
|
# Just one.
|
||||||
self.assertEqual(c.segment[13].id, 'SOD')
|
self.assertEqual(c.segment[13].marker_id, 'SOD')
|
||||||
|
|
||||||
def test_NR_p0_04_dump(self):
|
def test_NR_p0_04_dump(self):
|
||||||
jfile = os.path.join(data_root, 'input/conformance/p0_04.j2k')
|
jfile = os.path.join(data_root, 'input/conformance/p0_04.j2k')
|
||||||
|
|
@ -1906,7 +1906,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
|
|
||||||
# SOD: start of data
|
# SOD: start of data
|
||||||
# Just one.
|
# Just one.
|
||||||
self.assertEqual(c.segment[8].id, 'SOD')
|
self.assertEqual(c.segment[8].marker_id, 'SOD')
|
||||||
|
|
||||||
def test_NR_p0_05_dump(self):
|
def test_NR_p0_05_dump(self):
|
||||||
jfile = os.path.join(data_root, 'input/conformance/p0_05.j2k')
|
jfile = os.path.join(data_root, 'input/conformance/p0_05.j2k')
|
||||||
|
|
@ -2050,7 +2050,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
|
|
||||||
# SOD: start of data
|
# SOD: start of data
|
||||||
# Just one.
|
# Just one.
|
||||||
self.assertEqual(c.segment[11].id, 'SOD')
|
self.assertEqual(c.segment[11].marker_id, 'SOD')
|
||||||
|
|
||||||
def test_NR_p0_06_dump(self):
|
def test_NR_p0_06_dump(self):
|
||||||
jfile = os.path.join(data_root, 'input/conformance/p0_06.j2k')
|
jfile = os.path.join(data_root, 'input/conformance/p0_06.j2k')
|
||||||
|
|
@ -2187,7 +2187,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
|
|
||||||
# SOD: start of data
|
# SOD: start of data
|
||||||
# Just one.
|
# Just one.
|
||||||
self.assertEqual(c.segment[11].id, 'SOD')
|
self.assertEqual(c.segment[11].marker_id, 'SOD')
|
||||||
|
|
||||||
def test_NR_p0_07_dump(self):
|
def test_NR_p0_07_dump(self):
|
||||||
jfile = os.path.join(data_root, 'input/conformance/p0_07.j2k')
|
jfile = os.path.join(data_root, 'input/conformance/p0_07.j2k')
|
||||||
|
|
@ -2272,7 +2272,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
#self.assertEqual(c.segment[7].iplt), 99)
|
#self.assertEqual(c.segment[7].iplt), 99)
|
||||||
|
|
||||||
# SOD: start of data
|
# SOD: start of data
|
||||||
self.assertEqual(c.segment[8].id, 'SOD')
|
self.assertEqual(c.segment[8].marker_id, 'SOD')
|
||||||
|
|
||||||
def test_NR_p0_08_dump(self):
|
def test_NR_p0_08_dump(self):
|
||||||
jfile = os.path.join(data_root, 'input/conformance/p0_08.j2k')
|
jfile = os.path.join(data_root, 'input/conformance/p0_08.j2k')
|
||||||
|
|
@ -2502,10 +2502,10 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
|
|
||||||
# SOD: start of data
|
# SOD: start of data
|
||||||
# Just one.
|
# Just one.
|
||||||
self.assertEqual(c.segment[6].id, 'SOD')
|
self.assertEqual(c.segment[6].marker_id, 'SOD')
|
||||||
|
|
||||||
# EOC: end of codestream
|
# EOC: end of codestream
|
||||||
self.assertEqual(c.segment[7].id, 'EOC')
|
self.assertEqual(c.segment[7].marker_id, 'EOC')
|
||||||
|
|
||||||
def test_NR_p0_10_dump(self):
|
def test_NR_p0_10_dump(self):
|
||||||
jfile = os.path.join(data_root, 'input/conformance/p0_10.j2k')
|
jfile = os.path.join(data_root, 'input/conformance/p0_10.j2k')
|
||||||
|
|
@ -2571,7 +2571,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
self.assertEqual(c.segment[4].tnsot, 0)
|
self.assertEqual(c.segment[4].tnsot, 0)
|
||||||
|
|
||||||
# SOD: start of data
|
# SOD: start of data
|
||||||
self.assertEqual(c.segment[5].id, 'SOD')
|
self.assertEqual(c.segment[5].marker_id, 'SOD')
|
||||||
|
|
||||||
# SOT: start of tile part
|
# SOT: start of tile part
|
||||||
self.assertEqual(c.segment[6].isot, 1)
|
self.assertEqual(c.segment[6].isot, 1)
|
||||||
|
|
@ -2580,7 +2580,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
self.assertEqual(c.segment[6].tnsot, 0)
|
self.assertEqual(c.segment[6].tnsot, 0)
|
||||||
|
|
||||||
# SOD: start of data
|
# SOD: start of data
|
||||||
self.assertEqual(c.segment[7].id, 'SOD')
|
self.assertEqual(c.segment[7].marker_id, 'SOD')
|
||||||
|
|
||||||
# SOT: start of tile part
|
# SOT: start of tile part
|
||||||
self.assertEqual(c.segment[8].isot, 2)
|
self.assertEqual(c.segment[8].isot, 2)
|
||||||
|
|
@ -2589,7 +2589,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
self.assertEqual(c.segment[8].tnsot, 0)
|
self.assertEqual(c.segment[8].tnsot, 0)
|
||||||
|
|
||||||
# SOD: start of data
|
# SOD: start of data
|
||||||
self.assertEqual(c.segment[9].id, 'SOD')
|
self.assertEqual(c.segment[9].marker_id, 'SOD')
|
||||||
|
|
||||||
# SOT: start of tile part
|
# SOT: start of tile part
|
||||||
self.assertEqual(c.segment[10].isot, 3)
|
self.assertEqual(c.segment[10].isot, 3)
|
||||||
|
|
@ -2598,7 +2598,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
self.assertEqual(c.segment[10].tnsot, 0)
|
self.assertEqual(c.segment[10].tnsot, 0)
|
||||||
|
|
||||||
# SOD: start of data
|
# SOD: start of data
|
||||||
self.assertEqual(c.segment[11].id, 'SOD')
|
self.assertEqual(c.segment[11].marker_id, 'SOD')
|
||||||
|
|
||||||
# SOT: start of tile part
|
# SOT: start of tile part
|
||||||
self.assertEqual(c.segment[12].isot, 0)
|
self.assertEqual(c.segment[12].isot, 0)
|
||||||
|
|
@ -2607,7 +2607,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
self.assertEqual(c.segment[12].tnsot, 2)
|
self.assertEqual(c.segment[12].tnsot, 2)
|
||||||
|
|
||||||
# SOD: start of data
|
# SOD: start of data
|
||||||
self.assertEqual(c.segment[13].id, 'SOD')
|
self.assertEqual(c.segment[13].marker_id, 'SOD')
|
||||||
|
|
||||||
# SOT: start of tile part
|
# SOT: start of tile part
|
||||||
self.assertEqual(c.segment[14].isot, 1)
|
self.assertEqual(c.segment[14].isot, 1)
|
||||||
|
|
@ -2616,7 +2616,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
self.assertEqual(c.segment[14].tnsot, 2)
|
self.assertEqual(c.segment[14].tnsot, 2)
|
||||||
|
|
||||||
# SOD: start of data
|
# SOD: start of data
|
||||||
self.assertEqual(c.segment[15].id, 'SOD')
|
self.assertEqual(c.segment[15].marker_id, 'SOD')
|
||||||
|
|
||||||
# SOT: start of tile part
|
# SOT: start of tile part
|
||||||
self.assertEqual(c.segment[16].isot, 3)
|
self.assertEqual(c.segment[16].isot, 3)
|
||||||
|
|
@ -2625,7 +2625,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
self.assertEqual(c.segment[16].tnsot, 2)
|
self.assertEqual(c.segment[16].tnsot, 2)
|
||||||
|
|
||||||
# SOD: start of data
|
# SOD: start of data
|
||||||
self.assertEqual(c.segment[17].id, 'SOD')
|
self.assertEqual(c.segment[17].marker_id, 'SOD')
|
||||||
|
|
||||||
# SOT: start of tile part
|
# SOT: start of tile part
|
||||||
self.assertEqual(c.segment[18].isot, 2)
|
self.assertEqual(c.segment[18].isot, 2)
|
||||||
|
|
@ -2634,7 +2634,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
self.assertEqual(c.segment[18].tnsot, 0)
|
self.assertEqual(c.segment[18].tnsot, 0)
|
||||||
|
|
||||||
# SOD: start of data
|
# SOD: start of data
|
||||||
self.assertEqual(c.segment[19].id, 'SOD')
|
self.assertEqual(c.segment[19].marker_id, 'SOD')
|
||||||
|
|
||||||
# SOT: start of tile part
|
# SOT: start of tile part
|
||||||
self.assertEqual(c.segment[20].isot, 2)
|
self.assertEqual(c.segment[20].isot, 2)
|
||||||
|
|
@ -2643,10 +2643,10 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
self.assertEqual(c.segment[20].tnsot, 0)
|
self.assertEqual(c.segment[20].tnsot, 0)
|
||||||
|
|
||||||
# SOD: start of data
|
# SOD: start of data
|
||||||
self.assertEqual(c.segment[21].id, 'SOD')
|
self.assertEqual(c.segment[21].marker_id, 'SOD')
|
||||||
|
|
||||||
# EOC: end of codestream
|
# EOC: end of codestream
|
||||||
self.assertEqual(c.segment[22].id, 'EOC')
|
self.assertEqual(c.segment[22].marker_id, 'EOC')
|
||||||
|
|
||||||
def test_NR_p0_11_dump(self):
|
def test_NR_p0_11_dump(self):
|
||||||
jfile = os.path.join(data_root, 'input/conformance/p0_11.j2k')
|
jfile = os.path.join(data_root, 'input/conformance/p0_11.j2k')
|
||||||
|
|
@ -2718,16 +2718,16 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
self.assertEqual(c.segment[5].tnsot, 1)
|
self.assertEqual(c.segment[5].tnsot, 1)
|
||||||
|
|
||||||
# SOD: start of data
|
# SOD: start of data
|
||||||
self.assertEqual(c.segment[6].id, 'SOD')
|
self.assertEqual(c.segment[6].marker_id, 'SOD')
|
||||||
|
|
||||||
# SOP, EPH
|
# SOP, EPH
|
||||||
sop = [x.id for x in c.segment if x.id == 'SOP']
|
sop = [x.marker_id for x in c.segment if x.marker_id == 'SOP']
|
||||||
eph = [x.id for x in c.segment if x.id == 'EPH']
|
eph = [x.marker_id for x in c.segment if x.marker_id == 'EPH']
|
||||||
self.assertEqual(len(sop), 0)
|
self.assertEqual(len(sop), 0)
|
||||||
self.assertEqual(len(eph), 1)
|
self.assertEqual(len(eph), 1)
|
||||||
|
|
||||||
# EOC: end of codestream
|
# EOC: end of codestream
|
||||||
self.assertEqual(c.segment[-1].id, 'EOC')
|
self.assertEqual(c.segment[-1].marker_id, 'EOC')
|
||||||
|
|
||||||
def test_NR_p0_12_dump(self):
|
def test_NR_p0_12_dump(self):
|
||||||
jfile = os.path.join(data_root, 'input/conformance/p0_12.j2k')
|
jfile = os.path.join(data_root, 'input/conformance/p0_12.j2k')
|
||||||
|
|
@ -2800,16 +2800,16 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
self.assertEqual(c.segment[5].tnsot, 1)
|
self.assertEqual(c.segment[5].tnsot, 1)
|
||||||
|
|
||||||
# SOD: start of data
|
# SOD: start of data
|
||||||
self.assertEqual(c.segment[6].id, 'SOD')
|
self.assertEqual(c.segment[6].marker_id, 'SOD')
|
||||||
|
|
||||||
# SOP, EPH
|
# SOP, EPH
|
||||||
sop = [x.id for x in c.segment if x.id == 'SOP']
|
sop = [x.marker_id for x in c.segment if x.marker_id == 'SOP']
|
||||||
eph = [x.id for x in c.segment if x.id == 'EPH']
|
eph = [x.marker_id for x in c.segment if x.marker_id == 'EPH']
|
||||||
self.assertEqual(len(sop), 4)
|
self.assertEqual(len(sop), 4)
|
||||||
self.assertEqual(len(eph), 0)
|
self.assertEqual(len(eph), 0)
|
||||||
|
|
||||||
# EOC: end of codestream
|
# EOC: end of codestream
|
||||||
self.assertEqual(c.segment[-1].id, 'EOC')
|
self.assertEqual(c.segment[-1].marker_id, 'EOC')
|
||||||
|
|
||||||
def test_NR_p0_13_dump(self):
|
def test_NR_p0_13_dump(self):
|
||||||
jfile = os.path.join(data_root, 'input/conformance/p0_13.j2k')
|
jfile = os.path.join(data_root, 'input/conformance/p0_13.j2k')
|
||||||
|
|
@ -2932,10 +2932,10 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
self.assertEqual(c.segment[10].tnsot, 1)
|
self.assertEqual(c.segment[10].tnsot, 1)
|
||||||
|
|
||||||
# SOD: start of data
|
# SOD: start of data
|
||||||
self.assertEqual(c.segment[11].id, 'SOD')
|
self.assertEqual(c.segment[11].marker_id, 'SOD')
|
||||||
|
|
||||||
# EOC: end of codestream
|
# EOC: end of codestream
|
||||||
self.assertEqual(c.segment[12].id, 'EOC')
|
self.assertEqual(c.segment[12].marker_id, 'EOC')
|
||||||
|
|
||||||
def test_NR_p0_14_dump(self):
|
def test_NR_p0_14_dump(self):
|
||||||
jfile = os.path.join(data_root, 'input/conformance/p0_14.j2k')
|
jfile = os.path.join(data_root, 'input/conformance/p0_14.j2k')
|
||||||
|
|
@ -3008,10 +3008,10 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
self.assertEqual(c.segment[5].tnsot, 1)
|
self.assertEqual(c.segment[5].tnsot, 1)
|
||||||
|
|
||||||
# SOD: start of data
|
# SOD: start of data
|
||||||
self.assertEqual(c.segment[6].id, 'SOD')
|
self.assertEqual(c.segment[6].marker_id, 'SOD')
|
||||||
|
|
||||||
# EOC: end of codestream
|
# EOC: end of codestream
|
||||||
self.assertEqual(c.segment[7].id, 'EOC')
|
self.assertEqual(c.segment[7].marker_id, 'EOC')
|
||||||
|
|
||||||
def test_NR_p0_15_dump(self):
|
def test_NR_p0_15_dump(self):
|
||||||
jfile = os.path.join(data_root, 'input/conformance/p0_15.j2k')
|
jfile = os.path.join(data_root, 'input/conformance/p0_15.j2k')
|
||||||
|
|
@ -3127,7 +3127,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
self.assertEqual(c.segment[12].sprgn, 7)
|
self.assertEqual(c.segment[12].sprgn, 7)
|
||||||
|
|
||||||
# SOD: start of data
|
# SOD: start of data
|
||||||
self.assertEqual(c.segment[13].id, 'SOD')
|
self.assertEqual(c.segment[13].marker_id, 'SOD')
|
||||||
|
|
||||||
# 16 SOP markers would be here if we were looking for them
|
# 16 SOP markers would be here if we were looking for them
|
||||||
|
|
||||||
|
|
@ -3138,7 +3138,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
self.assertEqual(c.segment[31].tnsot, 1)
|
self.assertEqual(c.segment[31].tnsot, 1)
|
||||||
|
|
||||||
# SOD: start of data
|
# SOD: start of data
|
||||||
self.assertEqual(c.segment[32].id, 'SOD')
|
self.assertEqual(c.segment[32].marker_id, 'SOD')
|
||||||
|
|
||||||
# 16 SOP markers would be here if we were looking for them
|
# 16 SOP markers would be here if we were looking for them
|
||||||
|
|
||||||
|
|
@ -3149,7 +3149,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
self.assertEqual(c.segment[49].tnsot, 1)
|
self.assertEqual(c.segment[49].tnsot, 1)
|
||||||
|
|
||||||
# SOD: start of data
|
# SOD: start of data
|
||||||
self.assertEqual(c.segment[50].id, 'SOD')
|
self.assertEqual(c.segment[50].marker_id, 'SOD')
|
||||||
|
|
||||||
# 16 SOP markers would be here if we were looking for them
|
# 16 SOP markers would be here if we were looking for them
|
||||||
|
|
||||||
|
|
@ -3160,12 +3160,12 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
self.assertEqual(c.segment[67].tnsot, 1)
|
self.assertEqual(c.segment[67].tnsot, 1)
|
||||||
|
|
||||||
# SOD: start of data
|
# SOD: start of data
|
||||||
self.assertEqual(c.segment[68].id, 'SOD')
|
self.assertEqual(c.segment[68].marker_id, 'SOD')
|
||||||
|
|
||||||
# 16 SOP markers would be here if we were looking for them
|
# 16 SOP markers would be here if we were looking for them
|
||||||
|
|
||||||
# EOC: end of codestream
|
# EOC: end of codestream
|
||||||
self.assertEqual(c.segment[85].id, 'EOC')
|
self.assertEqual(c.segment[85].marker_id, 'EOC')
|
||||||
|
|
||||||
def test_NR_p0_16_dump(self):
|
def test_NR_p0_16_dump(self):
|
||||||
jfile = os.path.join(data_root, 'input/conformance/p0_16.j2k')
|
jfile = os.path.join(data_root, 'input/conformance/p0_16.j2k')
|
||||||
|
|
@ -3230,10 +3230,10 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
self.assertEqual(c.segment[4].tnsot, 1)
|
self.assertEqual(c.segment[4].tnsot, 1)
|
||||||
|
|
||||||
# SOD: start of data
|
# SOD: start of data
|
||||||
self.assertEqual(c.segment[5].id, 'SOD')
|
self.assertEqual(c.segment[5].marker_id, 'SOD')
|
||||||
|
|
||||||
# EOC: end of codestream
|
# EOC: end of codestream
|
||||||
self.assertEqual(c.segment[6].id, 'EOC')
|
self.assertEqual(c.segment[6].marker_id, 'EOC')
|
||||||
|
|
||||||
def test_NR_p1_01_dump(self):
|
def test_NR_p1_01_dump(self):
|
||||||
jfile = os.path.join(data_root, 'input/conformance/p1_01.j2k')
|
jfile = os.path.join(data_root, 'input/conformance/p1_01.j2k')
|
||||||
|
|
@ -3324,16 +3324,16 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
self.assertEqual(c.segment[6].tnsot, 1)
|
self.assertEqual(c.segment[6].tnsot, 1)
|
||||||
|
|
||||||
# SOD: start of data
|
# SOD: start of data
|
||||||
self.assertEqual(c.segment[7].id, 'SOD')
|
self.assertEqual(c.segment[7].marker_id, 'SOD')
|
||||||
|
|
||||||
# SOP, EPH
|
# SOP, EPH
|
||||||
sop = [x.id for x in c.segment if x.id == 'SOP']
|
sop = [x.marker_id for x in c.segment if x.marker_id == 'SOP']
|
||||||
eph = [x.id for x in c.segment if x.id == 'EPH']
|
eph = [x.marker_id for x in c.segment if x.marker_id == 'EPH']
|
||||||
self.assertEqual(len(sop), 20)
|
self.assertEqual(len(sop), 20)
|
||||||
self.assertEqual(len(eph), 20)
|
self.assertEqual(len(eph), 20)
|
||||||
|
|
||||||
# EOC: end of codestream
|
# EOC: end of codestream
|
||||||
self.assertEqual(c.segment[-1].id, 'EOC')
|
self.assertEqual(c.segment[-1].marker_id, 'EOC')
|
||||||
|
|
||||||
def test_NR_p1_02_dump(self):
|
def test_NR_p1_02_dump(self):
|
||||||
jfile = os.path.join(data_root, 'input/conformance/p1_02.j2k')
|
jfile = os.path.join(data_root, 'input/conformance/p1_02.j2k')
|
||||||
|
|
@ -3440,14 +3440,14 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
self.assertEqual(c.segment[7].tnsot, 1)
|
self.assertEqual(c.segment[7].tnsot, 1)
|
||||||
|
|
||||||
# PPT: packed packet headers, tile-part header
|
# PPT: packed packet headers, tile-part header
|
||||||
self.assertEqual(c.segment[8].id, 'PPT')
|
self.assertEqual(c.segment[8].marker_id, 'PPT')
|
||||||
self.assertEqual(c.segment[8].zppt, 0)
|
self.assertEqual(c.segment[8].zppt, 0)
|
||||||
|
|
||||||
# SOD: start of data
|
# SOD: start of data
|
||||||
self.assertEqual(c.segment[9].id, 'SOD')
|
self.assertEqual(c.segment[9].marker_id, 'SOD')
|
||||||
|
|
||||||
# EOC: end of codestream
|
# EOC: end of codestream
|
||||||
self.assertEqual(c.segment[10].id, 'EOC')
|
self.assertEqual(c.segment[10].marker_id, 'EOC')
|
||||||
|
|
||||||
def test_NR_p1_03_dump(self):
|
def test_NR_p1_03_dump(self):
|
||||||
jfile = os.path.join(data_root, 'input/conformance/p1_03.j2k')
|
jfile = os.path.join(data_root, 'input/conformance/p1_03.j2k')
|
||||||
|
|
@ -3576,7 +3576,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
"Creator: AV-J2K (c) 2000,2001 Algo Vision")
|
"Creator: AV-J2K (c) 2000,2001 Algo Vision")
|
||||||
|
|
||||||
# PPM: packed packet headers, main header
|
# PPM: packed packet headers, main header
|
||||||
self.assertEqual(c.segment[9].id, 'PPM')
|
self.assertEqual(c.segment[9].marker_id, 'PPM')
|
||||||
self.assertEqual(c.segment[9].zppm, 0)
|
self.assertEqual(c.segment[9].zppm, 0)
|
||||||
|
|
||||||
# TLM (tile-part length)
|
# TLM (tile-part length)
|
||||||
|
|
@ -3591,10 +3591,10 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
self.assertEqual(c.segment[11].tnsot, 1)
|
self.assertEqual(c.segment[11].tnsot, 1)
|
||||||
|
|
||||||
# SOD: start of data
|
# SOD: start of data
|
||||||
self.assertEqual(c.segment[12].id, 'SOD')
|
self.assertEqual(c.segment[12].marker_id, 'SOD')
|
||||||
|
|
||||||
# EOC: end of codestream
|
# EOC: end of codestream
|
||||||
self.assertEqual(c.segment[13].id, 'EOC')
|
self.assertEqual(c.segment[13].marker_id, 'EOC')
|
||||||
|
|
||||||
def test_NR_p1_04_dump(self):
|
def test_NR_p1_04_dump(self):
|
||||||
jfile = os.path.join(data_root, 'input/conformance/p1_04.j2k')
|
jfile = os.path.join(data_root, 'input/conformance/p1_04.j2k')
|
||||||
|
|
@ -3679,7 +3679,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
self.assertEqual(c.segment[6].tnsot, 1)
|
self.assertEqual(c.segment[6].tnsot, 1)
|
||||||
|
|
||||||
# SOD: start of data
|
# SOD: start of data
|
||||||
self.assertEqual(c.segment[7].id, 'SOD')
|
self.assertEqual(c.segment[7].marker_id, 'SOD')
|
||||||
|
|
||||||
# SOT: start of tile part
|
# SOT: start of tile part
|
||||||
self.assertEqual(c.segment[8].isot, 1)
|
self.assertEqual(c.segment[8].isot, 1)
|
||||||
|
|
@ -3698,7 +3698,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
[8, 10, 10, 10, 9, 9, 9, 8, 8, 8])
|
[8, 10, 10, 10, 9, 9, 9, 8, 8, 8])
|
||||||
|
|
||||||
# SOD: start of data
|
# SOD: start of data
|
||||||
self.assertEqual(c.segment[10].id, 'SOD')
|
self.assertEqual(c.segment[10].marker_id, 'SOD')
|
||||||
|
|
||||||
# SOT: start of tile part
|
# SOT: start of tile part
|
||||||
self.assertEqual(c.segment[11].isot, 2)
|
self.assertEqual(c.segment[11].isot, 2)
|
||||||
|
|
@ -3709,19 +3709,19 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
# and so on
|
# and so on
|
||||||
|
|
||||||
# There should be 64 SOD, SOT, QCD segments.
|
# There should be 64 SOD, SOT, QCD segments.
|
||||||
ids = [x.id for x in c.segment if x.id == 'SOT']
|
ids = [x.marker_id for x in c.segment if x.marker_id == 'SOT']
|
||||||
self.assertEqual(len(ids), 64)
|
self.assertEqual(len(ids), 64)
|
||||||
ids = [x.id for x in c.segment if x.id == 'SOD']
|
ids = [x.marker_id for x in c.segment if x.marker_id == 'SOD']
|
||||||
self.assertEqual(len(ids), 64)
|
self.assertEqual(len(ids), 64)
|
||||||
ids = [x.id for x in c.segment if x.id == 'QCD']
|
ids = [x.marker_id for x in c.segment if x.marker_id == 'QCD']
|
||||||
self.assertEqual(len(ids), 64)
|
self.assertEqual(len(ids), 64)
|
||||||
|
|
||||||
# Tiles should be in order, right?
|
# Tiles should be in order, right?
|
||||||
tiles = [x.isot for x in c.segment if x.id == 'SOT']
|
tiles = [x.isot for x in c.segment if x.marker_id == 'SOT']
|
||||||
self.assertEqual(tiles, list(range(64)))
|
self.assertEqual(tiles, list(range(64)))
|
||||||
|
|
||||||
# EOC: end of codestream
|
# EOC: end of codestream
|
||||||
self.assertEqual(c.segment[-1].id, 'EOC')
|
self.assertEqual(c.segment[-1].marker_id, 'EOC')
|
||||||
|
|
||||||
def test_NR_p1_05_dump(self):
|
def test_NR_p1_05_dump(self):
|
||||||
jfile = os.path.join(data_root, 'input/conformance/p1_05.j2k')
|
jfile = os.path.join(data_root, 'input/conformance/p1_05.j2k')
|
||||||
|
|
@ -3799,17 +3799,17 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
self.assertEqual(c.segment[230].tnsot, 1)
|
self.assertEqual(c.segment[230].tnsot, 1)
|
||||||
|
|
||||||
# 225 total SOT segments
|
# 225 total SOT segments
|
||||||
isot = [x.isot for x in c.segment if x.id == 'SOT']
|
isot = [x.isot for x in c.segment if x.marker_id == 'SOT']
|
||||||
self.assertEqual(isot, list(range(225)))
|
self.assertEqual(isot, list(range(225)))
|
||||||
|
|
||||||
# scads of SOP, EPH segments
|
# scads of SOP, EPH segments
|
||||||
sop = [x.id for x in c.segment if x.id == 'SOP']
|
sop = [x.marker_id for x in c.segment if x.marker_id == 'SOP']
|
||||||
eph = [x.id for x in c.segment if x.id == 'EPH']
|
eph = [x.marker_id for x in c.segment if x.marker_id == 'EPH']
|
||||||
self.assertEqual(len(sop), 26472)
|
self.assertEqual(len(sop), 26472)
|
||||||
self.assertEqual(len(eph), 0)
|
self.assertEqual(len(eph), 0)
|
||||||
|
|
||||||
# EOC: end of codestream
|
# EOC: end of codestream
|
||||||
self.assertEqual(c.segment[-1].id, 'EOC')
|
self.assertEqual(c.segment[-1].marker_id, 'EOC')
|
||||||
|
|
||||||
def test_NR_p1_06_dump(self):
|
def test_NR_p1_06_dump(self):
|
||||||
jfile = os.path.join(data_root, 'input/conformance/p1_06.j2k')
|
jfile = os.path.join(data_root, 'input/conformance/p1_06.j2k')
|
||||||
|
|
@ -3884,25 +3884,25 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
self.assertEqual(c.segment[5].tnsot, 1)
|
self.assertEqual(c.segment[5].tnsot, 1)
|
||||||
|
|
||||||
# PPT: packed packet headers, tile-part header
|
# PPT: packed packet headers, tile-part header
|
||||||
self.assertEqual(c.segment[6].id, 'PPT')
|
self.assertEqual(c.segment[6].marker_id, 'PPT')
|
||||||
self.assertEqual(c.segment[6].zppt, 0)
|
self.assertEqual(c.segment[6].zppt, 0)
|
||||||
|
|
||||||
# scads of SOP, EPH segments
|
# scads of SOP, EPH segments
|
||||||
|
|
||||||
# 16 SOD segments
|
# 16 SOD segments
|
||||||
sods = [x for x in c.segment if x.id == 'SOD']
|
sods = [x for x in c.segment if x.marker_id == 'SOD']
|
||||||
self.assertEqual(len(sods), 16)
|
self.assertEqual(len(sods), 16)
|
||||||
|
|
||||||
# 16 PPT segments
|
# 16 PPT segments
|
||||||
ppts = [x for x in c.segment if x.id == 'PPT']
|
ppts = [x for x in c.segment if x.marker_id == 'PPT']
|
||||||
self.assertEqual(len(ppts), 16)
|
self.assertEqual(len(ppts), 16)
|
||||||
|
|
||||||
# 16 SOT segments
|
# 16 SOT segments
|
||||||
isots = [x.isot for x in c.segment if x.id == 'SOT']
|
isots = [x.isot for x in c.segment if x.marker_id == 'SOT']
|
||||||
self.assertEqual(isots, list(range(16)))
|
self.assertEqual(isots, list(range(16)))
|
||||||
|
|
||||||
# EOC: end of codestream
|
# EOC: end of codestream
|
||||||
self.assertEqual(c.segment[-1].id, 'EOC')
|
self.assertEqual(c.segment[-1].marker_id, 'EOC')
|
||||||
|
|
||||||
def test_NR_p1_07_dump(self):
|
def test_NR_p1_07_dump(self):
|
||||||
jfile = os.path.join(data_root, 'input/conformance/p1_07.j2k')
|
jfile = os.path.join(data_root, 'input/conformance/p1_07.j2k')
|
||||||
|
|
@ -3995,7 +3995,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
# scads of SOP, EPH segments
|
# scads of SOP, EPH segments
|
||||||
|
|
||||||
# EOC: end of codestream
|
# EOC: end of codestream
|
||||||
self.assertEqual(c.segment[-1].id, 'EOC')
|
self.assertEqual(c.segment[-1].marker_id, 'EOC')
|
||||||
|
|
||||||
def test_NR_file1_dump(self):
|
def test_NR_file1_dump(self):
|
||||||
jfile = os.path.join(data_root, 'input/conformance/file1.jp2')
|
jfile = os.path.join(data_root, 'input/conformance/file1.jp2')
|
||||||
|
|
@ -4573,18 +4573,18 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
self.assertEqual(c.segment[9].ptlm, (45274, 20838, 8909))
|
self.assertEqual(c.segment[9].ptlm, (45274, 20838, 8909))
|
||||||
|
|
||||||
# 3 tiles, one for each component
|
# 3 tiles, one for each component
|
||||||
idx = [x.isot for x in c.segment if x.id == 'SOT']
|
idx = [x.isot for x in c.segment if x.marker_id == 'SOT']
|
||||||
self.assertEqual(idx, [0, 0, 0])
|
self.assertEqual(idx, [0, 0, 0])
|
||||||
lens = [x.psot for x in c.segment if x.id == 'SOT']
|
lens = [x.psot for x in c.segment if x.marker_id == 'SOT']
|
||||||
self.assertEqual(lens, [45274, 20838, 8909])
|
self.assertEqual(lens, [45274, 20838, 8909])
|
||||||
tpsot = [x.tpsot for x in c.segment if x.id == 'SOT']
|
tpsot = [x.tpsot for x in c.segment if x.marker_id == 'SOT']
|
||||||
self.assertEqual(tpsot, [0, 1, 2])
|
self.assertEqual(tpsot, [0, 1, 2])
|
||||||
|
|
||||||
sods = [x for x in c.segment if x.id == 'SOD']
|
sods = [x for x in c.segment if x.marker_id == 'SOD']
|
||||||
self.assertEqual(len(sods), 3)
|
self.assertEqual(len(sods), 3)
|
||||||
|
|
||||||
# EOC: end of codestream
|
# EOC: end of codestream
|
||||||
self.assertEqual(c.segment[-1].id, 'EOC')
|
self.assertEqual(c.segment[-1].marker_id, 'EOC')
|
||||||
|
|
||||||
def test_Bretagne2_j2k_dump(self):
|
def test_Bretagne2_j2k_dump(self):
|
||||||
# Profile 3.
|
# Profile 3.
|
||||||
|
|
@ -4638,7 +4638,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
[(16, 16), (32, 32), (64, 64), (128, 128),
|
[(16, 16), (32, 32), (64, 64), (128, 128),
|
||||||
(128, 128), (128, 128)])
|
(128, 128), (128, 128)])
|
||||||
|
|
||||||
ids = [x.id for x in c.segment]
|
ids = [x.marker_id for x in c.segment]
|
||||||
expected = ['SOC', 'SIZ', 'COD', 'QCD', 'CME']
|
expected = ['SOC', 'SIZ', 'COD', 'QCD', 'CME']
|
||||||
expected += ['SOT', 'COC', 'QCC', 'COC', 'QCC', 'SOD'] * 25
|
expected += ['SOT', 'COC', 'QCC', 'COC', 'QCC', 'SOD'] * 25
|
||||||
expected += ['EOC']
|
expected += ['EOC']
|
||||||
|
|
@ -4693,7 +4693,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
glymur.core.WAVELET_TRANSFORM_9x7_IRREVERSIBLE)
|
glymur.core.WAVELET_TRANSFORM_9x7_IRREVERSIBLE)
|
||||||
self.assertEqual(len(c.segment[2].spcod), 9)
|
self.assertEqual(len(c.segment[2].spcod), 9)
|
||||||
|
|
||||||
ids = [x.id for x in c.segment]
|
ids = [x.marker_id for x in c.segment]
|
||||||
expected = ['SOC', 'SIZ', 'COD', 'QCD', 'CME', 'SOT', 'SOD', 'EOC']
|
expected = ['SOC', 'SIZ', 'COD', 'QCD', 'CME', 'SOT', 'SOD', 'EOC']
|
||||||
self.assertEqual(ids, expected)
|
self.assertEqual(ids, expected)
|
||||||
|
|
||||||
|
|
@ -4746,7 +4746,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
glymur.core.WAVELET_TRANSFORM_5x3_REVERSIBLE)
|
glymur.core.WAVELET_TRANSFORM_5x3_REVERSIBLE)
|
||||||
self.assertEqual(len(c.segment[2].spcod), 9)
|
self.assertEqual(len(c.segment[2].spcod), 9)
|
||||||
|
|
||||||
ids = [x.id for x in c.segment]
|
ids = [x.marker_id for x in c.segment]
|
||||||
expected = ['SOC', 'SIZ', 'COD', 'QCD', 'CME', 'SOT', 'SOD', 'EOC']
|
expected = ['SOC', 'SIZ', 'COD', 'QCD', 'CME', 'SOT', 'SOD', 'EOC']
|
||||||
self.assertEqual(ids, expected)
|
self.assertEqual(ids, expected)
|
||||||
|
|
||||||
|
|
@ -4759,7 +4759,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
jp2k = Jp2k(jfile)
|
jp2k = Jp2k(jfile)
|
||||||
c = jp2k.get_codestream()
|
c = jp2k.get_codestream()
|
||||||
|
|
||||||
ids = [x.id for x in c.segment]
|
ids = [x.marker_id for x in c.segment]
|
||||||
expected = ['SOC', 'SIZ', 'COD', 'QCD']
|
expected = ['SOC', 'SIZ', 'COD', 'QCD']
|
||||||
self.assertEqual(ids, expected)
|
self.assertEqual(ids, expected)
|
||||||
|
|
||||||
|
|
@ -4822,7 +4822,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
jp2k = Jp2k(jfile)
|
jp2k = Jp2k(jfile)
|
||||||
c = jp2k.get_codestream()
|
c = jp2k.get_codestream()
|
||||||
|
|
||||||
ids = [x.id for x in c.segment]
|
ids = [x.marker_id for x in c.segment]
|
||||||
expected = ['SOC', 'SIZ', 'COD', 'QCD', 'CME']
|
expected = ['SOC', 'SIZ', 'COD', 'QCD', 'CME']
|
||||||
self.assertEqual(ids, expected)
|
self.assertEqual(ids, expected)
|
||||||
|
|
||||||
|
|
@ -4893,7 +4893,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
jp2k = Jp2k(jfile)
|
jp2k = Jp2k(jfile)
|
||||||
c = jp2k.get_codestream()
|
c = jp2k.get_codestream()
|
||||||
|
|
||||||
ids = [x.id for x in c.segment]
|
ids = [x.marker_id for x in c.segment]
|
||||||
expected = ['SOC', 'SIZ', 'COD', 'QCD', 'CME', 'CME']
|
expected = ['SOC', 'SIZ', 'COD', 'QCD', 'CME', 'CME']
|
||||||
self.assertEqual(ids, expected)
|
self.assertEqual(ids, expected)
|
||||||
|
|
||||||
|
|
@ -4969,7 +4969,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
jp2k = Jp2k(jfile)
|
jp2k = Jp2k(jfile)
|
||||||
c = jp2k.get_codestream()
|
c = jp2k.get_codestream()
|
||||||
|
|
||||||
ids = [x.id for x in c.segment]
|
ids = [x.marker_id for x in c.segment]
|
||||||
expected = ['SOC', 'SIZ', 'COD', 'QCD']
|
expected = ['SOC', 'SIZ', 'COD', 'QCD']
|
||||||
self.assertEqual(ids, expected)
|
self.assertEqual(ids, expected)
|
||||||
|
|
||||||
|
|
@ -5030,7 +5030,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
jp2k = Jp2k(jfile)
|
jp2k = Jp2k(jfile)
|
||||||
c = jp2k.get_codestream()
|
c = jp2k.get_codestream()
|
||||||
|
|
||||||
ids = [x.id for x in c.segment]
|
ids = [x.marker_id for x in c.segment]
|
||||||
expected = ['SOC', 'SIZ', 'COD', 'QCD', 'CME']
|
expected = ['SOC', 'SIZ', 'COD', 'QCD', 'CME']
|
||||||
self.assertEqual(ids, expected)
|
self.assertEqual(ids, expected)
|
||||||
|
|
||||||
|
|
@ -5418,7 +5418,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
jp2k = Jp2k(jfile)
|
jp2k = Jp2k(jfile)
|
||||||
c = jp2k.get_codestream()
|
c = jp2k.get_codestream()
|
||||||
|
|
||||||
ids = [x.id for x in c.segment]
|
ids = [x.marker_id for x in c.segment]
|
||||||
expected = ['SOC', 'SIZ', 'COD', 'QCD']
|
expected = ['SOC', 'SIZ', 'COD', 'QCD']
|
||||||
self.assertEqual(ids, expected)
|
self.assertEqual(ids, expected)
|
||||||
|
|
||||||
|
|
@ -5479,7 +5479,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
jp2k = Jp2k(jfile)
|
jp2k = Jp2k(jfile)
|
||||||
c = jp2k.get_codestream()
|
c = jp2k.get_codestream()
|
||||||
|
|
||||||
ids = [x.id for x in c.segment]
|
ids = [x.marker_id for x in c.segment]
|
||||||
expected = ['SOC', 'SIZ', 'COD', 'QCD']
|
expected = ['SOC', 'SIZ', 'COD', 'QCD']
|
||||||
self.assertEqual(ids, expected)
|
self.assertEqual(ids, expected)
|
||||||
|
|
||||||
|
|
@ -5539,7 +5539,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
jp2k = Jp2k(jfile)
|
jp2k = Jp2k(jfile)
|
||||||
c = jp2k.get_codestream()
|
c = jp2k.get_codestream()
|
||||||
|
|
||||||
ids = [x.id for x in c.segment]
|
ids = [x.marker_id for x in c.segment]
|
||||||
expected = ['SOC', 'SIZ', 'COD', 'QCD', 'CME']
|
expected = ['SOC', 'SIZ', 'COD', 'QCD', 'CME']
|
||||||
self.assertEqual(ids, expected)
|
self.assertEqual(ids, expected)
|
||||||
|
|
||||||
|
|
@ -5608,7 +5608,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
jp2k = Jp2k(jfile)
|
jp2k = Jp2k(jfile)
|
||||||
c = jp2k.get_codestream()
|
c = jp2k.get_codestream()
|
||||||
|
|
||||||
ids = [x.id for x in c.segment]
|
ids = [x.marker_id for x in c.segment]
|
||||||
expected = ['SOC', 'SIZ', 'COD', 'QCD', 'CME']
|
expected = ['SOC', 'SIZ', 'COD', 'QCD', 'CME']
|
||||||
self.assertEqual(ids, expected)
|
self.assertEqual(ids, expected)
|
||||||
|
|
||||||
|
|
@ -5677,7 +5677,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
jp2k = Jp2k(jfile)
|
jp2k = Jp2k(jfile)
|
||||||
c = jp2k.get_codestream()
|
c = jp2k.get_codestream()
|
||||||
|
|
||||||
ids = [x.id for x in c.segment]
|
ids = [x.marker_id for x in c.segment]
|
||||||
expected = ['SOC', 'SIZ', 'COD', 'QCD']
|
expected = ['SOC', 'SIZ', 'COD', 'QCD']
|
||||||
self.assertEqual(ids, expected)
|
self.assertEqual(ids, expected)
|
||||||
|
|
||||||
|
|
@ -5739,7 +5739,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
jp2k = Jp2k(jfile)
|
jp2k = Jp2k(jfile)
|
||||||
c = jp2k.get_codestream()
|
c = jp2k.get_codestream()
|
||||||
|
|
||||||
ids = [x.id for x in c.segment]
|
ids = [x.marker_id for x in c.segment]
|
||||||
expected = ['SOC', 'SIZ', 'COD', 'QCD']
|
expected = ['SOC', 'SIZ', 'COD', 'QCD']
|
||||||
self.assertEqual(ids, expected)
|
self.assertEqual(ids, expected)
|
||||||
|
|
||||||
|
|
@ -5802,7 +5802,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
jp2k = Jp2k(jfile)
|
jp2k = Jp2k(jfile)
|
||||||
c = jp2k.get_codestream()
|
c = jp2k.get_codestream()
|
||||||
|
|
||||||
ids = [x.id for x in c.segment]
|
ids = [x.marker_id for x in c.segment]
|
||||||
expected = ['SOC', 'SIZ', 'COD', 'QCD', 'CME']
|
expected = ['SOC', 'SIZ', 'COD', 'QCD', 'CME']
|
||||||
self.assertEqual(ids, expected)
|
self.assertEqual(ids, expected)
|
||||||
|
|
||||||
|
|
@ -5911,7 +5911,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
|
|
||||||
c = jp2.box[3].main_header
|
c = jp2.box[3].main_header
|
||||||
|
|
||||||
ids = [x.id for x in c.segment]
|
ids = [x.marker_id for x in c.segment]
|
||||||
expected = ['SOC', 'SIZ', 'CME', 'COD', 'QCD', 'QCC', 'QCC']
|
expected = ['SOC', 'SIZ', 'CME', 'COD', 'QCD', 'QCC', 'QCC']
|
||||||
self.assertEqual(ids, expected)
|
self.assertEqual(ids, expected)
|
||||||
|
|
||||||
|
|
@ -6044,7 +6044,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
|
|
||||||
c = jp2.box[3].main_header
|
c = jp2.box[3].main_header
|
||||||
|
|
||||||
ids = [x.id for x in c.segment]
|
ids = [x.marker_id for x in c.segment]
|
||||||
expected = ['SOC', 'SIZ', 'CME', 'COD', 'QCD', 'QCC', 'QCC']
|
expected = ['SOC', 'SIZ', 'CME', 'COD', 'QCD', 'QCC', 'QCC']
|
||||||
self.assertEqual(ids, expected)
|
self.assertEqual(ids, expected)
|
||||||
|
|
||||||
|
|
@ -6172,7 +6172,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
|
|
||||||
c = jp2.box[3].main_header
|
c = jp2.box[3].main_header
|
||||||
|
|
||||||
ids = [x.id for x in c.segment]
|
ids = [x.marker_id for x in c.segment]
|
||||||
expected = ['SOC', 'SIZ', 'COD', 'QCD']
|
expected = ['SOC', 'SIZ', 'COD', 'QCD']
|
||||||
self.assertEqual(ids, expected)
|
self.assertEqual(ids, expected)
|
||||||
|
|
||||||
|
|
@ -6325,7 +6325,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
|
|
||||||
c = jp2.box[4].main_header
|
c = jp2.box[4].main_header
|
||||||
|
|
||||||
ids = [x.id for x in c.segment]
|
ids = [x.marker_id for x in c.segment]
|
||||||
expected = ['SOC', 'SIZ', 'COD', 'QCD']
|
expected = ['SOC', 'SIZ', 'COD', 'QCD']
|
||||||
self.assertEqual(ids, expected)
|
self.assertEqual(ids, expected)
|
||||||
|
|
||||||
|
|
@ -6425,7 +6425,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
|
|
||||||
c = jp2.box[4].main_header
|
c = jp2.box[4].main_header
|
||||||
|
|
||||||
ids = [x.id for x in c.segment]
|
ids = [x.marker_id for x in c.segment]
|
||||||
expected = ['SOC', 'SIZ', 'COD', 'QCD', 'CME', 'CME']
|
expected = ['SOC', 'SIZ', 'COD', 'QCD', 'CME', 'CME']
|
||||||
self.assertEqual(ids, expected)
|
self.assertEqual(ids, expected)
|
||||||
|
|
||||||
|
|
@ -6523,7 +6523,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
|
|
||||||
c = jp2.box[4].main_header
|
c = jp2.box[4].main_header
|
||||||
|
|
||||||
ids = [x.id for x in c.segment]
|
ids = [x.marker_id for x in c.segment]
|
||||||
expected = ['SOC', 'SIZ', 'COD', 'QCD']
|
expected = ['SOC', 'SIZ', 'COD', 'QCD']
|
||||||
self.assertEqual(ids, expected)
|
self.assertEqual(ids, expected)
|
||||||
|
|
||||||
|
|
@ -6626,7 +6626,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
|
|
||||||
c = jp2.box[3].main_header
|
c = jp2.box[3].main_header
|
||||||
|
|
||||||
ids = [x.id for x in c.segment]
|
ids = [x.marker_id for x in c.segment]
|
||||||
expected = ['SOC', 'SIZ', 'COD', 'QCD', 'CME']
|
expected = ['SOC', 'SIZ', 'COD', 'QCD', 'CME']
|
||||||
self.assertEqual(ids, expected)
|
self.assertEqual(ids, expected)
|
||||||
|
|
||||||
|
|
@ -6753,7 +6753,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
|
|
||||||
c = jp2.box[4].main_header
|
c = jp2.box[4].main_header
|
||||||
|
|
||||||
ids = [x.id for x in c.segment]
|
ids = [x.marker_id for x in c.segment]
|
||||||
expected = ['SOC', 'SIZ', 'COD', 'QCD']
|
expected = ['SOC', 'SIZ', 'COD', 'QCD']
|
||||||
self.assertEqual(ids, expected)
|
self.assertEqual(ids, expected)
|
||||||
|
|
||||||
|
|
@ -6867,7 +6867,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
|
|
||||||
c = jp2.box[4].main_header
|
c = jp2.box[4].main_header
|
||||||
|
|
||||||
ids = [x.id for x in c.segment]
|
ids = [x.marker_id for x in c.segment]
|
||||||
expected = ['SOC', 'SIZ', 'COD', 'QCD']
|
expected = ['SOC', 'SIZ', 'COD', 'QCD']
|
||||||
self.assertEqual(ids, expected)
|
self.assertEqual(ids, expected)
|
||||||
|
|
||||||
|
|
@ -6961,7 +6961,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
|
|
||||||
c = jp2.box[3].main_header
|
c = jp2.box[3].main_header
|
||||||
|
|
||||||
ids = [x.id for x in c.segment]
|
ids = [x.marker_id for x in c.segment]
|
||||||
expected = ['SOC', 'SIZ', 'COD', 'QCD', 'POD']
|
expected = ['SOC', 'SIZ', 'COD', 'QCD', 'POD']
|
||||||
self.assertEqual(ids, expected)
|
self.assertEqual(ids, expected)
|
||||||
|
|
||||||
|
|
@ -7069,7 +7069,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
|
|
||||||
c = jp2.box[3].main_header
|
c = jp2.box[3].main_header
|
||||||
|
|
||||||
ids = [x.id for x in c.segment]
|
ids = [x.marker_id for x in c.segment]
|
||||||
expected = ['SOC', 'SIZ', 'COD', 'QCD']
|
expected = ['SOC', 'SIZ', 'COD', 'QCD']
|
||||||
self.assertEqual(ids, expected)
|
self.assertEqual(ids, expected)
|
||||||
|
|
||||||
|
|
@ -7168,7 +7168,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
|
|
||||||
c = jp2.box[3].main_header
|
c = jp2.box[3].main_header
|
||||||
|
|
||||||
ids = [x.id for x in c.segment]
|
ids = [x.marker_id for x in c.segment]
|
||||||
expected = ['SOC', 'SIZ', 'COD', 'QCD']
|
expected = ['SOC', 'SIZ', 'COD', 'QCD']
|
||||||
self.assertEqual(ids, expected)
|
self.assertEqual(ids, expected)
|
||||||
|
|
||||||
|
|
@ -7276,7 +7276,7 @@ class TestSuiteDump(unittest.TestCase):
|
||||||
|
|
||||||
c = jp2.box[8].main_header
|
c = jp2.box[8].main_header
|
||||||
|
|
||||||
ids = [x.id for x in c.segment]
|
ids = [x.marker_id for x in c.segment]
|
||||||
expected = ['SOC', 'SIZ', 'COD', 'QCD']
|
expected = ['SOC', 'SIZ', 'COD', 'QCD']
|
||||||
self.assertEqual(ids, expected)
|
self.assertEqual(ids, expected)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,7 @@ class TestSuiteNegative(unittest.TestCase):
|
||||||
# Verify that the last segment returned in the codestream is SOD,
|
# Verify that the last segment returned in the codestream is SOD,
|
||||||
# not EOC. Codestream parsing should stop when we try to jump to
|
# not EOC. Codestream parsing should stop when we try to jump to
|
||||||
# the end of SOT.
|
# the end of SOT.
|
||||||
self.assertEqual(c.segment[-1].id, 'SOD')
|
self.assertEqual(c.segment[-1].marker_id, 'SOD')
|
||||||
|
|
||||||
@unittest.skipIf(sys.hexversion < 0x03020000,
|
@unittest.skipIf(sys.hexversion < 0x03020000,
|
||||||
"Uses features introduced in 3.2.")
|
"Uses features introduced in 3.2.")
|
||||||
|
|
@ -109,7 +109,7 @@ class TestSuiteNegative(unittest.TestCase):
|
||||||
# Verify that the last segment returned in the codestream is SOD,
|
# Verify that the last segment returned in the codestream is SOD,
|
||||||
# not EOC. Codestream parsing should stop when we try to jump to
|
# not EOC. Codestream parsing should stop when we try to jump to
|
||||||
# the end of SOT.
|
# the end of SOT.
|
||||||
self.assertEqual(c.segment[-1].id, 'SOD')
|
self.assertEqual(c.segment[-1].marker_id, 'SOD')
|
||||||
|
|
||||||
@unittest.skipIf(sys.hexversion < 0x03020000,
|
@unittest.skipIf(sys.hexversion < 0x03020000,
|
||||||
"Uses features introduced in 3.2.")
|
"Uses features introduced in 3.2.")
|
||||||
|
|
@ -124,7 +124,7 @@ class TestSuiteNegative(unittest.TestCase):
|
||||||
# Verify that the last segment returned in the codestream is SOD,
|
# Verify that the last segment returned in the codestream is SOD,
|
||||||
# not EOC. Codestream parsing should stop when we try to jump to
|
# not EOC. Codestream parsing should stop when we try to jump to
|
||||||
# the end of SOT.
|
# the end of SOT.
|
||||||
self.assertEqual(c.segment[-1].id, 'SOD')
|
self.assertEqual(c.segment[-1].marker_id, 'SOD')
|
||||||
|
|
||||||
def test_code_block_dimensions(self):
|
def test_code_block_dimensions(self):
|
||||||
# opj_compress doesn't allow the dimensions of a codeblock
|
# opj_compress doesn't allow the dimensions of a codeblock
|
||||||
|
|
|
||||||
|
|
@ -424,7 +424,7 @@ class TestSuiteWrite(unittest.TestCase):
|
||||||
self.assertEqual(len(c.segment[2].spcod), 9)
|
self.assertEqual(len(c.segment[2].spcod), 9)
|
||||||
|
|
||||||
# 18 SOP segments.
|
# 18 SOP segments.
|
||||||
nsops = [x.nsop for x in c.segment if x.id == 'SOP']
|
nsops = [x.nsop for x in c.segment if x.marker_id == 'SOP']
|
||||||
self.assertEqual(nsops, list(range(18)))
|
self.assertEqual(nsops, list(range(18)))
|
||||||
|
|
||||||
def test_NR_ENC_Bretagne2_ppm_7_encode(self):
|
def test_NR_ENC_Bretagne2_ppm_7_encode(self):
|
||||||
|
|
@ -484,7 +484,7 @@ class TestSuiteWrite(unittest.TestCase):
|
||||||
self.assertEqual(len(c.segment[2].spcod), 9)
|
self.assertEqual(len(c.segment[2].spcod), 9)
|
||||||
|
|
||||||
# 18 EPH segments.
|
# 18 EPH segments.
|
||||||
ephs = [x for x in c.segment if x.id == 'EPH']
|
ephs = [x for x in c.segment if x.marker_id == 'EPH']
|
||||||
self.assertEqual(len(ephs), 18)
|
self.assertEqual(len(ephs), 18)
|
||||||
|
|
||||||
def test_NR_ENC_Bretagne2_ppm_8_encode(self):
|
def test_NR_ENC_Bretagne2_ppm_8_encode(self):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue