PDA

View Full Version : New DVDSpy (incompatible events)



Ron
October 13th, 2002, 12:55 PM
Usually when a developer announces a release it means they sent it to me. So then the wait is for me to find the email and time to upload it. So usually that will be within 24 hours. btw, the updated dvdspy has been uploaded.

nmirza
October 13th, 2002, 12:55 PM
WOW! Thanks for the quick response. I'm gonna try this out over the weekend. It took me a while to figure out how DVDspy worked the first time, so I hope it don't kill anything :smile:

siwilson
October 13th, 2002, 12:55 PM
Mike,

I love the new DVDSpy, I now have TT, Winamp and WMP running with my 4 line VFD :smile:

A few questions if you don't mind.

1. I am not too sure how the Movie title bit works, could you explain a little.

2. Are there any more events you can get out of winamp? I would love to have the Artist and Title as seperate strings, because at the moment most of the song titles disappear off the screen.

3. Is there a way to switch off the flashing cursor from the pugin. I know you have to send a control sequence and I know the hex value, but not where to put it.

4. Everything works fine with the TT player except the status. I get "DVD" when playing and "Menu" when in a menu, but no "PLAY" or "PAUSE". I do see "STOP" but only for a second when you exit TT. Ideas ?

5. The time function is nice, but is there a way to update it regularly. Is there a way for girder to perform an event regularly ?

THanks for a great plugin bye the way.

siwilson
October 13th, 2002, 12:55 PM
Thanks for the reply Mike

I have managed to get a few more things working. The time is fine now. I didn't have the anytimer plugin selected, but now I do and now it works.

The DVD Title is working now to a fashion. Actually I am using the DVD volume at the moment it is is a reasonable match and saves all that typing to the csv file.

The Winamp stuff is a pain, but I understand the limitations. Some of the LCD driving plugins for winamp fair a little better, but then the whole owning the diaplsy thing crops up and I much prefer the Gorder route.

I did play with the WMP plugin a bit last night and have it workling, but was getting a few strange things occur, like the display disappears when you move from compact to normal mode. And the visualizations screwed up my desktop colors.

I can't see any way to fix the cirsor thing, so I may post this as an issue with MO.

Would it be possable to extend the control of the display to include things like text scrolling and custom characters ?

Like I said, a great plugin.

MMcM
October 13th, 2002, 12:55 PM
I have sent over a new version of the DVDSpy plug-in.

In an effort to eliminate timing errors between setting text registers and processing events, I have varied which text register is used to hold the event payload. The idea is to avoid using the same register for two events that tend to happen together. Instead of always putting the value into register 1, I now use registers 1 through 9 at various times.

To keep this from being confusing to the point where you need a cheat sheet, I have changed all the events that include data to end with the number of the register into which they put that data. For instance, ZoomPlayer.OSD.6 puts the OSD output into register #6.

Unfortunately, this means that almost all of the "IR" codes have changed. I did not see a way around this. I have included a file that lists all the old event names and their new version. I apologize for this. It may be just as easy to use a text editor on the .GIR file to make the necessary changes.

This also means that scripts that use text registers and DVDSpy together may need to avoid more of them. I'm sorry to be such a hog, but this problem where the right text shows up in the wrong place has been there for a long time and was the last serious shortcoming in using this to drive an LCD reliably.

I also tried to make the Learn menu a little nicer by including a short description for those events that do not have descriptive names, such as the ones that occur in blocks. (These ones already ended in a digit, but that digit has changed.)

The other thing of note is that I added a Winamp general plug-in that forwards state changes over and included it in the sample LCD file.

<font size=-1>[ This Message was edited by: MMcM on 2002-02-27 03:53 ]</font>

MMcM
October 13th, 2002, 12:55 PM
I'm sorry that the readme wasn't clear about what file to copy into the Winamp plugins directory. I've made it more explicit.

I don't see any problem with shortening the polling interval. It does not send anything that has not changed through to Girder. So, so long as the overhead of sending the few messages isn't bogging playback down (and .25 sec certainly won't), you're fine.

For PVR, I use ShowShifter (http://www.showshifter.com).

It allows a command line to be associated with each channel. The command can switch a cable or satellite set-top box. Other PVRs seem to only support the capture card's built-in tuner. That is no good for premium channels. Moreover, they do not seem to know about the two frequency assignment schemes for US cable. Specifically, they support IRC and I have HRC.
It uses a capture file format with timecodes and key frames, improving long term audio synchronization. AVI files do not. Although the file format is proprietary, they use DirectShow filters properly, so you can actually play back in Zoom Player if you like.
The scheduler is a COM automation server. I have a little VBScript that parses XML from titantv.com and invokes the server to add an item. By fooling around with DCOM, I am even able to schedule from my desktop web browsing machine in another room. ShowShifter will support this service soon (probably without any DCOM, since that would be such a support headache). They also have other EPG solutions already for Europe.

As for how this relates to Girder and DVDSpy.

Everything is controlled by a Pronto using Girder and a Slink-e IR receiver.
The per-channel command is an invocation of a program that uses the Slink-e IR emitter via its COM server. It could just as well be girder -eventstring and the Slink-e or other blaster plugin.
The same program also uses DVDSpy's WM_COPYDATA to put the channel number, station name, program title, and start and end times onto the LCD. I haven't bothered to include this bit in the DVDSpy distribution, since it seems pretty specific to my setup. But anyone who wants it can have it, of course.
When playing back, either in SSF or ZP, DVDSpy gets the filename from the filter graph and displays it along with the total and elapsed times. The filename is set to be the program title when the recording is scheduled.
I haven't gotten anything reasonable to happen when time shifting. It's hard to extract information from the ShowShifter display because the UI is built on top of their own toolkit and not regular windows controls.


<font size=-1>[ This Message was edited by: MMcM on 2002-03-02 19:09 ]</font>

MMcM
October 13th, 2002, 12:55 PM
1. The support for DVD titles in there now works, but I do not consider it the final story. I keep hoping that some kind of standard database for this will emerge. I really do not think that it makes sense for this plug-in to be driving such a standard. Maybe this new proliferation of displays will help.

Overall, I believe that what we want is a way to get this information from the net, either on demand, or more likely every time you buy / rent a new DVD. This is the model that people follow with tools like DVDProfiler. In fact, DVDProfiler comes close to supporting what we need, but does not quite make it. I do not use Windows XP yet (although I imagine it is inevitable). As I understand it, the DVD player in there has the ability to download titles from some network service that Microsoft licenses. Not that I propose that we all switch to that player, or that we try to get our own license. But it may well be that XP has an API someplace that we can use. Since I haven't made the switch, I haven't tracked this down any further. There are also some other sites out there promising to accumulate this data, but none of them seems to be taking off, which isn't entirely surprising given the tech slowdown.

In almost all cases, there is nothing resembling a user-visible movie title in the data on the disc itself. Strange, but true. So, the question is how to map from what is on the disc to a title. That's where the database comes in. Windows has a disc serial number for each medium, fixed or removable. I have not seen a clear indication of how this is derived for DVDs. I think it may be a hash of some of the file dates and lengths. Anyway, it does work, in the sense that it is unique per disc. In fact, it is perhaps too unique, in that it varies from edition to edition, even when the DVD extras don't seem to change, and even when the publisher has not changed the UPC. But, for the most part, it is the same on two different machines for the identical title. This is the key that DVDSpy uses, and also that DVDProfiler uses. So, the database maps serial number to title.

With that long preface, here is how it works today.

There is a flat file pointed to by a registry entry for the spy. By default, this is c:Program FilesGirder3DVDTitles.csv.
The file is comma-separated. I find Excel to be pretty good at editing such files, but a text editor is fine, too.
Each record (line) can have as many fields as you like. Only two of them matter: Title and Serial Number. When the Serial Number field matches, DVDSpy's Disc.Insert event has the Title as its payload.
One way to get this file started is to use DVDProfiler's CSV Export function. You can check off whatever fields you want, provided they include Title. You won't be able to get the Serial Number, though. The frustrating thing is that internally DVDProfiler has this field in its database. But it does not expose it for Export.
You then need to go through the tedious task of adding the Hex serial numbers as another field in the file (column if you're using Excel). Among other things, this is in register 9 when the Disc.Insert event occurs. You can now see why I don't consider this functionality very nicely integrated.


2. The event data that comes out of the Winamp plugin today is what Winamp exposes of its internal state. In particular, it is the playlist item titles like you see in its UI. These have already assembled the artist and track title together.

However, there is another piece of information that comes out as a Girder event, but is not usually routed to the LCD, and that is the filename of the source. This is Winamp.File.6. What I imagine could work is to have a separate Girder plug-in that took a filename from a string register (6) and looked at the ID3 tags in the file to extract specific frame fields into other string registers. I haven't attempted anything like this myself. But there are open source libraries out there for parsing these tags, so it's not a major programming undertaking.

3. This is supposed to be happening already. Specifically, there is a call in LCDriver, lcdSetCursor, that changes the cursor mode. For both CrystalFontz and Matrix Orbital displays, 0 is supposed to mean no cursor. That's what the LCD Girder plug-in does. It seems to work with my CrystalFontz. If it does not work with the Matrix Orbital, it may be because of something like it getting cancelled by something else that happens. Since the Matrix Orbital site points to LCDriver, maybe there is someone there who knows what is going on and what the Girder plug-in needs to do. If you find out, by all means let me know and I'll fix it.

4. The indication you are seeing (MENU, DVD, STOP) is actually what is known as the DVD domain. It indicates more or less what part of disc it is processing. It turns out to be not so straightforward to get the pause state from the DirectShow objects without the player's cooperation and in a non-invasive way.

There are actually two levels at which things might be paused. One is the entire filter graph. You can get the state here, but this operation isn't as innocuous as it sounds because pausing is asynchronous and asking synchronizes, which might interfere with the player, especially if it were done all the time. The other level is the DVD Navigator. Here Pause is an Annex J command. Although I've never heard of it being done, it's actually possible for the UOP to prohibit pausing in some section of a DVD. Anyway, the point is that this state is all tied up with the navigator's interpretation of the DVD "program". So, once again, there isn't just a "what state" property. Finally, DirectShow has events that indicate changes, among them pausing. But this event mechanism is point-to-point rather than publish-subscribe, so that if the spy takes the event the player will miss it.

In short, it's perfectly reasonable for you to wonder why this is hard and expect it to be displayed. But it's not there right now. I'll probably have another stab at it at some point.

5. Yes, indeed. Use the AlarmTimer action plug-in. Have a look at the Clock group in DVD2LCD.GIR. It uses this with OnGirderOpen to set up a periodic redisplay of the time on row 0.

All in all, I'd just as soon that time formatting were in a separate command, filling in a text register. But I did it inside the LCD plug-in for now, as you see. Maybe if VFD operation by Girder takes off someone will add another plug-in that fills registers with all the various states that LCD Smartie knows about. That would fit in nicely with what we've got so far.

MMcM
October 13th, 2002, 12:55 PM
1.20 should fix the crash from events without payloads. Let me know if there are still problems.

MMcM
October 13th, 2002, 12:55 PM
4. Everything works fine with the TT player except the status. I get "DVD" when playing and "Menu" when in a menu, but no "PLAY" or "PAUSE". I do see "STOP" but only for a second when you exit TT. Ideas ?

I believe that I have finally worked out a reasonable way of detecting the paused state in TheaterTek and the ATI Player. DVDSpy 1.31 and the DVD2LCD sample uses GVMS to merge this status and the current domain into a single LCD field.

desmo
October 13th, 2002, 12:55 PM
I liked the original, but the seperate registers just makes this even better - thanks!
I probably missed it in the docs, but it took me a while to realise that "gen_DVDSpy.dll" was the plugin to move to winamp.
Is there any reason why I shouldnt reduce the default refresh interval down to 250ms to improve the perceived responsivenes of the display? (Im only using an osd and at the default 1 second refresh it feels sluggish and time can display a second behind the winamp display).
Thanks again.

desmo
October 13th, 2002, 12:55 PM
Please Sir can I have some more.
I use SSF and would love to have your additions.

I use SSF with Digiguide and Digishift. It works well enough that I havent manually scheduled a single recording since Ive had it!

Huythach83
October 13th, 2002, 12:55 PM
When I use DVDSpy ver 1.19 with Girder 3.1.2e and Eject my CD ROM tray, Girder crash when the tray ejected. I dont know are there anyone get the same problem. I have two CDROM driver

Huythach83
October 13th, 2002, 12:55 PM
When will DVDSpy 1.2 release?

Huythach83
October 13th, 2002, 12:55 PM
When will DVDSpy 1.2 release?

Huythach83
October 13th, 2002, 12:55 PM
thx, Ron. Sorry for asking that. I just cant wait for use DVDSpy

SouthyPar
October 13th, 2002, 12:55 PM
Well what I do with long titles is simply to set up the Title Formatting (where ID3 info is available) in Winamp to its default, "Artist - Title", then, I use the " - " seperator to seperate the Artist and Title into two different variables within Girder, and put them in different lines in multiline OSD or LCD.