AVIkit was used in a demo MOD from the creator of the library, but AFAIK he didn't release the source code. I tried to add it some time ago, but finally dropped the idea.
2010/3/18 kevin bowen <[email protected]> > Just wondering if anyone has implemented AVIkit and is willing to part with > the code :) or if AVIkit has been used in any open source mods (rebirth and > arrangemod have the lib's included but don't actually call the functions). > I'd do it myself but it would literally take years (I'm a moron), it'd be > easier just to ask for it here just incase any devs have a dead hl1 mod > with > the code already laid out :) > > I've scoured the internet and all I could find was this on a russian HL > coding site which seems to use the code but I'm not sure if it's an entire > replacement for avikit.cpp or if it fits in there somehow (again I'm a > moron > when it comes to this) > > > > /////////////////////////////////////////////////////////////// > // Only setup the avi if it's actually a video screen > > if (isVideoScreen && replacement[0] != '\0') { > char *error_msg = NULL; > long xres = 0; > long yres = 0; > float duration = 0.0f; > > movie = new AVIKit( absolute_replacement, false ); > if (movie->getError( &error_msg ) != AVIKIT_NOERROR) { > gEngfuncs.Con_DPrintf( "SetupAvisFromEntities: Error opening %s: > %s\n", absolute_replacement, error_msg ); > delete movie; > break; > } > movie->getVideoInfo( &xres, &yres, &duration ); > gEngfuncs.Con_DPrintf( "SetupAvisFromEntities: Opened %s: %ld x %ld (%f > secs)\n", replacement, xres, yres, duration ); > gEngfuncs.Con_DPrintf( "Video screen at (%d %d %d), with extents (%d %d > %d)\n", > (int)origin[0], (int)origin[1], (int)origin[2], > (int)extents[0], (int)extents[1], (int)extents[2] ); > > // Create the OpenGL texture > GLuint texnum; > glGenTextures( 1, &texnum ); > > if (!AddComplexAvi( movie, texnum, origin, angles, extents, &error_msg > )) { > gEngfuncs.Con_DPrintf( "SetupAvisFromEntities: Error adding movie: > %s\n", error_msg ); > delete movie; > } > } else if (isVideoScreen) { > gEngfuncs.Con_DPrintf( "SetupAvisFromEntities: Video screen didn't > have a movie specified!\n" ); > } > > //Setting up the texture: > > movie->getVideoInfo( &data->width, &data->height, &data->total_length ); > glEnable( GL_TEXTURE_2D ); > glBindTexture( GL_TEXTURE_2D, data->texture_index ); > glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); > glTexImage2D( GL_TEXTURE_2D, 0, 3, data->width, data->height, 0, GL_RGB, > GL_UNSIGNED_BYTE, tmpbuffer ); > > //Updating the texture each frame: > > // Calculate the frame needed > int frame = i->movie->getVideoFrameNumber( i->current_time ); > > // If the frame has changed, re-upload it > if (frame != i->current_frame) { > i->current_frame = frame; > i->movie->getVideoFrame( (char*)i->buffer, frame ); > > // If the video isn't a power of two on all sides, we need to resize > it... <img src="images/smilies/frown.gif" border="0" alt=""> > if (i->resized_buffer) { > gluScaleImage( GL_RGB, i->realwidth, i->realheight, > GL_UNSIGNED_BYTE, i->buffer, i->width, i->height, GL_UNSIGNED_BYTE, > i->resized_buffer ); > // ... and update the OpenGL texture ... > glEnable(GL_TEXTURE_2D); > glBindTexture( GL_TEXTURE_2D, i->texture_index ); > glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, i->width, i->height, > GL_RGB, GL_UNSIGNED_BYTE, i->resized_buffer ); > } else { > // ... and update the OpenGL texture ... > glEnable(GL_TEXTURE_2D); > glBindTexture( GL_TEXTURE_2D, i->texture_index ); > glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, i->width, > i->height, GL_RGB, GL_UNSIGNED_BYTE, i->buffer ); > } > } > > // If this is a complex movie, draw the polygons > if (i->texture_type == AVI_TEXTURE_USER) { > > glEnable( GL_TEXTURE_2D ); > glBindTexture( GL_TEXTURE_2D, i->texture_index ); > glDisable( GL_BLEND ); > glBegin( GL_QUADS ); > > // Top left > glColor3f( 1.0f, 1.0f, 1.0f ); > glTexCoord2f( 0.0f, 1.0f ); > glVertex3f( i->vertexes[0].x, i->vertexes[0].y, i->vertexes[0].z > ); > > // Bottom left > glColor3f( 1.0f, 1.0f, 1.0f ); > glTexCoord2f( 0.0f, 0.0f ); > glVertex3f( i->vertexes[1].x, i->vertexes[1].y, i->vertexes[1].z > ); > > // Bottom right > glColor3f( 1.0f, 1.0f, 1.0f ); > glTexCoord2f( 1.0f, 0.0f ); > glVertex3f( i->vertexes[2].x, i->vertexes[2].y, i->vertexes[2].z > ); > > // Top right > glColor3f( 1.0f, 1.0f, 1.0f ); > glTexCoord2f( 1.0f, 1.0f ); > glVertex3f( i->vertexes[3].x, i->vertexes[3].y, i->vertexes[3].z > ); > > glEnd(); > } > /////////////////////////////////////////////////////////////// > > > Regardless of this, the AVIkit mod also included fmod.dll, which I'm > guessing is used for sound and I'm not sure how it pulls this from the AVI. > > Kevin > _______________________________________________ > To unsubscribe, edit your list preferences, or view the list archives, > please visit: > http://list.valvesoftware.com/mailman/listinfo/hlcoders > > _______________________________________________ To unsubscribe, edit your list preferences, or view the list archives, please visit: http://list.valvesoftware.com/mailman/listinfo/hlcoders

