Index: trunk/lib/FlairCore/src/Image.cpp
===================================================================
--- trunk/lib/FlairCore/src/Image.cpp	(revision 401)
+++ trunk/lib/FlairCore/src/Image.cpp	(revision 403)
@@ -80,4 +80,8 @@
 }
 
+bool Image::IsUsingDefaultAllocAndFree(void) {
+    return (allocFunction==DefaultAllocFunction);
+}
+
 char* Image::DefaultAllocFunction(ssize_t size){
   return (char*)malloc(size);
Index: trunk/lib/FlairCore/src/Image.h
===================================================================
--- trunk/lib/FlairCore/src/Image.h	(revision 401)
+++ trunk/lib/FlairCore/src/Image.h	(revision 403)
@@ -111,4 +111,5 @@
   static void RegisterAllocFunction(char*(*func)(ssize_t size));
   static void RegisterFreeFunction(void(*func)(char* buffer));
+  static bool IsUsingDefaultAllocAndFree(void);
   static char* AllocFunction(ssize_t size);
   static void FreeFunction(char* buffer);
Index: trunk/lib/FlairMeta/src/HdsX8.cpp
===================================================================
--- trunk/lib/FlairMeta/src/HdsX8.cpp	(revision 401)
+++ trunk/lib/FlairMeta/src/HdsX8.cpp	(revision 403)
@@ -53,5 +53,10 @@
                           Gx3_25_imu::AccelerationAngularRateAndOrientationMatrix, 70));
   SetBatteryMonitor(((BlCtrlV2 *)GetBldc())->GetBatteryMonitor());
-  SetVerticalCamera(new Ps3Eye("camv", 0, 50));
+  
+  if(Image::IsUsingDefaultAllocAndFree()) {
+    SetVerticalCamera(new Ps3Eye("camv", 0, false,50));//no cmem and no dsp
+  } else {
+    SetVerticalCamera(new Ps3Eye("camv", 0, true,50));//cmem and dsp
+  }
   
   string useGps=FindArgument(options,"use_gps=",false);
Index: trunk/lib/FlairMeta/src/XAir.cpp
===================================================================
--- trunk/lib/FlairMeta/src/XAir.cpp	(revision 401)
+++ trunk/lib/FlairMeta/src/XAir.cpp	(revision 403)
@@ -56,5 +56,10 @@
   SetBatteryMonitor(new BatteryMonitor(bat_tab->NewRow(), "battery"));
   GetBatteryMonitor()->SetBatteryValue(12);
-  SetVerticalCamera(new Ps3Eye("camv", 0, 50));
+  
+  if(Image::IsUsingDefaultAllocAndFree()) {
+    SetVerticalCamera(new Ps3Eye("camv", 0, false,50));//no cmem and no dsp
+  } else {
+    SetVerticalCamera(new Ps3Eye("camv", 0, true,50));//cmem and dsp
+  }
 }
 
Index: trunk/lib/FlairSensorActuator/src/Ps3Eye.cpp
===================================================================
--- trunk/lib/FlairSensorActuator/src/Ps3Eye.cpp	(revision 401)
+++ trunk/lib/FlairSensorActuator/src/Ps3Eye.cpp	(revision 403)
@@ -25,8 +25,8 @@
 namespace sensor {
 
-Ps3Eye::Ps3Eye(string name, int camera_index,
+Ps3Eye::Ps3Eye(string name, int camera_index,bool useMemoryUsrPtr,
                uint8_t priority)
     : V4LCamera( name, camera_index, 320, 240,
-                Image::Type::Format::YUYV, priority) {
+                Image::Type::Format::YUYV, useMemoryUsrPtr,priority) {
   SetIsReady(true);                  
 }
Index: trunk/lib/FlairSensorActuator/src/Ps3Eye.h
===================================================================
--- trunk/lib/FlairSensorActuator/src/Ps3Eye.h	(revision 401)
+++ trunk/lib/FlairSensorActuator/src/Ps3Eye.h	(revision 403)
@@ -33,8 +33,9 @@
   * \param name name
   * \param camera_index index of the camera, ie /dev/videox
+  * \param useMemoryUsrPtr true to use memory user pointer (ex with cmem on omap3730), false to use mmap
   * \param priority priority of the Thread
   */
   Ps3Eye(std::string name,
-         int camera_index, uint8_t priority);
+         int camera_index, bool useMemoryUsrPtr,uint8_t priority);
 
   /*!
Index: trunk/lib/FlairSensorActuator/src/V4LCamera.cpp
===================================================================
--- trunk/lib/FlairSensorActuator/src/V4LCamera.cpp	(revision 401)
+++ trunk/lib/FlairSensorActuator/src/V4LCamera.cpp	(revision 403)
@@ -28,9 +28,9 @@
   
 V4LCamera::V4LCamera(string name,uint8_t camera_index, uint16_t width, uint16_t height,
-                     Image::Type::Format format, uint8_t priority)
+                     Image::Type::Format format, bool useMemoryUsrPtr,uint8_t priority)
     : Thread(getFrameworkManager(), name, priority),
       Camera(name, width, height, format) {
   
-  pimpl_=new V4LCamera_impl(this,name,camera_index,width,height,format);
+  pimpl_=new V4LCamera_impl(this,name,camera_index,width,height,format,useMemoryUsrPtr);
 }
 
Index: trunk/lib/FlairSensorActuator/src/V4LCamera.h
===================================================================
--- trunk/lib/FlairSensorActuator/src/V4LCamera.h	(revision 401)
+++ trunk/lib/FlairSensorActuator/src/V4LCamera.h	(revision 403)
@@ -45,9 +45,10 @@
   * \param height height
   * \param format image format
+  * \param useMemoryUsrPtr true to use memory user pointer (ex with cmem on omap3730), false to use mmap
   * \param priority priority of the Thread
   */
   V4LCamera(std::string name,
             uint8_t camera_index, uint16_t width, uint16_t height,
-            core::Image::Type::Format format, uint8_t priority);
+            core::Image::Type::Format format, bool useMemoryUsrPtr,uint8_t priority);
 
   /*!
Index: trunk/lib/FlairSensorActuator/src/V4LCamera_impl.cpp
===================================================================
--- trunk/lib/FlairSensorActuator/src/V4LCamera_impl.cpp	(revision 401)
+++ trunk/lib/FlairSensorActuator/src/V4LCamera_impl.cpp	(revision 403)
@@ -37,5 +37,5 @@
   
 V4LCamera_impl::V4LCamera_impl(V4LCamera *self,string name,uint8_t camera_index, uint16_t width, uint16_t height,
-                     Image::Type::Format format) {
+                     Image::Type::Format format,bool useMemoryUsrPtr) {
   this->self=self;
   
@@ -60,11 +60,7 @@
   }
   
-  //todo: better handling of detection, only neeeded for omap/dm
-  //also in run, copy from v4l to cmem is not necessary if not using cmem...
-#ifdef ARMV7A
-  useMemoryUsrPtr=true;
-#else
-  useMemoryUsrPtr=false;
-#endif
+  //todo: in run, copy from v4l to cmem is not necessary if not using cmem. (!useMemoryUsrPtr)
+  this->useMemoryUsrPtr=useMemoryUsrPtr;
+
   if(useMemoryUsrPtr) {
     AllocUserBuffers();
Index: trunk/lib/FlairSensorActuator/src/unexported/V4LCamera_impl.h
===================================================================
--- trunk/lib/FlairSensorActuator/src/unexported/V4LCamera_impl.h	(revision 401)
+++ trunk/lib/FlairSensorActuator/src/unexported/V4LCamera_impl.h	(revision 403)
@@ -48,8 +48,9 @@
   * \param height height
   * \param format image format
+  * \param useMemoryUsrPtr true to use memory user pointer (ex with cmem on omap3730), false to use mmap
   */
   V4LCamera_impl(flair::sensor::V4LCamera *self,std::string name,
             uint8_t camera_index, uint16_t width, uint16_t height,
-            flair::core::Image::Type::Format format);
+            flair::core::Image::Type::Format format,bool useMemoryUsrPtr);
 
   /*!
