diff --git a/glymur/codestream.py b/glymur/codestream.py index a156513..c87c2d2 100644 --- a/glymur/codestream.py +++ b/glymur/codestream.py @@ -642,7 +642,7 @@ class Codestream(object): srgn = data[1] sprgn = data[2] - return RGNsegment(length, offset, crgn, srgn, sprgn) + return RGNsegment(crgn, srgn, sprgn, length, offset) def _parse_siz_segment(self, fptr): """Parse the SIZ segment. @@ -1463,7 +1463,7 @@ class RGNsegment(Segment): 15444-1:2004 - Information technology -- JPEG 2000 image coding system: Core coding system """ - def __init__(self, length, offset, crgn, srgn, sprgn): + def __init__(self, crgn, srgn, sprgn, length=-1, offset=-1): Segment.__init__(self, marker_id='RGN') self.length = length self.offset = offset @@ -1726,7 +1726,7 @@ class SOTsegment(Segment): 15444-1:2004 - Information technology -- JPEG 2000 image coding system: Core coding system """ - def __init__(self, isot, psot, tpsot, tnsot, length, offset): + def __init__(self, isot, psot, tpsot, tnsot, length=-1, offset=-1): Segment.__init__(self, marker_id='SOT') self.isot = isot self.psot = psot diff --git a/glymur/test/test_opj_suite_dump.py b/glymur/test/test_opj_suite_dump.py index 2039295..200bca4 100644 --- a/glymur/test/test_opj_suite_dump.py +++ b/glymur/test/test_opj_suite_dump.py @@ -35,7 +35,7 @@ import numpy as np import glymur from glymur import Jp2k -from glymur.codestream import CMEsegment +from glymur.codestream import CMEsegment, SOTsegment, RGNsegment from glymur.core import RCME_ISO_8859_1, RCME_BINARY from .fixtures import OPJ_DATA_ROOT @@ -68,6 +68,23 @@ class TestSuiteBase(unittest.TestCase): for cl in clist: self.assertIn(cl, box.compatibility_list) + def verifyRGNsegment(self, actual, expected): + """ + verify the fields of a RGN segment + """ + self.assertEqual(actual.crgn, expected.crgn) # 0 = component + self.assertEqual(actual.srgn, expected.srgn) # 0 = implicit + self.assertEqual(actual.sprgn, expected.sprgn) + + def verifySOTsegment(self, actual, expected): + """ + verify the fields of a SOT (start of tile) segment + """ + self.assertEqual(actual.isot, expected.isot) + self.assertEqual(actual.psot, expected.psot) + self.assertEqual(actual.tpsot, expected.tpsot) + self.assertEqual(actual.tnsot, expected.tnsot) + def verifyCMEsegment(self, actual, expected): """ verify the fields of a CME (comment) segment @@ -230,11 +247,7 @@ class TestSuite(TestSuiteBase): self.assertEqual(c.segment[3].spcod[8], glymur.core.WAVELET_XFORM_5X3_REVERSIBLE) - # SOT: start of tile part - self.assertEqual(c.segment[4].isot, 0) - self.assertEqual(c.segment[4].psot, 7314) - self.assertEqual(c.segment[4].tpsot, 0) - self.assertEqual(c.segment[4].tnsot, 1) + self.verifySOTsegment(c.segment[4], SOTsegment(0, 7314, 0, 1)) def test_NR_p0_02_dump(self): jfile = opj_data_file('input/conformance/p0_02.j2k') @@ -304,11 +317,7 @@ class TestSuite(TestSuiteBase): # One unknown marker self.assertEqual(c.segment[6].marker_id, '0xff30') - # SOT: start of tile part - self.assertEqual(c.segment[7].isot, 0) - self.assertEqual(c.segment[7].psot, 6047) - self.assertEqual(c.segment[7].tpsot, 0) - self.assertEqual(c.segment[7].tnsot, 1) + self.verifySOTsegment(c.segment[7], SOTsegment(0, 6047, 0, 1)) # SOD: start of data # Just one. @@ -399,16 +408,8 @@ class TestSuite(TestSuiteBase): self.assertEqual(c.segment[10].ttlm, (0, 1, 2, 3)) self.assertEqual(c.segment[10].ptlm, (4267, 2117, 4080, 2081)) - # SOT: start of tile part - self.assertEqual(c.segment[11].isot, 0) - self.assertEqual(c.segment[11].psot, 4267) - self.assertEqual(c.segment[11].tpsot, 0) - self.assertEqual(c.segment[11].tnsot, 1) - - # RGN: region of interest - self.assertEqual(c.segment[12].crgn, 0) - self.assertEqual(c.segment[12].srgn, 0) - self.assertEqual(c.segment[12].sprgn, 7) + self.verifySOTsegment(c.segment[11], SOTsegment(0, 4267, 0, 1)) + self.verifyRGNsegment(c.segment[12], RGNsegment(0, 0, 7)) # SOD: start of data # Just one. @@ -495,11 +496,7 @@ class TestSuite(TestSuiteBase): "Creator: AV-J2K (c) 2000,2001 Algo Vision".encode()) self.verifyCMEsegment(c.segment[6], CMEsegment(*pargs)) - # SOT: start of tile part - self.assertEqual(c.segment[7].isot, 0) - self.assertEqual(c.segment[7].psot, 264383) - self.assertEqual(c.segment[7].tpsot, 0) - self.assertEqual(c.segment[7].tnsot, 1) + self.verifySOTsegment(c.segment[7], SOTsegment(0, 264383, 0, 1)) # SOD: start of data # Just one. @@ -622,11 +619,7 @@ class TestSuite(TestSuiteBase): self.assertEqual(c.segment[9].ttlm, (0,)) self.assertEqual(c.segment[9].ptlm, (1310540,)) - # SOT: start of tile part - self.assertEqual(c.segment[10].isot, 0) - self.assertEqual(c.segment[10].psot, 1310540) - self.assertEqual(c.segment[10].tpsot, 0) - self.assertEqual(c.segment[10].tnsot, 1) + self.verifySOTsegment(c.segment[10], SOTsegment(0, 1310540, 0, 1)) # SOD: start of data # Just one. @@ -736,21 +729,9 @@ class TestSuite(TestSuiteBase): self.assertEqual(c.segment[7].spcoc[4], glymur.core.WAVELET_XFORM_5X3_REVERSIBLE) - # RGN: region of interest - self.assertEqual(c.segment[8].crgn, 0) # component - self.assertEqual(c.segment[8].srgn, 0) # implicit - self.assertEqual(c.segment[8].sprgn, 11) - - # SOT: start of tile part - self.assertEqual(c.segment[9].isot, 0) - self.assertEqual(c.segment[9].psot, 33582) - self.assertEqual(c.segment[9].tpsot, 0) - self.assertEqual(c.segment[9].tnsot, 1) - - # RGN: region of interest - self.assertEqual(c.segment[10].crgn, 0) # component - self.assertEqual(c.segment[10].srgn, 0) # implicit - self.assertEqual(c.segment[10].sprgn, 9) + self.verifyRGNsegment(c.segment[8], RGNsegment(0, 0, 11)) + self.verifySOTsegment(c.segment[9], SOTsegment(0, 33582, 0, 1)) + self.verifyRGNsegment(c.segment[10], RGNsegment(0, 0, 9)) # SOD: start of data # Just one. @@ -802,11 +783,7 @@ class TestSuite(TestSuiteBase): pargs = (RCME_ISO_8859_1, "Kakadu-3.0.7".encode()) self.verifyCMEsegment(c.segment[4], CMEsegment(*pargs)) - # SOT: start of tile part - self.assertEqual(c.segment[5].isot, 0) - self.assertEqual(c.segment[5].psot, 9951) - self.assertEqual(c.segment[5].tpsot, 0) - self.assertEqual(c.segment[5].tnsot, 0) # unknown + self.verifySOTsegment(c.segment[5], SOTsegment(0, 9951, 0, 0)) # POD: progression order change self.assertEqual(c.segment[6].rspod, (0,)) @@ -952,11 +929,7 @@ class TestSuite(TestSuiteBase): pargs = (RCME_ISO_8859_1, "Kakadu-3.0.7".encode()) self.verifyCMEsegment(c.segment[9], CMEsegment(*pargs)) - # SOT: start of tile part - self.assertEqual(c.segment[10].isot, 0) - self.assertEqual(c.segment[10].psot, 3820593) - self.assertEqual(c.segment[10].tpsot, 0) - self.assertEqual(c.segment[10].tnsot, 1) # unknown + self.verifySOTsegment(c.segment[10], SOTsegment(0, 3820593, 0, 1)) def test_NR_p0_09_dump(self): jfile = opj_data_file('input/conformance/p0_09.j2k') @@ -1006,11 +979,7 @@ class TestSuite(TestSuiteBase): pargs = (RCME_ISO_8859_1, "Kakadu-3.0.7".encode()) self.verifyCMEsegment(c.segment[4], CMEsegment(*pargs)) - # SOT: start of tile part - self.assertEqual(c.segment[5].isot, 0) - self.assertEqual(c.segment[5].psot, 478) - self.assertEqual(c.segment[5].tpsot, 0) - self.assertEqual(c.segment[5].tnsot, 1) # unknown + self.verifySOTsegment(c.segment[5], SOTsegment(0, 478, 0, 1)) # SOD: start of data # Just one. @@ -1062,88 +1031,33 @@ class TestSuite(TestSuiteBase): self.assertEqual(c.segment[3].exponent, [11, 12, 12, 13, 12, 12, 13, 12, 12, 13]) - # SOT: start of tile part - self.assertEqual(c.segment[4].isot, 0) - self.assertEqual(c.segment[4].psot, 2453) - self.assertEqual(c.segment[4].tpsot, 0) - self.assertEqual(c.segment[4].tnsot, 0) + self.verifySOTsegment(c.segment[4], SOTsegment(0, 2453, 0, 0)) - # SOD: start of data self.assertEqual(c.segment[5].marker_id, 'SOD') + self.verifySOTsegment(c.segment[6], SOTsegment(1, 2403, 0, 0)) - # SOT: start of tile part - self.assertEqual(c.segment[6].isot, 1) - self.assertEqual(c.segment[6].psot, 2403) - self.assertEqual(c.segment[6].tpsot, 0) - self.assertEqual(c.segment[6].tnsot, 0) - - # SOD: start of data self.assertEqual(c.segment[7].marker_id, 'SOD') + self.verifySOTsegment(c.segment[8], SOTsegment(2, 2420, 0, 0)) - # SOT: start of tile part - self.assertEqual(c.segment[8].isot, 2) - self.assertEqual(c.segment[8].psot, 2420) - self.assertEqual(c.segment[8].tpsot, 0) - self.assertEqual(c.segment[8].tnsot, 0) - - # SOD: start of data self.assertEqual(c.segment[9].marker_id, 'SOD') + self.verifySOTsegment(c.segment[10], SOTsegment(3, 2472, 0, 0)) - # SOT: start of tile part - self.assertEqual(c.segment[10].isot, 3) - self.assertEqual(c.segment[10].psot, 2472) - self.assertEqual(c.segment[10].tpsot, 0) - self.assertEqual(c.segment[10].tnsot, 0) - - # SOD: start of data self.assertEqual(c.segment[11].marker_id, 'SOD') + self.verifySOTsegment(c.segment[12], SOTsegment(0, 1043, 1, 2)) - # SOT: start of tile part - self.assertEqual(c.segment[12].isot, 0) - self.assertEqual(c.segment[12].psot, 1043) - self.assertEqual(c.segment[12].tpsot, 1) - self.assertEqual(c.segment[12].tnsot, 2) - - # SOD: start of data self.assertEqual(c.segment[13].marker_id, 'SOD') + self.verifySOTsegment(c.segment[14], SOTsegment(1, 1101, 1, 2)) - # SOT: start of tile part - self.assertEqual(c.segment[14].isot, 1) - self.assertEqual(c.segment[14].psot, 1101) - self.assertEqual(c.segment[14].tpsot, 1) - self.assertEqual(c.segment[14].tnsot, 2) - - # SOD: start of data self.assertEqual(c.segment[15].marker_id, 'SOD') + self.verifySOTsegment(c.segment[16], SOTsegment(3, 1054, 1, 2)) - # SOT: start of tile part - self.assertEqual(c.segment[16].isot, 3) - self.assertEqual(c.segment[16].psot, 1054) - self.assertEqual(c.segment[16].tpsot, 1) - self.assertEqual(c.segment[16].tnsot, 2) - - # SOD: start of data self.assertEqual(c.segment[17].marker_id, 'SOD') + self.verifySOTsegment(c.segment[18], SOTsegment(2, 14, 1, 0)) - # SOT: start of tile part - self.assertEqual(c.segment[18].isot, 2) - self.assertEqual(c.segment[18].psot, 14) - self.assertEqual(c.segment[18].tpsot, 1) - self.assertEqual(c.segment[18].tnsot, 0) - - # SOD: start of data self.assertEqual(c.segment[19].marker_id, 'SOD') + self.verifySOTsegment(c.segment[20], SOTsegment(2, 1089, 2, 0)) - # SOT: start of tile part - self.assertEqual(c.segment[20].isot, 2) - self.assertEqual(c.segment[20].psot, 1089) - self.assertEqual(c.segment[20].tpsot, 2) - self.assertEqual(c.segment[20].tnsot, 0) - - # SOD: start of data self.assertEqual(c.segment[21].marker_id, 'SOD') - - # EOC: end of codestream self.assertEqual(c.segment[22].marker_id, 'EOC') def test_NR_p0_11_dump(self): @@ -1191,11 +1105,7 @@ class TestSuite(TestSuiteBase): "Creator: AV-J2K (c) 2000,2001 Algo Vision".encode()) self.verifyCMEsegment(c.segment[4], CMEsegment(*pargs)) - # SOT: start of tile part - self.assertEqual(c.segment[5].isot, 0) - self.assertEqual(c.segment[5].psot, 118) - self.assertEqual(c.segment[5].tpsot, 0) - self.assertEqual(c.segment[5].tnsot, 1) + self.verifySOTsegment(c.segment[5], SOTsegment(0, 118, 0, 1)) # SOD: start of data self.assertEqual(c.segment[6].marker_id, 'SOD') @@ -1255,11 +1165,7 @@ class TestSuite(TestSuiteBase): pargs = (RCME_ISO_8859_1, "Creator: AV-J2K (c) 2000,2001 Algo Vision".encode()) self.verifyCMEsegment(c.segment[4], CMEsegment(*pargs)) - # SOT: start of tile part - self.assertEqual(c.segment[5].isot, 0) - self.assertEqual(c.segment[5].psot, 162) - self.assertEqual(c.segment[5].tpsot, 0) - self.assertEqual(c.segment[5].tnsot, 1) + self.verifySOTsegment(c.segment[5], SOTsegment(0, 162, 0, 1)) # SOD: start of data self.assertEqual(c.segment[6].marker_id, 'SOD') @@ -1352,10 +1258,7 @@ class TestSuite(TestSuiteBase): self.assertEqual(c.segment[6].exponent, [9, 10, 10, 11]) self.assertEqual(c.segment[6].mantissa, [0, 0, 0, 0]) - # RGN: region of interest - self.assertEqual(c.segment[7].crgn, 3) - self.assertEqual(c.segment[7].srgn, 0) - self.assertEqual(c.segment[7].sprgn, 11) + self.verifyRGNsegment(c.segment[7], RGNsegment(3, 0, 11)) # POD: progression order change self.assertEqual(c.segment[8].rspod, (0, 0)) @@ -1369,11 +1272,7 @@ class TestSuite(TestSuiteBase): pargs = (RCME_ISO_8859_1, "Creator: AV-J2K (c) 2000,2001 Algo Vision".encode()) self.verifyCMEsegment(c.segment[9], CMEsegment(*pargs)) - # SOT: start of tile part - self.assertEqual(c.segment[10].isot, 0) - self.assertEqual(c.segment[10].psot, 1537) - self.assertEqual(c.segment[10].tpsot, 0) - self.assertEqual(c.segment[10].tnsot, 1) + self.verifySOTsegment(c.segment[10], SOTsegment(0, 1537, 0, 1)) # SOD: start of data self.assertEqual(c.segment[11].marker_id, 'SOD') @@ -1427,16 +1326,8 @@ class TestSuite(TestSuiteBase): pargs = (RCME_ISO_8859_1, "Kakadu-3.0.7".encode()) self.verifyCMEsegment(c.segment[4], CMEsegment(*pargs)) - # SOT: start of tile part - self.assertEqual(c.segment[5].isot, 0) - self.assertEqual(c.segment[5].psot, 1528) - self.assertEqual(c.segment[5].tpsot, 0) - self.assertEqual(c.segment[5].tnsot, 1) - - # SOD: start of data + self.verifySOTsegment(c.segment[5], SOTsegment(0, 1528, 0, 1)) self.assertEqual(c.segment[6].marker_id, 'SOD') - - # EOC: end of codestream self.assertEqual(c.segment[7].marker_id, 'EOC') def test_NR_p0_15_dump(self): @@ -1516,49 +1407,30 @@ class TestSuite(TestSuiteBase): self.assertEqual(c.segment[10].ttlm, (0, 1, 2, 3)) self.assertEqual(c.segment[10].ptlm, (4267, 2117, 4080, 2081)) - # SOT: start of tile part - self.assertEqual(c.segment[11].isot, 0) - self.assertEqual(c.segment[11].psot, 4267) - self.assertEqual(c.segment[11].tpsot, 0) - self.assertEqual(c.segment[11].tnsot, 1) + self.verifySOTsegment(c.segment[11], SOTsegment(0, 4267, 0, 1)) - # RGN: region of interest - self.assertEqual(c.segment[12].crgn, 0) - self.assertEqual(c.segment[12].srgn, 0) - self.assertEqual(c.segment[12].sprgn, 7) + self.verifyRGNsegment(c.segment[12], RGNsegment(0, 0, 7)) # SOD: start of data self.assertEqual(c.segment[13].marker_id, 'SOD') # 16 SOP markers would be here if we were looking for them - # SOT: start of tile part - self.assertEqual(c.segment[31].isot, 1) - self.assertEqual(c.segment[31].psot, 2117) - self.assertEqual(c.segment[31].tpsot, 0) - self.assertEqual(c.segment[31].tnsot, 1) + self.verifySOTsegment(c.segment[31], SOTsegment(1, 2117, 0, 1)) # SOD: start of data self.assertEqual(c.segment[32].marker_id, 'SOD') # 16 SOP markers would be here if we were looking for them - # SOT: start of tile part - self.assertEqual(c.segment[49].isot, 2) - self.assertEqual(c.segment[49].psot, 4080) - self.assertEqual(c.segment[49].tpsot, 0) - self.assertEqual(c.segment[49].tnsot, 1) + self.verifySOTsegment(c.segment[49], SOTsegment(2, 4080, 0, 1)) # SOD: start of data self.assertEqual(c.segment[50].marker_id, 'SOD') # 16 SOP markers would be here if we were looking for them - # SOT: start of tile part - self.assertEqual(c.segment[67].isot, 3) - self.assertEqual(c.segment[67].psot, 2081) - self.assertEqual(c.segment[67].tpsot, 0) - self.assertEqual(c.segment[67].tnsot, 1) + self.verifySOTsegment(c.segment[67], SOTsegment(3, 2081, 0, 1)) # SOD: start of data self.assertEqual(c.segment[68].marker_id, 'SOD') @@ -1610,11 +1482,7 @@ class TestSuite(TestSuiteBase): self.assertEqual(c.segment[3].exponent, [8, 9, 9, 10, 9, 9, 10, 9, 9, 10]) - # SOT: start of tile part - self.assertEqual(c.segment[4].isot, 0) - self.assertEqual(c.segment[4].psot, 7331) - self.assertEqual(c.segment[4].tpsot, 0) - self.assertEqual(c.segment[4].tnsot, 1) + self.verifySOTsegment(c.segment[4], SOTsegment(0, 7331, 0, 1)) # SOD: start of data self.assertEqual(c.segment[5].marker_id, 'SOD') @@ -1686,11 +1554,7 @@ class TestSuite(TestSuiteBase): pargs = (RCME_ISO_8859_1, "Creator: AV-J2K (c) 2000,2001 Algo Vision".encode()) self.verifyCMEsegment(c.segment[5], CMEsegment(*pargs)) - # SOT: start of tile part - self.assertEqual(c.segment[6].isot, 0) - self.assertEqual(c.segment[6].psot, 4627) - self.assertEqual(c.segment[6].tpsot, 0) - self.assertEqual(c.segment[6].tnsot, 1) + self.verifySOTsegment(c.segment[6], SOTsegment(0, 4627, 0, 1)) # SOD: start of data self.assertEqual(c.segment[7].marker_id, 'SOD') @@ -1784,11 +1648,7 @@ class TestSuite(TestSuiteBase): pargs = (RCME_ISO_8859_1, "Creator: AV-J2K (c) 2000,2001 Algo Vision".encode()) self.verifyCMEsegment(c.segment[6], CMEsegment(*pargs)) - # SOT: start of tile part - self.assertEqual(c.segment[7].isot, 0) - self.assertEqual(c.segment[7].psot, 262838) - self.assertEqual(c.segment[7].tpsot, 0) - self.assertEqual(c.segment[7].tnsot, 1) + self.verifySOTsegment(c.segment[7], SOTsegment(0, 262838, 0, 1)) # PPT: packed packet headers, tile-part header self.assertEqual(c.segment[8].marker_id, 'PPT') @@ -1917,11 +1777,7 @@ class TestSuite(TestSuiteBase): self.assertEqual(c.segment[10].ttlm, (0,)) self.assertEqual(c.segment[10].ptlm, (1366780,)) - # SOT: start of tile part - self.assertEqual(c.segment[11].isot, 0) - self.assertEqual(c.segment[11].psot, 1366780) - self.assertEqual(c.segment[11].tpsot, 0) - self.assertEqual(c.segment[11].tnsot, 1) + self.verifySOTsegment(c.segment[11], SOTsegment(0, 1366780, 0, 1)) # SOD: start of data self.assertEqual(c.segment[12].marker_id, 'SOD') @@ -1987,20 +1843,12 @@ class TestSuite(TestSuiteBase): pargs = (RCME_ISO_8859_1, "Created by Aware, Inc.".encode()) self.verifyCMEsegment(c.segment[5], CMEsegment(*pargs)) - # SOT: start of tile part - self.assertEqual(c.segment[6].isot, 0) - self.assertEqual(c.segment[6].psot, 350) - self.assertEqual(c.segment[6].tpsot, 0) - self.assertEqual(c.segment[6].tnsot, 1) + self.verifySOTsegment(c.segment[6], SOTsegment(0, 350, 0, 1)) # SOD: start of data self.assertEqual(c.segment[7].marker_id, 'SOD') - # SOT: start of tile part - self.assertEqual(c.segment[8].isot, 1) - self.assertEqual(c.segment[8].psot, 356) - self.assertEqual(c.segment[8].tpsot, 0) - self.assertEqual(c.segment[8].tnsot, 1) + self.verifySOTsegment(c.segment[8], SOTsegment(1, 356, 0, 1)) # QCD: Quantization default # quantization type @@ -2015,11 +1863,7 @@ class TestSuite(TestSuiteBase): # SOD: start of data self.assertEqual(c.segment[10].marker_id, 'SOD') - # SOT: start of tile part - self.assertEqual(c.segment[11].isot, 2) - self.assertEqual(c.segment[11].psot, 402) - self.assertEqual(c.segment[11].tpsot, 0) - self.assertEqual(c.segment[11].tnsot, 1) + self.verifySOTsegment(c.segment[11], SOTsegment(2, 402, 0, 1)) # and so on @@ -2089,11 +1933,7 @@ class TestSuite(TestSuiteBase): zppm = [x.zppm for x in c.segment[5:230]] self.assertEqual(zppm, list(range(225))) - # SOT: start of tile part - self.assertEqual(c.segment[230].isot, 0) - self.assertEqual(c.segment[230].psot, 580) - self.assertEqual(c.segment[230].tpsot, 0) - self.assertEqual(c.segment[230].tnsot, 1) + self.verifySOTsegment(c.segment[230], SOTsegment(0, 580, 0, 1)) # 225 total SOT segments isot = [x.isot for x in c.segment if x.marker_id == 'SOT'] @@ -2156,11 +1996,7 @@ class TestSuite(TestSuiteBase): pargs = (RCME_ISO_8859_1, "Creator: AV-J2K (c) 2000,2001 Algo Vision".encode()) self.verifyCMEsegment(c.segment[4], CMEsegment(*pargs)) - # SOT: start of tile part - self.assertEqual(c.segment[5].isot, 0) - self.assertEqual(c.segment[5].psot, 349) - self.assertEqual(c.segment[5].tpsot, 0) - self.assertEqual(c.segment[5].tnsot, 1) + self.verifySOTsegment(c.segment[5], SOTsegment(0, 349, 0, 1)) # PPT: packed packet headers, tile-part header self.assertEqual(c.segment[6].marker_id, 'PPT') @@ -2247,11 +2083,7 @@ class TestSuite(TestSuiteBase): pargs = (RCME_ISO_8859_1, "Creator: AV-J2K (c) 2000,2001 Algo Vision".encode()) self.verifyCMEsegment(c.segment[5], CMEsegment(*pargs)) - # SOT: start of tile part - self.assertEqual(c.segment[6].isot, 0) - self.assertEqual(c.segment[6].psot, 434) - self.assertEqual(c.segment[6].tpsot, 0) - self.assertEqual(c.segment[6].tnsot, 1) + self.verifySOTsegment(c.segment[6], SOTsegment(0, 434, 0, 1)) # scads of SOP, EPH segments @@ -3349,13 +3181,7 @@ class TestSuite(TestSuiteBase): self.assertEqual(ids, ['ihdr', 'colr', 'pclr', 'cmap']) self.verifySignatureBox(jp2.box[0]) - - # File type box. - self.assertEqual(jp2.box[1].brand, 'jp2 ') - self.assertEqual(jp2.box[1].minor_version, 0) - self.assertEqual(jp2.box[1].compatibility_list[0], 'jp2 ') - self.assertEqual(jp2.box[1].compatibility_list[1], 'jpxb') - self.assertEqual(jp2.box[1].compatibility_list[2], 'jpx ') + self.verifyFileTypeBox(jp2.box[1], 'jp2 ', ['jp2 ', 'jpxb', 'jpx ']) # Reader requirements talk. # unrestricted jpeg 2000 part 1 @@ -3433,13 +3259,7 @@ class TestSuite(TestSuiteBase): self.assertEqual(ids, ['ihdr', 'colr']) self.verifySignatureBox(jp2.box[0]) - - # File type box. - self.assertEqual(jp2.box[1].brand, 'jp2 ') - self.assertEqual(jp2.box[1].minor_version, 0) - self.assertEqual(jp2.box[1].compatibility_list[0], 'jp2 ') - self.assertEqual(jp2.box[1].compatibility_list[1], 'jpxb') - self.assertEqual(jp2.box[1].compatibility_list[2], 'jpx ') + self.verifyFileTypeBox(jp2.box[1], 'jp2 ', ['jp2 ', 'jpxb', 'jpx ']) # Reader requirements talk. # unrestricted jpeg 2000 part 1 @@ -3511,11 +3331,7 @@ class TestSuite(TestSuiteBase): self.assertEqual(ids, ['resd']) self.verifySignatureBox(jp2.box[0]) - - # File type box. - self.assertEqual(jp2.box[1].brand, 'jp2 ') - self.assertEqual(jp2.box[1].minor_version, 0) - self.assertEqual(jp2.box[1].compatibility_list[0], 'jp2 ') + self.verifyFileTypeBox(jp2.box[1], 'jp2 ', ['jp2 ']) ihdr = glymur.jp2box.ImageHeaderBox(135, 135, num_components=2, colorspace_unknown=True) @@ -3591,13 +3407,7 @@ class TestSuite(TestSuiteBase): self.assertEqual(ids, ['ihdr', 'colr', 'pclr', 'cmap']) self.verifySignatureBox(jp2.box[0]) - - # File type box. - self.assertEqual(jp2.box[1].brand, 'jp2 ') - self.assertEqual(jp2.box[1].minor_version, 0) - self.assertEqual(jp2.box[1].compatibility_list[0], 'jp2 ') - self.assertEqual(jp2.box[1].compatibility_list[1], 'jpxb') - self.assertEqual(jp2.box[1].compatibility_list[2], 'jpx ') + self.verifyFileTypeBox(jp2.box[1], 'jp2 ', ['jp2 ', 'jpxb', 'jpx ']) # Reader requirements talk. # unrestricted jpeg 2000 part 1 @@ -3678,11 +3488,7 @@ class TestSuite(TestSuiteBase): self.assertEqual(ids, ['ihdr', 'colr']) self.verifySignatureBox(jp2.box[0]) - - # File type box. - self.assertEqual(jp2.box[1].brand, 'jp2 ') - self.assertEqual(jp2.box[1].minor_version, 0) - self.assertEqual(jp2.box[1].compatibility_list[0], 'jp2 ') + self.verifyFileTypeBox(jp2.box[1], 'jp2 ', ['jp2 ']) ihdr = glymur.jp2box.ImageHeaderBox(576, 766, num_components=3) self.verifyImageHeaderBox(jp2.box[2].box[0], ihdr) @@ -4096,11 +3902,7 @@ class TestSuiteWarns(TestSuiteBase): self.assertEqual(ids, ['ihdr', 'colr']) self.verifySignatureBox(jp2.box[0]) - - # File type box. - self.assertEqual(jp2.box[1].brand, 'jp2 ') - self.assertEqual(jp2.box[1].compatibility_list[1], 'jp2 ') - self.assertEqual(jp2.box[1].minor_version, 0) + self.verifyFileTypeBox(jp2.box[1], 'jp2 ', ['jp2 ']) ihdr = glymur.jp2box.ImageHeaderBox(400, 700) self.verifyImageHeaderBox(jp2.box[2].box[0], ihdr) @@ -4138,11 +3940,7 @@ class TestSuiteWarns(TestSuiteBase): self.assertEqual(ids, ['ihdr', 'pclr', 'cmap', 'colr']) self.verifySignatureBox(jp2.box[0]) - - # File type box. - self.assertEqual(jp2.box[1].brand, 'jp2 ') - self.assertEqual(jp2.box[1].compatibility_list[1], 'jp2 ') - self.assertEqual(jp2.box[1].minor_version, 0) + self.verifyFileTypeBox(jp2.box[1], 'jp2 ', ['jp2 ']) ihdr = glymur.jp2box.ImageHeaderBox(512, 768) self.verifyImageHeaderBox(jp2.box[2].box[0], ihdr) @@ -4183,11 +3981,7 @@ class TestSuiteWarns(TestSuiteBase): self.assertEqual(ids, ['ihdr', 'colr']) self.verifySignatureBox(jp2.box[0]) - - # File type box. - self.assertEqual(jp2.box[1].brand, 'jp2 ') - self.assertEqual(jp2.box[1].minor_version, 0) - self.assertEqual(jp2.box[1].compatibility_list[0], 'jp2 ') + self.verifyFileTypeBox(jp2.box[1], 'jp2 ', ['jp2 ']) ihdr = glymur.jp2box.ImageHeaderBox(200, 200, num_components=3, colorspace_unknown=True) @@ -4252,11 +4046,7 @@ class TestSuiteWarns(TestSuiteBase): self.assertEqual(ids, ['ihdr', 'colr']) self.verifySignatureBox(jp2.box[0]) - - # File type box. - self.assertEqual(jp2.box[1].brand, 'jp2 ') - self.assertEqual(jp2.box[1].minor_version, 0) - self.assertEqual(jp2.box[1].compatibility_list[0], 'jp2 ') + self.verifyFileTypeBox(jp2.box[1], 'jp2 ', ['jp2 ']) ihdr = glymur.jp2box.ImageHeaderBox(117, 117, num_components=4) self.verifyImageHeaderBox(jp2.box[2].box[0], ihdr) @@ -4327,11 +4117,7 @@ class TestSuiteWarns(TestSuiteBase): self.assertEqual(ids, ['ihdr', 'colr']) self.verifySignatureBox(jp2.box[0]) - - # File type box. - self.assertEqual(jp2.box[1].brand, 'jp2 ') - self.assertEqual(jp2.box[1].minor_version, 0) - self.assertEqual(jp2.box[1].compatibility_list[0], 'jp2 ') + self.verifyFileTypeBox(jp2.box[1], 'jp2 ', ['jp2 ']) ihdr = glymur.jp2box.ImageHeaderBox(117, 117, num_components=4) self.verifyImageHeaderBox(jp2.box[2].box[0], ihdr)