View Full Version : VT[3]SDK beginner... Need some advice...
vojtek11
07-26-2004, 05:42 PM
I've downloaded VT[3]SDK and if I'm correct there is no such thing as full documentation. Just few simple examples.
Well - anyway - I need to design an application that uses several media devices in synchronization to each other. VT[3] suppose to be one of them. I need a very simple thing: create several instances of something like DDR - a player for an animation (RTV) that suppose to be put "on hold" and one simple switcher that will allow to dissolve between my predefined players. When I switch from one to another - it suppose to start playing. Only thing I would like to control is the length of the dissolve. That's it. Although - this thing is pretty easy using VT[3] GUI, I need it to be done with my own application.
The question is: can it be done using SDK? I mean without a documentation I'm kind of blindfold. I can study header files - guessing what does what. If somebody could provide an example - how it suppose to look like - I'd really appreciate it. If not - please - just let me know that it IS POSSIBLE with this SDK. If not - I won't waste my time on it and try to develop my software using other DDR devices.
Thanks in advance,
Vojtek
Paul Lara
07-27-2004, 10:34 AM
Since my programming experience starts and ends with "hello world", I have alerted the programmers to your question.
Blake
07-28-2004, 11:28 AM
Something along the lines of the Remote TScript example would probably be where you want to go. The example includes code to connect to VT, open a switcher, and send ToasterScript commands to the switcher.
// We are going to find the main T[2] desktop
ToasterModuleConnection MainApp;
// Launch the switcher (do not launch one if one is already open)
MainApp.SendCommand(
"if(!IsPluginRunning(\"Switcher2\"))"
" Launch(\"Switcher2\",\"Switcher\")"
);
ToasterModuleConnection Switcher(__T2_SWITCHER);
// Perform a take
Switcher.SendCommand("Take");
Sleep(5000);
Switcher.SendCommand("Close");
You could use ToasterScript to launch a few DDRs and a switcher. If the plugins displaying in the VT3 GUI is a problem, you could create a skin that would be functionally invisible, maybe 1 pixel x 1 pixel.
There's probably a better way to do this, so you might also want to see if Bob Tasa is around, as he knows more about the SDK than I do.
Hope that helps.
Faraz
07-29-2004, 05:34 PM
Now where would this Tscript be launched through?
Meaning where do I embed this code?
vojtek11
07-30-2004, 01:43 PM
I must say, it's sad. Nobody can help. I thought that my problem was easy to solve and - with a little help - I can handle it myself. Unfortunatelly, after studying header files for several hours, I'm slowly giving up. I have no idea how to do that and all of my attempts failed completely.
Just to remind everybody - I need to create few (2-4) instances of RTV player (looped, activated by switch) - without any GUI - just "virtual" ones - accessible via C++ functions. And a simplest switcher (again - without any GUI), that would allow me (by selecting the input via some C++ function) to dissolve (or cut - if dissolve is to complicated) between my "virtual" RTV-players. Just that...
I belive it is possible. Unfortunatelly, whole initializations, special variables, undocumented structures, classes... It's all impossible without at least basic documentation. Examples that come with SDK are not very helpful... Sorry.
UnCommonGrafx
07-30-2004, 02:32 PM
Why is it that Toasterscript won't suffice in this situation? As I understand, remember actually, is that the code is structured to access toasterscript as well. To that end, if your gui is a c++ derived one, then it would drive some toasterscript mechanism.
Same functionality as what you want, I think. And the 1x1 skin is a brilliant idea that could even transfer to the desktop available ddrs.
We really need some more conversation on this. Maybe I can DRAG bob over to converse on this. No promises, that's for sure.
Hi,
Robert you rang? I hadnt seen this message else I would
have posted a lot sooner.
OK Toasterscript is probably the best thing to do this.
The cross fade is the thing I am not sure you can control
although you might be able to automate the take bar..
Dunno havent thought about it much.
Toasterscript, does not work without the TED interface though.
Its a script language that works inside of TED. It gets loaded
when TED starts and executed via a keystroke or event of sometype.
As far as the SDK goes. SDK (software developers kit)
works with the application only. It has a ton of objects and some
just for the DDR.
If you want to play completely outside of TED then you will
need to get the lower level SDK which allows you to play clips
via the C api. This is no piece of cake but can be done.
I think there was (stretching my memory) a DDR lower level
function that should at least get you to play the clips.
The only hang is that cross dissolve. Not sure about that one.
Bob
UnCommonGrafx
07-30-2004, 03:59 PM
Recognizing it's an interface type thing, wouldn't the 1x1 interface suffice?
Just curious. It's gobblelygook to me. ;)
Faraz
07-30-2004, 06:24 PM
One thing to mention, if you look at the Toaster Script documentation, you can actually controll it from C++, maybe even without a GUI. Toaster Script can almost do every function that the swither can do...
PIZAZZ
07-30-2004, 07:18 PM
My big question is what do you have against the GUI?
You can change it completely with a little work. THis is what we did to VT to create VJLive.
http://www.vjlive.com/images/VJLiveMainScreen.jpg
Make your own interface -- simple or complex. Contact me if I can help.
vojtek11
07-31-2004, 04:42 AM
Let me get this straight: looks like the main difference between SDK and ToasterScript is that the through SDK I can control VT[3] by RTME (core driver) - completely without GUI. With ToasterScript, main VT[3] application must be launched (with full GUI, or my own smaller skin) and I can control some (well, most) functions by remote access to GUI controls through my own scripts included somehow in my C++ source. Is that right?
If so, can the GUI be minimized during remote control via ToasterScript?
I was trying to find some simple example how to include ToasterScript into C++ - should it be done by executing external command (some .EXE file to process the ToasterScript?) or is there a better way - that would allow some data to be returned to the C++ application - for better control/communication?
Thanks for help,
Vojtek
With ToasterScript, main VT[3] application must be launched (with full GUI, or my own smaller skin) and I can control some (well, most) functions by remote access to GUI controls through my own scripts included somehow in my C++ source. Is that right?
No thats not quite right.
Toasterscript isnt compiled its just a script which
is a text flie thats interpreted on the fly by the code in TED.
You can attached C++ code to ToasterScript.
There are 2 C++SDK's
One will allow you to add things or control parts of TED,
but TED needs to be runing.
The other is a low level control the board without TED.
There is no in between and it makes a lot of sense. The board
doesnt make effects the software does. The Newtek software
is tied to its interface so you need the interface to operate it.
My advice would be to try and rewrite your application to be
inside TED and change the skins to make the interface you need.
Otherwise you will have to write your own RT engine to do that
dissolve.
Bob
vojtek11
07-31-2004, 12:18 PM
I can't rewrite my own application to work inside ToasterScript. It's too complicated.
Let's try simpler apprach.
First idea: assume that I have VT[3] GUI running and few DDRs on stand-by and one switcher to switch between them (can this all be minimized? - for the user to have access to normal Windows desktop?). So, everything is ready. Can I remotely (by my own application in C++) do one tiny simplest switch to other selected source? Nothing else. Just this. "Auto-take".
Second idea is more "professional" and doesn't require GUI from VT[3]. It suppose to be done via SDK. There is an example how to make one ".RTV" file play on the output. It's simple. It works. And it uses low level access to RTME driver. However - no idea how to play this RTV in a loop and how to make it stop to allow other RTV file to be played.
Any idea how to make one of those ideas work?
PIZAZZ
07-31-2004, 05:39 PM
vojtek11,
You are conversing with 2 of the lead 3rd party developers for the VT platform. Might I suggest that you simply tell us your end goal and maybe just maybe we can help understand where you are headed with your line of questions. Lay it all out and let us see if we can help you. If you are not confortable spilling the details in public then contact me directly at:
jef at pizazzme.com
Either Bob or I might be able to get you going.
Cheers
vojtek11
08-01-2004, 03:49 AM
There is no big secret. The application I designed involves several media devices controllers in order to do a lot of automation for the production process. This project won't make me richer and it's all for making my job easier. My company (video production) uses a lot of different media devices - sound, video, controllers. We do a lot of "on-line" production - that's mean there is not much time for post-production. I won't waste Your time on explaining what, where, how... It's to complicated.
Well, anyway, to speed-up the process and to make some things easier, I designed an application using Visual C++. It's the best choice since some applications that I already use are based on the same platform. I completed full set of SDKs for every device. My application requires a lot of DLLs to be linked, some ActiveX controls, special GUI - a lot of edit boxes (Where user can edit some text to be displayed via fast titling device - not VT[3]), a lot of progress bars i.e. for timeline where I can put certain effects in certain places). This application is already quite large and I must say - it already serves every device from my list except one. VT[3] is the last one. I know that somebody will tell me now that probably most of this production could be done with VT[3] only. Well the thing is those other devices are far more advanced than VT[3] and in my company VT[3] is used for one simple, single purpose - as a DDR device for video clips (no audio). And it works good.
First I asked if I can create several instances of DDRs and a switcher with dissolve effect. After Your answers it seems impossible using real SDK (not ToasterScript). The ToasterScript sounds to me like a big disappointment. And it will be the same for any programmer. If the idea of using is to "load the TXT file to TED" or "copy-paste Your script to TED" in order to run the script and there is no other way... I might say - it's not very professional. The whole idea of SDK usually is to create Your own application that is capable of use full set of product's features but in fashion designed by programmers. That's minimal requirement for SDKs I always used to use.
I gave up this idea since Bob Tasa wrote that in order to achieve simple dissolve I would have to do my own video engine. This is odd. I understand whole Toaster idea of work - that the hardware is just high-quality video output board and all effects are in the software. But I still don't understand why not create a SDK that uses both the hardware and software (via LIBs or DLLs) - without launching bulky, memory consuming GUI. I seriously doubt that GUI and video effects are not possible to separate.
So the second idea was simpler. I still can complete my application - even if I have no full control over VT[3]. Like I wrote before - for me - today - VT[3] is just an advanced DDR. The dissolve effect - between clips - was a nice feature, but during a production - on the output - VT[3] is not "the last one", so during a switch between clips, I can "cover" the VT[3] output with something else. That's why I simplyfied my approach. If it's possible to control which RTV file is played in a loop on a VT[3] output - this is enough for me. Even if there would be some noisy or black frames between the clips. And all this without ANY VT[3] GUI.
Vojtek
vBulletin® v3.8.2, Copyright ©2000-2009, Jelsoft Enterprises Ltd.