|
|
|
Forum Newbie
      
Group: Forum Members
Last Login: 8/16/2007 2:17:35 PM
Posts: 1,
Visits: 1
|
|
| I read that it is a known issue that there might still be a delay between videos even when using pre-release. Is there any way to fix this? I need to videos to display one after another without any break to give the image of a continuous video. Thanks!
|
|
|
|
|
Forum MVP
      
Group: Administrators
Last Login: Yesterday @ 5:00:06 PM
Posts: 569,
Visits: 1,238
|
|
| Build 2.0.1.92 includes the updated rendering and buffering engine for movies. With enough PreRelease, the first frame of the movie will display at the onset of the object (zero latency). Because there are so many types of movie formats and how the codecs interact with different machine technologies (single core, hyperthread, dual core, AGP, PCIExpress, codecs DIVX, H.264, ATI, NVIDIA, ffdshow, etc), 2.0.1.92 will require significant PreRelease values. Future builds of E-Prime will improve on the time to load the movie files. Via an InLine, you can enumerate through every frame in the movie and analyze values of when it was rendered, scheduled, displayed. Please see the KB for more information. -Brandon
|
|
|
|
|
Forum Newbie
      
Group: Forum Members
Last Login: 4/3/2008 7:42:00 PM
Posts: 8,
Visits: 39
|
|
| THis sounds similar to what I am trying to do. What is the KB?
|
|
|
|
|
Forum MVP
      
Group: Administrators
Last Login: Yesterday @ 5:00:06 PM
Posts: 569,
Visits: 1,238
|
|
| What exactly are you trying to do and we can better provide a sample or more info. In general, use PreRelease in the object prior to your movie. If playing movies adjacent to each other or in general loading at begin of the procedure, then check out the sample on how to load images http://support.pstnet.com/forum/FindPost663.aspx. If you want a report of each movie frame, reply back. -Brandon
|
|
|
|
|
Forum Newbie
      
Group: Forum Members
Last Login: 4/3/2008 7:42:00 PM
Posts: 8,
Visits: 39
|
|
| Hi Brandon, I am trying to send a trigger at the point of a cut during a movie file. I initially tried to do this by using to movie files played back to back (with the cut occuring in between and giving and providing an easy means of inserting some inline to send a trigger via the parallel port). However, even without the trigger, this lead to a large delay between files. Preloading of the movie files did not resolve the problem and caching lead to the display of a series of a white screens (caching was achieved through minor changes to timingparadigm5 (replacement of the image display with a moviedisplay)). I also felt that gaining info on how to access frame specific information may provide a means of better understanding how frames were dealt with and, potentially, a means of tieing a trigger to the frame occuring at the cut (by using a single movie file that includes the cut rather than two separate files either side of the cut.)
|
|
|
|
|
Forum MVP
      
Group: Administrators
Last Login: Yesterday @ 5:00:06 PM
Posts: 569,
Visits: 1,238
|
|
| Create your movie with a zero duration but extended input or if you are not collecting a response, then have the PreRelease = the duration. For example if you wanted a 5000 display then stuck 0 in duration and time limit for keyboard is 5000. Or specify 5000 for duration and 5000 for PreRelease. If you go with the latter, then the code below would need to be changed so that it is not waiting on the input in the loop but instead the offset time to expire. What this sets up is the ability to have the InLine absorb/handle the duration of the object where it can monitor items. This is similar in scope to how the Process Reponse Template sample works. Once in the loop you can setup script to search for a specific frame displayed. Each MovieDisplay or SlideMovie offers a Frames collection. This returns a collection (array) of MovieDisplayFrame objects. A MovieDisplayFrame offers properties like TimeScheduled, TimeDisplayed, and a Status property which can determine if the frame is new, rendered, scheduled, displayed, dropped, or stopped. Note that the movie objects are buffering ahead, so the .Count property will always be greater than the number of frames actually displayed (at least until they all are). So the script below ensures that frame 100 is in the collection and then if it is displayed or dropped, it fires a WritePort for the trigger. Your paradigm can use a similar approach. Const TARGET_FRAME = 100 Dim theMovie As MovieDisplay Set theMovie = CMovieDisplay(Rte.GetObject("Stimulus")) Debug.Assert Not theMovie Is Nothing Do While theMovie.InputMasks.IsPending() 'Did the movie process enough frames yet? If theMovie.Frames.Count >= TARGET_FRAME Then 'Early RC builds did not have these constants ' if you get a compiler error here then ' comment out these lines Const ebStatusDisplayed = 3 Const ebStatusDropped = 4 'Get the frame Dim theMovieDisplayFrame As MovieDisplayFrame Set theMovieDisplayFrame = theMovie.Frames(TARGET_FRAME) If Not theMovieDisplayFrame Is Nothing Then 'Has it been displayed or dropped ' if not it is new, rendered, scheduled, or stopped If theMovieDisplayFrame.Status = ebStatusDisplayed Or _ theMovieDisplayFrame.Status = ebStatusDisplayed Then WritePort &H378, 1 Exit Do End If End If End If 'Give time back Sleep 10 DoEvents
Loop
|
|
|
|
|
Forum Newbie
      
Group: Forum Members
Last Login: 4/3/2008 7:42:00 PM
Posts: 8,
Visits: 39
|
|
| | |