From 86bdd9bcb5ad2fe218f4c712db1125cfa58ccfbc Mon Sep 17 00:00:00 2001
From: Tristan Matthews <tristan.matthews@savoirfairelinux.com>
Date: Wed, 18 Sep 2013 17:45:57 -0400
Subject: [PATCH] * #30274: video: clean up flip code

---
 daemon/src/video/video_base.cpp | 42 ++++++++++-----------------------
 1 file changed, 13 insertions(+), 29 deletions(-)

diff --git a/daemon/src/video/video_base.cpp b/daemon/src/video/video_base.cpp
index 717ab02d48..493622ddb1 100644
--- a/daemon/src/video/video_base.cpp
+++ b/daemon/src/video/video_base.cpp
@@ -216,35 +216,19 @@ int VideoFrame::mirror() {
         return -1;
     }
 
-    uint8_t *data;
-	ssize_t stride;
-
-    // Y
-    stride = frame_->linesize[0];
-	data = frame_->data[0];
-	for (int i = 0; i < frame_->height; i++) {
-        for (int j=0,k=stride-1; j < stride/2; j++, k--)
-            std::swap(data[j], data[k]);
-		data += stride;
-	}
-
-    // U
-	stride = frame_->linesize[1];
-	data = frame_->data[1];
-	for (int i = 0; i < frame_->height / 2; i++) {
-        for (int j=0,k=stride-1; j < stride/2; j++, k--)
-            std::swap(data[j], data[k]);
-		data += stride;
-	}
-
-    // V
-	stride = frame_->linesize[2];
-	data = frame_->data[2];
-	for (int i = 0; i < frame_->height / 2; i++) {
-        for (int j=0,k=stride-1; j < stride/2; j++, k--)
-            std::swap(data[j], data[k]);
-		data += stride;
-	}
+    auto flip_lr = [&] (unsigned idx) {
+        const ssize_t stride = frame_->linesize[idx];
+        uint8_t *data = frame_->data[idx];
+        const ssize_t height = idx == 0 ? frame_->height : frame_->height / 2;
+        for (int i = 0; i < height; i++) {
+            for (int j = 0,k = stride - 1; j < stride / 2; j++, k--)
+                std::swap(data[j], data[k]);
+            data += stride;
+        }
+    };
+
+    for (unsigned i = 0; i < 3; ++i)
+        flip_lr(i);
 
     return 0;
 }
-- 
GitLab