PDA

View Full Version : DVDSpy Development



ScottK
December 8th, 2002, 09:50 PM
DVDSpy has a lot of connections to pull data from some of the ATI programs. I was wondering if DVDSpy continues development? Is there a wish list? I could sure use a connection into some of the MMC components, specifically the TV and Video Capture apps.

Any info would be appreciated.

Thanks!

MMcM
December 9th, 2002, 04:18 PM
As you can see from the downloads page, DVDSpy has changed this quarter, but not this month. It is maintained, but on a time available basis. This forum is as good a place for tracking wish lists as any.

The current ATI MMC support is based on looking at filter graphs. That is good enough for DVD and media file playback. The last time I looked (release 7.something, I think), live / time-shifted TV didn't go through any public API for channel / frequency setting. That may make it a little harder. It is possible using DVDSpy and GraphEdit to look at the current filter graph -- no C++ is needed. That might show whether it's easier. What version of MMC do you use? Is it the latest?

On the plus side, Guide+ does have an easy API for getting program info for a given channel for a given time (or now). So once the channel is known, there is more data that can be displayed. I use that myself, even though I don't use MMC and switch a cable STB rather than an internal tuner.

ScottK
December 9th, 2002, 08:39 PM
I'm using the latest (MMC 7.7.0.1) as I just got the system stable late last week.

GuidePlus is good for marking the shows to watch, but I am pretty sure that the GuidePlus just hands off to the scheduler built into the TV (WDM capture) application.

Thanks for responding. I'd be happy to help if you're busy...

Never used Graphedit... I'll check into it. I don't even know what a filter graph is!

MMcM
December 13th, 2002, 05:33 PM
I installed the newest version of MMC I could and ran some more experiments. The initial results are encouraging.

I cannot run 7.7 because I do not have any of the necessary hardware. There are three main types of ATI TV devices: AIW, separate PCI tuner, and USB. The chips involved are actually quite similar if not the same. But the paths the signals and data travel are different. Which means that the device drivers are different. Which means that the MMC extension is different. Anyway, all I have is USB, for testing SSF setup without disrupting the HTPC itself. Also, it gives me legitimate rights to Guide+ data.

If you run ROTEnable.reg, fire up MMC in TV mode, run GraphEdit and Connect to one of the graphs, there is a WDM TV Tuner filter. Click right to get Properties and you should see the current channel. At least that works for me. What all this means is that it is possible to find what channel the TV is tuned to using the filter graph decoding technique I described earlier. I have added that to the code.

Using some of the recent changes to support players with skinned interfaces, there is other information in text form that can be gotten from the display.

When the channel changes, three lines of program information are briefly overlaid on the screen, giving the channel name and program title (the top line is always empty for me).

The control interface has two text fields. These normally display the channel number and name.

The next step is to see how consistent the UI is for the other TV devices. For that, I need someone to test who has one of them. Send me a PM with your email and I'll send you a version with special trace events that can be captured using the Logger plugin. These are not anything like the real events that will be added. They are just for the first phase of the cookbook for supporting a player application outlined in the extending.htm file.

The immediate goal is to determine whether the onscreen information (the OSPTuner window) is consistent in content and placement, and whether the text display controls (Status windows) have the same Control IDs (20018 and 20019).

Once the consistency is clear, we can proceed to add actual support that works for different hardware.

ScottK
December 17th, 2002, 06:00 PM
ROTEnable? Where can I find that? I downloaded a copy of GraphEdit but no file called ROTEnable.reg....

vynce
December 17th, 2002, 07:23 PM
ROTEnable.reg is in the DVDSpy package.

ScottK
December 18th, 2002, 06:22 PM
OK. Although I'm not sure what I'm looking at, Graphedit seems cool.

I could indeed see what channel by connecting to the right Graph, but I still can't seem to locate a graph that will tell me whether or not the TV is capturing data.

Is that something you can check with your setup? Can you see a status of the video capture? I'll keep looking, but no luck so far.

MMcM
December 19th, 2002, 03:58 PM
Capture will read from the TV and write to a file. So will time shifting, but the file will be temporary. It is may be more reliable to get the overall "intent" of the graph from the program's UI, supplementing the local knowledge of what channel or file is inputting or outputting video.

Are there two text controls? What are their control ids? As I indicated before, it is easy to put together a special version of the hook DLL to capture text updates for analysis. Someone needs to run it on the appropriate system(s).

ScottK
December 20th, 2002, 12:47 PM
...It is may be more reliable to get the overall "intent" of the graph from the program's UI, supplementing the local knowledge of what channel or file is inputting or outputting video. ...

Are there two text controls? What are their control ids? As I indicated before, it is easy to put together a special version of the hook DLL to capture text updates for analysis. Someone needs to run it on the appropriate system(s).

I know this is like trying to help someone do surgery over the phone, so bear with me.

When you say "intent," what are you looking for? Info directly from ATI or some other tool that can watch more closely what is going on.

As far as the type of controls and IDs, where would I look? Are those the virtual pins that are on the box displayed in graphedit?

MMcM
December 20th, 2002, 04:04 PM
Let's put aside further filter graph decoding for now. You have confirmed that there is a WDM TV Tuner in there. That will be enough to get a reliable indication of the channel.

For more, let's see whether we can get enough information off the screen. For testing purposes, I will send you a patched version of DVDSpy that generates ATI.TextImage.Xxx events whenever it finds the application drawing some text. You'll need to run it together with the Logger plugin. Below is some typical output from that. If you'd like me to send it to an email address other than the one currently in your profile, send me a private message with the better one.

Do you have Spy++? Are you familiar with using it?

What I am seeing is that there are several windows with control id 20018 and several with 20019. Among other things, these are the two lines of the "remote control" window. Normally, they display the channel number and channel name. Then there is a transparent OSD overlaid on the video window that flashes the channel and program names briefly.



Dev: 215 ATI.TextImage.Text 19:58:33 Friday, December 20, 2002 Pld1: 25
Dev: 215 ATI.TextImage.Position 19:58:33 Friday, December 20, 2002 Pld1: 0,0
Dev: 215 ATI.TextImage.ControlID 19:58:33 Friday, December 20, 2002 Pld1: 20018
Dev: 215 ATI.TextImage.Class 19:58:33 Friday, December 20, 2002 Pld1: AfxWnd42
Dev: 215 ATI.TextImage.Caption 19:58:33 Friday, December 20, 2002 Pld1: Status
Dev: 215 ATI.TextImage.Window 19:58:33 Friday, December 20, 2002 Pld1: 106B8
Dev: 215 ATI.TextImage.Text 19:58:33 Friday, December 20, 2002 Pld1: WFXT
Dev: 215 ATI.TextImage.Position 19:58:33 Friday, December 20, 2002 Pld1: 0,0
Dev: 215 ATI.TextImage.ControlID 19:58:33 Friday, December 20, 2002 Pld1: 20019
Dev: 215 ATI.TextImage.Class 19:58:33 Friday, December 20, 2002 Pld1: AfxWnd42
Dev: 215 ATI.TextImage.Caption 19:58:33 Friday, December 20, 2002 Pld1: Status
Dev: 215 ATI.TextImage.Window 19:58:33 Friday, December 20, 2002 Pld1: 106B6
Dev: 215 ATI.TextImage.Text 19:58:33 Friday, December 20, 2002 Pld1: 25
Dev: 215 ATI.TextImage.Position 19:58:33 Friday, December 20, 2002 Pld1: 0,0
Dev: 215 ATI.TextImage.ControlID 19:58:33 Friday, December 20, 2002 Pld1: 20018
Dev: 215 ATI.TextImage.Class 19:58:33 Friday, December 20, 2002 Pld1: AfxWnd42
Dev: 215 ATI.TV.Channel 19:58:29 Friday, December 20, 2002 Pld1: 25
Dev: 215 ATI.TextImage.Text 19:58:29 Friday, December 20, 2002 Pld1: The Simpsons
Dev: 215 ATI.TextImage.Position 19:58:29 Friday, December 20, 2002 Pld1: 10,45
Dev: 215 ATI.TextImage.ControlID 19:58:29 Friday, December 20, 2002 Pld1: 0
Dev: 215 ATI.TextImage.Class 19:58:29 Friday, December 20, 2002 Pld1: Afx:400000:3
Dev: 215 ATI.TextImage.Caption 19:58:29 Friday, December 20, 2002 Pld1: OSPTuner
Dev: 215 ATI.TextImage.Window 19:58:29 Friday, December 20, 2002 Pld1: 10682
Dev: 215 ATI.TextImage.Text 19:58:29 Friday, December 20, 2002 Pld1: The Simpsons
Dev: 215 ATI.TextImage.Position 19:58:29 Friday, December 20, 2002 Pld1: 11,44
Dev: 215 ATI.TextImage.ControlID 19:58:29 Friday, December 20, 2002 Pld1: 0
Dev: 215 ATI.TextImage.Class 19:58:29 Friday, December 20, 2002 Pld1: Afx:400000:3
Dev: 215 ATI.TextImage.Caption 19:58:29 Friday, December 20, 2002 Pld1: OSPTuner
Dev: 215 ATI.TextImage.Window 19:58:29 Friday, December 20, 2002 Pld1: 10682
Dev: 215 ATI.TextImage.Text 19:58:29 Friday, December 20, 2002 Pld1: WFXT
Dev: 215 ATI.TextImage.Position 19:58:29 Friday, December 20, 2002 Pld1: 10,25
Dev: 215 ATI.TextImage.ControlID 19:58:29 Friday, December 20, 2002 Pld1: 0
Dev: 215 ATI.TextImage.Class 19:58:29 Friday, December 20, 2002 Pld1: Afx:400000:3
Dev: 215 ATI.TextImage.Caption 19:58:29 Friday, December 20, 2002 Pld1: OSPTuner
Dev: 215 ATI.TextImage.Window 19:58:29 Friday, December 20, 2002 Pld1: 10682
Dev: 215 ATI.TextImage.Text 19:58:29 Friday, December 20, 2002 Pld1: WFXT
Dev: 215 ATI.TextImage.Position 19:58:29 Friday, December 20, 2002 Pld1: 11,24
Dev: 215 ATI.TextImage.ControlID 19:58:29 Friday, December 20, 2002 Pld1: 0
Dev: 215 ATI.TextImage.Class 19:58:29 Friday, December 20, 2002 Pld1: Afx:400000:3
Dev: 215 ATI.TextImage.Caption 19:58:29 Friday, December 20, 2002 Pld1: OSPTuner
Dev: 215 ATI.TextImage.Window 19:58:29 Friday, December 20, 2002 Pld1: 10682
Dev: 215 ATI.TextImage.Text 19:58:29 Friday, December 20, 2002 Pld1:
Dev: 215 ATI.TextImage.Position 19:58:29 Friday, December 20, 2002 Pld1: 10,5
Dev: 215 ATI.TextImage.ControlID 19:58:29 Friday, December 20, 2002 Pld1: 0
Dev: 215 ATI.TextImage.Class 19:58:29 Friday, December 20, 2002 Pld1: Afx:400000:3
Dev: 215 ATI.TextImage.Caption 19:58:29 Friday, December 20, 2002 Pld1: OSPTuner
Dev: 215 ATI.TextImage.Window 19:58:29 Friday, December 20, 2002 Pld1: 10682
Dev: 215 ATI.TextImage.Text 19:58:29 Friday, December 20, 2002 Pld1:
Dev: 215 ATI.TextImage.Position 19:58:29 Friday, December 20, 2002 Pld1: 11,4
Dev: 215 ATI.TextImage.ControlID 19:58:29 Friday, December 20, 2002 Pld1: 0
Dev: 215 ATI.TextImage.Class 19:58:29 Friday, December 20, 2002 Pld1: Afx:400000:3
Dev: 215 ATI.TextImage.Caption 19:58:29 Friday, December 20, 2002 Pld1: OSPTuner
Dev: 215 ATI.TextImage.Window 19:58:29 Friday, December 20, 2002 Pld1: 10682
Dev: 215 ATI.TextImage.Text 19:58:29 Friday, December 20, 2002 Pld1: The Simpsons
Dev: 215 ATI.TextImage.Position 19:58:29 Friday, December 20, 2002 Pld1: 10,45
Dev: 215 ATI.TextImage.ControlID 19:58:29 Friday, December 20, 2002 Pld1: 0
Dev: 215 ATI.TextImage.Class 19:58:29 Friday, December 20, 2002 Pld1: Afx:400000:3
Dev: 215 ATI.TextImage.Caption 19:58:29 Friday, December 20, 2002 Pld1: OSPTuner
Dev: 215 ATI.TextImage.Window 19:58:29 Friday, December 20, 2002 Pld1: 10682
Dev: 215 ATI.TextImage.Text 19:58:29 Friday, December 20, 2002 Pld1: The Simpsons
Dev: 215 ATI.TextImage.Position 19:58:29 Friday, December 20, 2002 Pld1: 11,44
Dev: 215 ATI.TextImage.ControlID 19:58:29 Friday, December 20, 2002 Pld1: 0
Dev: 215 ATI.TextImage.Class 19:58:29 Friday, December 20, 2002 Pld1: Afx:400000:3
Dev: 215 ATI.TextImage.Caption 19:58:29 Friday, December 20, 2002 Pld1: OSPTuner
Dev: 215 ATI.TextImage.Window 19:58:29 Friday, December 20, 2002 Pld1: 10682
Dev: 215 ATI.TextImage.Text 19:58:29 Friday, December 20, 2002 Pld1: WFXT
Dev: 215 ATI.TextImage.Position 19:58:29 Friday, December 20, 2002 Pld1: 10,25
Dev: 215 ATI.TextImage.ControlID 19:58:29 Friday, December 20, 2002 Pld1: 0
Dev: 215 ATI.TextImage.Class 19:58:29 Friday, December 20, 2002 Pld1: Afx:400000:3
Dev: 215 ATI.TextImage.Caption 19:58:29 Friday, December 20, 2002 Pld1: OSPTuner
Dev: 215 ATI.TextImage.Window 19:58:29 Friday, December 20, 2002 Pld1: 10682
Dev: 215 ATI.TextImage.Text 19:58:29 Friday, December 20, 2002 Pld1: WFXT
Dev: 215 ATI.TextImage.Position 19:58:29 Friday, December 20, 2002 Pld1: 11,24
Dev: 215 ATI.TextImage.ControlID 19:58:29 Friday, December 20, 2002 Pld1: 0
Dev: 215 ATI.TextImage.Class 19:58:29 Friday, December 20, 2002 Pld1: Afx:400000:3
Dev: 215 ATI.TextImage.Caption 19:58:29 Friday, December 20, 2002 Pld1: OSPTuner
Dev: 215 ATI.TextImage.Window 19:58:29 Friday, December 20, 2002 Pld1: 10682
Dev: 215 ATI.TextImage.Text 19:58:29 Friday, December 20, 2002 Pld1:
Dev: 215 ATI.TextImage.Position 19:58:29 Friday, December 20, 2002 Pld1: 10,5
Dev: 215 ATI.TextImage.ControlID 19:58:29 Friday, December 20, 2002 Pld1: 0
Dev: 215 ATI.TextImage.Class 19:58:29 Friday, December 20, 2002 Pld1: Afx:400000:3
Dev: 215 ATI.TextImage.Caption 19:58:29 Friday, December 20, 2002 Pld1: OSPTuner
Dev: 215 ATI.TextImage.Window 19:58:29 Friday, December 20, 2002 Pld1: 10682
Dev: 215 ATI.TextImage.Text 19:58:29 Friday, December 20, 2002 Pld1:
Dev: 215 ATI.TextImage.Position 19:58:29 Friday, December 20, 2002 Pld1: 11,4
Dev: 215 ATI.TextImage.ControlID 19:58:29 Friday, December 20, 2002 Pld1: 0
Dev: 215 ATI.TextImage.Class 19:58:29 Friday, December 20, 2002 Pld1: Afx:400000:3
Dev: 215 ATI.TextImage.Caption 19:58:29 Friday, December 20, 2002 Pld1: OSPTuner
Dev: 215 ATI.TextImage.Window 19:58:29 Friday, December 20, 2002 Pld1: 10682
Dev: 215 ATI.TextImage.Text 19:58:28 Friday, December 20, 2002 Pld1: WFXT
Dev: 215 ATI.TextImage.Position 19:58:28 Friday, December 20, 2002 Pld1: 0,0
Dev: 215 ATI.TextImage.ControlID 19:58:28 Friday, December 20, 2002 Pld1: 20019
Dev: 215 ATI.TextImage.Class 19:58:28 Friday, December 20, 2002 Pld1: AfxWnd42
Dev: 215 ATI.TextImage.Caption 19:58:28 Friday, December 20, 2002 Pld1: Status
Dev: 215 ATI.TextImage.Window 19:58:28 Friday, December 20, 2002 Pld1: 10736
Dev: 215 ATI.TextImage.Text 19:58:28 Friday, December 20, 2002 Pld1: WFXT
Dev: 215 ATI.TextImage.Position 19:58:28 Friday, December 20, 2002 Pld1: 0,0
Dev: 215 ATI.TextImage.ControlID 19:58:28 Friday, December 20, 2002 Pld1: 20019
Dev: 215 ATI.TextImage.Class 19:58:28 Friday, December 20, 2002 Pld1: AfxWnd42
Dev: 215 ATI.TextImage.Caption 19:58:28 Friday, December 20, 2002 Pld1: Status
Dev: 215 ATI.TextImage.Window 19:58:28 Friday, December 20, 2002 Pld1: 1070C
Dev: 215 ATI.TextImage.Text 19:58:28 Friday, December 20, 2002 Pld1: WFXT
Dev: 215 ATI.TextImage.Position 19:58:28 Friday, December 20, 2002 Pld1: 0,0
Dev: 215 ATI.TextImage.ControlID 19:58:28 Friday, December 20, 2002 Pld1: 20019
Dev: 215 ATI.TextImage.Class 19:58:28 Friday, December 20, 2002 Pld1: AfxWnd42
Dev: 215 ATI.TextImage.Caption 19:58:28 Friday, December 20, 2002 Pld1: Status
Dev: 215 ATI.TextImage.Window 19:58:28 Friday, December 20, 2002 Pld1: 106E4
Dev: 215 ATI.TextImage.Text 19:58:28 Friday, December 20, 2002 Pld1: WFXT
Dev: 215 ATI.TextImage.Position 19:58:28 Friday, December 20, 2002 Pld1: 0,0
Dev: 215 ATI.TextImage.ControlID 19:58:28 Friday, December 20, 2002 Pld1: 20019
Dev: 215 ATI.TextImage.Class 19:58:28 Friday, December 20, 2002 Pld1: AfxWnd42
Dev: 215 ATI.TextImage.Caption 19:58:28 Friday, December 20, 2002 Pld1: Status
Dev: 215 ATI.TextImage.Window 19:58:28 Friday, December 20, 2002 Pld1: 106B6
Dev: 215 ATI.TextImage.Text 19:58:28 Friday, December 20, 2002 Pld1: 25
Dev: 215 ATI.TextImage.Position 19:58:28 Friday, December 20, 2002 Pld1: 0,0
Dev: 215 ATI.TextImage.ControlID 19:58:28 Friday, December 20, 2002 Pld1: 20018
Dev: 215 ATI.TextImage.Class 19:58:28 Friday, December 20, 2002 Pld1: AfxWnd42
Dev: 215 ATI.TextImage.Caption 19:58:28 Friday, December 20, 2002 Pld1: Status
Dev: 215 ATI.TextImage.Window 19:58:28 Friday, December 20, 2002 Pld1: 10734
Dev: 215 ATI.TextImage.Text 19:58:28 Friday, December 20, 2002 Pld1: 25
Dev: 215 ATI.TextImage.Position 19:58:28 Friday, December 20, 2002 Pld1: 0,0
Dev: 215 ATI.TextImage.ControlID 19:58:28 Friday, December 20, 2002 Pld1: 20018
Dev: 215 ATI.TextImage.Class 19:58:28 Friday, December 20, 2002 Pld1: AfxWnd42
Dev: 215 ATI.TextImage.Caption 19:58:28 Friday, December 20, 2002 Pld1: Status
Dev: 215 ATI.TextImage.Window 19:58:28 Friday, December 20, 2002 Pld1: 1070A
Dev: 215 ATI.TextImage.Text 19:58:28 Friday, December 20, 2002 Pld1: 25
Dev: 215 ATI.TextImage.Position 19:58:28 Friday, December 20, 2002 Pld1: 0,0
Dev: 215 ATI.TextImage.ControlID 19:58:28 Friday, December 20, 2002 Pld1: 20018
Dev: 215 ATI.TextImage.Class 19:58:28 Friday, December 20, 2002 Pld1: AfxWnd42
Dev: 215 ATI.TextImage.Caption 19:58:28 Friday, December 20, 2002 Pld1: Status
Dev: 215 ATI.TextImage.Window 19:58:28 Friday, December 20, 2002 Pld1: 106E6
Dev: 215 ATI.TextImage.Text 19:58:28 Friday, December 20, 2002 Pld1: 25
Dev: 215 ATI.TextImage.Position 19:58:28 Friday, December 20, 2002 Pld1: 0,0
Dev: 215 ATI.TextImage.ControlID 19:58:28 Friday, December 20, 2002 Pld1: 20018
Dev: 215 ATI.TextImage.Class 19:58:28 Friday, December 20, 2002 Pld1: AfxWnd42
Dev: 215 ATI.TextImage.Caption 19:58:28 Friday, December 20, 2002 Pld1: Status
Dev: 215 ATI.TextImage.Window 19:58:28 Friday, December 20, 2002 Pld1: 106B8

ScottK
December 20th, 2002, 05:50 PM
The one in my profile will do fine. This is great.

I have not used Spy++ at all. If it is a C++ API, my skills are rusty but modifying code doesn't take near the skill as creating. I'm sure I'll be able to puzzle it out.

Lost the wireless router last night -- new one is on the way. That puts my HTPC out of commission networkwise for this weekend--so further development/research will probably wait until after Xmas...

By the way, if anyone out there feels we should take this to private messages/email, just say the word. Until then, this'll serve as a public record of the process...

MMcM
December 20th, 2002, 07:10 PM
Spy++ is an application that comes with Visual C++. It lets you look at the window hierarchy. It's useful for identifying which window is which in the logger output. Don't worry that you don't have it. We'll see what we get from the tracing.

ScottK
January 3rd, 2003, 11:07 AM
OK. Got it installed. Didn't notice anything out of the ordinary -- the TVSpy didn't seem to affect or be affected by the ATI TV program.

When I used GraphEdit, I could change channels using the interface that came up.

Now what am I looking for again?

MMcM
January 3rd, 2003, 07:09 PM
You are looking for ATI.TextImage events like the examples I gave.

Do not worry about filter graphs or TVSpy for now. We are trying to confirm what is displayed on the screen to see how it supplements knowing the channel.