We're very close to releasing the next version of
Video Enhancer. Today we added a scene change
detection algorithm into RGB version of super resolution engine. This feature
solves an annoying problem of all previous versions of VE: when a scene changes
in the video, first frames of the new scene contain some noise resulted from
SR fusing current image with previous hi-def frame. Now VE detects a change
and starts processing the scene from scratch, as if it was another video.
Basically this means that first frame of new scene is upsized by interpolation
and later frames are processed with SR.
Here's an example. This is a first frame of a scene:
VE 1.9.3, no scenes detection
VE 1.9.4, scenes detection on
In the left picture you can see the noise near a logo in upper-left corner
as well as around people's shoulders and heads.
In the right picture you can see this noise is gone.
We regularly receive questions how to build the C++ source code generated by
GraphEditPlus. It generates some code, but in
order to turn it into an executable one needs to create and properly set up
a Visual Studio project.
Here's a short tutorial on how to start working with DirectShow in C++ using
Microsoft Visual Studio 2005. It's also actual for VS2008 and probably VS2010.
To work with DirectShow first of all you need DirectShow headers and libs.
Currently they are included in Windows SDK which can be downloaded from
Microsoft website. If you don't have it installed yet, go install it now and
then come back.
By default it's being installed into
C:\Program Files\Microsoft SDKs\Windows\v7.0. If you install it
to some other place, make appropriate changes to the paths below.
Now, run Visual Studio and create a C++ project.
In this tutorial I'll pick a console application, for simplicity.
Give it a name and choose a path:
Although Visual Studio 6 was made in previous century it is still widely used
by C++ developers around the world. Probably because of good support of MFC
(which was screwed in later versions) or probably because later versions
weren't much better as IDE for writing C++, or because they introduced
unwanted difficulties with runtime libraries. Whatever the real reason for using
now 12-years old IDE is, we still receive questions on how to use code
generated by GraphEditPlus in VS6.
To work with DirectShow first of all you need DirectShow headers and libs.
Currently they are included in Windows SDK. A few years ago they were part of
DirectX SDK. When we're working with DirectShow in VS6 we still use the old
DirectX 9 SDK, which we have installed in C:\DXSDK folder. If you have the
headers and libs installed into other place, change your paths appropriately.
So, let's create a simplest DirectShow app. Make a new project, let it be
a Win32 Console Application. Give it a name and choose a path:
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.
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.
This site has two different domain names: thedeemon.com and infognition.com.
Both names - Dee Mon and Infognition - appear on different pages and products here,
so there may be some confusion which I hope to eliminate in this post.
"Dee Mon" is a personal nickname which I use in Internet circa 1997. It has nothing
to do with daemons, it's just originally spelled form of name Dmitry. When I started to
create software and distribute it via this site I just used this name as a trademark.
This tactic is usually called "doing business as" when someone uses a made-up name without
creating a company. In 2008 I opened a real company, and the company needed a good
name without bad associations like daemons. That's how Infognition was born.
Unlike Dee Mon, Infognition Co. Ltd. is a real company with a stamp, bank account, TaxID and
even some employees. Now when domain infognition.com is more than one year old
we're going to leave thedeemon.com in the past and stick to the new name everywhere.
Hi everyone!
My name is Dmitry Popov, I'm the founder of this company
Infognition Co. Ltd. and the main developer of Video Enhancer, GraphEditPlus,
ScreenPressor and other products presented here (except for the VirtualDub filters).
I've decided to start this blog to bring some personal touch to the site and to
cover some topics related to multimedia software development as well as some video processing
tips and tricks that are too small for an article or tutorial.
The blog engine is not complete yet, but all usual stuff like comments and RSS will
be available soon.