Refactoring. #139
This commit is contained in:
parent
9a74109501
commit
af4b6e64bf
2 changed files with 56 additions and 242 deletions
|
|
@ -566,15 +566,15 @@ class Jp2k(Jp2kBox):
|
||||||
temp_rate = 0
|
temp_rate = 0
|
||||||
cparams.cp_disto_alloc = 1
|
cparams.cp_disto_alloc = 1
|
||||||
|
|
||||||
|
num_pixels = image.contents.comps[0].w * image.contents.comps[0].h
|
||||||
|
num_samples = num_pixels * image.contents.numcomps
|
||||||
|
rate_numerator = num_samples * image.contents.comps[0].prec
|
||||||
|
rate_denominator = 8 * image.contents.comps[0].dx
|
||||||
|
rate_denominator *= image.contents.comps[0].dy
|
||||||
|
|
||||||
if cparams.cp_cinema in [CINEMA_MODE['cinema2k_24'],
|
if cparams.cp_cinema in [CINEMA_MODE['cinema2k_24'],
|
||||||
CINEMA_MODE['cinema4k_24']]:
|
CINEMA_MODE['cinema4k_24']]:
|
||||||
num_pixels = image.contents.comps[0].w * image.contents.comps[0].h
|
max_rate = rate_numerator / (rate_denominator * CINEMA_24_CS)
|
||||||
num_samples = num_pixels * image.contents.numcomps
|
|
||||||
rate_numerator = num_samples * image.contents.comps[0].prec
|
|
||||||
rate_denominator = CINEMA_24_CS * 8
|
|
||||||
rate_denominator *= image.contents.comps[0].dx
|
|
||||||
rate_denominator *= image.contents.comps[0].dy
|
|
||||||
max_rate = rate_numerator / rate_denominator
|
|
||||||
if cparams.tcp_rates[0] == 0:
|
if cparams.tcp_rates[0] == 0:
|
||||||
cparams.tcp_rates[0] = max_rate
|
cparams.tcp_rates[0] = max_rate
|
||||||
else:
|
else:
|
||||||
|
|
@ -589,13 +589,7 @@ class Jp2k(Jp2kBox):
|
||||||
cparams.max_comp_size = COMP_24_CS
|
cparams.max_comp_size = COMP_24_CS
|
||||||
|
|
||||||
else:
|
else:
|
||||||
num_pixels = image.contents.comps[0].w * image.contents.comps[0].h
|
max_rate = rate_numerator / (rate_denominator * CINEMA_48_CS)
|
||||||
num_samples = num_pixels * image.contents.numcomps
|
|
||||||
rate_numerator = num_samples * image.contents.comps[0].prec
|
|
||||||
rate_denominator = CINEMA_48_CS * 8
|
|
||||||
rate_denominator *= image.contents.comps[0].dx
|
|
||||||
rate_denominator *= image.contents.comps[0].dy
|
|
||||||
max_rate = rate_numerator / rate_denominator
|
|
||||||
if cparams.tcp_rates[0] == 0:
|
if cparams.tcp_rates[0] == 0:
|
||||||
cparams.tcp_rates[0] = max_rate
|
cparams.tcp_rates[0] = max_rate
|
||||||
else:
|
else:
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,48 @@ class TestSuiteWrite(unittest.TestCase):
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def check_cinema2k_codestream(self, codestream, image_size):
|
||||||
|
"""Common out for cinema2k tests."""
|
||||||
|
# SIZ: Image and tile size
|
||||||
|
# Profile: "3" means cinema2K
|
||||||
|
self.assertEqual(codestream.segment[1].rsiz, 3)
|
||||||
|
# Reference grid size
|
||||||
|
self.assertEqual((codestream.segment[1].xsiz,
|
||||||
|
codestream.segment[1].ysiz),
|
||||||
|
image_size)
|
||||||
|
# Reference grid offset
|
||||||
|
self.assertEqual((codestream.segment[1].xosiz,
|
||||||
|
codestream.segment[1].yosiz), (0, 0))
|
||||||
|
# Tile size
|
||||||
|
self.assertEqual((codestream.segment[1].xtsiz,
|
||||||
|
codestream.segment[1].ytsiz),
|
||||||
|
image_size)
|
||||||
|
# Tile offset
|
||||||
|
self.assertEqual((codestream.segment[1].xtosiz,
|
||||||
|
codestream.segment[1].ytosiz),
|
||||||
|
(0, 0))
|
||||||
|
# bitdepth
|
||||||
|
self.assertEqual(codestream.segment[1].bitdepth, (12, 12, 12))
|
||||||
|
# signed
|
||||||
|
self.assertEqual(codestream.segment[1].signed,
|
||||||
|
(False, False, False))
|
||||||
|
# subsampling
|
||||||
|
self.assertEqual(list(zip(codestream.segment[1].xrsiz,
|
||||||
|
codestream.segment[1].yrsiz)),
|
||||||
|
[(1, 1)] * 3)
|
||||||
|
|
||||||
|
# COD: Coding style default
|
||||||
|
self.assertFalse(codestream.segment[2].scod & 2) # no sop
|
||||||
|
self.assertFalse(codestream.segment[2].scod & 4) # no eph
|
||||||
|
self.assertEqual(codestream.segment[2].spcod[0], glymur.core.CPRL)
|
||||||
|
self.assertEqual(codestream.segment[2].layers, 1)
|
||||||
|
self.assertEqual(codestream.segment[2].spcod[3], 1) # mct
|
||||||
|
self.assertEqual(codestream.segment[2].spcod[4], 5) # levels
|
||||||
|
self.assertEqual(tuple(codestream.segment[2].code_block_size),
|
||||||
|
(32, 32)) # cblksz
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@unittest.skipIf(not _HAS_SKIMAGE_FREEIMAGE_SUPPORT,
|
@unittest.skipIf(not _HAS_SKIMAGE_FREEIMAGE_SUPPORT,
|
||||||
"Cannot read input image without scikit-image/freeimage")
|
"Cannot read input image without scikit-image/freeimage")
|
||||||
def test_NR_ENC_X_5_2K_24_235_CBR_STEM24_000_tif_19_encode(self):
|
def test_NR_ENC_X_5_2K_24_235_CBR_STEM24_000_tif_19_encode(self):
|
||||||
|
|
@ -55,44 +97,7 @@ class TestSuiteWrite(unittest.TestCase):
|
||||||
j.write(data, cinema2k=48)
|
j.write(data, cinema2k=48)
|
||||||
|
|
||||||
codestream = j.get_codestream()
|
codestream = j.get_codestream()
|
||||||
|
self.check_cinema2k_codestream(codestream, (2048, 857))
|
||||||
# SIZ: Image and tile size
|
|
||||||
# Profile: "3" means cinema2K
|
|
||||||
self.assertEqual(codestream.segment[1].rsiz, 3)
|
|
||||||
# Reference grid size
|
|
||||||
self.assertEqual((codestream.segment[1].xsiz,
|
|
||||||
codestream.segment[1].ysiz),
|
|
||||||
(2048, 857))
|
|
||||||
# Reference grid offset
|
|
||||||
self.assertEqual((codestream.segment[1].xosiz,
|
|
||||||
codestream.segment[1].yosiz), (0, 0))
|
|
||||||
# Tile size
|
|
||||||
self.assertEqual((codestream.segment[1].xtsiz,
|
|
||||||
codestream.segment[1].ytsiz),
|
|
||||||
(2048, 857))
|
|
||||||
# Tile offset
|
|
||||||
self.assertEqual((codestream.segment[1].xtosiz,
|
|
||||||
codestream.segment[1].ytosiz),
|
|
||||||
(0, 0))
|
|
||||||
# bitdepth
|
|
||||||
self.assertEqual(codestream.segment[1].bitdepth, (12, 12, 12))
|
|
||||||
# signed
|
|
||||||
self.assertEqual(codestream.segment[1].signed,
|
|
||||||
(False, False, False))
|
|
||||||
# subsampling
|
|
||||||
self.assertEqual(list(zip(codestream.segment[1].xrsiz,
|
|
||||||
codestream.segment[1].yrsiz)),
|
|
||||||
[(1, 1)] * 3)
|
|
||||||
|
|
||||||
# COD: Coding style default
|
|
||||||
self.assertFalse(codestream.segment[2].scod & 2) # no sop
|
|
||||||
self.assertFalse(codestream.segment[2].scod & 4) # no eph
|
|
||||||
self.assertEqual(codestream.segment[2].spcod[0], glymur.core.CPRL)
|
|
||||||
self.assertEqual(codestream.segment[2].layers, 1)
|
|
||||||
self.assertEqual(codestream.segment[2].spcod[3], 1) # mct
|
|
||||||
self.assertEqual(codestream.segment[2].spcod[4], 5) # levels
|
|
||||||
self.assertEqual(tuple(codestream.segment[2].code_block_size),
|
|
||||||
(32, 32)) # cblksz
|
|
||||||
|
|
||||||
|
|
||||||
@unittest.skipIf(not _HAS_SKIMAGE_FREEIMAGE_SUPPORT,
|
@unittest.skipIf(not _HAS_SKIMAGE_FREEIMAGE_SUPPORT,
|
||||||
|
|
@ -106,44 +111,7 @@ class TestSuiteWrite(unittest.TestCase):
|
||||||
j.write(data, cinema2k=48)
|
j.write(data, cinema2k=48)
|
||||||
|
|
||||||
codestream = j.get_codestream()
|
codestream = j.get_codestream()
|
||||||
|
self.check_cinema2k_codestream(codestream, (2048, 1080))
|
||||||
# SIZ: Image and tile size
|
|
||||||
# Profile: "3" means cinema2K
|
|
||||||
self.assertEqual(codestream.segment[1].rsiz, 3)
|
|
||||||
# Reference grid size
|
|
||||||
self.assertEqual((codestream.segment[1].xsiz,
|
|
||||||
codestream.segment[1].ysiz),
|
|
||||||
(2048, 1080))
|
|
||||||
# Reference grid offset
|
|
||||||
self.assertEqual((codestream.segment[1].xosiz,
|
|
||||||
codestream.segment[1].yosiz), (0, 0))
|
|
||||||
# Tile size
|
|
||||||
self.assertEqual((codestream.segment[1].xtsiz,
|
|
||||||
codestream.segment[1].ytsiz),
|
|
||||||
(2048, 1080))
|
|
||||||
# Tile offset
|
|
||||||
self.assertEqual((codestream.segment[1].xtosiz,
|
|
||||||
codestream.segment[1].ytosiz),
|
|
||||||
(0, 0))
|
|
||||||
# bitdepth
|
|
||||||
self.assertEqual(codestream.segment[1].bitdepth, (12, 12, 12))
|
|
||||||
# signed
|
|
||||||
self.assertEqual(codestream.segment[1].signed,
|
|
||||||
(False, False, False))
|
|
||||||
# subsampling
|
|
||||||
self.assertEqual(list(zip(codestream.segment[1].xrsiz,
|
|
||||||
codestream.segment[1].yrsiz)),
|
|
||||||
[(1, 1)] * 3)
|
|
||||||
|
|
||||||
# COD: Coding style default
|
|
||||||
self.assertFalse(codestream.segment[2].scod & 2) # no sop
|
|
||||||
self.assertFalse(codestream.segment[2].scod & 4) # no eph
|
|
||||||
self.assertEqual(codestream.segment[2].spcod[0], glymur.core.CPRL)
|
|
||||||
self.assertEqual(codestream.segment[2].layers, 1)
|
|
||||||
self.assertEqual(codestream.segment[2].spcod[3], 1) # mct
|
|
||||||
self.assertEqual(codestream.segment[2].spcod[4], 5) # levels
|
|
||||||
self.assertEqual(tuple(codestream.segment[2].code_block_size),
|
|
||||||
(32, 32)) # cblksz
|
|
||||||
|
|
||||||
|
|
||||||
@unittest.skipIf(not _HAS_SKIMAGE_FREEIMAGE_SUPPORT,
|
@unittest.skipIf(not _HAS_SKIMAGE_FREEIMAGE_SUPPORT,
|
||||||
|
|
@ -157,44 +125,7 @@ class TestSuiteWrite(unittest.TestCase):
|
||||||
j.write(data, cinema2k=24)
|
j.write(data, cinema2k=24)
|
||||||
|
|
||||||
codestream = j.get_codestream()
|
codestream = j.get_codestream()
|
||||||
|
self.check_cinema2k_codestream(codestream, (2048, 1080))
|
||||||
# SIZ: Image and tile size
|
|
||||||
# Profile: "3" means cinema2K
|
|
||||||
self.assertEqual(codestream.segment[1].rsiz, 3)
|
|
||||||
# Reference grid size
|
|
||||||
self.assertEqual((codestream.segment[1].xsiz,
|
|
||||||
codestream.segment[1].ysiz),
|
|
||||||
(2048, 1080))
|
|
||||||
# Reference grid offset
|
|
||||||
self.assertEqual((codestream.segment[1].xosiz,
|
|
||||||
codestream.segment[1].yosiz), (0, 0))
|
|
||||||
# Tile size
|
|
||||||
self.assertEqual((codestream.segment[1].xtsiz,
|
|
||||||
codestream.segment[1].ytsiz),
|
|
||||||
(2048, 1080))
|
|
||||||
# Tile offset
|
|
||||||
self.assertEqual((codestream.segment[1].xtosiz,
|
|
||||||
codestream.segment[1].ytosiz),
|
|
||||||
(0, 0))
|
|
||||||
# bitdepth
|
|
||||||
self.assertEqual(codestream.segment[1].bitdepth, (12, 12, 12))
|
|
||||||
# signed
|
|
||||||
self.assertEqual(codestream.segment[1].signed,
|
|
||||||
(False, False, False))
|
|
||||||
# subsampling
|
|
||||||
self.assertEqual(list(zip(codestream.segment[1].xrsiz,
|
|
||||||
codestream.segment[1].yrsiz)),
|
|
||||||
[(1, 1)] * 3)
|
|
||||||
|
|
||||||
# COD: Coding style default
|
|
||||||
self.assertFalse(codestream.segment[2].scod & 2) # no sop
|
|
||||||
self.assertFalse(codestream.segment[2].scod & 4) # no eph
|
|
||||||
self.assertEqual(codestream.segment[2].spcod[0], glymur.core.CPRL)
|
|
||||||
self.assertEqual(codestream.segment[2].layers, 1)
|
|
||||||
self.assertEqual(codestream.segment[2].spcod[3], 1) # mct
|
|
||||||
self.assertEqual(codestream.segment[2].spcod[4], 5) # levels
|
|
||||||
self.assertEqual(tuple(codestream.segment[2].code_block_size),
|
|
||||||
(32, 32)) # cblksz
|
|
||||||
|
|
||||||
|
|
||||||
@unittest.skipIf(not _HAS_SKIMAGE_FREEIMAGE_SUPPORT,
|
@unittest.skipIf(not _HAS_SKIMAGE_FREEIMAGE_SUPPORT,
|
||||||
|
|
@ -208,44 +139,7 @@ class TestSuiteWrite(unittest.TestCase):
|
||||||
j.write(data, cinema2k=24)
|
j.write(data, cinema2k=24)
|
||||||
|
|
||||||
codestream = j.get_codestream()
|
codestream = j.get_codestream()
|
||||||
|
self.check_cinema2k_codestream(codestream, (2048, 857))
|
||||||
# SIZ: Image and tile size
|
|
||||||
# Profile: "3" means cinema2K
|
|
||||||
self.assertEqual(codestream.segment[1].rsiz, 3)
|
|
||||||
# Reference grid size
|
|
||||||
self.assertEqual((codestream.segment[1].xsiz,
|
|
||||||
codestream.segment[1].ysiz),
|
|
||||||
(2048, 857))
|
|
||||||
# Reference grid offset
|
|
||||||
self.assertEqual((codestream.segment[1].xosiz,
|
|
||||||
codestream.segment[1].yosiz), (0, 0))
|
|
||||||
# Tile size
|
|
||||||
self.assertEqual((codestream.segment[1].xtsiz,
|
|
||||||
codestream.segment[1].ytsiz),
|
|
||||||
(2048, 857))
|
|
||||||
# Tile offset
|
|
||||||
self.assertEqual((codestream.segment[1].xtosiz,
|
|
||||||
codestream.segment[1].ytosiz),
|
|
||||||
(0, 0))
|
|
||||||
# bitdepth
|
|
||||||
self.assertEqual(codestream.segment[1].bitdepth, (12, 12, 12))
|
|
||||||
# signed
|
|
||||||
self.assertEqual(codestream.segment[1].signed,
|
|
||||||
(False, False, False))
|
|
||||||
# subsampling
|
|
||||||
self.assertEqual(list(zip(codestream.segment[1].xrsiz,
|
|
||||||
codestream.segment[1].yrsiz)),
|
|
||||||
[(1, 1)] * 3)
|
|
||||||
|
|
||||||
# COD: Coding style default
|
|
||||||
self.assertFalse(codestream.segment[2].scod & 2) # no sop
|
|
||||||
self.assertFalse(codestream.segment[2].scod & 4) # no eph
|
|
||||||
self.assertEqual(codestream.segment[2].spcod[0], glymur.core.CPRL)
|
|
||||||
self.assertEqual(codestream.segment[2].layers, 1)
|
|
||||||
self.assertEqual(codestream.segment[2].spcod[3], 1) # mct
|
|
||||||
self.assertEqual(codestream.segment[2].spcod[4], 5) # levels
|
|
||||||
self.assertEqual(tuple(codestream.segment[2].code_block_size),
|
|
||||||
(32, 32)) # cblksz
|
|
||||||
|
|
||||||
|
|
||||||
@unittest.skipIf(not _HAS_SKIMAGE_FREEIMAGE_SUPPORT,
|
@unittest.skipIf(not _HAS_SKIMAGE_FREEIMAGE_SUPPORT,
|
||||||
|
|
@ -259,44 +153,7 @@ class TestSuiteWrite(unittest.TestCase):
|
||||||
j.write(data, cinema2k=48)
|
j.write(data, cinema2k=48)
|
||||||
|
|
||||||
codestream = j.get_codestream()
|
codestream = j.get_codestream()
|
||||||
|
self.check_cinema2k_codestream(codestream, (1998, 1080))
|
||||||
# SIZ: Image and tile size
|
|
||||||
# Profile: "3" means cinema2K
|
|
||||||
self.assertEqual(codestream.segment[1].rsiz, 3)
|
|
||||||
# Reference grid size
|
|
||||||
self.assertEqual((codestream.segment[1].xsiz,
|
|
||||||
codestream.segment[1].ysiz),
|
|
||||||
(1998, 1080))
|
|
||||||
# Reference grid offset
|
|
||||||
self.assertEqual((codestream.segment[1].xosiz,
|
|
||||||
codestream.segment[1].yosiz), (0, 0))
|
|
||||||
# Tile size
|
|
||||||
self.assertEqual((codestream.segment[1].xtsiz,
|
|
||||||
codestream.segment[1].ytsiz),
|
|
||||||
(1998, 1080))
|
|
||||||
# Tile offset
|
|
||||||
self.assertEqual((codestream.segment[1].xtosiz,
|
|
||||||
codestream.segment[1].ytosiz),
|
|
||||||
(0, 0))
|
|
||||||
# bitdepth
|
|
||||||
self.assertEqual(codestream.segment[1].bitdepth, (12, 12, 12))
|
|
||||||
# signed
|
|
||||||
self.assertEqual(codestream.segment[1].signed,
|
|
||||||
(False, False, False))
|
|
||||||
# subsampling
|
|
||||||
self.assertEqual(list(zip(codestream.segment[1].xrsiz,
|
|
||||||
codestream.segment[1].yrsiz)),
|
|
||||||
[(1, 1)] * 3)
|
|
||||||
|
|
||||||
# COD: Coding style default
|
|
||||||
self.assertFalse(codestream.segment[2].scod & 2) # no sop
|
|
||||||
self.assertFalse(codestream.segment[2].scod & 4) # no eph
|
|
||||||
self.assertEqual(codestream.segment[2].spcod[0], glymur.core.CPRL)
|
|
||||||
self.assertEqual(codestream.segment[2].layers, 1)
|
|
||||||
self.assertEqual(codestream.segment[2].spcod[3], 1) # mct
|
|
||||||
self.assertEqual(codestream.segment[2].spcod[4], 5) # levels
|
|
||||||
self.assertEqual(tuple(codestream.segment[2].code_block_size),
|
|
||||||
(32, 32)) # cblksz
|
|
||||||
|
|
||||||
|
|
||||||
@unittest.skipIf(not _HAS_SKIMAGE_FREEIMAGE_SUPPORT,
|
@unittest.skipIf(not _HAS_SKIMAGE_FREEIMAGE_SUPPORT,
|
||||||
|
|
@ -310,44 +167,7 @@ class TestSuiteWrite(unittest.TestCase):
|
||||||
j.write(data, cinema2k=24)
|
j.write(data, cinema2k=24)
|
||||||
|
|
||||||
codestream = j.get_codestream()
|
codestream = j.get_codestream()
|
||||||
|
self.check_cinema2k_codestream(codestream, (1998, 1080))
|
||||||
# SIZ: Image and tile size
|
|
||||||
# Profile: "3" means cinema2K
|
|
||||||
self.assertEqual(codestream.segment[1].rsiz, 3)
|
|
||||||
# Reference grid size
|
|
||||||
self.assertEqual((codestream.segment[1].xsiz,
|
|
||||||
codestream.segment[1].ysiz),
|
|
||||||
(1998, 1080))
|
|
||||||
# Reference grid offset
|
|
||||||
self.assertEqual((codestream.segment[1].xosiz,
|
|
||||||
codestream.segment[1].yosiz), (0, 0))
|
|
||||||
# Tile size
|
|
||||||
self.assertEqual((codestream.segment[1].xtsiz,
|
|
||||||
codestream.segment[1].ytsiz),
|
|
||||||
(1998, 1080))
|
|
||||||
# Tile offset
|
|
||||||
self.assertEqual((codestream.segment[1].xtosiz,
|
|
||||||
codestream.segment[1].ytosiz),
|
|
||||||
(0, 0))
|
|
||||||
# bitdepth
|
|
||||||
self.assertEqual(codestream.segment[1].bitdepth, (12, 12, 12))
|
|
||||||
# signed
|
|
||||||
self.assertEqual(codestream.segment[1].signed,
|
|
||||||
(False, False, False))
|
|
||||||
# subsampling
|
|
||||||
self.assertEqual(list(zip(codestream.segment[1].xrsiz,
|
|
||||||
codestream.segment[1].yrsiz)),
|
|
||||||
[(1, 1)] * 3)
|
|
||||||
|
|
||||||
# COD: Coding style default
|
|
||||||
self.assertFalse(codestream.segment[2].scod & 2) # no sop
|
|
||||||
self.assertFalse(codestream.segment[2].scod & 4) # no eph
|
|
||||||
self.assertEqual(codestream.segment[2].spcod[0], glymur.core.CPRL)
|
|
||||||
self.assertEqual(codestream.segment[2].layers, 1)
|
|
||||||
self.assertEqual(codestream.segment[2].spcod[3], 1) # mct
|
|
||||||
self.assertEqual(codestream.segment[2].spcod[4], 5) # levels
|
|
||||||
self.assertEqual(tuple(codestream.segment[2].code_block_size),
|
|
||||||
(32, 32)) # cblksz
|
|
||||||
|
|
||||||
|
|
||||||
@unittest.skipIf(not _HAS_SKIMAGE_FREEIMAGE_SUPPORT,
|
@unittest.skipIf(not _HAS_SKIMAGE_FREEIMAGE_SUPPORT,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue