vb6 and dx9 (GetTimeCode)

vb6 and dx9 (GetTimeCode)

Post by Deserti Ri » Sun, 04 Sep 2005 01:31:11

Hello, and of course sorry for my bad english (Italian Programmer)

I've got an already done project which i've to upgrade. It's a TimeCode
reader written in VB6 that reads time-code from broadcast devices...

I need to upgrade letting him to read time-code from the fire-wire.... Dx9
has a proper DirectShow function called GetTimeCode but Dx9 sdk does not
support vb6 anymore. The Standard MSDV driver doesn't have an interface for
app ring (cpu ring 3) or that's what i've read. Is there any way to let vb6
reads time-code from a Dv cameras.

1) Importing the GetTimeCode function and realtive Interfaces from Dx9??
(Maybe compiling the IDLs into TLB?)
2) Windows Movie Maker READS TIMECODE, so it's not so impossible... what
function does it use?

For my market time i've got no time to rewrite all the project in vb.net or
learn C# or C++ or whatever.. so i've got to do this in VB6.

If you could help me i will be gratefull for a life-time

Thanks Riccardo

vb6 and dx9 (GetTimeCode)

Post by Mike D Sut » Sun, 04 Sep 2005 20:45:34

> Hello, and of course sorry for my bad english (Italian Programmer)

I would recommend re-posting your query to a DirectX/DirectShow group for the specifics on how to perform the timecode reading
regardless of language, since DirectX is just a generic library then techniques can be ported between languages fairly easily.
Since DX9 cannot be called from VB6 you would most likely need to write a small wrapper in C++, the rest of the application can stay
in VB6 but the interface to the library would need to be written in another language. You may find the C++ DLL tutorial on my site
useful as a first step to language interoperability.
One last thing though, when asking on the DX groups specify that you would prefer a DX8 solution if possible which can be called
directly from VB and would make your life easier.
Hope this helps,


- Microsoft Visual Basic MVP -
WWW: http://www.yqcomputer.com/


vb6 and dx9 (GetTimeCode)

Post by Deserti Ri » Mon, 05 Sep 2005 02:23:53


Sorry, I'm not familiar with non-italian groups (it was my first
"international post") and i don't know exactly groups...

I realized that but hoping there is a faster way in vb...

Seen... great tutorial

Thanks a lot


vb6 and dx9 (GetTimeCode)

Post by Johan St » Tue, 06 Sep 2005 15:03:34

At http://www.yqcomputer.com/
VB6 code that shows how to extract timecode from DV frames. (once you
have them..)

I use this module for extracting timecode from DV data on disk (both
.AVI and other formats).
I also use a commercial COM class that builds (and runs) Dx graphs that
gives me callbacks with adresses of the DV frames.
This way, I can extract timecode from (even multiple) live DV sources
using all VB6.


vb6 and dx9 (GetTimeCode)

Post by Deserti Ri » Tue, 06 Sep 2005 20:41:10

First of all, Thanks a lot

Can u tell me what commercial COM class? I had already searched the web with
google but have found nothing...

again... Thanks

vb6 and dx9 (GetTimeCode)

Post by Johan St » Tue, 06 Sep 2005 22:20:41

Well, the fact is that I have spent considerable resources (time and
money) to develop this COM class for my own needs, and I use it in some
commercial applications that I am working on.
So, unfortunately, I am not in a position to make it public, but if
someone is interested on a commercial basis, I am open to a discussion.
The COM class will build and run various "capture graphs" that can take
input from various video & audio sources, including DV.
The graphs end with a null render, so you will have to take care of
rendering yourself.
What you *do* get however, are callbacks (in VB, they will be events)
that you can handle in your VB programs. These callbacks will contain
(among other things) the adress of the current DV frame and using this
adress you can do various things like extracting time code, write to
disk and render.
Myself, I use "circular video buffers" a lot where I store incoming
video frames for several seconds of video in RAM.
It is possible to handle multiple DV sources concurrently. (Rendering is
the limiting factor)