[squeak-dev] Re: Playing Flash movies in-image

Chris Cunnington smalltalktelevision at gmail.com
Wed Dec 29 21:54:53 UTC 2010


>The concept is that logic is handled a URL  for a media object (video or audio).  It must then determine what type of
>media that is, using features of Quicktime or MimeTypes to figure out a optimal guess at the concrete decoder class to use.
>For that a weighted matrix of choices is used because if we have quicktime, use that, but maybe not if it's an OGG movie since
>quicktime doesn't support OGG natively, but there is a plugin...  Frankly this is the important piece of the whole architecture.

If it's QT compatible, then it goes to NewMovieFromDataRef, which is broader than NewMovieFromFile. The file could be anywhere: on the disk or on the
Internet. I've been extremely QT centric at this point, but I see what you're saying about OGG. Though I haven't spent time yet looking for the
code that parses an URI for different file types.

>Now the decoder logic has a number of goals,  play, stop, rewind, close..  More interesting is play, what happens then is the
>decoder's objective is to start at a particular position in the movie, and on each frame change signal to tweak the frame has changed.

That's the infinite Tweak loop between SophieMovieFramePlayer and SophieQuickTimeMovieViaPlugin. Press #play and that delegates
to SophieQuickTimeMovie>>playMovieScript. It's an loop that Tweak has made into a Process to control. I've
seen it appear as a process in the ProcessBrowser, when the movie plays. It goes back to SophieMovieFramePlayer>>onMovieUpdated
to get the #invalidate to redraw the screen, which is in the #costume of that Player.

>When it gets that, it then has the responsibility to gather up the bits and ask tweak to splash them onto the tweak UI.

Yea... I'm not sure how that works: "splash onto the Tweak UI". A Form is full of bits. In an MPEGMoviePlayerMorph we have Forms full of
bits for each frame, I suppose. But with the SurfacePlugin, we just have a Form defined location that contains nothing. I thought the SurfacePlugin
created a surface that floated above Squeak controlled by the OS.

All I see are SophieQuickTimeMovieViaPlugin>>gWorldPtr pixMapHandle. I never see fields of bits or a binary array upon inspection.
I can't see how the bits fill the #rectangle or #offscreenForm. Because it's using FFI, it seems in a black box. How do I visualize what the
SurfacePlugin is doing?


Chris






More information about the Squeak-dev mailing list