diff --git a/unix/x0vncserver/PollingManager.cxx b/unix/x0vncserver/PollingManager.cxx
index d251f5f..93dce13 100644
--- a/unix/x0vncserver/PollingManager.cxx
+++ b/unix/x0vncserver/PollingManager.cxx
@@ -259,6 +259,9 @@
     pmxChanged += m_widthTiles;
   }
 
+  // Do the work related to video area detection.
+  bool videoDetected = detectVideo(mxChanged);
+
   // Inform the server about the changes.
   if (nTilesChanged)
     sendChanges(mxChanged);
@@ -266,7 +269,13 @@
   // Cleanup.
   delete[] mxChanged;
 
-  return (nTilesChanged != 0);
+#ifdef DEBUG
+  if (nTilesChanged != 0) {
+    fprintf(stderr, "#%d# ", nTilesChanged);
+  }
+#endif
+
+  return (nTilesChanged != 0 || videoDetected);
 }
 
 int PollingManager::checkRow(int x, int y, int w, bool *pmxChanged)
@@ -326,6 +335,52 @@
   }
 }
 
+bool PollingManager::detectVideo(bool *pmxChanged)
+{
+  // Configurable parameters.
+  const int VIDEO_THRESHOLD_0 = 3;
+  const int VIDEO_THRESHOLD_1 = 5;
+
+  // Each call: update counters in m_rateMatrix.
+  int numTiles = m_heightTiles * m_widthTiles;
+  for (int i = 0; i < numTiles; i++)
+    m_rateMatrix[i] += (pmxChanged[i] != false);
+
+  // Once per eight calls: detect video region. In other words, mark a
+  // region that consists of continuously changing pixels. Save the
+  // result in m_videoFlags[] and reset counters in m_rateMatrix[].
+  bool isGrandStep = (m_pollingStep % 8 == 0);
+  if (isGrandStep) {
+    for (int i = 0; i < numTiles; i++) {
+      if (m_rateMatrix[i] <= VIDEO_THRESHOLD_0) {
+        m_videoFlags[i] = 0;
+      } else if (m_rateMatrix[i] >= VIDEO_THRESHOLD_1) {
+        m_videoFlags[i] = 1;
+      }
+      m_rateMatrix[i] = 0;
+    }
+  }
+
+  // Choose the biggest rectangle from the region defined by
+  // m_videoFlags[].
+  Rect r;
+  getVideoAreaRect(&r);
+
+  // Exclude video rectangle from pmxChanged[].
+  for (int y = r.tl.y / 32; y < r.br.y / 32; y++) {
+    for (int x = r.tl.x / 32; x < r.br.x / 32; x++) {
+      pmxChanged[y * m_widthTiles + x] = false;
+    }
+  }
+
+  // Inform the server...
+  m_server->set_video_area(r);
+  if (!r.is_empty())
+    getScreenRect(r);
+
+  return (!r.is_empty());
+}
+
 bool PollingManager::poll_DetectVideo()
 {
   if (!m_server)
