diff --git a/linphone/coreapi/private.h b/linphone/coreapi/private.h index 7319e9b5aedb0718a55f28cfc5a7a6d9f094a1e6..1e641d7f26ed36cd15b43969eee7fab1f9638911 100644 --- a/linphone/coreapi/private.h +++ b/linphone/coreapi/private.h @@ -33,7 +33,7 @@ #endif #ifndef LINPHONE_VERSION -#define LINPHONE_VERSION "3.0.0" +#define LINPHONE_VERSION "3.1.1" #endif #ifndef LIBLINPHONE_VERSION diff --git a/linphone/gtk-glade/linphone.h b/linphone/gtk-glade/linphone.h index add59422328be6c35d4049da87c7bb51f693b50a..51612007bee16d119e97fe7723e980ee1e1f99c6 100644 --- a/linphone/gtk-glade/linphone.h +++ b/linphone/gtk-glade/linphone.h @@ -23,7 +23,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #define PACKAGE_DATA_DIR "./" #ifndef LINPHONE_VERSION -#define LINPHONE_VERSION "3.1.0-20090402" +#define LINPHONE_VERSION "3.1.1" #endif #endif diff --git a/linphone/gtk-glade/linphone.iss b/linphone/gtk-glade/linphone.iss index e213aabcc3d6c770a728099b977524d0d539ef3b..641aa6825a372526f737d1535d6f6cbe3ceddfba 100755 --- a/linphone/gtk-glade/linphone.iss +++ b/linphone/gtk-glade/linphone.iss @@ -3,7 +3,7 @@ [Setup] AppName=Linphone -AppVerName=Linphone version 3.1.0 +AppVerName=Linphone version 3.1.1 AppPublisher=linphone.org AppPublisherURL=http://www.linphone.org AppSupportURL=http://www.linphone.org diff --git a/linphone/gtk-glade/main.c b/linphone/gtk-glade/main.c index 73897050fca023a8d4e2ad6d557cd4d94ba3efdf..ac19a2d0310cc3233754d7a54f225186036954a8 100644 --- a/linphone/gtk-glade/main.c +++ b/linphone/gtk-glade/main.c @@ -908,6 +908,16 @@ int main(int argc, char *argv[]){ g_warning("This instance is going to exit now."); return 0; } +#ifdef WIN32 + /*workaround for windows: sometimes LANG is defined to an integer value, not understood by gtk */ + if ((lang=getenv("LANG"))!=NULL){ + if (atoi(lang)!=0){ + char tmp[128]; + snprintf(tmp,sizeof(tmp),"LANG=",lang); + _putenv(tmp); + } + } +#endif if ((lang=linphone_gtk_get_lang(config_file))!=NULL && lang[0]!='\0'){ #ifdef WIN32 diff --git a/linphone/mediastreamer2/build/win32native/mediastreamer2.dev b/linphone/mediastreamer2/build/win32native/mediastreamer2.dev index fa95fe0f576536d654ef9aa116b44ce0d677ab01..dacd48784728d1b77c7be754d4ea22cadb52a4af 100755 --- a/linphone/mediastreamer2/build/win32native/mediastreamer2.dev +++ b/linphone/mediastreamer2/build/win32native/mediastreamer2.dev @@ -619,15 +619,25 @@ Compile=0 Link=0 Priority=1000 OverrideBuildCmd=0 -BuildCmd= $(CPP) -c winvideods.c -o "Default Profile/winvideods.o" $(CXXFLAGS) +BuildCmd=$(CPP) -c winvideods.c -o "Default Profile/winvideods.o" $(CXXFLAGS) + +[Unit58] +FileName=..\..\src\void.c +CompileCpp=0 +Folder=mediastreamer2 +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= $(CC) -c void.c -o "Default Profile/void.o" $(CFLAGS) [Unit57] -FileName=..\..\src\mingw-dshow.h -CompileCpp=1 -Folder= +FileName=..\..\src\void.c +CompileCpp=0 +Folder=mediastreamer2 Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 -BuildCmd= +BuildCmd= $(CC) -c void.c -o "Default Profile/void.o" $(CFLAGS) diff --git a/linphone/mediastreamer2/plugins/msdscap/libmsdscap.dev b/linphone/mediastreamer2/plugins/msdscap/libmsdscap.dev index a54e05e6703739b13bb7b89d6a2497a843bd00c4..4c6c28cf3e83d012f00550cf145f966791129b16 100755 --- a/linphone/mediastreamer2/plugins/msdscap/libmsdscap.dev +++ b/linphone/mediastreamer2/plugins/msdscap/libmsdscap.dev @@ -77,8 +77,8 @@ Includes=../../include;../../../oRTP/include Libs=../../build/win32native/;../../../oRTP/build/win32native ResourceIncludes= MakeIncludes= -Compiler=-DBUILDING_DLL=1_@@_-DORTP_INET6_@@_ -CppCompiler=-DBUILDING_DLL=1_@@_ +Compiler=_@@_ +CppCompiler=-DBUILDING_DLL=1_@@_-DORTP_INET6_@@_-ggdb -02_@@_-Wall_@@_ Linker=--no-export-all-symbols_@@_--add-stdcall-alias_@@_-lole32_@@_-loleaut32_@@_-lwinmm_@@_-luuid_@@_-lmediastreamer2_@@_-lortp_@@_ PreprocDefines= CompilerSettings=0000000001001000000000 diff --git a/linphone/mediastreamer2/plugins/msdscap/mdscap.cc b/linphone/mediastreamer2/plugins/msdscap/mdscap.cc index 99ec9a520cc0e0738c5336504080d4b3feb80bce..acbcf22f4e17785ef1f1012b0c8e5d29ce97ba8f 100755 --- a/linphone/mediastreamer2/plugins/msdscap/mdscap.cc +++ b/linphone/mediastreamer2/plugins/msdscap/mdscap.cc @@ -502,6 +502,7 @@ public: _frame_count=0; _pixfmt=MS_YUV420P; _ready=false; + m_refCount=1; } virtual ~DSCapture(){ if (_ready) stopAndClean(); @@ -552,6 +553,7 @@ private: float _start_time; int _frame_count; MSPixFmt _pixfmt; + ComPtr< IGraphBuilder > _graphBuilder; ComPtr< IBaseFilter > _source; ComPtr< IBaseFilter > _nullRenderer; ComPtr< IBaseFilter > _grabberBase; @@ -746,10 +748,8 @@ int DSCapture::createDshowGraph(){ createDevEnum.reset(); enumMoniker->Reset(); - int index = 0; ULONG fetched = 0; - ComPtr< IGraphBuilder > graphBuilder; - graphBuilder.coCreateInstance( CLSID_FilterGraph, IID_IGraphBuilder, + _graphBuilder.coCreateInstance( CLSID_FilterGraph, IID_IGraphBuilder, "Could not create graph builder " "interface" ); ComPtr< IMoniker > moniker; @@ -767,7 +767,7 @@ int DSCapture::createDshowGraph(){ } moniker.reset(); enumMoniker.reset(); - if (graphBuilder->AddFilter( _source.get(), L"Source" )!=S_OK){ + if (_graphBuilder->AddFilter( _source.get(), L"Source" )!=S_OK){ ms_error("Error adding camera source to filter graph" ); return -1; } @@ -798,7 +798,7 @@ int DSCapture::createDshowGraph(){ ms_error("Error creating sample grabber" ); return -1; } - if (graphBuilder->AddFilter( _grabberBase.get(), L"Grabber" )!=S_OK){ + if (_graphBuilder->AddFilter( _grabberBase.get(), L"Grabber" )!=S_OK){ ms_error("Error adding sample grabber to filter graph"); return -1; } @@ -836,32 +836,33 @@ int DSCapture::createDshowGraph(){ ms_error("Error creating Null Renderer" ); return -1; } - if (graphBuilder->AddFilter( _nullRenderer.get(), L"Sink" )!=S_OK){ + if (_graphBuilder->AddFilter( _nullRenderer.get(), L"Sink" )!=S_OK){ ms_error("Error adding null renderer to filter graph" ); return -1; } ComPtr< IPin > nullIn = getPin( _nullRenderer.get(), PINDIR_INPUT, 0 ); - if (graphBuilder->Connect( sourceOut.get(), grabberIn.get() )!=S_OK){ + if (_graphBuilder->Connect( sourceOut.get(), grabberIn.get() )!=S_OK){ ms_error("Error connecting source to sample grabber" ); return -1; } - if (graphBuilder->Connect( grabberOut.get(), nullIn.get() )!=S_OK){ + if (_graphBuilder->Connect( grabberOut.get(), nullIn.get() )!=S_OK){ ms_error("Error connecting sample grabber to sink" ); return -1; } ms_message("Directshow graph is now ready to run."); - if (graphBuilder->QueryInterface( IID_IMediaControl, + if (_graphBuilder->QueryInterface( IID_IMediaControl, (void **)&_mediaControl )!=S_OK){ ms_error("Error requesting media control interface" ); return -1; } - if (graphBuilder->QueryInterface( IID_IMediaEvent, + if (_graphBuilder->QueryInterface( IID_IMediaEvent, (void **)&_mediaEvent )!=S_OK){ ms_error("Error requesting event interface" ); return -1; } _ready=true; + return 0; } int DSCapture::startDshowGraph(){ @@ -874,20 +875,31 @@ int DSCapture::startDshowGraph(){ return -1; } ms_message("Graph started"); + return 0; } void DSCapture::stopAndClean(){ if (_mediaControl.get()!=NULL){ - _mediaControl->Stop(); - long evCode = 0; - _mediaEvent->WaitForCompletion( INFINITE, &evCode ); + HRESULT r; + r=_mediaControl->Stop(); + if (r!=S_OK){ + ms_error("msdscap: Could not stop graph !"); + fflush(NULL); + } + _graphBuilder->RemoveFilter(_source.get()); + _graphBuilder->RemoveFilter(_grabberBase.get()); + _graphBuilder->RemoveFilter(_nullRenderer.get()); } _source.reset(); _grabberBase.reset(); _nullRenderer.reset(); _mediaControl.reset(); _mediaEvent.reset(); + _graphBuilder.reset(); + CoUninitialize(); + ms_mutex_lock(&_mutex); flushq(&_rq,0); + ms_mutex_unlock(&_mutex); _ready=false; } @@ -918,7 +930,6 @@ static void dscap_process(MSFilter * obj){ DSCapture *s=(DSCapture*)obj->data; mblk_t *m; uint32_t timestamp; - int cur_frame; if (s->isTimeToSend(obj->ticker->time)){ mblk_t *om=NULL; @@ -1002,8 +1013,6 @@ static MSWebCamDesc ms_dshow_cam_desc={ }; static void ms_dshow_detect(MSWebCamManager *obj){ - int i; - MSWebCam *cam; ComPtr<IPropertyBag> pBag; CoInitialize(NULL); @@ -1020,7 +1029,6 @@ static void ms_dshow_detect(MSWebCamManager *obj){ createDevEnum.reset(); enumMoniker->Reset(); - int index = 0; ULONG fetched = 0; ComPtr< IMoniker > moniker; for ( int i=0;enumMoniker->Next( 1, &moniker, &fetched )==S_OK;++i ) { diff --git a/linphone/mediastreamer2/src/videoout.c b/linphone/mediastreamer2/src/videoout.c index be5e2a54820b7bfbc8bbd3230e0dd115d4c1e7d2..974aa10abcd74a699a370f3a6ec54e7cf413cb06 100644 --- a/linphone/mediastreamer2/src/videoout.c +++ b/linphone/mediastreamer2/src/videoout.c @@ -752,6 +752,7 @@ static void video_out_process(MSFilter *f){ qvga_size.width=MS_VIDEO_SIZE_QVGA_W; qvga_size.height=MS_VIDEO_SIZE_QVGA_H; obj->prevsize=newsize; + ms_message("received size is %ix%i",newsize.width,newsize.height); /*don't resize less than QVGA, it is too small*/ if (ms_video_size_greater_than(qvga_size,newsize)){ newsize.width=MS_VIDEO_SIZE_QVGA_W;