Mercurial > hg > easaier-soundaccess
comparison sv/videoio/SDL_ffmpeg.cpp @ 150:c946c19e6329
(none)
author | ivand_qmul |
---|---|
date | Wed, 14 Nov 2007 15:11:46 +0000 |
parents | 3b2b790e47e5 |
children | 2ac52ea3c1c4 |
comparison
equal
deleted
inserted
replaced
149:735e67e91508 | 150:c946c19e6329 |
---|---|
44 #include "../../sv/main/MainWindow.h" | 44 #include "../../sv/main/MainWindow.h" |
45 #include <time.h> | 45 #include <time.h> |
46 | 46 |
47 //const int SDL_FFMPEG_MAX_BUFFERED_FRAMES = 25; | 47 //const int SDL_FFMPEG_MAX_BUFFERED_FRAMES = 25; |
48 //const int SDL_FFMPEG_MAX_BUFFERED_SAMPLES = 512 * 512; | 48 //const int SDL_FFMPEG_MAX_BUFFERED_SAMPLES = 512 * 512; |
49 | 49 extern float zoomFivan; |
50 int FFMPEG_init_was_called = 0; | 50 int FFMPEG_init_was_called = 0; |
51 FILE *pFile, *tFile; | 51 FILE *pFile, *tFile; |
52 int64_t Time,Time1; | 52 int64_t Time,Time1; |
53 int64_t realt=0; | 53 int64_t realt=0; |
54 | 54 |
607 } | 607 } |
608 | 608 |
609 // if new timestamp is from future, we proceed | 609 // if new timestamp is from future, we proceed |
610 // if(buf->timestamp >= SDL_ffmpegGetPosition(file)) | 610 // if(buf->timestamp >= SDL_ffmpegGetPosition(file)) |
611 // { | 611 // { |
612 if (img_convert_ctx == NULL) { | 612 int w=320*zoomFivan; |
613 int h=240*zoomFivan; | |
614 if ((w>file->vs[file->videoStream]->width)||(h>file->vs[file->videoStream]->height)){ | |
615 w=file->vs[file->videoStream]->width; | |
616 h=file->vs[file->videoStream]->height; | |
617 } | |
618 if (img_convert_ctx == NULL) { | |
613 img_convert_ctx = sws_getContext(file->vs[file->videoStream]->width, file->vs[file->videoStream]->height, | 619 img_convert_ctx = sws_getContext(file->vs[file->videoStream]->width, file->vs[file->videoStream]->height, |
614 ((AVCodecContext*)file->vs[file->videoStream]->_ffmpeg)->pix_fmt, | 620 ((AVCodecContext*)file->vs[file->videoStream]->_ffmpeg)->pix_fmt, |
615 file->vs[file->videoStream]->width, file->vs[file->videoStream]->height, | 621 w,h, |
616 file->vs[file->videoStream]->pixFmt, | 622 file->vs[file->videoStream]->pixFmt, |
617 sws_flags, NULL, NULL, NULL); | 623 sws_flags, NULL, NULL, NULL); |
618 if (img_convert_ctx == NULL) { | 624 if (img_convert_ctx == NULL) { |
619 fprintf(stderr, "Cannot initialize the conversion context\n"); | 625 fprintf(stderr, "Cannot initialize the conversion context\n"); |
620 exit(1); | 626 exit(1); |
621 } | 627 } |
622 } | 628 } |
623 | 629 |
630 ((AVPicture*)inFrameRGB)->linesize[0]=(int)w*3; | |
624 sws_scale(img_convert_ctx, ((AVPicture*)inFrame)->data, ((AVPicture*)inFrame)->linesize, | 631 sws_scale(img_convert_ctx, ((AVPicture*)inFrame)->data, ((AVPicture*)inFrame)->linesize, |
625 0, file->vs[file->videoStream]->height, ((AVPicture*)inFrameRGB)->data, ((AVPicture*)inFrameRGB)->linesize); | 632 0, file->vs[file->videoStream]->height, ((AVPicture*)inFrameRGB)->data, ((AVPicture*)inFrameRGB)->linesize); |
626 | 633 sws_freeContext(img_convert_ctx); |
634 img_convert_ctx=NULL; | |
627 // we convert whatever type of data we got to RGB24 | 635 // we convert whatever type of data we got to RGB24 |
628 /* img_convert((AVPicture*)inFrameRGB, | 636 /* img_convert((AVPicture*)inFrameRGB, |
629 file->vs[file->videoStream]->pixFmt, | 637 file->vs[file->videoStream]->pixFmt, |
630 (AVPicture*)inFrame, | 638 (AVPicture*)inFrame, |
631 ((AVCodecContext*)file->vs[file->videoStream]->_ffmpeg)->pix_fmt, | 639 ((AVCodecContext*)file->vs[file->videoStream]->_ffmpeg)->pix_fmt, |
632 file->vs[file->videoStream]->width, | 640 file->vs[file->videoStream]->width, |
633 file->vs[file->videoStream]->height); | 641 file->vs[file->videoStream]->height); |
634 */ | 642 */ |
635 // allocate image room | 643 // allocate image room |
636 buf->img = SDL_CreateRGBSurface(SDL_SWSURFACE, | 644 buf->img = SDL_CreateRGBSurface(SDL_SWSURFACE, |
637 file->vs[file->videoStream]->width, | 645 w, |
638 file->vs[file->videoStream]->height, | 646 h, |
639 24, 0x0000FF, 0x00FF00, 0xFF0000, 0); | 647 24, 0x0000FF, 0x00FF00, 0xFF0000, 0); |
640 | 648 |
641 // copy image data to image room | 649 // copy image data to image room |
642 memcpy(buf->img->pixels, inFrameRGB->data[0], | 650 memcpy(buf->img->pixels, inFrameRGB->data[0], |
643 file->vs[file->videoStream]->width * file->vs[file->videoStream]->height * 3); | 651 w*h* 3); |
644 file->timebase=buf->timestamp-file->vs[file->videoStream]->lastTimeStamp; | 652 file->timebase=buf->timestamp-file->vs[file->videoStream]->lastTimeStamp; |
645 // we write the lastTimestamp we got | 653 // we write the lastTimestamp we got |
646 file->vs[file->videoStream]->lastTimeStamp = buf->timestamp; | 654 file->vs[file->videoStream]->lastTimeStamp = buf->timestamp; |
647 | 655 |
648 //int i; | 656 //int i; |