View Full Version : Opensource GraphEdit project
RadScorpion
19th January 2008, 16:32
Hello people. If you work with DirectShow you might be interested in this new project.
clsid gave me an idea of a new graph information project and because I've been missing lot of cool features in graphedit myself I've decided to start a new project - GraphStudio.
Project is free with open source. You can find screenshots, binaries and source on my blog here :
http://blog.monogram.sk/janos/tools/monogram-graphstudio/
As of this moment, the application si really simple, but any ideas/hints/reports are more than welcome.
Igor
Sharktooth
19th January 2008, 16:45
oh! an OSS alternative to graphedit!
nice, im going to try it asap:)
thanx
RadScorpion
20th January 2008, 16:53
Updated version is up. You can follow the original link from the first post to download the latest version.
I've added some new features like:
added seekbar
added play/stop/pause controls
added Graph Events window with copy-to-clipboard feature
added logging of all known DirectShow events
EC_USERABORT now stops the graph
Igor
Kurtnoise
20th January 2008, 17:05
Great...:)
Some ideas for the next releases:
Drag & Drop
Loading Filters interface with the right click.
RadScorpion
20th January 2008, 17:06
Yepp.. as well as enumerating all compatible filters for pin via rightclick :)
clsid
20th January 2008, 17:34
You already know my most desired feature:
Text based representation of the graph.
What about a tabbed view with the following tabs:
- Visual representation of the graph
- Text representation of the graph (for each filter: name, clsid, filename, merit) (possibly also some pin information)
- Graph events
Options in view menu for enabling/disabling which tabs get shown.
In case of multiple active graphs, you could add a number to each tab title to distinguish between graphs. For example: "Graph (1)", "Graph Details (1)", "Graph Events (1), "Graph (2)", etc.
I think it would be useful if the "Open" button on the toolbar can be used to open files of all types. Let the file extension determine the action to take: .grf -> open graph, .ifo -> render DVD, everything else -> render media file.
RadScorpion
20th January 2008, 20:12
I was thinking of the format how the text report should look like.
What do you think of this ?
-------------------------------------------------------------------
Filters
-------------------------------------------------------------------
1. D:\Friends.avi {CLSID_AsyncReader}
2. AVI Splitter {CLSID_AviSplitter}
3. ffdshow MPEG-4 Video Decoder {04FE9017-F873-410E-817E-AB91661A4EF7}
4. Video Renderer {CLSID_VideoMixingRenderer}
5. ffdshow Audio Decoder {0F40E1E5-4F79-f988-B1A9-CC98794E6B55}
6. Default DirectSound Device {CLSID_AudioRenderer}
-------------------------------------------------------------------
Filters Details
-------------------------------------------------------------------
TODO:
-------------------------------------------------------------------
Connections
-------------------------------------------------------------------
[D:\Friends.avi]
|
+-- (Output) -> (input pin)
[AVI Splitter]
|
+-- (Stream 00) -> (In)
| [ffdshow MPEG-4 Video Decoder]
| |
| +-- (Out) -> (VMR Input0)
| [Video Renderer]
|
+-- (Stream 01) -> (In)
[ffdshow Audio Decoder]
|
+-- (Out) -> (Audio input pin(rendered))
[Default DirectSound Device]
-------------------------------------------------------------------
Connection Details
-------------------------------------------------------------------
1. [D:\Friends.avi]/(Output) -> [AVI Splitter]/(input pin)
Major: MEDIATYPE_Stream
Subtype: MEDIASUBTYPE_Avi
Format: GUID_NULL
2. [AVI Splitter]/(Stream 00) -> [ffdshow MPEG-4 Video Decoder]/(In)
Major: MEDIATYPE_Video
Subtype: {44495658-0000-0010-8000-00AA00389B71} - FourCC(XVID)
Format: FORMAT_VideoInfo
VIDEOINFOHEADER:
576x532 ... TODO:
3. [ffdshow MPEG-4 Video Decoder]/(Out) -> [Video Renderer]/(VMR Input0)
Major: MEDIATYPE_Video
Subtype: MEDIASUBTYPE_YV12
Format: FORMAT_VideoInfo2
VIDEOINFOHEADER2:
Size: 576x432
Aspect Ratio: 4x3
Interlace format: Frames
rcSrc: (0,0,576,432)
rcDst: (0,0,576,432)
clsid
20th January 2008, 22:19
First of all I think it would be useful to be able to configure the level of detail. For most users the filters list and filter detail information will be sufficient. Connection info is more for expert users (like here on Doom9).
I would suggest to only use the filter's names under the "Filters" header. The CLSID should go under "Filter Details". I think that will improve readability.
Perhaps the "Connections" part can be skipped? You could just list all 5 connections under "Connection Details".
Maybe hide the pin name when there is only 1 input (or output) pin on a filter. I think that will improve readability.
Some extra spaces to line up text:
Major: MEDIATYPE_Stream
Subtype: MEDIASUBTYPE_Avi
Format: GUID_NULL
CruNcher
21st January 2008, 07:13
Nice Rad i had expected to find this in the Development Section of the Board tough hehe :)
Feature Request:
Inteligent Connection Spy for the Render Media File mode (like Matroskadiag does, so you know to wich filters it connects and where it might fail, great for Debuging)
Also a little Proccess Explorer functunality would be nice (so you right click on the node and can see from wich dll,ax it is executed this way you could identifiy especialy file Parsers very easy)
Btw: I see you stoped? Radlight and with it the Delphi times,congrats to your Master :)
RadScorpion
21st January 2008, 09:14
:) I'm always unsure if I chose the right board section.
Yes. The IC-spy feature can be easily done with the IAMGraphBuilderCallback interface. This way it could be possible to abort a never-ending loop when the graph builder goes mad.
As for the RadLight thing. After we had some problems with Martin there have been some things that kept us from working on RL. But since these problems have been settled recently we can freely write stuff again and perhaps prepare some basics for new RL. We've created a new company (the MONOGRAM Multimedia) together with another slovak IT company (MONOGRAM Technologies). As the result we at MM work together with MT on larger projects and can write free/opensource stuff labeled with the magic M word partly in working hours as a kind of promotion... So everyone wins.
RadScorpion
21st January 2008, 20:48
Okay. I've uploaded a new 0.1.2.0 build.
Added new window for text reports with report type combo box. Currently there are just dummies and the highest detail level is used.
I've also added parser for WAVEFORMATEX structure.
What do you think?
clsid
21st January 2008, 23:36
Filters are listed in reverse order in the log. Or is that intentional?
A small cosmetic request: could you capitalize the hex numbers of the merits in the "Insert Filters" dialog? That way they will line up nicely.
RadScorpion
22nd January 2008, 22:03
Yet another updated version :)
[0.1.3.0 - Alpha 22/Jan/2008]
added Drag&Drop support for opening files
filters dialog now displays merits formatted as uppercase
inserted filters are checked for IFileSourceFilter
filters exposing IFileSourceFilter are named after the file they deliver
added IFileSourceFilter dialog that keeps list of recently used files/urls
added “Insert File Source (Async.)” shortcut into the Graph menu
added parser for VIDEOINFOHEADER, VIDEOINFOHEADER2, BITMAPINFOHEADER and MPEG2VIDEOINFO
added 5 levels of details for text report
cu
Igor
clsid
24th January 2008, 16:07
This file (http://red.cachefly.net/video/crossing1.mov) can make GraphStudio crash. To reproduce: drag&drop the file into GraphStudio, then drag&drop it in a second time. Crash. Tried the same with several other files, but it only happens with this specific file.
An inconsistency: Insert a source filter. No other filters. The visual graph will display the name of the opened file (= correct behavior). The text log however, will show the name of the filter instead of the filename.
Another inconsistency (perhaps intentional): Drag&drop will clear the window and create a new graph. "File -> Render media file" does not clear the window. So that can result in multiple active graphs.
Text Information currently behaves like a log. I personally would prefer if it only reflected the active graphs in GraphStudio. I would suggest the following:
- Remove the refresh and clear buttons
- Automatically clear and refresh the contents of the text information window when (1) a change to the graph(s) is made, or (2) a display setting (such as report detail) is changed.
- Add a save button that opens a "Save File" dialog where a user can save the info as a .txt file.
- Currently the text information is a combination of all displayed graphs. That is a bit confusing. It would be better to write the information as separated pieces of text. So first the info for graph 1, then the info for graph 2, etc. Or maybe add a dropdown selection box where the user can select for which graph to display information. The name of the first filter in each graph could be used a titles in the dropdown.
Could you disable (make them "greyed out") the buttons whos functionality has not been implemented yet.
The default renderer that is used is VMR(7?). Is it possible to an option to use a different renderer? Maybe by right-clicking on the video renderer in the graph and having an option like "Change video renderer" that opens a dialog that lists all available renderers.
Another useful feature could be a frame grab function to take screenshots. Or perhaps even something similar to the "Save Thumbnails" function of MPC.
RadScorpion
24th January 2008, 23:02
Good work with testing :) thank you.
I did not have time yet to check the file but I'll try as soon as possible.
Yes. You are right with the filter names in text report and graph. At the moment I just wanted to test how the text reports would look like and I would like to rewrite the graph analysis part so the output would not only be limited to static text reports. My idea was a tree structure with abstract classes where nodes would represent structures and leaves would represent "key=value" pairs with type info so there could be different actions/views possible. E.g. GUID type could be copied to memory as {XXXXXXXX-XXXX-XXXX....} or also as a piece of C++ code that would declare the given GUID. For FOURCC codes the hexadecimal display could be used or four character strings... With this tree structure simple class could export information into HTML or XML as well.
As for the Drag&Drop behavior. I have observed how graphedit behaves on this one. The "open file" item stops any graph that may be active, releases everything and creates a new graph. Then the specified file is checked for extension and a new graph is constructed either from GRF file or using IGraphBuilder::RenderFile.
"Render media file" item can only be used when the graph is stopped and it will add necessary filters to existing graph to render specified file.
In both cases only one existing graph may remain. When a file is dropped into the GraphStudio, it is being processed by the "open file" method.
Hmm.. the report thing is a bit more complicated. It is possible to detect changes in graph by reacting on the EC_GRAPH_CHANGED event. But this only covers addition and removal of filters. E.g. dynamic format changes can not be traced this way... and you can see that e.g. the format between decoder and video renderer is different when you first build the graph and after you start it.
Perhaps there could be more views. One that would only reflect the filters and connections. And another one that would also display detailed information about formats.
@disable buttons: yes
@different renderer: yes
@screenshot: definitely :)
I just don't know where to start with so many features :)
Thanks again for testing.
Igor
squid_80
25th January 2008, 04:29
Pretty please could you look at implementing the Connect to Remote Graph option? I'm so sick of restarting apps because they crash after I use graphedt to check that everything's being connected properly. Or graphedt just randomly fails, and has to be repeatedly retried until it works.
clsid
25th January 2008, 12:35
Hmm.. the report thing is a bit more complicated. It is possible to detect changes in graph by reacting on the EC_GRAPH_CHANGED event. But this only covers addition and removal of filters. E.g. dynamic format changes can not be traced this way... and you can see that e.g. the format between decoder and video renderer is different when you first build the graph and after you start it.I see. In that case you could let it update automatically when the graph is changed, and keep the refresh button so users can manually update the info to see the effects of dynamic changes.
I just don't know where to start with so many features Start with the last few missing features in GraphStudio that are present in GraphEdit. Like viewing property pages and the remote graph. Then everyone can dump GraphEdit and switch to your tool.
After that you could add some filter management functionality. Unregister filters and changing merits. That is used very often.
Then implement the tree structure for storing the filter and connection objects.
After that add "Filter Details" section to the Text Information.
RadScorpion
26th January 2008, 22:39
I've uploaded a new build - 0.1.4.0.
[0.1.4.0 - Alpha 26/Jan/2008]
+ GraphStudio can now display property pages
+ added rightclick menu on filters/pins
+ doubleclicking a filter will show its property page
+ the "Property page" button in "Filters" window now works
+ added shourcut - doubleclicking a filter in the "Filters" window will add it to the graph
+ added "Render pin" feature
+ not-implemented buttons are disabled now
+ added vista-style tool bars
As for the crash thing I think I may have a clue. It appears that the crash happens when releasing a filter graph with certain filters. But I think this may have something to do with the filters themselves. I have tested it with one of my filters that contained a stupid bug. When I released and removed all filters manually and then released the graph the crash did not happen.
clsid
26th January 2008, 22:54
Just tested the new version.
"Render pin" feature is cool :)
Could you hide the option from the menu (instead of disabling it) when a pin is already rendered?
The properties option will open an empty window (with ok, close, apply buttons) for filters that have no property page.
Another addition for the ToDo list: volume slider and/or mute button
RadScorpion
26th January 2008, 23:02
Could you hide the option from the menu (instead of disabling it) when a pin is already rendered?
Okay. A cool feature could be to display a list of compatible filters in the right-click menu of a pin so you could directly select the next filter in the chain without the need to dig though the complete filter list.
The properties option will open an empty window (with ok, close, apply buttons) for filters that have no property page.Yes.. for the moment. There will always be at least one page for filter/pin displaying the information such as filter name, file, version, clsid, mediatype, ..etc. I'd also like to implement property pages for the most common interfaces such as IFileSourceFilter.
Another addition for the ToDo list: volume slider and/or mute buttonor a vertical sliderbar that would be located directly in the box of any filter exposing IBasicAudio interface. It could be alpha blended and fade in/out as you approach the fitler with your mouse cursor :). This way each of audio renderers could be configured separately in case more audio streams are present in the graph.
RadScorpion
3rd February 2008, 09:51
Hello. Here is a fresh new build of GS.
Changes since last version:
* added most recently used list (with Clear button)
* filters are disconnected and removed manually when closing graph
* added screenshot-to-clipboard feature
* added Remote Graph feature
* GraphStudio can detect state changes from remote graph
Latest binary can be downloaded here:
http://dev.monogram.sk/websvn/filedetails.php?repname=graphstudio&path=/trunk/bin/graphstudio.exe
Igor
Gromozeka
4th February 2008, 09:26
HI Igor. My name is Igor too
I like compressed in Graphedit, but it is inconvenient
I hope your program (graphstudio.exe) will be convenient and functional
Badly that there is no toddler in your program:
graphedit:
http://keep4u.ru/imgs/s/080204/e9/e98c9cf46ed9b2b257.jpg (http://keep4u.ru/full/080204/e98c9cf46ed9b2b257/jpg)
graphstudio:
http://keep4u.ru/imgs/s/080204/6d/6da1adb473a14f6cdd.jpg (http://keep4u.ru/full/080204/6da1adb473a14f6cdd/jpg)
RadScorpion
4th February 2008, 15:23
You mean to have an alternative filter placement algorithm that would break long graphs into several rows ?
check
4th February 2008, 15:43
Nice tool, the 'upcoming' feature list is also very interesting. What's the preferred way to report existing bugs? Just to post them in here?
clsid
4th February 2008, 15:45
You mean to have an alternative filter placement algorithm that would break long graphs into several rows ?I think he just means a scrollbar.
RadScorpion
4th February 2008, 16:44
Nice tool, the 'upcoming' feature list is also very interesting. What's the preferred way to report existing bugs? Just to post them in here?
You can do it either here or at the discussion board at my blog (which would I prefer):
http://dev.monogram.sk/forum/viewforum.php?f=4
Gromozeka
4th February 2008, 23:24
You mean to have an alternative filter placement algorithm that would break long graphs into several rows ?
But what to do when filters it is a lot of?
Filters are not located in a chain graph's
RadScorpion
9th February 2008, 14:17
Hello people.
Latest build of GS contains the following changes:
[0.1.6.0 - Alpha 09/Feb/2008]
+ added scrollbars when graph is larger than view area
+ added zoom (50%, 75%, 100%, 150%, 200%)
+ faster graph rendering
+ screenshot will contain whole graph even if it is not completely visible in the view area
+ added IFileSinkFilter handling page
+ added shortcuts to create File Writer
You can download the executable here : http://blog.monogram.sk/janos/download/dl-graphstudio.php
Igor
clsid
9th February 2008, 15:34
There is a weird behavior with the "Render media file" functionality:
The graph for the first file will be constructed correctly. But if I try to render a second file (without clearing window), then the graph is not correct. The second graph doesn't use the ffdshow video decoder, even if it should do so. The result can be that the video pin is not connected, or it connects to the AVI Decompressor.
GraphEdit has the same problem. Opening the same two files in two player instances works without problems.
By default ffdshow video decoder prevents multiple instances in the same graph. Does that mean that Graph* are treating the two graphs as one?
I personally would prefer if the window would automatically be cleared when I render a new file. Perhaps you can add an option for that, or make it the default behavior.
It keeps a recent file list in the registry. There is an option to clear it. But I don't see the list itself anywhere in the application.
RadScorpion
9th February 2008, 16:19
The "render media file" is supposed to add another chain of filters that would be able to process the file into the existing graph. Perhaps it would be more obvious if it was named "Add media file" but I tried to follow original naming from GraphEdit.
If you try to "open a file" you should use the "Open graph" feature. it can open both GRF files as well as other media files. This function will stop and clear the existing graph first and then renders the specified file. ... okay I agree. A checkbox to clear the graph would probably be the best solution.
The recent list is only triggered by "Open/Save/SaveAs Graph". You're right. This should probably be linked to render file as well.
clsid
9th February 2008, 16:40
The "render media file" is supposed to add another chain of filters that would be able to process the file into the existing graph. Perhaps it would be more obvious if it was named "Add media file" but I tried to follow original naming from GraphEdit.What is the usefulness of rendering multiple files in a single graph? One graph per file is more logical to me.
RadScorpion
9th February 2008, 16:44
You might want to have an encoding chain of filters constructed and then add input streams by "rendering the files". This is usefull e.g. when creating an MPEG-TS stream with multiple programs inside.
Gromozeka
9th February 2008, 20:16
But how to allocate it is a lot of filters (as in graphedit-e) that them to remove at once?
http://keep4u.ru/imgs/s/080209/e9/e92d671889661fe84e.jpg (http://keep4u.ru/full/080209/e92d671889661fe84e/jpg)
At saving of the project expansion GRF does not register and the name is not appropriated automatically
http://keep4u.ru/imgs/s/080209/0f/0fb2b3abfb6457c4f9.jpg (http://keep4u.ru/full/080209/0fb2b3abfb6457c4f9/jpg)
RadScorpion
9th February 2008, 21:34
Right now you can select multiple filters by holding the SHIFT key and clicking them one-by-one. I'll add the selection rectangle in the next build.
@missing file extension: thank you, I'll fix that.
Gromozeka
9th February 2008, 21:57
You in the future can realize it? :)
http://keep4u.ru/imgs/s/080209/7b/7bc44b061303d60b75.jpg (http://keep4u.ru/full/080209/7bc44b061303d60b75/jpg)
RadScorpion
9th February 2008, 22:08
I suppose yes. I'll try to do some seekbar upgrades... though it is strange that on XP the seekbar doesn't display the progress inside :\.
On vista the seekbar looks like this:
Gromozeka
9th February 2008, 23:08
I suppose yes. I'll try to do some seekbar upgrades... though it is strange that on XP the seekbar doesn't display the progress inside :\.
On vista the seekbar looks like this:
P.S:
No, I thought, that it was so (as in virtualDub or avidemux)
When I move a toddler the active window go to in the second plan. It delivers inconveniences as I do not see film, when move a toddler
It is probable to make the built in window?
Like it
http://keep4u.ru/imgs/s/080210/4e/4eaa2eebba4fe266d3.jpg (http://keep4u.ru/full/080210/4eaa2eebba4fe266d3/jpg)
RadScorpion
14th February 2008, 22:52
Hello. I've upgraded a few things before I start working on the favorite filters.
[0.1.7.0 - Alpha 14/Feb/2008]
+ .grf extension is now added automatically when saving graph
+ "Render Media File" behavior changed to reset&clear exiting graph
+ added "Add Media File" that has the original "Render Media File" functionality
+ rendered files are now loaded into the recently used list
+ added shortcuts to Video and Audio renderers
+ fixed media type parsing
+ Windows XP fixes - at startup window does not flicker and move
+ warning sound is played when trying to remove filters from a running graph
+ added selection box to select multiple filters
+ added "Ctrl+D" shortcut to insert another instance(s) of currently selected filter(s)
+ added Increase/Decrease zoom level shortcuts
+ added favorite filters with subcategories (not ready)
+ added form to manage favorite filters (not ready)
Download link is the same : http://blog.monogram.sk/janos/download/dl-graphstudio.php
Igor
Gromozeka
15th February 2008, 17:42
May be you can add batch list to graph for 1,2,3,4... video file converter? :)
RadScorpion
17th February 2008, 13:45
I plan to do some automated processing based on some input XML file. But this is far too distant future :)
Meawhile you can try this.
I've just uploaded latest build of GS. The most important new feature is the ability to use favorite filters. In contrast to GraphEdit favorite filters can have multiple groups and can be organized in a tree scructure.
To add a favorite filter you need to check the "favorite filter" checkbox in the filters dialog. Once you have all your favorite filters marked you can open the "Favorite Filters" dialog. Use the rightclick menu to create any groups you want and drag&drop all filters in them.
[0.1.8.0 - Alpha 17/Feb/2008]
+ favorite filters and managing form now work
+ DMO filters are displayed in green color
+ KSProxy filters are displayed in orange color
Igor
clsid
17th February 2008, 15:02
Under "Insert Video Renderer" it shows "Full Screen Renderer", but I am unable to insert that filter. Perhaps this filter should be hidden? It also shows "Windows Media Update Filter" as a video renderer.
The renderer called "Video Renderer" is the Overlay Mixer, right? Perhaps you could replace the official filter name with "Video Renderer (Overlay)". That would be more clear for the users.
It think "Duplicate Selected Filters" would be a better name than "Double Selected Filters".
Perhaps you could add an "Add Favorite(s)" button in the "Favorite Filters" window, that opens the "Filters" window.
Maybe bind the Delete button for deleting filters/groups in the "Favorite Filters" window.
The "Open" dialog only allows to select "GraphEdit files". It should let the user be able to select media files as well.
RadScorpion
17th February 2008, 15:22
The list of video renderers is retrieved automatically using the IFilterMapper2 interface and filtered so it only contains filters with no output pins and input pins which can accept MEDIATYPE_Video (as found from the registry data). I liked this better than using a fixed list of renderers... the disadvantage is that the list may contain filters like the Windows Media Update Filter :-|.
As for the Fullscreen renderer... on my system it can be created. perhaps I could add a feature that would ask you if you'd like to blacklist filters that can't be created from the shortcut menus.
Video Renderer is the old video renderer. I've only renamed VMR7 to "Video Mixing Renderer 7" so there would be no confusion... okay. I could add the "(Overlay)" thing.
.."Duplicat" - okay. I agree.
As for the Favorite filters dialog I'm also not completely satisfied with the usability. I think let's wait for a few days and use it for a while and let the best way reveal itself :)
hm... open dialog and extension filters... perhaps the extenions from windows media player could be used. I would not like to use fixed filters.
clsid
17th February 2008, 16:03
Just hide the Windows Media Update Filter. Further blacklisting options are not yet needed I think.
You could start with adding an "All files (*.*)" file filter (and maybe make that the default one). Windows Media Player only has a fairly limited number of file extensions in its open dialog. I think it would be better to define file filters yourself. Perhaps one for all video file types and one for all audio file types?
shambles
18th February 2008, 19:01
running this graph:
file -> ac3filter -> wav dest -> null renderer
and then closing graphstudio, it'll keep running and take 100% of one core until i terminate it via task manager. same thing happens with graphedit so might not be a bug with gs, but it would be nice if it could be fixed..
also if possible, i wish splitters would display the name of the splitter aswell as the filename.. sometimes when using 'render media file' it can be impossible to tell which splitter is being used.
anyway, great stuff. thanks!
RadScorpion
18th February 2008, 19:18
IMHO this is not a bug of GS nor GE but the combination of WAVEDest + NULL Renderer. WAVE Dest delivers data in a "stream" mode - the timestamps are byte positions in the file and the NULL Renderer thinks it's time.
@splitter names. I suppose this is the case of a "splitter-source" filter, like the Haali media splitter. Right? Yes, this is a nice idea. I'll add an option to toggle file names / filter names.
shambles
19th February 2008, 19:55
IMHO this is not a bug of GS nor GE but the combination of WAVEDest + NULL Renderer. WAVE Dest delivers data in a "stream" mode - the timestamps are byte positions in the file and the NULL Renderer thinks it's time.
hmm shame.. i wonder if there's any other way to make ac3filter feed the frames/samples not in real-time but using 100% cpu..
@splitter names. I suppose this is the case of a "splitter-source" filter, like the Haali media splitter. Right? Yes, this is a nice idea. I'll add an option to toggle file names / filter names.
yep that's what i mean. great! :)
DMD
21st February 2008, 22:01
I would like to ask if it is possible to insert in GraphStudio the option to save the files in formed XML as the old versions of GraphEdit
Kindest regards
Domenico
RadScorpion
21st February 2008, 22:36
Yes. I'm currently working on XML loading/saving functionality.
DMD
21st February 2008, 22:48
Thanks!
Gromozeka
22nd February 2008, 19:25
I'm not use ffdshow video decoder!
:(
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.