Thanks for the fast response. Is this the best place to post these issues and questions?
#1, there's no reason why you should be limited to 2011r43. the plugin should work in any recent version of RS. it has been tested on Windows, Mac (Cocoa/Carbon) and Ubuntu Linux. i'll run the project up against an older version of Real Studio and see if there is something that its not handling properly.
I was specifically trying 2011R3 -- which is the last version for which I happen to still have an Enterprise license.
The frame level movement is the least of my concerns, especially if you'd just do math on the movement instead of knowing where frames are actually located (well, telling VLC to position on frame boundaries). I can do the math too if that is all it would end up doing itself.
I am not sure the Position property's internal variable is updating properly, when it is changed via code while the video is paused. Let me explain.
I let the user configure the amount of time (or alternatively, the number of frames) to move forward or backward using four states of the left / right key:
3) Cmd (or Ctrl in Windows)
4) Cmd + Shift
When left / right is used with any of the above, I read the object's Position property, calculate a new value, and set the Position property to the new value.
When paused, the first keystroke moves to the expected location. However, continued keystrokes don't. If I am trying to move left by about 1 frame, that works out to roughly 33ms when dealing with 29.97fps material (that is 1000/29.97). The first time I go through the algorithm, the value reported by Position is as I'd expect. But if I continue to do that, instead of the Position value going down by another 33ms it starts going up. In a nutshell, the pseudo code is:
Do while Left cursor keystroke
Read Position property
Set Position property
Call routine to update label with formatted time (by re-reading Position property and doing the modulo math)
There is either a thread issue with the set of the Position not being complete before the code re-reads the Position to update the time label.
I am working around it by keeping a form level property which I update in the object's StateChanged event to track the last known position while the video is playing. Then in my cursor movement routines, I adjust that value and use it to set the object's Position. Repeated keystrokes only result in setting the property again, not reading it. When playback resumes, the state changes refresh my last known position. I compute my formatted time display from that value as well.
So I can work around it, but my point is that there could be an issue lurking with the handling of setting the Position multiple times before playback resumes. So just FYI.
#6, i should be able to support playback rate changes.
That would be great. Target market in my user base for this particular program are coaches for sports teams who are analyzing video of games or practices. Thus the need to pause and "step" through frames to watch body movements and positions etc, or to watch in various slow motion rates. I think it is just as common to pause and simply hold the cursor keys to watch slow motion, but I supported slow motion playback in the past and I hate to disable features... (For that matter, I also let them reverse the playback, because the MoviePlayer control would accept a negative value for the Rate property to move backwards, but I really don't know that anyone used it. I think they just used the Left cursor/shift states to move backward.)
This control looks very promising. Sure glad VLC changed the library licensing, because last year I was getting very concerned about what I'd do to replace the MoviePlayer object.