Player/Image Object "always buffer" Problems

Dave dave at looktowindward.com
Wed Jun 20 12:31:44 EDT 2007


Hi All,

More on this.

I changed the code to compare the current image data to the previous  
image data. When I do this, I find that the data returned from the  
snapshot command is the *same* on each iteration (the frames should  
all be different), so it's just moving the same image into the image  
object each time.

!!!!!STOP PRESS!!!!!

I put a breakpoint at the end of the function and I noticed that if I  
switch between Run Mode and IDE Mode then continue, it works!!!

So, why should this have an effect? It seems that the correct image  
is NOT transfered if the run mode isn't changed between frames. Also  
I can't set the "alwaysBuffer" property since if I do it causes a crash!

I've added the code to the function (see below) and it seems to work  
*sometimes* but it still looks like its losing a frame buffer  
somewhere, the Compare Test hit the breakpoint (see function below)

Is there any work--around for this? Help please!!! Deadline rapidly  
approaching.

All the Best
Dave


local sgOldImageData

------------------------------------------------------------------------ 
------------
--
--  PDFGetFrameThumbnail
--
------------------------------------------------------------------------ 
------------
function PDFGetFrameThumbnail theFrameNumber,theThumbnailFilePathName
   local myCurrentTime
   local myImageData
   local myFrameRect
   local myWindowID
   local myMovieFilePathName

   --
   --  Set up the Rectangle for the Player Frame
   --
   put the rect of player "PlayerThumbnail" of card 1 of me into  
myFrameRect
   put the windowID of this stack into myWindowID

   --
   --  Calculate the Position in the Movie and Play the Frame
   --
   put the fileName of player "PlayerThumbnail" of card 1 of me into  
myMovieFilePathName
   --set the filename of player "PlayerThumbnail" of card 1 of me to  
empty
   --set the fileName of player "PlayerThumbnail" of card 1 of me to  
myMovieFilePathName

   put theFrameNumber * 24 into myCurrentTime
   set the playSelection of player "PlayerThumbnail" of card 1 of me  
to true
   set the startTime of player "PlayerThumbnail" of card 1 of me to  
myCurrentTime
   set the endTime of player "PlayerThumbnail" of card 1 of me to  
(myCurrentTime + 1)
   start player "PlayerThumbnail" of card 1 of me

   choose pointer tool
   wait .5 seconds with messages

   --
   --  Grab the Frame
   --
   put empty into image "ImageThumbnail" of card 1 of me
   put empty into myImageData
   set the alwaysBuffer of the templateImage to false
   export snapshot from rect myFrameRect of window myWindowID to  
myImageData as JPEG

   choose browse tool

   put myImageData into image "ImageThumbnail" of card 1 of me
   if myImageData = sgOldImageData then
     breakpoint
   end if

   put myImageData into sgOldImageData
   return myImageData
end PDFGetFrameThumbnail
-----------------------------

On 20 Jun 2007, at 11:53, Dave wrote:

> Hi,
>
> I have a stack with a player object and am image object. I am  
> trying to capture fames from a movie. I want to play the movie for  
> the one frame, then copy that one into the Image Object/  The  
> following function does this job, however only the first frame is  
> captured, e.g. it looks like the put myImageData into image  
> "ImageThumbnail"  does not work after the first image has been set.
>
> I've had this before and found that the "always buffer" property  
> has to be set correctly for it to work. However, as far as I know,  
> the "always buffer" on the Player object should be set to true, but  
> when I do this RunRev Crashes. Why is this?
>
> Again, something that should have taken a few minutes to do is  
> taking up way too much time. Seems like as soon as a I string a few  
> "exotic" objects together and try to do something that should be  
> possible, get 95% of the way there and then RunRev crashes in some  
> strange manner and I spend at least double the amount of time  
> trying to fix it!
>
> How can I get this to work? Why is "always buffer" causing such a  
> problem?
>
> Anyway, the function is copied below, it works fine if:
>
> always buffer = true on Player Object
> always buffer = false on Image Object
>
> But since I can't set  "always buffer" on the Player (since it  
> crashes RunRev) it only copies the first frame into the image object.
>
> Anyone with any ideas I'd be really grateful.
>
> Thanks a lot
> All the Best
> Dave
>




More information about the use-livecode mailing list