406
cout << endl << " reading INCREASING_Y "
407
"(new frame buffer on every line)" << flush;
409
InputFile in (fileName);
411
const Box2i &dw = in.header().dataWindow();
412
int w = dw.max.x - dw.min.x + 1;
413
int h = dw.max.y - dw.min.y + 1;
417
Array2D<unsigned int> pi2 (h, w);
418
Array2D<half> ph2 (h, w);
419
Array2D<float> pf2 (h, w);
421
for (int y = dw.min.y; y <= dw.max.y; ++y)
425
fb.insert ("I", // name
427
(char *) &pi2[y - dwy][-dwx], // base
428
sizeof (pi2[0][0]), // xStride
432
fb.insert ("H", // name
434
(char *) &ph2[y - dwy][-dwx], // base
435
sizeof (ph2[0][0]), // xStride
439
fb.insert ("F", // name
440
Slice (FLOAT, // type
441
(char *) &pf2[y - dwy][-dwx], // base
442
sizeof (pf2[0][0]), // xStride
446
in.setFrameBuffer (fb);
450
cout << " comparing" << flush;
452
assert (in.header().displayWindow() == hdr.displayWindow());
453
assert (in.header().dataWindow() == hdr.dataWindow());
454
assert (in.header().pixelAspectRatio() == hdr.pixelAspectRatio());
455
assert (in.header().screenWindowCenter() == hdr.screenWindowCenter());
456
assert (in.header().screenWindowWidth() == hdr.screenWindowWidth());
457
assert (in.header().lineOrder() == hdr.lineOrder());
458
assert (in.header().compression() == hdr.compression());
460
ChannelList::ConstIterator hi = hdr.channels().begin();
461
ChannelList::ConstIterator ii = in.header().channels().begin();
463
while (hi != hdr.channels().end())
465
assert (!strcmp (hi.name(), ii.name()));
466
assert (hi.channel().type == ii.channel().type);
467
assert (hi.channel().xSampling == ii.channel().xSampling);
468
assert (hi.channel().ySampling == ii.channel().ySampling);
474
assert (ii == in.header().channels().end());
476
for (int y = 0; y < h; ++y)
478
for (int x = 0; x < w; ++x)
480
assert (pi1[y][x] == pi2[y][x]);
481
assert (ph1[y][x] == ph2[y][x]);
482
assert (pf1[y][x] == pf2[y][x]);
399
487
remove (fileName);
443
531
Array2D<float> pf (H, W);
444
532
fillPixels (pi, ph, pf, W, H);
446
for (int lorder = 0; lorder < NUM_LINEORDERS; ++lorder)
534
int maxThreads = IlmThread::supportsThreads()? 3: 0;
536
for (int n = 0; n <= maxThreads; ++n)
448
for (int rmode = 0; rmode < NUM_ROUNDINGMODES; ++rmode)
450
writeRead (pi, ph, pf, W, H,
453
LevelRoundingMode (rmode),
456
writeRead (pi, ph, pf, W, H,
459
LevelRoundingMode (rmode),
462
writeRead (pi, ph, pf, W, H,
465
LevelRoundingMode (rmode),
468
writeRead (pi, ph, pf, W, H,
471
LevelRoundingMode (rmode),
474
writeRead (pi, ph, pf, W, H,
477
LevelRoundingMode (rmode),
480
writeRead (pi, ph, pf, W, H,
483
LevelRoundingMode (rmode),
486
writeRead (pi, ph, pf, W, H,
489
LevelRoundingMode (rmode),
492
writeRead (pi, ph, pf, W, H,
495
LevelRoundingMode (rmode),
538
if (IlmThread::supportsThreads())
540
setGlobalThreadCount (n);
541
cout << "\nnumber of threads: " << globalThreadCount() << endl;
544
for (int lorder = 0; lorder < NUM_LINEORDERS; ++lorder)
546
for (int rmode = 0; rmode < NUM_ROUNDINGMODES; ++rmode)
548
writeRead (pi, ph, pf, W, H,
551
LevelRoundingMode (rmode),
554
writeRead (pi, ph, pf, W, H,
557
LevelRoundingMode (rmode),
560
writeRead (pi, ph, pf, W, H,
563
LevelRoundingMode (rmode),
566
writeRead (pi, ph, pf, W, H,
569
LevelRoundingMode (rmode),
572
writeRead (pi, ph, pf, W, H,
575
LevelRoundingMode (rmode),
578
writeRead (pi, ph, pf, W, H,
581
LevelRoundingMode (rmode),
584
writeRead (pi, ph, pf, W, H,
587
LevelRoundingMode (rmode),
590
writeRead (pi, ph, pf, W, H,
593
LevelRoundingMode (rmode),