pylint work, issue #71

This commit is contained in:
jevans 2013-07-07 20:35:06 -04:00
commit 38434ee58e
6 changed files with 311 additions and 280 deletions

View file

@ -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

View file

@ -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):

View file

@ -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')

View file

@ -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)

View file

@ -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

View file

@ -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):