Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion. Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules. |
19th January 2008, 16:32 | #1 | Link |
Registered User
Join Date: Jul 2003
Location: Bratislava, Slovakia
Posts: 147
|
Opensource GraphEdit project
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/...m-graphstudio/ As of this moment, the application si really simple, but any ideas/hints/reports are more than welcome. Igor |
19th January 2008, 16:45 | #2 | Link |
Mr. Sandman
Join Date: Sep 2003
Location: Haddonfield, IL
Posts: 11,768
|
oh! an OSS alternative to graphedit!
nice, im going to try it asap thanx
__________________
MPEG-4 ASP Custom Matrices: EQM V1(old), EQM AutoGK Sharpmatrix (aka EQM V2), EQM V3HR (updated 01/10/2004), EQM V3LR, EQM V3ULR (updated 04/02/2005), EQM V3UHR (updated 17/12/2004) and EQM V3EHR (updated 05/10/2004) Info about my ASP matrices. MPEG-4 AVC Custom Matrices: EQM AVC-HR Info about my AVC matrices My x264 builds. Mooo!!! |
20th January 2008, 16:53 | #3 | Link |
Registered User
Join Date: Jul 2003
Location: Bratislava, Slovakia
Posts: 147
|
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:
Igor |
20th January 2008, 17:34 | #6 | Link |
*****
Join Date: Feb 2005
Posts: 5,647
|
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.
__________________
MPC-HC 2.2.1 Last edited by clsid; 20th January 2008 at 17:39. |
20th January 2008, 20:12 | #7 | Link |
Registered User
Join Date: Jul 2003
Location: Bratislava, Slovakia
Posts: 147
|
I was thinking of the format how the text report should look like.
What do you think of this ? Code:
------------------------------------------------------------------- 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) |
20th January 2008, 22:19 | #8 | Link |
*****
Join Date: Feb 2005
Posts: 5,647
|
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: Code:
Major: MEDIATYPE_Stream Subtype: MEDIASUBTYPE_Avi Format: GUID_NULL
__________________
MPC-HC 2.2.1 Last edited by clsid; 20th January 2008 at 22:23. |
21st January 2008, 07:13 | #9 | Link |
Registered User
Join Date: Apr 2002
Location: Germany
Posts: 4,926
|
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
__________________
all my compares are riddles so please try to decipher them yourselves :) It is about Time Join the Revolution NOW before it is to Late ! http://forum.doom9.org/showthread.php?t=168004 Last edited by CruNcher; 21st January 2008 at 07:26. |
21st January 2008, 09:14 | #10 | Link |
Registered User
Join Date: Jul 2003
Location: Bratislava, Slovakia
Posts: 147
|
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. |
21st January 2008, 20:48 | #11 | Link |
Registered User
Join Date: Jul 2003
Location: Bratislava, Slovakia
Posts: 147
|
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? |
21st January 2008, 23:36 | #12 | Link |
*****
Join Date: Feb 2005
Posts: 5,647
|
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.
__________________
MPC-HC 2.2.1 |
22nd January 2008, 22:03 | #13 | Link |
Registered User
Join Date: Jul 2003
Location: Bratislava, Slovakia
Posts: 147
|
Yet another updated version
[0.1.3.0 - Alpha 22/Jan/2008]
cu Igor |
24th January 2008, 16:07 | #14 | Link |
*****
Join Date: Feb 2005
Posts: 5,647
|
This file 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.
__________________
MPC-HC 2.2.1 Last edited by clsid; 24th January 2008 at 16:20. |
24th January 2008, 23:02 | #15 | Link |
Registered User
Join Date: Jul 2003
Location: Bratislava, Slovakia
Posts: 147
|
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 |
25th January 2008, 04:29 | #16 | Link |
Registered User
Join Date: Dec 2004
Location: Melbourne, AU
Posts: 1,963
|
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.
|
25th January 2008, 12:35 | #17 | Link | ||
*****
Join Date: Feb 2005
Posts: 5,647
|
Quote:
Quote:
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.
__________________
MPC-HC 2.2.1 |
||
26th January 2008, 22:39 | #18 | Link |
Registered User
Join Date: Jul 2003
Location: Bratislava, Slovakia
Posts: 147
|
I've uploaded a new build - 0.1.4.0.
Code:
[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 |
26th January 2008, 22:54 | #19 | Link |
*****
Join Date: Feb 2005
Posts: 5,647
|
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
__________________
MPC-HC 2.2.1 |
26th January 2008, 23:02 | #20 | Link | |||
Registered User
Join Date: Jul 2003
Location: Bratislava, Slovakia
Posts: 147
|
Quote:
Quote:
Quote:
|
|||
Thread Tools | Search this Thread |
Display Modes | |
|
|