Mercurial > hg > easaier-soundaccess
diff sv/videoio/SDL_ffmpeg.cpp @ 150:c946c19e6329
(none)
author | ivand_qmul |
---|---|
date | Wed, 14 Nov 2007 15:11:46 +0000 |
parents | 3b2b790e47e5 |
children | 2ac52ea3c1c4 |
line wrap: on
line diff
--- a/sv/videoio/SDL_ffmpeg.cpp Wed Nov 14 10:41:46 2007 +0000 +++ b/sv/videoio/SDL_ffmpeg.cpp Wed Nov 14 15:11:46 2007 +0000 @@ -46,7 +46,7 @@ //const int SDL_FFMPEG_MAX_BUFFERED_FRAMES = 25; //const int SDL_FFMPEG_MAX_BUFFERED_SAMPLES = 512 * 512; - +extern float zoomFivan; int FFMPEG_init_was_called = 0; FILE *pFile, *tFile; int64_t Time,Time1; @@ -609,10 +609,16 @@ // if new timestamp is from future, we proceed // if(buf->timestamp >= SDL_ffmpegGetPosition(file)) // { - if (img_convert_ctx == NULL) { + int w=320*zoomFivan; + int h=240*zoomFivan; + if ((w>file->vs[file->videoStream]->width)||(h>file->vs[file->videoStream]->height)){ + w=file->vs[file->videoStream]->width; + h=file->vs[file->videoStream]->height; + } + if (img_convert_ctx == NULL) { img_convert_ctx = sws_getContext(file->vs[file->videoStream]->width, file->vs[file->videoStream]->height, ((AVCodecContext*)file->vs[file->videoStream]->_ffmpeg)->pix_fmt, - file->vs[file->videoStream]->width, file->vs[file->videoStream]->height, + w,h, file->vs[file->videoStream]->pixFmt, sws_flags, NULL, NULL, NULL); if (img_convert_ctx == NULL) { @@ -621,9 +627,11 @@ } } + ((AVPicture*)inFrameRGB)->linesize[0]=(int)w*3; sws_scale(img_convert_ctx, ((AVPicture*)inFrame)->data, ((AVPicture*)inFrame)->linesize, 0, file->vs[file->videoStream]->height, ((AVPicture*)inFrameRGB)->data, ((AVPicture*)inFrameRGB)->linesize); - + sws_freeContext(img_convert_ctx); + img_convert_ctx=NULL; // we convert whatever type of data we got to RGB24 /* img_convert((AVPicture*)inFrameRGB, file->vs[file->videoStream]->pixFmt, @@ -634,13 +642,13 @@ */ // allocate image room buf->img = SDL_CreateRGBSurface(SDL_SWSURFACE, - file->vs[file->videoStream]->width, - file->vs[file->videoStream]->height, + w, + h, 24, 0x0000FF, 0x00FF00, 0xFF0000, 0); // copy image data to image room memcpy(buf->img->pixels, inFrameRGB->data[0], - file->vs[file->videoStream]->width * file->vs[file->videoStream]->height * 3); + w*h* 3); file->timebase=buf->timestamp-file->vs[file->videoStream]->lastTimeStamp; // we write the lastTimestamp we got file->vs[file->videoStream]->lastTimeStamp = buf->timestamp;