avaneev/avir

Progress callback?

emerth opened this issue · 6 comments

Is there a way to set a "progress callback function" either before or when invoking CImageResizer::resizeImage()?

I would like to show a progress control in my program while AVIR is resizing a large image. Went looking for a callback in AVIR that would indicate progress while resizing, can't see anything.

Is there a progress reporting method available?

Thanks!

Sorry, no such callback is available, and it's not planned for implementation as even a very large images usually resize in less than a second on a modern processor.

Thanks Aleksey!

I am getting about 1.8 seconds to scale RGBA images on the order of 15000x15000 pixels down to 2160x2160.

This is on a Ryzen 3600X with RAM at 3200.

Is this slow? Your answer suggests it should be faster. Perhaps I am doing something wrong...

Are you using multi-threading? But even if not, 1.8 seconds is not exactly much to justify adding a progress indication.

I am not using multithreading. Didn't know I could. I will look at that.

The 1.8 seconds is very subjective. I think your AVIR software is fast and the image quality is superior. Some people who have tested my program tell me the 1.8 seconds is enough that they would feel better with a progress bar rather than just a Windows hour glass indicator. But it's not very very important feature. If I can cut the time by a factor of 2 or 4 using more cores that will be perfect.

Thanks again!

edit) #8 <<------ staring me in the face!!

Used your Multithreading How To doc and added multithreading to the resize. Very nice, 4 threads, cut the time to about 30% of single thread.

This is a very elegant library you've made here. Your thread pool concept implementation is very nice.

You are welcome!