views:

70

answers:

1

I need to render a QuickTime movie into a GWorld that may not be the movie's natural size, on Windows. When the movie is scaled up, say by a factor of 1.5, I see some jaggies. Whereas if I open the same movie in QuickTime Player (version 7.6.6 on Windows Vista) and stretch the window, I see jaggies while stretching, but when I release the mouse, the image smooths out. It must be using some smarter scaling algorithm or antialiasing. What do I need to do to render at a bigger size besides SetMovieGWorld and SetMovieBox?

Here's a little of the smooth version:

smooth

And here's the slightly jaggy counterpart:

jaggy

(Although this shows text, it's not a text track, just part of the image.)

I tried calling SetMoviePlayHints with various flags such as hintsHighQuality, with no effect.

Here's the big picture, in case you might have a suggestion for a whole different approach. The movie is side by side stereo. The left and right halves of the image need to be composited (in one of several ways) and then drawn to the screen. For instance a movie I'm testing with has a natural size of 2560 x 720, but is displayed at a natural size of 1280 x 720. The way I'm currently doing it is rendering to a GWorld, and then in a SetMovieDrawingCompleteProc callback, uploading the left and right halves to OpenGL textures with glTexSubImage2D, and rendering to the screen using a GLSL shader.

I tried using an Apple Developer Technical Support incident to get help with this, but their reply was basically "we don't do Windows".

A: 

Can you use DirectX and more specifically, DirectShow to display your movie instead of using Apple's SDK? I know that DirectX can play QuickTime movies.

If you can use DirectShow then you can search for or create your own video transform filters to do antialiasing and smoothing.

icemanind
That's what I've been trying to avoid. I have previous experience with QuickTime, but none with DirectX or DirectShow.
JWWalker
Well I have no experience with using Apple's SDK. But using DirectX is pretty simple. You first need to download the DirectX SDK from Microsoft's Website. Then go to this website: http://www.codeproject.com/KB/directx/directshowmediaplayer.aspx. This site will show you how to play video using DirectX.
icemanind