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;