I see the problem. Stay tuned, fix coming shortly.
-- lg
> On Oct 11, 2020, at 11:31 PM, Larry Gritz <[email protected]> wrote:
>
> Thanks. Knowing it's 2.1 and on Mac makes it easy for me to try to reproduce
> on my end. I'll give it a shot tomorrow.
>
> -- lg
>
>
>> On Oct 11, 2020, at 11:30 PM, Arman Garakani <[email protected]
>> <mailto:[email protected]>> wrote:
>>
>>
>> I am using a brew. I will certainly clone and built off of repo sometime
>> tomorrow.
>>
>> macOS 10.15.6
>>
>> $ brew info openimageio
>> openimageio: stable 2.1.18 (bottled), HEAD
>> Library for reading, processing and writing images
>> https://openimageio.org/ <https://openimageio.org/>
>> /usr/local/Cellar/openimageio/2.1.18_1 (93 files, 16.3MB) *
>> Poured from bottle on 2020-10-08 at 14:19:55
>> From:
>> https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/openimageio.rb
>> <https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/openimageio.rb>
>> License: BSD-3-Clause
>> ==> Dependencies
>> Build: cmake ✘, pkg-config ✔
>> Required: boost ✔, boost-python3 ✔, ffmpeg ✔, freetype ✔, giflib ✔, ilmbase
>> ✔, jpeg ✔, libheif ✔, libpng ✔, libraw ✔, libtiff ✔, opencolorio ✔, openexr
>> ✔, [email protected] ✔, webp ✔
>> ==> Options
>> --HEAD
>> Install HEAD version
>> ==> Analytics
>> install: 306 (30 days), 1,135 (90 days), 4,118 (365 days)
>> install-on-request: 271 (30 days), 983 (90 days), 3,259 (365 days)
>> build-error: 0 (30 days)
>>
>> Thanks for responding so quickly.
>>
>> -Arman.
>>
>>> On Oct 11, 2020, at 9:35 PM, Larry Gritz <[email protected]
>>> <mailto:[email protected]>> wrote:
>>>
>>> Which platform (OS, compiler)? Which version of OIIO?
>>>
>>> If you run with a debug build, can you get a stack trace that shows the
>>> call sequence or line where it crashed?
>>>
>>>
>>>
>>>> On Oct 11, 2020, at 9:12 PM, Arman Garakani <[email protected]
>>>> <mailto:[email protected]>> wrote:
>>>>
>>>> I am adding unit test as part of adding OpenImageIO to our app ( Machine
>>>> Learning / Computer Vision / Biological Assays ). Before going further,
>>>> oiio solves a fundamental problem in developing media accessing
>>>> functionality. I have a very directed functionality for videos. Oiio has
>>>> more functionality, simpler API and supports much wider image format APIs.
>>>>
>>>> Here is the problem I am having with small tif stack files I use for
>>>> testing. <zser16.tif><zser8.tif>
>>>>
>>>>
>>>> Here is what iinfo says about it:
>>>>
>>>> $ iinfo zser8.tif
>>>> zser8.tif : 160 x 128, 1 channel, uint8 tiff (11 subimages)
>>>>
>>>> OpenImageIO ImageCache statistics (shared) ver 2.1.18
>>>> Options: max_memory_MB=2048.0 max_open_files=100 autotile=0
>>>> autoscanline=0 automip=0 forcefloat=0 accept_untiled=1
>>>> accept_unmipped=1 deduplicate=1 unassociatedalpha=0
>>>> failure_retries=0
>>>>
>>>> In the function below, the output before the loop calling add_tile,
>>>> outputs:
>>>> 11 (160,128) 255::-1::-1::NA::8
>>>>
>>>>
>>>> call to add_tile generates a memory access fault. The interesting thing
>>>> here is that similar file but containing 16bit data works fine.
>>>>
>>>>
>>>>
>>>>
>>>> This is a simple test I am developing to assess hit and miss performance
>>>> with ImageCache. The test function is a lambda here for simplicity.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> TEST(oiio, basic){
>>>>
>>>> auto test_file = [](const ustring& filename){
>>>> // Create a private ImageCache so we can customize its cache size
>>>> // and instruct it store everything internally as floats.
>>>> ImageCache* ic = ImageCache::create(true);
>>>> ic->attribute("autotile", 0);
>>>> ic->attribute("max_memory_MB", 2048.0);
>>>>
>>>>
>>>> ImageSpec spec;
>>>> int number_of_subimages = 0;
>>>> while (ic->get_imagespec (filename, spec, number_of_subimages)){
>>>> number_of_subimages++;
>>>> }
>>>> unsigned int maxval = (unsigned int)get_intsample_maxval(spec);
>>>> int xres = spec.width;
>>>> int yres = spec.height;
>>>> int channels = spec.nchannels;
>>>> int i = spec.get_int_attribute ("oiio:subimages", -1.0);
>>>> int bp = spec.get_int_attribute ("oiio:BitsPerSample", -1);
>>>> float fps = spec.get_float_attribute ("Fps", -1.0f);
>>>> std::string s = spec.get_string_attribute ("DateTime", "NA");
>>>>
>>>> std::vector<unsigned char> pixels (xres*yres*channels);
>>>> std::cout << number_of_subimages << " (" << xres << "," << yres << ")
>>>> " <<
>>>> maxval << "::" << i << "::" << fps << "::" << s << "::" << bp <<
>>>> std::endl;
>>>>
>>>> for (int ss = 0; ss < number_of_subimages; ss++){
>>>> if (ss & 1)
>>>> ic->add_tile(filename, ss, 0, 0, 0, 0, 1, 0, TypeDesc::UINT8,
>>>> pixels.data());
>>>> }
>>>>
>>>> {
>>>> std::cout << " Half Cached " << std::endl;
>>>> // average hit time and miss time
>>>> float hits(0.0), miss(0.0);
>>>> int hitn(0), missn(0);
>>>> for (int ss = 0; ss < number_of_subimages; ss++){
>>>> if (ss & 1){
>>>> OIIO::Timer hitimer;
>>>> auto tile = ic->get_tile(filename, ss, 0, 0, 0, 0, 1, 0);
>>>> assert(tile != nullptr);
>>>> hits += hitimer();
>>>> hitn++;
>>>> }
>>>> else{
>>>> OIIO::Timer misstimer;
>>>> ic->add_tile(filename, ss, 0, 0, 0, 0, 1, 0,
>>>> TypeDesc::UINT8, pixels.data());
>>>> miss += misstimer();
>>>> missn++;
>>>> }
>>>> }
>>>> hits /= hitn;
>>>> miss /= missn;
>>>> std::cout << hitn << "," << missn << std::endl;
>>>>
>>>> std::cout << hits * 1000 << " , " << miss * 1000 << std::endl;
>>>> }
>>>>
>>>> std::cout << " All Cached " << std::endl;
>>>>
>>>> float hits(0.0), miss(0.0);
>>>> int hitn(0), missn(0);
>>>> for (int ss = 0; ss < number_of_subimages; ss++){
>>>> OIIO::Timer hitimer;
>>>> auto tile = ic->get_tile(filename, ss, 0, 0, 0, 0, 1, 0);
>>>> if (tile != nullptr){
>>>> hits += hitimer();
>>>> hitn++;
>>>> }
>>>> else{
>>>> miss += hitimer();
>>>> missn++;
>>>> }
>>>> }
>>>> hits /= hitn;
>>>> if (missn) miss /= missn;
>>>> std::cout << hitn << "," << missn << std::endl;
>>>> std::cout << hits * 1000 << " , " << miss * 1000 << std::endl;
>>>> std::cout << ic->getstats() << std::endl;
>>>>
>>>> };
>>>>
>>>>
>>>> auto res = dgenv_ptr->asset_path("zser8.tif");
>>>> EXPECT_TRUE(res.second);
>>>> EXPECT_TRUE(boost::filesystem::exists(res.first));
>>>> ustring filename (res.first.c_str());
>>>> test_file(filename);
>>>>
>>>> }
>>>>
>>>>
>>>> _______________________________________________
>>>> Oiio-dev mailing list
>>>> [email protected] <mailto:[email protected]>
>>>> http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org
>>>> <http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org>
>>>
>>> --
>>> Larry Gritz
>>> [email protected] <mailto:[email protected]>
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> Oiio-dev mailing list
>>> [email protected] <mailto:[email protected]>
>>> http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org
>>> <http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org>
>>
>> _______________________________________________
>> Oiio-dev mailing list
>> [email protected] <mailto:[email protected]>
>> http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org
>
> --
> Larry Gritz
> [email protected] <mailto:[email protected]>
>
>
>
>
> _______________________________________________
> Oiio-dev mailing list
> [email protected]
> http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org
--
Larry Gritz
[email protected]
_______________________________________________
Oiio-dev mailing list
[email protected]
http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org