Index: acinclude.m4
===================================================================
--- acinclude.m4	(revision 1303)
+++ acinclude.m4	(revision 1364)
@@ -119,11 +119,24 @@
 			CPPFLAGS=$CPPFLAGS_save
 
+			enable_sdl_default=false
+			enable_x11_default=true
+			if test "$macosx_found" = "yes" ; then
+				enable_sdl_default=true
+				enable_x11_default=false
+				CFLAGS="$CFLAGS -Dmain=SDL_main"
+				OBJCFLAGS="$OBJCFLAGS -framework QTKit "
+				LIBS="$LIBS -framework QTKit -framework CoreVideo -lSDLmain"
+				AC_LANG_PUSH([Objective C])
+				AC_CHECK_HEADERS([QTKit/QTKit.h],[],[AC_MSG_ERROR([QTKit framework not found, required for video support])])
+				AC_LANG_POP([Objective C])
+			fi
+
 			AC_ARG_ENABLE(sdl,
-			  [  --disable-sdl    Disable SDL support],
+			  [  --disable-sdl    Disable SDL support (default: disabled except on macos)],
 			  	  [case "${enableval}" in
 				  yes) enable_sdl=true ;;
 				  no)  enable_sdl=false ;;
 			  *) AC_MSG_ERROR(bad value ${enableval} for --disable-sdl) ;;
-		  	  esac],[enable_sdl=false])
+		  	  esac],[enable_sdl=$enable_sdl_default])
 
 			sdl_found=false
@@ -131,4 +144,5 @@
 				   PKG_CHECK_MODULES(SDL, [sdl >= 1.2.0 ],sdl_found=true,sdl_found=false)
 			fi
+
 
 			AC_ARG_ENABLE(x11,
@@ -138,5 +152,5 @@
 			  no)  enable_x11=false ;;
 			  *) AC_MSG_ERROR(bad value ${enableval} for --disable-x11) ;;
-		  	  esac],[enable_x11=true])
+		  	  esac],[enable_x11=$enable_x11_default])
 
 			if test "$enable_x11" = "true"; then
@@ -150,5 +164,5 @@
 			  no)  enable_xv=false ;;
 			  *) AC_MSG_ERROR(bad value ${enableval} for --enable-xv) ;;
-		  	  esac],[enable_xv=true])
+		  	  esac],[enable_xv=$enable_x11_default])
 
 			if test "$enable_xv" = "true"; then
Index: src/jpegwriter.c
===================================================================
--- src/jpegwriter.c	(revision 1344)
+++ src/jpegwriter.c	(revision 1363)
@@ -26,5 +26,7 @@
 #include "ffmpeg-priv.h"
 
+#ifdef WIN32
 #include <malloc.h>
+#endif
 
 typedef struct {
Index: src/macsnd.c
===================================================================
--- src/macsnd.c	(revision 1339)
+++ src/macsnd.c	(revision 1365)
@@ -269,6 +269,9 @@
 		return;
 	}
-	//first, add Default AudioUnit
-	ms_snd_card_manager_add_card(m,ca_card_new("Default", "",-1, MS_SND_CARD_CAP_CAPTURE|MS_SND_CARD_CAP_PLAYBACK));
+	/*first, add Default AudioUnit
+	does not work: why ?
+	*/
+	/*ms_snd_card_manager_add_card(m,ca_card_new("Default", "",-1, MS_SND_CARD_CAP_CAPTURE|MS_SND_CARD_CAP_PLAYBACK));
+	*/
 
 	count = slen / sizeof(AudioDeviceID);
Index: src/nowebcam.c
===================================================================
--- src/nowebcam.c	(revision 1219)
+++ src/nowebcam.c	(revision 1365)
@@ -1601,9 +1601,9 @@
 	DWORD err;
 	HANDLE fd;
-    BOOL res;
+	BOOL res;
 #ifdef UNICODE
 	WCHAR wUnicode[1024];
 	MultiByteToWideChar(CP_UTF8, 0, jpgpath, -1, wUnicode, 1024);
-    fd = CreateFile(wUnicode, GENERIC_READ, FILE_SHARE_READ, NULL,
+	fd = CreateFile(wUnicode, GENERIC_READ, FILE_SHARE_READ, NULL,
         OPEN_EXISTING, 0, NULL);
 #else
@@ -1634,6 +1634,6 @@
 		return m;
 	}
-    err=0;
-    res = ReadFile(fd, jpgbuf, st_sizel, &err, NULL) ;            
+	err=0;
+	res = ReadFile(fd, jpgbuf, st_sizel, &err, NULL) ;            
 	
 	if (err!=st_sizel){
@@ -1656,9 +1656,6 @@
 	uint8_t *jpgbuf;
 	int err;
-#ifndef WIN32
 	int fd=open(jpgpath,O_RDONLY);
-#else
-	int fd=open(jpgpath,O_RDONLY|O_BINARY);
-#endif
+
 	if (fd!=-1){
 		fstat(fd,&statbuf);
Index: src/qtcapture.m
===================================================================
--- src/qtcapture.m	(revision 1362)
+++ src/qtcapture.m	(revision 1366)
@@ -8,5 +8,5 @@
 #include "nowebcam.h"
 
-#import <QTKit/QTkit.h>
+#import <QTKit/QTKit.h>
 
 struct v4mState;
@@ -17,5 +17,4 @@
 	QTCaptureDecompressedVideoOutput * output;
 	QTCaptureSession *session;
-	//QTCaptureDevice *device;
 	
 	ms_mutex_t mutex;
@@ -40,6 +39,5 @@
 @implementation NsMsWebCam 
 
--(void)captureOutput:(QTCaptureOutput *)captureOutput didOutputVideoFrame:(CVImageBufferRef)videoFrame withSampleBuffer:(QTSampleBuffer *)sampleBuffer fromConnection:
-(QTCaptureConnection *)connection
+- (void)captureOutput:(QTCaptureOutput *)captureOutput didOutputVideoFrame:(CVImageBufferRef)videoFrame withSampleBuffer:(QTSampleBuffer *)sampleBuffer fromConnection:(QTCaptureConnection *)connection
 {
 	ms_mutex_lock(&mutex);	
@@ -124,5 +122,5 @@
 				
 				if( fmt == kCVPixelFormatType_420YpCbCr8Planar)
-					return MS_YUV420P;
+					{ms_message("FORMAT = MS_YUV420P");return MS_YUV420P;}
 				
 				//else if( fmt == MS_YUYV)
@@ -130,5 +128,5 @@
 				
 				else if( fmt == kCVPixelFormatType_24RGB)
-					return MS_RGB24;
+					{ms_message("FORMAT = MS_RGB24");return MS_RGB24;}
 				
 				//else if( fmt == MS_RGB24_REV)
@@ -137,16 +135,16 @@
 				//	return;
 				else if( fmt == kUYVY422PixelFormat)
-					return MS_UYVY;
+					{ms_message("FORMAT = MS_UYVY");return MS_UYVY;}
 				
 				else if( fmt == kYUVSPixelFormat)
-					return MS_YUY2;
+					{ms_message("FORMAT = MS_YUY2");return MS_YUY2;}
 				
 				else if( fmt == k32RGBAPixelFormat)
-					return MS_RGBA32;
+					{ms_message("FORMAT = MS_RGBA32");return MS_RGBA32;}
 				
             }
         }
     }
-	
+	ms_warning("The camera wasn't open; using MS_YUV420P pixel format");
 	return MS_YUV420P;
 }
@@ -174,17 +172,26 @@
 	}
 	
-	if(device)
-		if(![device open:&error])
-			return;
+	bool success = [device open:&error];
+	if (success) ms_message("Device opened");
+	else {
+		ms_error("%s", [[error localizedDescription] UTF8String]);
+		return;
+	}
 	
 	input = [[QTCaptureDeviceInput alloc] initWithDevice:device];
 	
-	[session addInput:input error:&error];
-	[session addOutput:output error:&error];
-
+	success = [session addInput:input error:&error];
+	if (success) ms_message("Input added to session");
+	else ms_error("%s", [[error localizedDescription] UTF8String]);
+	
+
+	success = [session addOutput:output error:&error];
+	if (success) ms_message("Output added to session");
+	else ms_error("%s", [[error localizedDescription] UTF8String]);
 }
 
 -(void) setSize:(MSVideoSize) size
 {	
+	ms_message("Set size w=%i, h=%i", size.width, size.height);
 	NSDictionary * dic = [NSDictionary dictionaryWithObjectsAndKeys:
 	 [NSNumber numberWithInteger:size.width], (id)kCVPixelBufferWidthKey,
@@ -210,5 +217,5 @@
 		size.height = [[dic objectForKey:(id)kCVPixelBufferHeightKey] integerValue];
 	}
-	
+		ms_message("get size w=%i, h=%i", size.width, size.height);
 	return size;
 }
@@ -234,10 +241,8 @@
 	NsMsWebCam * webcam;
 	NSAutoreleasePool* myPool;
-	mblk_t *mire;
 	int frame_ind;	
 	float fps;
 	float start_time;
 	int frame_count;
-	bool_t usemire;
 }v4mState;
 
@@ -247,9 +252,7 @@
 	s->webcam= [[NsMsWebCam alloc] init];
 	[s->webcam retain];
-	s->mire=NULL;	
 	s->start_time=0;
 	s->frame_count=-1;
 	s->fps=15;
-	s->usemire=(getenv("DEBUG")!=NULL);
 	f->data=s;
 }
@@ -274,47 +277,7 @@
 	v4m_stop(f,NULL);
 	
-	freemsg(s->mire);
 	[s->webcam release];
 	[s->myPool release];
 	ms_free(s);
-}
-
-static mblk_t * v4m_make_mire(v4mState *s){
-	unsigned char *data;
-	int i,j,line,pos;
-	MSVideoSize vsize = [s->webcam getSize];
-	int patternw=vsize.width/6; 
-	int patternh=vsize.height/6;
-	int red,green=0,blue=0;
-	if (s->mire==NULL){
-		s->mire=allocb(vsize.width*vsize.height*3,0);
-		s->mire->b_wptr=s->mire->b_datap->db_lim;
-	}
-	data=s->mire->b_rptr;
-	for (i=0;i<vsize.height;++i){
-		line=i*vsize.width*3;
-		if ( ((i+s->frame_ind)/patternh) & 0x1) red=255;
-		else red= 0;
-		for (j=0;j<vsize.width;++j){
-			pos=line+(j*3);
-			
-			if ( ((j+s->frame_ind)/patternw) & 0x1) blue=255;
-			else blue= 0;
-			
-			data[pos]=red;
-			data[pos+1]=green;
-			data[pos+2]=blue;
-		}
-	}
-	s->frame_ind++;
-	return s->mire;
-}
-
-static mblk_t * v4m_make_nowebcam(v4mState *s){
-	if (s->mire==NULL && s->frame_ind==0){
-		//s->mire=ms_load_nowebcam(&s->vsize, -1);
-	}
-	s->frame_ind++;
-	return s->mire;
 }
 
@@ -339,21 +302,5 @@
 			om=getq([s->webcam rq]);
 		}
-		else
-		{
-			/*if (s->pix_fmt==MS_YUV420P && s->vsize.width==MS_VIDEO_SIZE_CIF_W && s->vsize.height==MS_VIDEO_SIZE_CIF_H)
-		    {
-				if (s->usemire)
-				{
-					om=dupmsg(v4m_make_mire(s));
-				}
-				else 
-				{
-					mblk_t *tmpm=v4m_make_nowebcam(s);
-					if (tmpm) 
-						om=dupmsg(tmpm);
-				}
-		    }*/
-		}
-		
+
 		if (om!=NULL)
 		{
Index: tests/mediastream.c
===================================================================
--- tests/mediastream.c	(revision 1369)
+++ tests/mediastream.c	(revision 1375)
@@ -41,4 +41,8 @@
 #include <stdlib.h>
 #include <string.h>
+
+#ifdef __APPLE__
+#include <CoreFoundation/CFRunLoop.h>
+#endif
 
 static int cond=1;
@@ -435,4 +439,8 @@
 	}else{  /* no interactive stuff - continuous debug output */
 		rtp_session_register_event_queue(session,q);
+
+		#ifdef __APPLE__
+		CFRunLoopRun();
+		#else
 		while(cond)
 		{
@@ -464,4 +472,5 @@
 			}
 		}
+	#endif // target MAC
 	}
 	
Index: tests/test_x11window.c
===================================================================
--- tests/test_x11window.c	(revision 1172)
+++ tests/test_x11window.c	(revision 1363)
@@ -20,9 +20,8 @@
 #include "mediastreamer-config.h"
 #endif
-
+#include <stdio.h>
 #ifdef HAVE_X11_XLIB_H
 #include <X11/Xlib.h>
 #include <stdlib.h>
-#include <stdio.h>
 #include <string.h>
 #include <unistd.h>
