Mercurial > hg > easaier-soundaccess
changeset 167:2ac52ea3c1c4
video mouse events are in SDL now.
The code is really better now, but there is a display bug when you zoom in, zoom out
author | benoitrigolleau |
---|---|
date | Fri, 16 Nov 2007 15:18:44 +0000 |
parents | 0442224a9553 |
children | 00ab90498dcc |
files | data/fileio/VideoFileReader.cpp data/fileio/VideoFileReader.h data/model/SDLWidget.cpp data/model/SDLWidget.h sv/videoio/SDL_ffmpeg.cpp widgets/svwidgets.vcproj |
diffstat | 6 files changed, 106 insertions(+), 67 deletions(-) [+] |
line wrap: on
line diff
--- a/data/fileio/VideoFileReader.cpp Fri Nov 16 13:17:55 2007 +0000 +++ b/data/fileio/VideoFileReader.cpp Fri Nov 16 15:18:44 2007 +0000 @@ -20,6 +20,7 @@ #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> +#include <cassert> #include <iostream> @@ -32,10 +33,10 @@ #ifdef WIN32 #include <Windows.h> #endif -extern float zoomFivan; long long countFreq; int Videow=320; int Videoh=240; +float zoomFivan=1; VideoFileReader::VideoFileReader(QString path, bool showProgress, CacheMode mode) : CodedAudioFileReader(mode), m_path(path) @@ -47,6 +48,7 @@ m_bitrateNum = 0; m_bitrateDenom = 0; m_cancelled = false; + m_zoomfactor = 1; struct stat stat; if (::stat(path.toLocal8Bit().data(), &stat) == -1 || stat.st_size == 0) { @@ -195,17 +197,24 @@ SDL_ffmpegGetVideoSize(file, &w, &h); MainWindow * MWins=MainWindow::instance(); - MWins->setSDLInitSize(w,h); + SDL_Init(SDL_INIT_VIDEO); - Videow=w=320*zoomFivan; - Videoh=h=240*zoomFivan; + Videow=w;//=320*m_zoomfactor; + Videoh=h;//=240*m_zoomfactor; + + //TODO update the size according to the component size + // this will not work if video size is bigger than window size. + m_width =w; + m_height =h; + + MWins->setSDLInitSize(w,h); // Open the Video device screen = SDL_SetVideoMode(w, h, 0, SDL_DOUBLEBUF|SDL_HWSURFACE|SDL_RESIZABLE|SDL_ASYNCBLIT|SDL_HWACCEL); //SDL_WM_SetCaption("EASAIER Video Player", "EASAIER Video Player"); if(!screen) { - printf("Couldn't open video: %s\n", SDL_GetError()); + fprintf(stderr, "Couldn't open video: %s\n", SDL_GetError()); return false; } return true; @@ -216,6 +225,61 @@ return ((VideoFileReader *)t)->videoPlay(); } +void VideoFileReader::processEvents() +{ + SDL_Event event; + + while (SDL_PollEvent(&event)) + { + float signe = 1; + switch (event.type) + { + case SDL_MOUSEMOTION: + break; + case SDL_MOUSEBUTTONDOWN: + switch(event.button.button){ + case SDL_BUTTON_LEFT : + break; + case SDL_BUTTON_MIDDLE: + break; + case SDL_BUTTON_RIGHT: + break; + default: + break; + } + break; + case SDL_MOUSEBUTTONUP: + + switch(event.button.button){ + case SDL_BUTTON_LEFT : + break; + case SDL_BUTTON_MIDDLE: + break; + case SDL_BUTTON_RIGHT: + break; + case SDL_BUTTON_WHEELDOWN: + signe = -1; + case SDL_BUTTON_WHEELUP: + float f,f2; + f = m_zoomfactor + signe * 0.1; + f2 = f; + if((int)(m_width*f+0.5)%4){ + f = (m_width*f - (int)(m_width*f+0.5)%4)/m_width; + } + m_zoomfactor=f; + + break; + default: + break; + } + break; + + default: + break; + } + } +} + int VideoFileReader::videoPlay() { @@ -243,12 +307,24 @@ film->vs[film->videoStream]->lastTimeStamp=0; while( film->videoThreadActive ) { - if (!(w==(int)(320*zoomFivan))){ - w=320*zoomFivan; - h=240*zoomFivan; - // Open the Video device - screen = SDL_SetVideoMode(w, h, 0, SDL_DOUBLEBUF|SDL_HWSURFACE|SDL_RESIZABLE|SDL_ASYNCBLIT|SDL_HWACCEL); + if (!(w==(int)(Videow*m_zoomfactor))){ + w=Videow*m_zoomfactor; + h=Videoh*m_zoomfactor; + if (w<80 || h<60){ + w=80; + h=60; + m_zoomfactor = 80.0/Videow; + } + // Open the Video device + zoomFivan = m_zoomfactor; + screen = SDL_SetVideoMode(w, h, 0, SDL_DOUBLEBUF|SDL_HWSURFACE|SDL_RESIZABLE|SDL_ASYNCBLIT|SDL_HWACCEL); + MWins->setSDLInitSize(w,h); + m_width =w; + m_height =h; + } + // calls process events function, to take in account the user input + processEvents(); if (MWins->isAudioPlaying()) { if ((SDL_ffmpegGetState(film))||((long)(abs((long)(film->audioTime - (int64_t)(MWins->Get_CurAudioTime()))))>=1000))
--- a/data/fileio/VideoFileReader.h Fri Nov 16 13:17:55 2007 +0000 +++ b/data/fileio/VideoFileReader.h Fri Nov 16 15:18:44 2007 +0000 @@ -42,6 +42,7 @@ virtual QString getError() const { return m_error; } static void getSupportedExtensions(std::set<QString> &extensions); + void VideoFileReader::processEvents(); protected: QString m_path; @@ -55,6 +56,7 @@ bool m_cancelled; int m_width; int m_height; + float m_zoomfactor;
--- a/data/model/SDLWidget.cpp Fri Nov 16 13:17:55 2007 +0000 +++ b/data/model/SDLWidget.cpp Fri Nov 16 15:18:44 2007 +0000 @@ -2,7 +2,7 @@ #include <cstdlib> #include <ctime> #include "SDLWidget.h" -float zoomFivan=1; + @@ -11,7 +11,6 @@ { setAttribute(Qt::WA_PaintOnScreen); setAttribute(Qt::WA_NoSystemBackground); - m_zoomFactor = 1; connect(this,SIGNAL(initSizeChanged()),this,SLOT(updateMinSize())); } @@ -21,54 +20,17 @@ SDL_Quit(); } -void SDLWidget::setZoomFactor( float f ) -{ - int w, h; - - if( f == m_zoomFactor ) - return; - - m_zoomFactor = f; - - w = m_width*m_zoomFactor; - h = m_height*m_zoomFactor; - setMinimumSize( w, h ); - emit(sizeChanged(w,h)); - emit(zoomfactorChanged(f)); - - /*QWidget *p = dynamic_cast<QWidget*>( parent() ); - if( p ){ - resize( p->width(), p->height() ); - }*/ -} - -void SDLWidget::wheelEvent( QWheelEvent *event ) -{ - float f; - - f = m_zoomFactor + 0.001*event->delta(); - - if( f < 32.0/m_width ){ - f = 32.0/m_height; - } - if((int)(m_width*f)%4){ - f = (m_width*f - (int)(m_width*f)%4)/m_width; - } -zoomFivan=f; - setZoomFactor( f ); -} void SDLWidget::setInitSize(int w, int h){ - if(m_width<=0 && m_height<=0){ - m_width = w; - m_height =h; - emit(initSizeChanged()); - } + m_width = w; + m_height =h; + emit(initSizeChanged()); } void SDLWidget::updateMinSize() { - setMinimumSize( m_width*m_zoomFactor,m_height*m_zoomFactor ); + setMinimumSize( m_width,m_height); + setMaximumSize( m_width,m_height); } @@ -77,6 +39,9 @@ { (void)e; + + //QWidget::showEvent(e); + if(!windowInitialized) { // it's here the link between SDL and QT
--- a/data/model/SDLWidget.h Fri Nov 16 13:17:55 2007 +0000 +++ b/data/model/SDLWidget.h Fri Nov 16 15:18:44 2007 +0000 @@ -22,16 +22,13 @@ void setInitSize(int w, int h); signals: - void sizeChanged(int w, int h); - void zoomfactorChanged(float factor); void initSizeChanged(); public slots: - void setZoomFactor( float ); - void wheelEvent( QWheelEvent* ); + protected: - + bool windowInitialized; SDL_Surface *screen; int m_width; @@ -42,8 +39,6 @@ protected slots: void updateMinSize(); -private: - float m_zoomFactor; };
--- a/sv/videoio/SDL_ffmpeg.cpp Fri Nov 16 13:17:55 2007 +0000 +++ b/sv/videoio/SDL_ffmpeg.cpp Fri Nov 16 15:18:44 2007 +0000 @@ -609,8 +609,9 @@ // if new timestamp is from future, we proceed // if(buf->timestamp >= SDL_ffmpegGetPosition(file)) // { - int w=320*zoomFivan; - int h=240*zoomFivan; + int w=(int)(zoomFivan*320+0.5); + int h=(int)(zoomFivan*240+0.5); + 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;
--- a/widgets/svwidgets.vcproj Fri Nov 16 13:17:55 2007 +0000 +++ b/widgets/svwidgets.vcproj Fri Nov 16 15:18:44 2007 +0000 @@ -590,7 +590,7 @@ <Tool Name="VCCustomBuildTool" Description="MOC $(InputFileName)" - CommandLine="$(QTDIR)\bin\moc.exe -DNDEBUG -DBUILD_RELEASE -DUSE_VC -D_WINDOWS -DUNICODE -DQT_LARGEFILE_SUPPORT -DWIN32 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DHAVE_BZ2 -DHAVE_PORTAUDIO -DHAVE_PORTAUDIO_V18 -DHAVE_OGGZ -DHAVE_FISHSOUND -DHAVE_FFTW3F -DHAVE_VAMP -DHAVE_VAMP_HOSTSDK -DHAVE_SNDFILE -DHAVE_SAMPLERATE -DQT_THREAD_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I "$(QTDIR)\include\QtCore" -I "$(QTDIR)\include\QtCore" -I "$(QTDIR)\include\QtGui" -I "$(QTDIR)\include\QtGui" -I "$(QTDIR)\include\QtXml" -I "$(QTDIR)\include\QtXml" -I "$(QTDIR)\include" -I "." -I ".." -I "$(QTDIR)\include\ActiveQt" -I "tmp_moc" -I "." -I"$(QTDIR)\mkspecs\win32-msvc2005" $(InputPath) -o tmp_moc\moc_$(InputName).cpp" + CommandLine="$(QTDIR)\bin\moc.exe -DNDEBUG -DBUILD_RELEASE -DUSE_VC -D_WINDOWS -DUNICODE -DQT_LARGEFILE_SUPPORT -DWIN32 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DHAVE_BZ2 -DHAVE_PORTAUDIO -DHAVE_PORTAUDIO_V18 -DHAVE_OGGZ -DHAVE_FISHSOUND -DHAVE_FFTW3F -DHAVE_VAMP -DHAVE_VAMP_HOSTSDK -DHAVE_SNDFILE -DHAVE_SAMPLERATE -DQT_THREAD_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I "$(QTDIR)\include\QtCore" -I "$(QTDIR)\include\QtCore" -I "$(QTDIR)\include\QtGui" -I "$(QTDIR)\include\QtGui" -I "$(QTDIR)\include\QtXml" -I "$(QTDIR)\include\QtXml" -I "$(QTDIR)\include" -I "." -I ".." -I "$(QTDIR)\include\ActiveQt" -I "tmp_moc" -I "." -I"$(QTDIR)\mkspecs\win32-msvc2005" $(InputPath) -o tmp_moc\moc_$(InputName).cpp
" AdditionalDependencies="$(QTDIR)\bin\moc.exe" Outputs="tmp_moc\moc_$(InputName).cpp" /> @@ -601,7 +601,7 @@ <Tool Name="VCCustomBuildTool" Description="MOC $(InputFileName)" - CommandLine="$(QTDIR)\bin\moc.exe -DBUILD_DEBUG -DUSE_VC -D_WINDOWS -DUNICODE -DQT_LARGEFILE_SUPPORT -DWIN32 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DHAVE_BZ2 -DHAVE_PORTAUDIO -DHAVE_PORTAUDIO_V18 -DHAVE_OGGZ -DHAVE_FISHSOUND -DHAVE_FFTW3F -DHAVE_VAMP -DHAVE_VAMP_HOSTSDK -DHAVE_SNDFILE -DHAVE_SAMPLERATE -DQT_THREAD_SUPPORT -DQT_DLL -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I "$(QTDIR)\include\QtCore" -I "$(QTDIR)\include\QtCore" -I "$(QTDIR)\include\QtGui" -I "$(QTDIR)\include\QtGui" -I "$(QTDIR)\include\QtXml" -I "$(QTDIR)\include\QtXml" -I "$(QTDIR)\include" -I "." -I ".." -I "$(QTDIR)\include\ActiveQt" -I "tmp_moc" -I "." -I"$(QTDIR)\mkspecs\win32-msvc2005" $(InputPath) -o tmp_moc\moc_$(InputName).cpp" + CommandLine="$(QTDIR)\bin\moc.exe -DBUILD_DEBUG -DUSE_VC -D_WINDOWS -DUNICODE -DQT_LARGEFILE_SUPPORT -DWIN32 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DHAVE_BZ2 -DHAVE_PORTAUDIO -DHAVE_PORTAUDIO_V18 -DHAVE_OGGZ -DHAVE_FISHSOUND -DHAVE_FFTW3F -DHAVE_VAMP -DHAVE_VAMP_HOSTSDK -DHAVE_SNDFILE -DHAVE_SAMPLERATE -DQT_THREAD_SUPPORT -DQT_DLL -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I "$(QTDIR)\include\QtCore" -I "$(QTDIR)\include\QtCore" -I "$(QTDIR)\include\QtGui" -I "$(QTDIR)\include\QtGui" -I "$(QTDIR)\include\QtXml" -I "$(QTDIR)\include\QtXml" -I "$(QTDIR)\include" -I "." -I ".." -I "$(QTDIR)\include\ActiveQt" -I "tmp_moc" -I "." -I"$(QTDIR)\mkspecs\win32-msvc2005" $(InputPath) -o tmp_moc\moc_$(InputName).cpp
" AdditionalDependencies="$(QTDIR)\bin\moc.exe" Outputs="tmp_moc\moc_$(InputName).cpp" /> @@ -1162,7 +1162,7 @@ <Tool Name="VCCustomBuildTool" Description="MOC $(InputFileName)" - CommandLine="$(QTDIR)\bin\moc.exe -DNDEBUG -DBUILD_RELEASE -DUSE_VC -D_WINDOWS -DUNICODE -DQT_LARGEFILE_SUPPORT -DWIN32 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DHAVE_BZ2 -DHAVE_PORTAUDIO -DHAVE_PORTAUDIO_V18 -DHAVE_OGGZ -DHAVE_FISHSOUND -DHAVE_FFTW3F -DHAVE_VAMP -DHAVE_VAMP_HOSTSDK -DHAVE_SNDFILE -DHAVE_SAMPLERATE -DQT_THREAD_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I "$(QTDIR)\include\QtCore" -I "$(QTDIR)\include\QtCore" -I "$(QTDIR)\include\QtGui" -I "$(QTDIR)\include\QtGui" -I "$(QTDIR)\include\QtXml" -I "$(QTDIR)\include\QtXml" -I "$(QTDIR)\include" -I "." -I ".." -I "$(QTDIR)\include\ActiveQt" -I "tmp_moc" -I "." -I"$(QTDIR)\mkspecs\win32-msvc2005" $(InputPath) -o tmp_moc\moc_$(InputName).cpp" + CommandLine="$(QTDIR)\bin\moc.exe -DNDEBUG -DBUILD_RELEASE -DUSE_VC -D_WINDOWS -DUNICODE -DQT_LARGEFILE_SUPPORT -DWIN32 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DHAVE_BZ2 -DHAVE_PORTAUDIO -DHAVE_PORTAUDIO_V18 -DHAVE_OGGZ -DHAVE_FISHSOUND -DHAVE_FFTW3F -DHAVE_VAMP -DHAVE_VAMP_HOSTSDK -DHAVE_SNDFILE -DHAVE_SAMPLERATE -DQT_THREAD_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I "$(QTDIR)\include\QtCore" -I "$(QTDIR)\include\QtCore" -I "$(QTDIR)\include\QtGui" -I "$(QTDIR)\include\QtGui" -I "$(QTDIR)\include\QtXml" -I "$(QTDIR)\include\QtXml" -I "$(QTDIR)\include" -I "." -I ".." -I "$(QTDIR)\include\ActiveQt" -I "tmp_moc" -I "." -I"$(QTDIR)\mkspecs\win32-msvc2005" $(InputPath) -o tmp_moc\moc_$(InputName).cpp
" AdditionalDependencies="$(QTDIR)\bin\moc.exe" Outputs="tmp_moc\moc_$(InputName).cpp" /> @@ -1173,7 +1173,7 @@ <Tool Name="VCCustomBuildTool" Description="MOC $(InputFileName)" - CommandLine="$(QTDIR)\bin\moc.exe -DBUILD_DEBUG -DUSE_VC -D_WINDOWS -DUNICODE -DQT_LARGEFILE_SUPPORT -DWIN32 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DHAVE_BZ2 -DHAVE_PORTAUDIO -DHAVE_PORTAUDIO_V18 -DHAVE_OGGZ -DHAVE_FISHSOUND -DHAVE_FFTW3F -DHAVE_VAMP -DHAVE_VAMP_HOSTSDK -DHAVE_SNDFILE -DHAVE_SAMPLERATE -DQT_THREAD_SUPPORT -DQT_DLL -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I "$(QTDIR)\include\QtCore" -I "$(QTDIR)\include\QtCore" -I "$(QTDIR)\include\QtGui" -I "$(QTDIR)\include\QtGui" -I "$(QTDIR)\include\QtXml" -I "$(QTDIR)\include\QtXml" -I "$(QTDIR)\include" -I "." -I ".." -I "$(QTDIR)\include\ActiveQt" -I "tmp_moc" -I "." -I"$(QTDIR)\mkspecs\win32-msvc2005" $(InputPath) -o tmp_moc\moc_$(InputName).cpp" + CommandLine="$(QTDIR)\bin\moc.exe -DBUILD_DEBUG -DUSE_VC -D_WINDOWS -DUNICODE -DQT_LARGEFILE_SUPPORT -DWIN32 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DHAVE_BZ2 -DHAVE_PORTAUDIO -DHAVE_PORTAUDIO_V18 -DHAVE_OGGZ -DHAVE_FISHSOUND -DHAVE_FFTW3F -DHAVE_VAMP -DHAVE_VAMP_HOSTSDK -DHAVE_SNDFILE -DHAVE_SAMPLERATE -DQT_THREAD_SUPPORT -DQT_DLL -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I "$(QTDIR)\include\QtCore" -I "$(QTDIR)\include\QtCore" -I "$(QTDIR)\include\QtGui" -I "$(QTDIR)\include\QtGui" -I "$(QTDIR)\include\QtXml" -I "$(QTDIR)\include\QtXml" -I "$(QTDIR)\include" -I "." -I ".." -I "$(QTDIR)\include\ActiveQt" -I "tmp_moc" -I "." -I"$(QTDIR)\mkspecs\win32-msvc2005" $(InputPath) -o tmp_moc\moc_$(InputName).cpp
" AdditionalDependencies="$(QTDIR)\bin\moc.exe" Outputs="tmp_moc\moc_$(InputName).cpp" />