blog tags:


I'm Dmitry Popov,
lead developer and director of Infognition.

Known in the interwebs as Dee Mon since 1997. You could see me as thedeemon on reddit or LiveJournal.

Articles Technology Blog News Forum Company
Newer posts

April 16, 2010

Found a nice clip on youtube, looks like whole Hollywood was making
a commercial for Video Enhancer :)

Of course, what we see in these movies is usually very unrealistic and cannot really be done, however some degree of enhancing video resolution and quality is quite possible, as many our existing users know.


Good news, everyone!
April 3, 2010

It's been a while since we released the last version of Video Enhancer. A lot of things happened during this time, we created new product, developed further the Super Resolution technology, had some business-to-business contracts which also took some time. After all this some time ago we were ready to incorporate the new SR mode into Video Enhancer and release a new version. However there was one thing that stopped us: several weird reports on Video Enhancer hanging in the middle of work, sometimes after hours of processing. Later a similar problem was reported by a user of another our product, ScreenPressor. These two products share one microlibrary which takes care of parallelization - distributing work onto different cores and CPUs. It became obvious that there is some subtle problem in this library, so we started to investigate it. The problem was hard to reproduce, since it happens very rarely. Moreover, it was a kind of a heisenbug - a bug which disappears when you try to find it, because inserting some debugging output code required inserting synchronization between threads and that made the bug disappear. So usual means of debugging didn't help, but fortunately close inspection of the code and examination of functions used there eventually revealed the problem. It turns out that we used some WinAPI synchronization functions which are not very reliable. In some situations, that happen very rarely, Windows kernel can borrow application's working threads and during this time borrowed thread which was waiting for an event doesn't notice that the event it was waiting for happens. For this reason in some very rare cases the application was signaling its worker threads that there is some work for them to do, but not all of the threads woke up to do the work, however the main app waited until all of them report that the work is done, which never happened in this case because one of the threads didn't even start working. This is a classical deadlock situation and it caused the program to stop unexpectedly in the middle of processing.

Now we've rewritten the parallelization microlibrary so the above problem may never rise again. Also, since the set of used synchronization primitives has changed, we hope that the problem with nVidia cards in Vista and Win7 will probably disappear too, because we know it was triggered by some synchronization stuff. With these good news we can finally prepare new version of Video Enhancer for release. I think it might come out in a few days, there are still some improvements to be made.


Newer posts