Log in

View Full Version : New Visual Editor for AviSynth


Pages : [1] 2

vion11
9th January 2004, 00:03
I'd like to get some feedback on this new approach
to script editing. Nearly everything can be adjusted
with mouse. Sourcefilters are accepted from Explorer
by drag'n'drop, etc.

The project is in alpha state, but can generate
(some) working scripts.

There are still problems with many functions I don't
know which parameters are required or can be named.

The function descriptions are placed in a ini-file.
Ideas for better solutions are highly welcome.

If the API is ready, I will include support for plugins,
user functions, *.avs reading and writing and
preview for filters.

I wish a lot of fun, and tell me what you think about!

Current version now: 0.3.3
There is a new guide and download (http://www.avisynth.org/vion11/aveguide.html) available.

Changes:
- frame preview per filter
- auto organize filters
- experimental AVI Export (video only)
- better INI handling
- updated to msxml 4

Changes May 2004
- slightly updated filter definitions in xml

Richard Berg
9th January 2004, 04:07
There is an (ugly but useful) API that enumerates internal and external functions using the string database. VDubMod uses this. Look in avisynth.cpp.

sh0dan
9th January 2004, 10:27
This looks a lot like a GUI that would be my next big project if I by some big chance got the time for it. It looks great!

It does however throw a "run-time error '76' - Path not found" when I try to launch it.

Windows XP, SP1.

You should have a look at importing the XML-files found at used for AVSEdit (http://cvs.sourceforge.net/viewcvs.py/avisynth2/AVSEdit/filters/).

vion11
9th January 2004, 13:04
Setup (http://innerphase.de/Setup-AVEditor.exe) is updated.
Some error handling is added and ignore is an option.

I'll try to get some information out of the string database now..

sh0dan
9th January 2004, 13:17
Now the GUI shows up, but a similar error '76' is showed right after the GUI is drawn.

vion11
9th January 2004, 15:38
Setup is updated (0.1.8)
Error(76) found and fixed.

sh0dan
9th January 2004, 16:08
Wow! Looks really great - it almost feels like Shake! My dream come true! :cool:

A really great start!

Minor stuff I'd like:

* Link targets should be droppable on the entire clip frame - just connect to the first non-used input connector. The orange dots are hard to hit.

* One output -> multiple inputs. I suspect this would require some kind of sorting/ordering to keep everything in the right order. Also circular graphs are already a problem I can see.

vion11
9th January 2004, 23:42
Next targets are:

* local function database
- import or check of available functions depending on current avisynth version
- a gui for maintenance the functions (at least for me)
-> no overwriting of user defined default values on updates
-> enables faultless handling of multiple and optional clip variables (Overlay, BlankClip, etc)
-> automatic use of colorconversion filter

* redesign of Filter UserControl
-> automatic check of parent or child use for target drop
-> visual feedback for child drop if multiple connectors
-> more icons

* use of C API (http://forum.doom9.org/showthread.php?s=&postid=425430#post425430)
-> loading and saving
-> "pretty printer" for other scripts
-> autoload last project
-> special Filter for User Functions
-> plugin-support

* keyless parameter input
-> $Color with picker and palette
-> optionlists

* Forgotten something?


I can't identify any API on available functions
except FunctionsExists. More Hints please.

FredThompson
10th January 2004, 04:40
Wow! It sure paid to surf through this forum today!

That screenshot is incredible.

There are a number of timeline editors for audio which might, just might, be capable of being folded into this. Let me know when you're ready to look at them and I'll supply the info.

Richard Berg
10th January 2004, 04:42
// *******************************************************************
// *** Make Plugin Functions readable for external apps ***
// *** Tobias Minich, Mar 2003 ***
// BEGIN *************************************************************
#if 1
if (prescanning) {
AVSValue fnplugin;
char *fnpluginnew;
try {
fnplugin = env->GetVar("$PluginFunctions$");
int string_len = strlen(fnplugin.AsString())+strlen(name)+2;
fnpluginnew = new char[string_len];
strcpy(fnpluginnew, fnplugin.AsString());
strcat(fnpluginnew, " ");
strcat(fnpluginnew, name);

env->SetGlobalVar("$PluginFunctions$", AVSValue(env->SaveString(fnpluginnew, string_len)));
delete[] fnpluginnew;

} catch (...) {
fnpluginnew = new char[strlen(name)+1];
strcpy(fnpluginnew, name);
env->SetGlobalVar("$PluginFunctions$", AVSValue(env->SaveString(fnpluginnew, strlen(name)+1)));
delete[] fnpluginnew;
}
char temp[1024] = "$Plugin!";
strcat(temp, name);
strcat(temp, "!Param$");
env->SetGlobalVar(env->SaveString(temp, 8+strlen(name)+7+1), AVSValue(params));
}
#endif
// END ***************************************************************

I don't have the corresponding VDubMod code handy, but this should give the basic idea.

vion11
11th January 2004, 11:16
@FredThompson
Which advantages could users expect from a graph editor
extended with timeline oriented features in the audio domain?

@Richard Berg
THX, is there no way to get information about internal functions?

FredThompson
11th January 2004, 12:08
If you have multitrack sound capability with a timeline paradigm you could have environmental sound. There are a number of very good free audio apps and data files. Music, sound effects, voiceover, etc. are all possible. The key is to specify when a track or effect is to be used, for how long, and the parameters.

If you look at the links page I keep on Donald Graft's site you'll see a section for audio. In there are links to Audacity and some cSounds sites.

In some regards, your question is kind of like asking what AviSynth is userful for except these are for audio, not visual.

The casual converter from analog to digital probably wouldn't care about this type of thing but if you're interested in taking AviSynth more in the direction of Adobe Premiere, this is something that fits.

vion11
11th January 2004, 15:38
IMHO AviSynth will never replace Premiere in any way.
I can't imagine someone will get money for this job.

AviSynth emerges as a powerful production tool due its
script language when you have to automate the process
of preparing and organising thousands of video files for
DVD-Authoring.

So its place in the production pipeline is between Premiere
and authoring.

Upcoming DVD-Applications like quizzes, iq-tests, catalogues
and last not least interactive movies will be enabled by
intelligent DVD-Publishing applications using AviSynth as
engine. That's the place coder and scripter get paid.

FredThompson
11th January 2004, 20:15
I didn't mean AviSynth would replace Premiere. I meant a GUI interface with the ability to "hide" the details of working in the time dimension will be a huge boost. Cinelara is more of a competitor for Premiere. Many times people work on just one source video file. They may need different processing at different times within that one file. AviSynth can do it, certainly, but it is far more complex to do by hand than with some kind of GUI. Regardless, it looks as if what you are developing will be a fantastic way to quickly see the effect of multiple operations.

FredThompson
11th January 2004, 23:17
I've thought of a few more operations where a timeline would be helpful:

1) conditional application of overlay. Some sources are a mix of true 4:3 and letterboxed content. Masking the letterbox with a known solid or pattern has advantages.

2) conditional application of logos. This can be used to reduce swim in stationary bugs. The idea is to get a good averaged copy of the bug then overlay it. However, this only works when the bug is stationary.

3) conditional application of forced B&W

4) conditional applicaition of smoothing (more useful during movie credits than during the actual movie, for example.)

See what I mean? There are a number of reasons a visual editor would be a huge benefit with application of filters to only part of a stream. Sure, you could load the stream into VirtualDub and write frame numbers on a piece of paper then hardcode them into the script. A GUI with timeline would be far more useful.

vion11
12th January 2004, 00:41
@Sh0dan
After a third and fourth look I found core.xml at sourceforge.
No questions any more on function description, THX.

@FredThompson
You are right: there is a need for timeline editors. I remember
1993 an editor from AiM called videomaker. You could load pictures
and render avis with common effects. It had a timeline and a view
to show different compositing layer. The gui was a shame
but it works under win 3.1 and some videos have been made with it.
Don't know the current version of Premiere 1993.

Now 2004 we have AVID DV as freeware, which needs about
3 XGA-Screens to handle all option and project settings
windows plus output. From the video point of view it's the
best non-linear editing system available compared by price.

But and this is a really big one, the only thing
you can do is linear video. It's the cutter who puts one scene
after the other and when he is ready no one will change anything.

What I'm talking about are interactive movies, the user decides
what seeing next. He is the cutter. He looks his own movie, with
happy end or all dead. So movie meets gaming and DVD is the
plattform.

My requirements are like the follwing:
A bunch of video file and all have to start with a 1 sec fadein,
With avisynth its a ten second job for humans, with timeline
editors it is like marathon with 40 mouse kilometers.

Things are still in development and real interactive Movies are
expensive to produce, let's talk in two or three years again,
where to invest power and energy.

If you interested, you'll find backgrounders and good links
at www.sagas.de (http://www.sagas.de) (english only)

FredThompson
12th January 2004, 01:12
What is your vision for this GUI?

vion11
12th January 2004, 22:00
I will give Hollywood the tools to make interactive-movies.

FredThompson
12th January 2004, 22:11
Ah, I see, that's a very different use than I imagined. I was thinking visual timeline application of AviSynth. That would also be very helpful but is quite different.

Richard Berg
13th January 2004, 03:33
As long as we're fielding timeline-like feature ideas, I think a simple but useful application would be an editor in the literal sense: allow someone to turn a bunch of footage into a scene. You don't need any fancy transitions, and the output can be a human-readable script file. In the grander version of this, you have a bunch of editors each composing scenes into a movie; with Avisynth the only "server" component you need is a CVS for the scripts.

FredThompson
13th January 2004, 03:44
Yes, that's sort of what I was envisioning. The most error-prone and tedious part of editing, for me, is timeline-conditional processing. I've seen a few attempts at visual editors for AviSynth but timeline is never an aspect. VirtualDub is the same way, temporal keying of filters is a total kludge.

That's also entirely different than the direction vion11 is going. I'm not sure I understand how interactive movies would work.

vion11
13th January 2004, 14:02
The difference between linear movies and interactive movies
may compared with reading a book and surfing the internet.

FredThompson
13th January 2004, 14:23
I understand that. I've tried to design open-ended games and no matter what, there's not enough memory/storage/power to make it boundless. Your talking about a visual version of the concept which is used in some books where the reader makes a decision then moves to whatever page is the result of that decision.

vion11
13th January 2004, 23:49
A brief view into my idea:

Every story consists of actors, their doing,
locations und the time.

The actors follow their pathes through the story
and meet each other at different locations
and timestamps

Every path belongs to exactly one actor, has
start and end time.

Along these pathes decisions may occur and the
path becomes a graph, added with different
starting points we have a net.

The user may change actor at meeting point or
try different decision (red or blue pill).

These decision and meeting points are kind of
menu in DVD-talk.

Look into 24 to get a impression about screenlayout.

Real interactivity starts beyond 200 menus.

Motion menus are essential(preview),
and latest here avisynth becomes the winner.

...

I prefer using mail/pm if no one else is interested
to get active in this discussion.

Richard Berg
14th January 2004, 00:49
I hate to be critical of something that's not even designed yet, but as I see it chopping a movie into scenes is much different from editing. You can do conditional viewing with a bit of ASX scripting.

stax76
14th January 2004, 00:51
I wonder why you created your own filter definitions, you could have used the xml descriptions used by AVSEdit, AviSynthEditor and DVX. Wilbert, Seewen and me spended endless hours to create them, you probably know now how hard it is to create such definitions. The XML code in AVSEdit/DVX is flexible, if necessary improving the format is not a problem

vion11
14th January 2004, 14:21
@Dolemite
I started wondering as well after looking into core.xml.
Quite good work, THX. It would be easier to save defValues
into XML, if the filternames were unique (Convolution3D).
I suggest additional attribute named implementation or modell or ...

sh0dan
16th January 2004, 14:54
In general I'd love to have this finished in it's current design. Being able to drag+drop filters and connections just seem like a dream!

A "split" filter could be implemented, that splits up the video in two or more parts, for easier processing.

vion11
16th January 2004, 15:26
progress information:

- function definitions now as XML
- simple preview

After weekend there will be a version, which works
with all core functions except with more then 3 (clip) inputs.
All installed plugins will work.

There is a chance I'll get the template thing working.

advanced interfacing with avisynth will follow later.

@sh0dan
That split filter confuses me, what will it do?

FredThompson
16th January 2004, 18:10
Will this be standalone only or will it be a callable module which can be integrated into other apps?

vion11
16th January 2004, 18:31
Good question, what you suggest as an integrated solution path?
ActiveX, Open Source, SetWindowParent,
OLE, DLL, HW+Dongle, Java, vbScript, ...?

FredThompson
16th January 2004, 19:18
Don't know. I just realized what you're putting together could be used in existing apps with AviSynth support (Gordian Knot, DVD2SVCD,...) and new stuff.

It would be sort of like the equation editor in M$ Office, right? It would be called with a script as the calling and returned arguments, right? Call your routine, optionally passing it a script and it returns one. Possibly some form of save-state is needed.

DLL might be a challenge if someone other than you requires an enhancement and you can't be reached.

Licenses are something I don't really know a lot about. My limited understanding is some require anything that touches them to be completely open source. That's probably something to avoid.

What say you, sh0dan and Richard?

Richard Berg
17th January 2004, 00:22
As I understand the license, this editor doesn't have to be GPL, merely compatible (for example, BSD, which has no restrictions other than giving credit).

stax76
17th January 2004, 00:27
I suggest additional attribute named implementation or modell or ...


no problem, I can add things but I think it's better not to include things specific to a certain application. What is that attribute used for? If you need something very specific you could use the AVSEdit descriptions and bypass your additional values

vion11
17th January 2004, 01:04
@FredThompson
Once there will a point AVEditor is finished for me,
but may get extended to meet other needs.
I will not stuck in developing AVEditor and lose sight
of my target mentioned above.

On the other hand balance of interests is possible
in terms of money, time, work and know-how.

Only lack of proposals prevents solutions.


@Dolemite
There are 3 functions named Convolution3D with different parameter
sets. How does AVSEdit solves this conflict?

stax76
17th January 2004, 01:27
There are 3 functions named Convolution3D with different parameter
sets. How does AVSEdit solves this conflict?


not very well so far, at least we have noticed we have a problem :D , currently discussing it in the current AVSEdit topic

http://forum.doom9.org/showthread.php?s=&threadid=68942

vion11
17th January 2004, 11:56
These *.xml files are extremely useful to present information
to the user. But their value depends on their completeness.
Eminently the parameter descriptions should have no null entries.

Particularly first time user of avisynth will assimilate
information when displayed.

For AVEditor and now I've put all in one XML (http://innerphase.de/aveFunctions.xml) and added attributes
like picture(for drag) and combined all noise, sharpen, deblock, ..
filter in a "restoration" categorie.

Isn't it a good idea to give plugin, core and gui
developers a web based interface to maintain them/it.
It may render out xmls for different apps.

stax76
17th January 2004, 15:52
the problem with a web based inteface is somebody need to program and organize it.
I'm not a web deveoloper, I don't know if it is hard, programming the AVSEdit/DVX
description editor was occasionally tricky even with .NET. We would have then also
to decide for one interface because two interfaces would be more work to maintain
and would be more error prone. Another possibility could be using the AVSEdit
description editor as client to commit the descriptions to a central place by
authorized people. As for the image, can't you use the categories property for this?

vion11
17th January 2004, 16:27
yes and no.
Using category makes it easy, but some filter can be
illustrated so nice, I wont miss it, at least Colorbars.

Getting about 20+ xml files from developpers, will force
the authorized people to find an apropiate example for
webbased XML, more or less early. :D

vion11
18th January 2004, 23:00
While trying to add the template feature I want to be sure
setup(2,7MB) works. xml parser is added and I can't get any depedancy information. (download only on problems)

Scripting is also used, if vbscript is
systemwide disabled, errors will raise.

Don't expect to much - most work was unvisible foundation changes
and will connected to gui soon.

Base for function definitions is now taken from xml files
writen by dolemite, wilbertd and others?
THANKS a lot. To collect and maintain 200+ functions and
parameters plus descriptions is hardcore.

I've added some attributes and corrected some things
and opened door for differents gui languages.
Both information is in kept in xml files.
Latest versions you find here (http://innerphase.de/AVEditor/xmlEdit/) .
Check links at the bottom.

If you want to share your corrections you may
use the editor, please parse xml first. (e.g.xmlfox)

Plugins are handled in two ways adjusted in the ini file.
if you have a proper avsi file your PluginMode is avsi.
Otherwise AVEditor checks registry and enters loadplugin("") as needed.
You can make graphs using plugins not installed ,
I'll wonder if they work.

There is still a problem with some optional parameters
can't named and definition for overlay is not ready yet.
If someone figured out, share it, please.

EDIT:links removed - look at first post

stax76
19th January 2004, 00:08
wouldn't it be better to bypass the information that is very specific to your application instead of modifying the general descriptions? Your modified descriptions will be outdated very soon and then you have to modify them again and again and....

FredThompson
19th January 2004, 00:20
Yeah, that's a good point. If there are general configs and application-specific configs stored as separately, less re-writing and problems. Come to think of it, you'll have a better chance people will want to create the general data if the format is stable and other people start to use it.

vion11
19th January 2004, 00:37
To get AVEditor running I had to modify uncorrect entries.
(e.g. I have no version of Blur, which accepts 3 parameter).

I agree my solution is proprietary and I see the problems.
For me the only instance knows about parameter is avisynth itself.

If there is always an actual and reliable definition available,
and xml is the choice, I'll include that and put the picture
attribute elsewhere.

Till then I see 2 solutions:

- avisynth gets capable of rendering out its definitions
- (time needed for coding)

- users keep them accurate
- (web based interface needed)

This Catapult (https://sourceforge.net/projects/zypexce)thing is only a start, its an sourceforge project
and the developers may have better solutions ready.
From what I see in the php a webbased interface can't be
like building a cathedral. If anyone is interested in browsing
through the xml-hierarchie, I'll give the basic code as template.

vion11
19th January 2004, 11:17
@sh0dan
I'm prepared for split filter now. Look here. (http://innerphase.de/splitfilter.jpg)
Some PShop filter work as well.

FredThompson
19th January 2004, 11:28
Are you working on macro capability as well? Things like this look very interesting: http://forum.doom9.org/showthread.php?s=&threadid=68494

vion11
19th January 2004, 11:38
Yes, I like the filter mf has writen a lot and
I use all available brainpower to get them running as template.

vion11
31st January 2004, 20:48
To continue the row of updates around AviSynth, here
is an interims release (0.3.0) of AVE Visual Editor.
To keep bandwidth low setup (innerphase.de/Setup-AVEditor030.exe) does not contain
the VB Runtimes 6.0 any more.
You may google (http://www.google.de/search?num=100&hl=de&ie=UTF-8&oe=UTF-8&as_qdr=all&q=%22Visual+Basic+6++Runtimes%22&meta=) them for your installed language.

Same with ms xml (http://msdn.microsoft.com/downloads/list/xmlgeneral.asp?frame=true) parser.

AVEditor works best with latest 2.5.4 release of avisynth.
If you need the "show-only-filters-from-installed-plugins"
feature, write "useapi=-1" at the end of ini-file.

Be careful, older version of Avisynth don't like remote
control from VB, strange things may happen.

Workplace accepts now dropped *.aveuf files.
aveuf is an abbreviation for ave userfunction.

An aveuf contains *one* function, with at least one up to three
clip parameter(s). So they should start with "function" and
end with "}"

Example:

# uses Blur(1) to achieve more blurring
Function BlurMore (clip c , int nTimes )
{return ( nTimes == 0 ? c : BlurMore (Blur(c, 1), nTimes - 1))}

Everything writen above "function" becomes the description of function.
The function import is not as clever as HAL. Avoid doublequotes
in parameters and don't start your description with "#function..."

You'll find this as file "BlurMore.aveuf" and "mfToon-v0.52.aveuf"
in folder \testdrop as an exemplification for your own functions .

I've used the mf function for testing, it is hardcore scripting.
Many thanks for inspiration.

AVE analyses dropped files and creates a new file in the
\xml folder, with the function as a loadable filter, available
from startup as userfunction.

If you drop "mfToon-v0.52.aveuf" again, you'll loose working
default parameter values, but may change the picture.

There are other new features more or less hidden. You'll find them.

A hint for new users, install and start, if there are no errors press
spacebar after closing splash screen and look what happens.

There are still problems with some core and plugin functions.
Parameters sometimes optional and sometimes not is a mess.

Kaiousama
16th February 2004, 20:07
Vion11: keep up with the good work you're doing, this editor is really revolutionary!

only a question for the moment: are you planning to release AVEeditor sources?

vion11
16th February 2004, 21:26
I haven't spend time thinking about future of AVEditor.
In fact I don't know if it's worth while. At the moment
I see no solution to get it bug free, caused by the
unconsistent function interface to AviSynth.

As long there are no rules for developers about designing
functions/filters, it is a daily and manually work to keep
the function description and its parameters layout clean for
at least the current version. Otherwise is it not recommended
to update with every new release for professional reasons.

To use the power of avisynth as a foundation for future
video editing systems with easier use, the function
interface should be maintainance free and generic, so
it could managed by code and not by xml-editors.

In short words, I can't feel the spirit of publishing
sources which don't work, but I'm open to any suggestion.

If somebody is interested in a specific part, I may post it here.

sh0dan
17th February 2004, 16:54
I'm sorry to hear that! I had really hoped this project could go somewhere. It is the GUI with the best potential I have seem all my time here.

Making something as groundbreaking as this is bound to give a lot of headaches. I would really like to see a "simple-but-fully-working" implementation - perhaps only with a handful of filters. If your GUI gets accepted and used, it will open the door for many casual users.