[SDL] To display raw image data !
V.Rajashekar
rvenkata at engmail.uwaterloo.ca
Mon Oct 21 09:49:01 PDT 2002
Hi,
I am new to SDL, I am using SDL_CreateRGBSurfaceFrom to display raw
image ( each pixel is in the format unsigned char ) captured by the
Camera connected to my PC. When I run this, I only get a black screen.
If I load a bmp image using SDL_LoadBMP, I get the image displayed
correctly. Any help in this regard, would be highly appreciated.
And suppose if I would like to extend this from static image to video,
how do I go about ?
Thanks,
Raj
This is the code that I am using !
/* Initialize SDL */
if ( SDL_Init(SDL_INIT_VIDEO) < 0 ) {
ComplainAndExit();
}
atexit(SDL_Quit);
imagebmp =
SDL_CreateRGBSurfaceFrom(camera1.m_pData,640,480,8,640,0,0,0,0);
if ( imagebmp == NULL ) {
ComplainAndExit();
}
/* Set the video mode (640x480 at native depth) */
screen = SDL_SetVideoMode(640, 480, 0,
SDL_HWSURFACE|SDL_FULLSCREEN);
if ( screen == NULL ) {
ComplainAndExit();
}
/* Set the video colormap */
if ( imagebmp->format->palette != NULL ) {
SDL_SetColors(screen,
imagebmp->format->palette->colors, 0,
imagebmp->format->palette->ncolors);
}
/* Convert the image to the video format (maps colors) */
image = SDL_DisplayFormat(imagebmp);
SDL_FreeSurface(imagebmp);
if ( image == NULL ) {
ComplainAndExit();
}
/* Draw bands of color on the raw surface */
if ( SDL_MUSTLOCK(screen) ) {
if ( SDL_LockSurface(screen) < 0 )
ComplainAndExit();
}
/*
buffer=(Uint8 *)screen->pixels;
for ( i=0; i<screen->h; ++i ) {
memset(buffer,(i*255)/screen->h,
screen->w*screen->format->BytesPerPixel);
buffer += screen->pitch;
}
*/
if ( SDL_MUSTLOCK(screen) ) {
SDL_UnlockSurface(screen);
}
/* Blit the image to the center of the screen */
dstrect.x = (screen->w-image->w)/2;
dstrect.y = (screen->h-image->h)/2;
dstrect.w = image->w;
dstrect.h = image->h;
if ( SDL_BlitSurface(image, NULL, screen, &dstrect) < 0 ) {
SDL_FreeSurface(image);
ComplainAndExit();
}
SDL_FreeSurface(image);
/* Update the screen */
SDL_UpdateRects(screen, 1, &dstrect);
SDL_Delay(5000); /* Wait 5 seconds */
exit(0);
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.libsdl.org/pipermail/sdl-libsdl.org/attachments/20021021/242f628a/attachment.htm>
More information about the SDL
mailing list