<table cellspacing='0' cellpadding='0' border='0' ><tr><td valign='top' style='font: inherit;'><BLOCKQUOTE style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: rgb(16,16,255) 2px solid"><PRE><FONT face=Arial>Hi,</FONT></PRE><PRE><FONT face=Arial>Base on one user's idea, I add something inside the quicktime plugin and make it can work with "http" streaming. </FONT></PRE><PRE><FONT face=Arial>But right now it cannot open "rtsp" streaming. The code I add in quicktime plugin is as this:</FONT></PRE><PRE><FONT face=Arial>1. load movie from url:</FONT></PRE><PRE><FONT face=Arial><FONT size=2><P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>if</FONT></FONT><FONT size=2> (CFURLRef urlRef = CFURLCreateWithBytes(NULL, (</FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>const</FONT></FONT><FONT size=2> UInt8 *)url, strlen(url), kCFStringEncodingUTF8, NULL)) { </P><P>Handle dataRef;</P><P>OSType dataRefType;</P><P>error =
 QTNewDataReferenceFromCFURL(urlRef, 0, &dataRef, &dataRefType); </P><P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>if</FONT></FONT><FONT size=2> (error == noErr) {</P><P>error = NewMovieFromDataRef(movie, newMovieIdleImportOK, NULL, dataRef, dataRefType); </P><P>error = GetMoviesError();</P><P>}</P><P></P><P>CFRelease(urlRef);</P><P>}</P></FONT></FONT></PRE><PRE><FONT face=Arial></FONT> </PRE><PRE><FONT face=Arial>2. open it with a function as prepreroolMovie ( quicktime api said this is required for streaming): </FONT></PRE><PRE><FONT size=2><P>err = MakeMovieFromURL(filename.c_str(),&_movie);</P><P></FONT><FONT color=#008000 size=2><FONT color=#008000 size=2>// add prepreroll</P></FONT></FONT><FONT size=2><P></P><P>err = PrePrerollMovie(_movie, 0, GetMoviePreferredRate(_movie),</P><P>NewMoviePrePrerollCompleteProc(MovieData::MoviePrePrerollCompleteProc),</P><P>(</FONT><FONT color=#0000ff size=2><FONT color=#0000ff
 size=2>void</FONT></FONT><FONT size=2> *)</FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>this</FONT></FONT><FONT size=2>);</FONT></P><P><FONT size=2><< here get problem, if http, it is ok, but rtsp it will return -1. </FONT></P><P><FONT size=2></FONT> </P><P><FONT size=2>What I cannot understand is: </FONT></P><P><FONT size=2>I implement this with glut and it never get an error. means same code in glut then </FONT></P><P><FONT size=2>never return error: </FONT></P><P><FONT size=2></FONT> </P><P><FONT size=2>Here is Glut example: </FONT></P><FONT size=2><FONT color=#008000 size=2><FONT color=#008000 size=2><P>// simpleQTtest.cpp : Defines the entry point for the application.</P><P>//</P></FONT></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2><P>#include</FONT></FONT><FONT size=2> </FONT><FONT color=#a31515 size=2><FONT color=#a31515 size=2>"stdafx.h"</P></FONT></FONT><FONT color=#0000ff size=2><FONT color=#0000ff
 size=2><P>#include</FONT></FONT><FONT size=2> </FONT><FONT color=#a31515 size=2><FONT color=#a31515 size=2>"simpleQTtest.h"</P></FONT></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2><P>#include</FONT></FONT><FONT size=2> </FONT><FONT color=#a31515 size=2><FONT color=#a31515 size=2><GL/glew.h></P></FONT></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2><P>#include</FONT></FONT><FONT size=2> </FONT><FONT color=#a31515 size=2><FONT color=#a31515 size=2><glvu.hpp></P></FONT></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2><P>#include</FONT></FONT><FONT size=2> </FONT><FONT color=#a31515 size=2><FONT color=#a31515 size=2><ppm.hpp></P></FONT></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2><P>#include</FONT></FONT><FONT size=2> </FONT><FONT color=#a31515 size=2><FONT color=#a31515 size=2><GL/glut.h></P></FONT></FONT><FONT color=#0000ff size=2><FONT color=#0000ff
 size=2><P>#include</FONT></FONT><FONT size=2> </FONT><FONT color=#a31515 size=2><FONT color=#a31515 size=2>"QTML.h"</P></FONT></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2><P>#include</FONT></FONT><FONT size=2> </FONT><FONT color=#a31515 size=2><FONT color=#a31515 size=2>"Movies.h"</P></FONT></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2><P>#include</FONT></FONT><FONT size=2> </FONT><FONT color=#a31515 size=2><FONT color=#a31515 size=2>"ImageCompression.h"</P></FONT></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2><P>#include</FONT></FONT><FONT size=2> </FONT><FONT color=#a31515 size=2><FONT color=#a31515 size=2>"MacErrors.h"</P><P> </P></FONT></FONT><FONT size=2><P>GLVU glvu;</P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2><P>#define</FONT></FONT><FONT size=2> MAX_LOADSTRING 100</P><P> </P><P>Movie theMovie;</P><P>Rect box;</P><P>GLuint textureUnit; </P></FONT><FONT color=#0000ff
 size=2><FONT color=#0000ff size=2><P>unsigned</FONT></FONT><FONT size=2> </FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>char</FONT></FONT><FONT size=2> *image; </P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2><P>int</FONT></FONT><FONT size=2> width, height;</P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2><P>void</FONT></FONT><FONT size=2> userDisplayFunc0()</P><P>{</P><P>glvu.BeginFrame();</P><P>glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);</P><P></FONT><FONT color=#008000 size=2><FONT color=#008000 size=2>//glColor3f(1,0,0);</P></FONT></FONT><FONT size=2><P></FONT><FONT color=#008000 size=2><FONT color=#008000 size=2>//glutSolidTorus(0.25,1,32,64);</P></FONT></FONT><FONT size=2><P>glEnable(GL_TEXTURE_2D); </P><P>glBindTexture(GL_TEXTURE_2D, textureUnit); </P><P>glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV,image); </P><P> </P><P>glBegin(GL_QUADS);
 </P><P>glTexCoord2d(0.0, 0.0); glVertex3d(-0.5, -0.5, 0); </P><P>glTexCoord2d(0.0, 1.0); glVertex3d(-0.5, 0.5, 0); </P><P>glTexCoord2d(1.0, 1.0); glVertex3d(0.5, 0.5, 0); </P><P>glTexCoord2d(1.0, 0.0); glVertex3d(0.5, -0.5, 0); </P><P>glEnd(); </P><P>glvu.EndFrame();</P><P>}</P><P> </P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2><P>void</FONT></FONT><FONT size=2> loadPPMImage()</P><P>{</P><P></P><P>LoadPPM(</FONT><FONT color=#a31515 size=2><FONT color=#a31515 size=2>"sample.ppm"</FONT></FONT><FONT size=2>, image, width, height); </P><P>}</P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2><P>void</FONT></FONT><FONT size=2> UpdateMovieGWorld(Movie m)</P><P>{</P><P>CGrafPtr port;</P><P>GDHandle dev;</P><P>GetMovieGWorld(m,&port,&dev);</P><P>Rect box;</P><P>GetMovieNaturalBoundsRect(m,&box);</P><P>MacOffsetRect (&box, -box.left, -box.top);</P><P>SetMovieBox (m, &box);</P><P></FONT><FONT color=#0000ff
 size=2><FONT color=#0000ff size=2>int</FONT></FONT><FONT size=2> width=box.right;</P><P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>int</FONT></FONT><FONT size=2> height=box.bottom;</P><P>GWorldPtr movieGWorld;</P><P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>void</FONT></FONT><FONT size=2>* pixels=malloc(width*height*4);</P><P>NewGWorldFromPtr(&movieGWorld,k32BGRAPixelFormat,&box,0,0,0,(Ptr)pixels,width*4);</P><P>SetMovieGWorld (m, (CGrafPtr)movieGWorld, nil);</P><P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>if</FONT></FONT><FONT size=2> (port && !dev)</P><P>{</P><P>pixels=port->portPixMap[0]->baseAddr;</P><P>DisposeGWorld(port);</P><P>free(pixels);</P><P>}</P><P>}</P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2><P>void</FONT></FONT><FONT size=2> MyMoviePrePrerollCompleteProc(Movie theMovie, OSErr prerollErr,</P><P></FONT><FONT color=#0000ff size=2><FONT
 color=#0000ff size=2>void</FONT></FONT><FONT size=2> *refcon)</P><P>{</P><P>Fixed rate=GetMoviePreferredRate(theMovie);</P><P></FONT><FONT color=#008000 size=2><FONT color=#008000 size=2>//PrerollMovie(theMovie,0,rate);</P></FONT></FONT><FONT size=2><P>SetMovieRate(theMovie,rate);</P><P>StartMovie(theMovie);</P><P>}</P><P>OSErr MyMovieDrawingCompleteProc(Movie theMovie, </FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>long</FONT></FONT><FONT size=2> refCon)</P><P>{</P></FONT><FONT size=2><P>CGrafPtr port;</P><P>GDHandle dev;</P><P>GetMovieGWorld(theMovie,&port,&dev);</P><P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>char</FONT></FONT><FONT size=2>* pixels=port->portPixMap[0]->baseAddr;</P><P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>int</FONT></FONT><FONT size=2> pixels_width=port->portPixMap[0]->bounds.right;</P><P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff
 size=2>int</FONT></FONT><FONT size=2> pixels_height=port->portPixMap[0]->bounds.bottom;</P><P> </P><P>image = (</FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>unsigned</FONT></FONT><FONT size=2> </FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>char</FONT></FONT><FONT size=2> *) pixels; </P><P>width = pixels_width; </P><P>height = pixels_height; </P><P>userDisplayFunc0(); </P><P></FONT><P><FONT color=#008000 size=2><FONT color=#008000 size=2></P></FONT></FONT><FONT size=2></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>return</FONT></FONT><FONT size=2> noErr;</P><P>}</P><P> </P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2><P>bool</FONT></FONT><FONT size=2> LoadMovieFromPath(Movie* m, </FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>const</FONT></FONT><FONT size=2> </FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>char</FONT></FONT><FONT size=2>*
 thePath)</P><P>{</P><P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>char</FONT></FONT><FONT size=2> fullpath[255];</P><P>strcpy(fullpath,thePath);</P><P>c2pstr(fullpath);</P><P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>short</FONT></FONT><FONT size=2> theFile = 0;</P><P>FSSpec sfFile;</P><P>FSMakeFSSpec (0, 0L, (ConstStr255Param)fullpath, &sfFile);</P><P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>int</FONT></FONT><FONT size=2> err=OpenMovieFile (&sfFile, &theFile, fsRdPerm);</P><P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>if</FONT></FONT><FONT size=2> (err!=noErr)</P><P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>return</FONT></FONT><FONT size=2> </FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>false</FONT></FONT><FONT size=2>;</P><P>err=NewMovieFromFile (m, theFile, nil, nil, newMovieActive,</P><P>nil);</P><P>CloseMovieFile
 (theFile);</P><P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>if</FONT></FONT><FONT size=2> (err!=noErr)</P><P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>return</FONT></FONT><FONT size=2> </FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>false</FONT></FONT><FONT size=2>;</P><P>UpdateMovieGWorld(*m);</P><P>MyMoviePrePrerollCompleteProc(*m,0,0);</P><P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>return</FONT></FONT><FONT size=2> </FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>true</FONT></FONT><FONT size=2>;</P><P>}</P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2><P>bool</FONT></FONT><FONT size=2> LoadMovieFromURL(Movie* m, </FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>const</FONT></FONT><FONT size=2> </FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>char</FONT></FONT><FONT size=2>* url)</P><P>{</P></FONT><FONT size=2><P>OSStatus error =
 memFullErr;</P><P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>if</FONT></FONT><FONT size=2> (CFURLRef urlRef = CFURLCreateWithBytes(NULL, (</FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>const</FONT></FONT><FONT size=2> UInt8 *)url, strlen(url), kCFStringEncodingUTF8, NULL)) { </P><P>Handle dataRef;</P><P>OSType dataRefType;</P><P>error = QTNewDataReferenceFromCFURL(urlRef, 0, &dataRef, &dataRefType); </P><P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>if</FONT></FONT><FONT size=2> (error == noErr) </P><P>error = NewMovieFromDataRef(m, newMovieActive | newMovieAsyncOK, NULL, dataRef, dataRefType); </P><P>CFRelease(urlRef);</P><P>}</P><P></P><P></FONT><FONT color=#008000 size=2><FONT color=#008000 size=2>//SetMovieDrawingCompleteProc(*m, movieDrawingCallWhenChanged, </P></FONT></FONT><FONT size=2><P></FONT><FONT color=#008000 size=2><FONT color=#008000 size=2>// MyMovieDrawingCompleteProc, 0
 /*refCon*/);//,</P></FONT></FONT><FONT size=2><P></FONT><FONT color=#008000 size=2><FONT color=#008000 size=2>/*SetMoviePlayHints(*m, hintsAllowDynamicResize,</P><P>hintsAllowDynamicResize);*/</P></FONT></FONT><FONT size=2><P>Fixed rate = GetMoviePreferredRate(*m); </P><P>error=PrePrerollMovie(*m, 0, GetMoviePreferredRate(*m),</P><P>NewMoviePrePrerollCompleteProc(MyMoviePrePrerollCompleteProc), </FONT><FONT color=#008000 size=2><FONT color=#008000 size=2>//,</P></FONT></FONT><FONT size=2><P>(</FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>void</FONT></FONT><FONT size=2> *)0L);</P><P> </P><P>UpdateMovieGWorld(*m);</P><P></FONT><P><FONT color=#008000 size=2><FONT color=#008000 size=2></P></FONT></FONT><FONT size=2><P></P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>return</FONT></FONT><FONT size=2> </FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>true</FONT></FONT><FONT
 size=2>;</P><P> </P><P> </P><P>}</P><P> </P><P> </P><P> </P><P> </P><P> </P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2><P>void</FONT></FONT><FONT size=2> idle0()</P><P>{</P><P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>if</FONT></FONT><FONT size=2>(!IsMovieDone(theMovie))</P><P>{</P><P>Rect r;</P><P>GetMovieNaturalBoundsRect(theMovie,&r);</P><P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>if</FONT></FONT><FONT size=2> (r.right!=box.right || r.bottom!=box.bottom)</P><P>{</P><P>box.right=r.right;</P><P>box.bottom=r.bottom;</P><P>UpdateMovieGWorld(theMovie);</P><P>}</P><P> </P><P></FONT><P><FONT color=#008000 size=2><FONT color=#008000 size=2></P></FONT></FONT><FONT size=2>MoviesTask (theMovie, 0);</P><P>CGrafPtr port;</P><P>GDHandle dev;</P><P>GetMovieGWorld(theMovie,&port,&dev);</P><P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff
 size=2>char</FONT></FONT><FONT size=2>* pixels=port->portPixMap[0]->baseAddr;</P><P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>int</FONT></FONT><FONT size=2> pixels_width=port->portPixMap[0]->bounds.right;</P><P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>int</FONT></FONT><FONT size=2> pixels_height=port->portPixMap[0]->bounds.bottom;</P><P> </P><P>image = (</FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>unsigned</FONT></FONT><FONT size=2> </FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>char</FONT></FONT><FONT size=2> *) pixels; </P><P>width = pixels_width; </P><P>height = pixels_height; </P><P>userDisplayFunc0(); </P><P> </P><P> </P><P> </P><P>Sleep(1);</P><P>}</P><P>}</P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2><P>void</FONT></FONT><FONT size=2> initTexture()</P><P>{</P><P>loadPPMImage(); </FONT><FONT color=#008000 size=2><FONT
 color=#008000 size=2>// read image first. </P></FONT></FONT><FONT size=2><P>glGenTextures(1, &textureUnit);</P><P>glBindTexture(GL_TEXTURE_2D, textureUnit);</P><P>glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);</P><P>glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);</P><P></FONT><FONT color=#008000 size=2><FONT color=#008000 size=2>//glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE,image); </P></FONT></FONT><FONT size=2><P>glBindTexture(GL_TEXTURE_2D, 0); </P><P>}</P></FONT><FONT color=#008000 size=2><FONT color=#008000 size=2><P>// just leave one main function here then add glvu </P></FONT></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2><P>int</FONT></FONT><FONT size=2> main()</P><P>{</P><P></P><P>OSErr err;</P><P>err = InitializeQTML(0);</FONT><FONT color=#008000 size=2><FONT color=#008000 size=2>//</P></FONT></FONT><FONT size=2><P>err = EnterMovies
 ();</P><P></FONT><FONT color=#008000 size=2><FONT color=#008000 size=2>// check ver</P></FONT></FONT><FONT size=2><P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>long</FONT></FONT><FONT size=2> version;</P><P>OSErr result;</P><P>result = Gestalt(gestaltQuickTime,&version);</P><P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>if</FONT></FONT><FONT size=2> ((result == noErr) && (version >= 0x05020000))</P><P>{</P><P></FONT><FONT color=#008000 size=2><FONT color=#008000 size=2>/* we have version 5.0.2 or later */</P></FONT></FONT><FONT size=2><P>}</P><P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>else</P></FONT></FONT><FONT size=2><P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>return</FONT></FONT><FONT size=2> 0;</P><P></FONT><FONT color=#008000 size=2><FONT color=#008000 size=2>// get the movie from url or file path</P></FONT></FONT><FONT size=2><P></P><P></FONT><FONT
 color=#0000ff size=2><FONT color=#0000ff size=2>const</FONT></FONT><FONT size=2> </FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>char</FONT></FONT><FONT size=2>* url=</FONT><FONT color=#a31515 size=2><FONT color=#a31515 size=2>"rtsp://141.161.16.105:554/igp/isip2of5011206.mov"</FONT></FONT><FONT size=2>;</P><P></P><P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>if</FONT></FONT><FONT size=2> (!LoadMovieFromURL(&theMovie,url))</P><P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>return</FONT></FONT><FONT size=2> 0;</P><P></FONT><FONT color=#008000 size=2><FONT color=#008000 size=2>//SetMovieDrawingCompleteProc(theMovie,movieDrawingCallWhenChanged, MyMovieDrawingCompleteProc, 0/*refCon*/);</P></FONT></FONT><FONT size=2><P></P><P>Rect box2; </P><P>GetMovieNaturalBoundsRect(theMovie,&box);</P><P>GetMovieBox(theMovie, &box2); </P><P>SetMovieRate(theMovie, 0); </P><P></FONT><FONT color=#0000ff size=2><FONT
 color=#0000ff size=2>float</FONT></FONT><FONT size=2> timeScale = GetMovieTimeScale(theMovie); </P><P>DWORD bias=GetTickCount();</P><P> </P><P> </P><P> </P><P> </P><P>glvu.Init(</FONT><FONT color=#a31515 size=2><FONT color=#a31515 size=2>"Quicktime Basic Example"</FONT></FONT><FONT size=2>,</P><P>GLUT_DOUBLE | GLUT_DEPTH | GLUT_RGBA,</P><P>50,50,512,512);</P><P>GLenum erra = glewInit();</P><P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>if</FONT></FONT><FONT size=2> (GLEW_OK != erra)</P><P>{</P><P></FONT><FONT color=#008000 size=2><FONT color=#008000 size=2>/* Problem: glewInit failed, something is seriously wrong. */</P></FONT></FONT><FONT size=2><P></FONT><FONT color=#008000 size=2><FONT color=#008000 size=2>///fprintf(stderr, "Error: %s\n", glewGetErrorString(err));</P></FONT></FONT><FONT size=2><P></FONT><FONT color=#008000 size=2><FONT color=#008000 size=2>//...</P></FONT></FONT><FONT
 size=2><P>}</P><P> </P><P> </P><P></FONT><FONT color=#008000 size=2><FONT color=#008000 size=2>//glEnable(GL_LIGHTING);</P></FONT></FONT><FONT size=2><P></FONT><FONT color=#008000 size=2><FONT color=#008000 size=2>//glEnable(GL_LIGHT0);</P></FONT></FONT><FONT size=2><P></FONT><FONT color=#008000 size=2><FONT color=#008000 size=2>//glEnable(GL_COLOR_MATERIAL);</P></FONT></FONT><FONT size=2><P>glEnable(GL_DEPTH_TEST);</P><P>initTexture(); </P><P>glutDisplayFunc(userDisplayFunc0);</P><P>glutIdleFunc(idle0); </P><P>Vec3f ModelMin(-1,-1,-1), ModelMax(1,1,1); </P><P>Vec3f LookAtCntr( ModelMin+ModelMax ); LookAtCntr*=0.5;</P><P>Vec3f mintoCtr( LookAtCntr - ModelMin );</P><P>Vec3f Up(0,1,0);</P><P>Vec3f Eye(LookAtCntr - 3*(mintoCtr - Up * (mintoCtr * Up) ));</P><P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>float</FONT></FONT><FONT size=2> Yfov = 45;</P><P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff
 size=2>float</FONT></FONT><FONT size=2> Aspect = 1; </FONT><FONT color=#008000 size=2><FONT color=#008000 size=2>// WIDTH OVER HEIGHT</P></FONT></FONT><FONT size=2><P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>float</FONT></FONT><FONT size=2> Near = 0.1f; </FONT><FONT color=#008000 size=2><FONT color=#008000 size=2>// NEAR PLANE DISTANCE RELATIVE TO MODEL DIAGONAL LENGTH</P></FONT></FONT><FONT size=2><P></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>float</FONT></FONT><FONT size=2> Far = 10.0f; </FONT><FONT color=#008000 size=2><FONT color=#008000 size=2>// FAR PLANE DISTANCE (ALSO RELATIVE)</P></FONT></FONT><FONT size=2><P>glvu.SetAllCams(ModelMin,ModelMax, Eye,LookAtCntr,Up, Yfov,Aspect, Near,Far);</P><P></FONT><FONT color=#008000 size=2><FONT color=#008000 size=2>//--------------------------------------------------------------------------</P></FONT></FONT><FONT size=2><P></FONT><FONT color=#008000 size=2><FONT
 color=#008000 size=2>// (3) start the viewer event loop.</P></FONT></FONT><FONT size=2><P></FONT><FONT color=#008000 size=2><FONT color=#008000 size=2>//--------------------------------------------------------------------------</P></FONT></FONT><FONT size=2><P>glutMainLoop();</P><P></FONT><P><FONT color=#008000 size=2><FONT color=#008000 size=2></P></FONT></FONT><FONT size=2></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>return</FONT></FONT><FONT size=2> 0; </P><P>}</P><P> </P><P> </P><P>you can see I use exactly same code, but at here the function:</P><P>error=PrePrerollMovie(*m, 0, GetMoviePreferredRate(*m),</P><P>NewMoviePrePrerollCompleteProc(MyMoviePrePrerollCompleteProc), <FONT color=#008000 size=2><FONT color=#008000 size=2>//,</P></FONT></FONT><FONT size=2><P>(</FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>void</FONT></FONT><FONT size=2> *)0L);</P></FONT><P><< never return -1 error. </P><P><<
 beside, this example cannot make "http" working because of buffer conflict but </P><P><< that is another issue. </P><P> </P><P>I check the qt plugin code, looks nothing can affect the PrePrerollMovie function, </P><P>So, why rtsp cannot work with osg? </P><P>There is some setting in loadURL like: newMovieIdleImportOK and </P><P>newMovieActive | newMovieAsyncOK, but even I change it still doesn't work. </P><P> </P><P>Since I am not familiar with quicktime API, it really confused me. </P><P> </P><P>Thanks for any help. </P><P> </P><P>Hui </P></FONT></FONT></PRE></BLOCKQUOTE></td></tr></table><br>